Skip to content

Commit cee50fc

Browse files
authored
Merge pull request #1 from mpkuse/drone-master
Making it independent of cerebro.
2 parents 9950b2f + dc8776c commit cee50fc

7 files changed

Lines changed: 59 additions & 18 deletions

File tree

CMakeLists.txt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ find_package(catkin REQUIRED COMPONENTS
1414
image_transport
1515
cv_bridge
1616
#nap
17-
cerebro
17+
#cerebro
1818
nav_msgs
1919
)
2020

@@ -34,24 +34,35 @@ set( CMAKE_CXX_FLAGS "-fpermissive -std=c++11 -O3" )
3434

3535

3636

37+
38+
39+
40+
41+
add_message_files(
42+
FILES
43+
LoopEdge.msg
44+
)
45+
46+
3747
generate_messages(
3848
DEPENDENCIES
3949
std_msgs
4050
sensor_msgs
4151
geometry_msgs
4252
nav_msgs
4353
#nap
44-
cerebro
54+
#cerebro
4555
)
4656

4757

48-
4958
catkin_package(
5059
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime image_transport cv_bridge
5160
#nap
52-
cerebro
61+
#cerebro
5362
)
5463

64+
65+
5566
include_directories(
5667
${catkin_INCLUDE_DIRS}
5768
${CERES_INCLUDE_DIRS}
@@ -74,7 +85,8 @@ add_executable( keyframe_pose_graph_slam
7485

7586

7687
# this is needed to indicate this this executable depends on the messages of the pkg.
77-
add_dependencies(keyframe_pose_graph_slam cerebro_generate_messages_cpp)
88+
#add_dependencies(keyframe_pose_graph_slam cerebro_generate_messages_cpp)
89+
#add_dependencies(keyframe_pose_graph_slam )
7890

7991

8092
#add_executable( test_disjointset_imp src/test_disjointset.cpp )

msg/LoopEdge.msg

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
time timestamp0
2+
time timestamp1
3+
geometry_msgs/Pose pose_1T0 # pose of 0 as observed from 1.
4+
float32 weight
5+
string description

package.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,22 @@
4444
<build_depend>roscpp</build_depend>
4545
<build_depend>rospy</build_depend>
4646
<build_depend>std_msgs</build_depend>
47+
<build_depend>geometry_msgs</build_depend>
4748
<build_depend>message_generation</build_depend>
4849
<build_depend>image_transport</build_depend>
4950
<build_depend>cv_bridge</build_depend>
5051

51-
<build_depend>cerebro</build_depend>
52+
<!-- <build_depend>cerebro</build_depend> -->
5253

5354
<run_depend>roscpp</run_depend>
5455
<run_depend>rospy</run_depend>
5556
<run_depend>std_msgs</run_depend>
57+
<run_depend>geometry_msgs</run_depend>
5658
<run_depend>message_runtime</run_depend>
5759
<run_depend>image_transport</run_depend>
5860
<run_depend>cv_bridge</run_depend>
5961

60-
<run_depend>cerebro</run_depend>
62+
<!-- <run_depend>cerebro</run_depend> -->
6163

6264
<!-- The export tag contains other, unspecified, tags -->
6365
<export>

src/NodeDataManager.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ worlds_handle_raw_ptr = new Worlds();
1818

1919
}
2020

21+
#define __NODEDATAMANAGER_CALLBACKS( msg ) msg;
22+
// #define __NODEDATAMANAGER_CALLBACKS(msg) ;
2123
void NodeDataManager::camera_pose_callback( const nav_msgs::Odometry::ConstPtr& msg )
2224
{
2325
// ROS_INFO( "NodeDataManager::camera_pose_callback");
@@ -40,7 +42,9 @@ void NodeDataManager::camera_pose_callback( const nav_msgs::Odometry::ConstPtr&
4042
w_T_cam(1,3) = msg->pose.pose.position.y;
4143
w_T_cam(2,3) = msg->pose.pose.position.z;
4244
w_T_cam(3,3) = 1.0;
43-
// cout << "camera_pose_callback: " << node_pose.size() << " " << PoseManipUtils::prettyprintMatrix4d( w_T_cam ) << endl;
45+
__NODEDATAMANAGER_CALLBACKS(
46+
cout << "camera_pose_callback: node_pose.size()=" << node_pose.size() << " curr_pose=" << PoseManipUtils::prettyprintMatrix4d( w_T_cam ) << endl;
47+
)
4448

4549

4650
// co-variance
@@ -121,8 +125,11 @@ void NodeDataManager::camera_pose_callback( const nav_msgs::Odometry::ConstPtr&
121125
//
122126
//
123127
// }
124-
128+
#ifdef __USE_SELF_LOOPEDGE_MSG
129+
void NodeDataManager::loopclosure_pose_callback( const solve_keyframe_pose_graph::LoopEdge::ConstPtr& msg )
130+
#else
125131
void NodeDataManager::loopclosure_pose_callback( const cerebro::LoopEdge::ConstPtr& msg )
132+
#endif
126133
{
127134
// Add a new edge ( 2 node*)
128135

@@ -134,11 +141,11 @@ void NodeDataManager::loopclosure_pose_callback( const cerebro::LoopEdge::Const
134141
// assert( op_mode == 30 );
135142
string description = msg->description;
136143

137-
#if 0
144+
__NODEDATAMANAGER_CALLBACKS(
138145
cout << TermColor::iYELLOW() << "[NodeDataManager::loopclosure_pose_callback]";
139146
cout << "t_a=" << t_a << " t_b=" << t_b << " wt=" << msg->weight;
140147
cout << " description=" << msg->description << TermColor::RESET() << endl;
141-
#endif
148+
)
142149

143150

144151
// retrive rel-pose p_T_c

src/NodeDataManager.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@
3939
// ros messages
4040
#include <nav_msgs/Path.h>
4141
// #include <nap/NapMsg.h>
42+
#define __USE_SELF_LOOPEDGE_MSG
43+
44+
#ifdef __USE_SELF_LOOPEDGE_MSG
45+
#include <solve_keyframe_pose_graph/LoopEdge.h>
46+
#else
4247
#include <cerebro/LoopEdge.h>
48+
#endif
4349
#include <nav_msgs/Odometry.h>
4450
#include <visualization_msgs/Marker.h>
4551
#include <std_msgs/ColorRGBA.h>
@@ -75,7 +81,11 @@ class NodeDataManager
7581
// Callbacks core
7682
void camera_pose_callback( const nav_msgs::Odometry::ConstPtr& msg );
7783
// void loopclosure_pose_callback( const nap::NapMsg::ConstPtr& msg );
84+
#ifdef __USE_SELF_LOOPEDGE_MSG
85+
void loopclosure_pose_callback( const solve_keyframe_pose_graph::LoopEdge::ConstPtr& msg );
86+
#else
7887
void loopclosure_pose_callback( const cerebro::LoopEdge::ConstPtr& msg );
88+
#endif
7989

8090
void print_nodes_lengths() const;
8191

src/PoseGraphSLAM.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,8 +1103,8 @@ bool PoseGraphSLAM::saveAsJSON(const string base_path)
11031103

11041104
// This thread wakes up when there are new loopedges. This flag controls the printing on trigger.
11051105
// When debugging you want to keep the headers 'on'.
1106-
// #define ___trigger_header( msg ) msg;
1107-
#define ___trigger_header( msg ) ;
1106+
#define ___trigger_header( msg ) msg;
1107+
// #define ___trigger_header( msg ) ;
11081108

11091109
void PoseGraphSLAM::reinit_ceres_problem_onnewloopedge_optimize6DOF()
11101110
{

src/keyframe_pose_graph_slam_node.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -838,7 +838,7 @@ void opt_traj_publisher_colored_by_world( const NodeDataManager * manager, const
838838

839839

840840

841-
ros::Rate loop_rate(20);
841+
ros::Rate loop_rate(10);
842842
// ros::Rate loop_rate(5);
843843
map<int, vector<Matrix4d> > jmb;
844844
vector< Vector3d > lbm; // a corrected poses. Same index as the node. These are used for loopedges.
@@ -881,7 +881,8 @@ void opt_traj_publisher_colored_by_world( const NodeDataManager * manager, const
881881
}
882882
#endif
883883

884-
884+
ElapsedTime _time_jmb;
885+
_time_jmb.tic();
885886
for( int i=0 ; i<manager->getNodeLen() ; i++ )
886887
{
887888
int world_id = manager->which_world_is_this( manager->getNodeTimestamp(i) );
@@ -1021,13 +1022,16 @@ void opt_traj_publisher_colored_by_world( const NodeDataManager * manager, const
10211022

10221023
}
10231024

1025+
// cout << TermColor::BLUE() << "[opt_traj_publisher_colored_by_world] Took " << _time_jmb.toc_milli() << "ms to compute #nodes=" << manager->getNodeLen() << TermColor::RESET() << endl;
10241026
//-----------------------------------------------------------------------------------------------//
10251027
//------------------------- After this only uses jmb and lmb to publish -------------------------//
10261028
//-----------------------------------------------------------------------------------------------//
10271029

10281030
//---
10291031
//--- Decide offset's (for plotting) different co-ordinate systems
10301032
//---
1033+
ElapsedTime _time_publih;
1034+
_time_publih.tic();
10311035
#if 1
10321036
map< int, int > setids_to_udumbes;
10331037
if( jmb.size() > 0 )
@@ -1232,7 +1236,7 @@ void opt_traj_publisher_colored_by_world( const NodeDataManager * manager, const
12321236

12331237
}
12341238

1235-
1239+
// cout << TermColor::BLUE() << "[opt_traj_publisher_colored_by_world] Publish took " << _time_publih.toc_milli() << " ms" << endl;
12361240
// book keeping
12371241
// cerr << "\nSLEEP\n";
12381242
loop_rate.sleep();
@@ -1443,6 +1447,7 @@ int main( int argc, char ** argv)
14431447
// std::thread th_slam( &PoseGraphSLAM::new_optimize6DOF, slam );
14441448

14451449
slam->reinit_ceres_problem_onnewloopedge_optimize6DOF_enable();
1450+
// slam->reinit_ceres_problem_onnewloopedge_optimize6DOF_disable();
14461451
std::thread th_slam( &PoseGraphSLAM::reinit_ceres_problem_onnewloopedge_optimize6DOF, slam );
14471452

14481453

@@ -1455,7 +1460,7 @@ int main( int argc, char ** argv)
14551460

14561461
// setup manager publishers threads - adhoc
14571462
// std::thread th3( periodic_publish_optimized_poses_smart, manager, slam, viz );
1458-
std::thread th4( periodic_publish_odoms, manager, viz );
1463+
// std::thread th4( periodic_publish_odoms, manager, viz );
14591464
std::thread th5( monitor_disjoint_set_datastructure, manager, viz );
14601465

14611466
opt_traj_publisher_options options;
@@ -1484,7 +1489,7 @@ int main( int argc, char ** argv)
14841489
// th1.join();
14851490
// th2.join();
14861491
// th3.join();
1487-
th4.join();
1492+
// th4.join();
14881493
th5.join();
14891494
th6.join();
14901495

0 commit comments

Comments
 (0)