这篇文章以使用Gazebo位姿真值为例,如果使用视觉惯性里程计,解决的思路是一样的。 按照语雀官方文档启动ego planner后,终端可能会报出如下图所示的"no odom"提示,飞机无法飞向给定目标点:
出现这个问题的原因是订阅的里程计话题名不对,我们首先利用rostopic list |grep odometry指令,找出和里程计相关的话题名:
Gazebo位姿真值发布的话题名应为/iris_0/mavros/odometry/in,使用“rostopic info”,查看该话题的发布者、订阅者信息,发现该话题并没有被订阅:
此时会发现多出了一个/iris_0/iris_0/mavros/odometry/in,使用"rostopic info",查看该话题:
发现/iris_0_ego_planner_node节点错误订阅了/iris_0/iris_0/mavros/odometry/in,原因是在ego planner文件夹下的single_uav.launch中,odom_topic的value设错了:
解决的方法是:将上图第6行的value改为"/mavros/odometry/in",这个时候才能成功订阅/iris_0/mavros/odometry/in,如果这里的value值设置为"/iris_0/mavros/odometry/in,就会错误订阅/iris_0/iris_0/mavros/odometry/in,而这个话题并没有无人机的定位数据。
修改后运行ego planner,终端就不会报"no odom",而是"WAIT_TARGET":
运行指令rostopic info /iris_0/mavros/odometry/in,发现里程计数据被成功订阅:
此时,将run_in_xtdrone.launch中的flight_type设置为2,无人机就可以自动飞到给定目标点,但如果将flight_type设为1,使用RVIZ中的2D Nav Goal可能还是没有反应,这个问题的解决请参考我的另一篇博客。
标签:Ubuntu20.04,iris,订阅,odometry,mavros,no,里程计,INIT,ego From: https://blog.csdn.net/sacsdvs/article/details/143128303