Skip to content

Commit f56fabf

Browse files
committed
major updates to readme
1 parent 9e7e68f commit f56fabf

4 files changed

Lines changed: 40 additions & 12 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ find_package(OpenCV 3 REQUIRED)
2626

2727

2828

29-
#set(CMAKE_BUILD_TYPE "Release")
30-
set(CMAKE_BUILD_TYPE Debug)
29+
set(CMAKE_BUILD_TYPE "Release")
30+
#set(CMAKE_BUILD_TYPE Debug)
3131
#set(CMAKE_BUILD_TYPE RelWithDebInfo)
3232
set( CMAKE_CXX_FLAGS "-fpermissive -std=c++11 -O3" )
3333
#-DEIGEN_USE_MKL_ALL")

README.md

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
# Node for pose graph optimization.
22

3-
This node actually builds up the graph of poses along with odometry edges and loop closure edges.
4-
To get a theoritical understanding of the process, I suggest to look at this : [HERE](https://kusemanohar.wordpress.com/2017/04/29/howto-pose-graph-bundle-adjustment/)
3+
This node actually builds up the graph of poses incrementally using odometry edges and loopclosure edges.
4+
It also can handle kidnap and random failure. This is accomplished by keeping track of multiple
5+
co-ordinate systems and relative poses between the co-ordinate system. Finally whenever new loopclosure
6+
edges are available, the pose graph is solved. The switching constraint formulation
7+
as detailed in *Sünderhauf N, Protzel P. Switchable constraints for robust pose graph SLAM. In2012 IEEE/RSJ International Conference on Intelligent Robots and Systems 2012 Oct 7 (pp. 1879-1884). IEEE.* is used.
8+
9+
To get a simplistic theoritical understanding of the pose graph solver, I suggest to look at this : [HERE](https://kusemanohar.wordpress.com/2017/04/29/howto-pose-graph-bundle-adjustment/)
10+
11+
This is intended to be run with [Cerebro](https://github.com/mpkuse/cerebro) and VINS-Fusion.
512

613
Defines 2 classes
714
### NodeDataManager:
@@ -12,22 +19,43 @@ Crititcal data include: i) VIO poses at each keyframes. ii) Edge poses.
1219
### PoseGraphSLAM:
1320
This class holds the pointer to an object of class NodeDataManager.
1421
All the functions related to ceres-solver here. It is intended to be run in a separate thread.
22+
The thread triggers on seeing new loopedges. On trigger it does:
23+
1. Allocate new opt variables (if need be)
24+
- Add Loop Edges Residue Term to Ceres::Problem
25+
- Loop Edges (intra world)
26+
- Loop edges (inter world)
27+
- Add Odometry Residues to Ceres::Problem
28+
- Initial Guesses for the nodes
29+
- Mark 1st nodes of each worlds as constant with Node Regularization
30+
- ceres::Solve()
31+
1532

16-
### main (keyframe_pose_graph_slam_node.cpp)
17-
This contains the main. It calls a visualization publisher in 1 thread. In another thread PoseGraphSLAM->optimize6DOF() is called.
18-
The main thread handles the call back. Subscribes to `camera_pose` and `colocation_chatter`. Publishes
19-
a) visualization marker and b) path (only contains last 5 posestamped)
2033

21-
The visualization marker is a `LINE_STRIP` at all pose. The LINE_STRIP will be pink in color
22-
to denote the poses have been processed by ceres::Solve(). Green colored lines means those poses
23-
are purely odometry and have not yet been ceres::Solved()d.
34+
### main (keyframe_pose_graph_slam_node.cpp)
35+
This contains the main. It calls a visualization publisher in 1 thread. In another thread `PoseGraphSLAM::reinit_ceres_problem_onnewloopedge_optimize6DOF()` is called.
36+
The main thread handles the ros-callback. Subscribes to `/vins_estimator/camera_pose` and `/cerebro/loopedge`.
37+
It publishes the corrected pose as Ros Visualization Marker.
2438

39+
The visualization marker is a `LINE_STRIP` at all pose. Different colors of the trajectory denote
40+
different co-ordinate systems.
2541

2642
## Dependencies
2743
- ceres-solver
2844
- Eigen3
2945
- OpenCV 3 (only used for visualization)
3046
- [Cerebro pkg](https://github.com/mpkuse/cerebro) (for definations of LoopEdgeMsg)
3147

48+
## Compile and Run
49+
```
50+
cd catkin_ws/src
51+
git clone https://github.com/mpkuse/solve_keyframe_pose_graph
52+
cd catkin_ws
53+
catkin_make
54+
55+
rosrun solve_keyframe_pose_graph keyframe_pose_graph_slam
56+
```
57+
58+
![](doc/rosgraph_posegraph_solver.png)
59+
3260
## Author
3361
Manohar Kuse <mpkuse@connect.ust.hk>

doc/rosgraph_posegraph_solver.png

153 KB
Loading

src/keyframe_pose_graph_slam_node.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,7 @@ int main( int argc, char ** argv)
771771

772772

773773

774-
#define __LOGGING__ 1 // make this 1 to enable logging. 0 to disable logging. rememeber to catkin_make after this change
774+
#define __LOGGING__ 0 // make this 1 to enable logging. 0 to disable logging. rememeber to catkin_make after this change
775775
#if __LOGGING__
776776
///// Save Pose Graph for Debugging
777777
const string DATA_PATH = "/Bulk_Data/_tmp_posegraph/";

0 commit comments

Comments
 (0)