{"action":"opened","issue":{"url":"https://api.github.com/repos/tum-vision/lsd_slam/issues/73","labels_url":"https://api.github.com/repos/tum-vision/lsd_slam/issues/73/labels{/name}","comments_url":"https://api.github.com/repos/tum-vision/lsd_slam/issues/73/comments","events_url":"https://api.github.com/repos/tum-vision/lsd_slam/issues/73/events","html_url":"https://github.com/tum-vision/lsd_slam/issues/73","id":57943754,"number":73,"title":"When Sim3Tracker fails - \"warning: reciprocal tracking on new frame failed badly, added odometry edge (Hacky).\\n\"","user":{"login":"devbharat","id":3105122,"avatar_url":"https://avatars.githubusercontent.com/u/3105122?v=3","gravatar_id":"","url":"https://api.github.com/users/devbharat","html_url":"https://github.com/devbharat","followers_url":"https://api.github.com/users/devbharat/followers","following_url":"https://api.github.com/users/devbharat/following{/other_user}","gists_url":"https://api.github.com/users/devbharat/gists{/gist_id}","starred_url":"https://api.github.com/users/devbharat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devbharat/subscriptions","organizations_url":"https://api.github.com/users/devbharat/orgs","repos_url":"https://api.github.com/users/devbharat/repos","events_url":"https://api.github.com/users/devbharat/events{/privacy}","received_events_url":"https://api.github.com/users/devbharat/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-02-17T16:12:07Z","updated_at":"2015-02-17T16:12:07Z","closed_at":null,"body":"When the Sim3 tracker isn't able to find a good constraint measure between a new keyframe and its parent, you hack the code to artificially add the Sim3 edge - \r\n```\r\nelse\r\n\t\t{\r\n\t\t\tfloat downweightFac = 5;\r\n\t\t\tconst float kernelDelta = 5 * sqrt(6000*loopclosureStrictness) / downweightFac;\r\n\t\t\tprintf(\"warning: reciprocal tracking on new frame failed badly, added odometry edge (Hacky).\\n\");\r\n\r\n\t\t\tposeConsistencyMutex.lock_shared();\r\n\t\t\tconstraints.push_back(new KFConstraintStruct());\r\n\t\t\tconstraints.back()->firstFrame = newKeyFrame;\r\n\t\t\tconstraints.back()->secondFrame = newKeyFrame->getTrackingParent();\r\n\t\t\tconstraints.back()->secondToFirst = constraints.back()->firstFrame->getScaledCamToWorld().inverse() * constraints.back()->secondFrame->getScaledCamToWorld();\r\n\t\t\tconstraints.back()->information  <<\r\n\t\t\t\t\t0.8098,-0.1507,-0.0557, 0.1211, 0.7657, 0.0120, 0,\r\n\t\t\t\t\t-0.1507, 2.1724,-0.1103,-1.9279,-0.1182, 0.1943, 0,\r\n\t\t\t\t\t-0.0557,-0.1103, 0.2643,-0.0021,-0.0657,-0.0028, 0.0304,\r\n\t\t\t\t\t 0.1211,-1.9279,-0.0021, 2.3110, 0.1039,-0.0934, 0.0005,\r\n\t\t\t\t\t 0.7657,-0.1182,-0.0657, 0.1039, 1.0545, 0.0743,-0.0028,\r\n\t\t\t\t\t 0.0120, 0.1943,-0.0028,-0.0934, 0.0743, 0.4511, 0,\r\n\t\t\t\t\t0,0, 0.0304, 0.0005,-0.0028, 0, 0.0228;\r\n\t\t\tconstraints.back()->information *= (1e9/(downweightFac*downweightFac));\r\n\r\n\t\t\tconstraints.back()->robustKernel = new g2o::RobustKernelHuber();\r\n\t\t\tconstraints.back()->robustKernel->setDelta(kernelDelta);\r\n```\r\n\r\nWhy don't you also add the inverse constraint (parent-to-this frame) too like you did when the Sim3 tracker worked (e1 != 0) ?"}}