cartographer仿真建图中,报错'collect_metrics'重定义导致 cartography_node 节点没有正确启动
-
[cartographer_node-1] ERROR: flag 'collect_metrics' was defined more than once (in files '/opt/pro/test/test1_ws/src/cartographer_ros/cartographer_ros/src/offline_node.cpp' and '/opt/pro/test/test1_ws/src/cartographer_ros/cartographer_ros/src/node_main.cpp'). [ERROR] [cartographer_node-1]: process has died [pid 4366, exit code 1, cmd '/opt/pro/test/test1_ws/install/cartographer_ros/lib/cartographer_ros/cartographer_node -configuration_directory /opt/pro/test/test1_ws/install/mybot_cartographer/share/mybot_cartographer/config -configuration_basename mybot_2d.lua --ros-args -r __node:=cartographer_node --params-file /tmp/launch_params_r6yzqmrl']出现上面报错

只启动了 /cartographer_occupancy_grid_node 节点 -
@只学一点 我也遇到了,怎么解决呀
-
@63743995 已解决,应该是cartographer ros版本问题,用git clone --recursive https://github.com/fishros/fishbot.git -b humble命令拉取小鱼的开源项目,里面顺带的cartographer源码版本就可以。
-
此回复已被删除! -
除了专门拉出小鱼教程里的特定分支映射;
另解:
<your ws>/src/cartographer_ros/cartographer_ros/src/node_main.cpp
开头部分修改为:
// DEFINE_bool(collect_metrics, false,
// "Activates the collection of runtime metrics. If activated, the "
// "metrics can be accessed via a ROS service.");
// DEFINE_string(configuration_directory, "",
// "First directory in which configuration files are searched, "
// "second is always the Cartographer installation to allow "
// "including files from there.");
DEFINE_string(configuration_basename, "",
"Basename, i.e. not containing any directory prefix, of the "
"configuration file.");
// DEFINE_string(load_state_filename, "",
// "If non-empty, filename of a .pbstream file to load, containing "
// "a saved SLAM state.");
// DEFINE_bool(load_frozen_state, true,
// "Load the saved state as frozen (non-optimized) trajectories.");
DEFINE_bool(
start_trajectory_with_default_topics, true,
"Enable to immediately start the first trajectory with default topics.");
// DEFINE_string(
// save_state_filename, "",
// "If non-empty, serialize state and write it to disk before shutting down.");DECLARE_bool(collect_metrics);
DECLARE_string(configuration_directory);DECLARE_string(load_state_filename);
DECLARE_bool(load_frozen_state);DECLARE_string(save_state_filename);
主要是把和offline_node的重复定义给注释掉并改为纯声明。