引言:在实现三维雷达定位后,还需要将定位数据传给飞控,这样无人机才能实现切入定点模式。无人机在有了位置以后,才能实现精确的闭环控制
简介
采用fast-lio定位算法,通过修改源码直接发布定位出来的位置信息和速度信息。在此基础上再经过坐标转换,将ROS下的ENU坐标系里程计信息传给飞控需要的NED里程计信息。
注意:仿真和实物对于本节的操作是一样的,不再单独写一篇说明
硬件:宇树雷达4DLiDAR L1 PM,ROS主控Jetson orin nano 8G
环境:ubuntu20.04,ros-noetic
步骤一:启动mavros通信节点,实现ROS和飞控的双向通信
javascript
roslaunch robot_bringup px4.launch
等待出现如下界面表示通信成功,否则请先确保通信正常
步骤二:启动三维雷达
javascript
roslaunch unitree_lidar_ros run_without_rviz.launch
注意:如果报错,请检查是否已经对雷达USB口进行绑定
步骤三: 启动fast-lio定位算法
javascript
roslaunch fast_lio mapping_unitree.launch
等待出现如下界面,表明启动成功
同时会自动开启RVIZ,如下
步骤三:查看定位出来的里程计信息
(1)、查看里程计话题名称
javascript
rostopic list
话题/Odometry就是雷达定位出来的里程计话题
(2)、打印里程计数据
javascript
rostopic echo /Odometry
步骤四:此时查看话题mavros/vision_pose/pose
javascript
rostopic hz /mavros/vision_pose/pose
可以看到,此时这个话题是没有发布和订阅数据的,底层飞控没有拿到雷达定位出来的数据
步骤五:启动雷达位置转换节点
javascript
rosrun lidar_to_mavros lidar_to_mavros
注:这个节点作为中间转换节点,一般不需要打印日志信息,只要启动后没有红色报错就可以认为是正常的,如下如所示
步骤六:重复步骤四,查看对应的话题信息
查看姿态信息发布的频率,从下图可以看出,话题已经按照10Hz的频率在发布了
javascript
rostopic hz /mavros/vision_pose/pose
查看姿态信息发布的数据信息,从下图可以看出,包含了位置和姿态信息
javascript
rostopic echo /mavros/vision_pose/pose