在测试slam算法时,我们需要groundtruth作为真值验证算法的准确性。在gazebo仿真中,可以通过添加gazebo_ros_p3d插件来提供真值,参考https://github.com/ros-simulation/gazebo_ros_pkgs/issues/1287,但是在ros2 humble实际部署中,虽不影响模型生成,但该插件并没有发挥作用,在gazebo模型生成中,可见报错Missing <body_name>, cannot proceed。推测是ros1和ros2 在定义仿真机器人的xacro文件命名规范不一致导致的。ros1定义插件性质用的是<bodyName>,而在ros2中应当修改为<body_name>。其他性质也按相同方法修改。修改完后可以在/${robot_name}/${robot_name}_odom这个topic下找到,信息类型是odometry。最后附上修改完的完成插件例子
<plugin name="p3d_base_controller" filename="libgazebo_ros_p3d.so">
<ros>
<namespace>${robot_name}</namespace>
<remapping>odom:=${robot_name}_odom</remapping>
</ros>
<update_rate>20.0</update_rate>
<body_name>${robot_name}_base_footprint</body_name>
<frame_name>world</frame_name>
<gaussian_noise>0.0</gaussian_noise>
<xyz_offset>0 0 0</xyz_offset>
<rpy_offset>0 0 0</rpy_offset>
</plugin>