树莓派+PX4固件+T265+MAVROS+QGC实现室内定位

树莓派+PX4固件+T265+MAVROS+QGC实现室内定位

整了整整两礼拜,终于稍微搞明白了一点PX4和MAVROS;因为APM固件下MISSIONPLANNER地面站只能windows下,觉得windows和Ubantu两头跑太麻烦,决定用PX4固件和QGC地面站,全程在Linux系统下进行实验,网上有一些教程,但是偏向于宏观,一些细节和坑都得自己慢慢摸索,我记录一下最近心得.

环境安装配置

对于环境安装配置这里不作过多描述,树莓派的UBANTU安装,ROS/MAVROS安装,网上有详细的教程,可以参考:

  1. QGC通过网络连接飞控(树莓派+ROS桥接MavLink)
  2. 在ubuntu下利用ssh控制树莓派教程
  3. PX4开发环境搭建(Ubuntu1804+QGC+Qt Creator )
  4. T265驱动和librealsense安装
  5. vision_to_mavros安装

其实上述全部步骤完成就已经实现了室内定位的功能,但是很多细节可能会遇到,参考环境安装部分即可.默认PC端安装完QGC,树莓派端安装完UBANTU,ROS,MAVROS,librealsense,vision_to_mavros完,就开始了.

无人机配置

首先我使用的是Pixhawk2.4.8,通过QGC地面站刷了最新的px4原生固件,刷完固件要校准,机载计算机用的是树莓派3B+,用的USB连接(注意其中serial4/5用TTL转USB时,RX与TX不能搞反).

实现MAVROS通信

其实最大的难点和问题就在这儿,实现了mavros通信,问题就解决两一大半.

在安装完MAVROS了以后,在树莓派端运行指令:

roslaunch mavros px4.launch

如果报错基本就是fcl_url没有匹配,打开终端(根据ROS版本置换melodic和kinetic):

cd /opt/ros/melodic/share/mavros/launch
sudo vi px4.launch

找到
arg name=“fcu_url” default="/dev/ttyACM0:57600"
问题就在这儿.因为我是USB连接的,所以我得改为:
arg name=“fcu_url” default="/dev/ttyUSB0:57600"
然后就可以运行了.运行过程中运行指令

rostopic echo /mavros/state

会发现问题,显示connected :false;mavros更根本没有和飞控连接上,这里主要由以下几个原因:

  1. 串口有没有接对
  2. 波特率是否正确
  3. 树莓派是否设置了串口

这里要去QGC端设置,QGC连上飞控以后,
树莓派+PX4固件+T265+MAVROS+QGC实现室内定位
然后
树莓派+PX4固件+T265+MAVROS+QGC实现室内定位
将波特率设置为上面/dev/ttyUSB0:57600的57600.

在QGC上添加
树莓派+PX4固件+T265+MAVROS+QGC实现室内定位

现在去运行mavros就可以显示connected True了.
但你又会发现一个新的问题:
他会显示:
TTL的速度异常
这里就再次:

cd /opt/ros/melodic/share/mavros/launch

找到px4_config.yaml文件

sudo vi px4_config.yaml

将timesync_rate:设置为0.0即可.至此,就可以实现MAVROS通信了,问题也就解决了一大半.

实现室内定位

这里参考博客,感谢这篇博客,这博客我这两礼拜至少看了十来次.
主要这些步骤:
1.将EKF2_AID_MASK设置为24,EKF2_HGT_MODE可根据选择选VISION或者继续使用气压计.
2.ssh到树莓派端先运行

roslaunch realsense2_camera rs_t265.launch

启动T265相机,然后启动MAVROS:

roslaunch mavros px4.launch
rostopic echo /mavros/state
验证mavros是否连接成功.

运行

roslaunch vision_to_mavros t265_tf_to_mavros.launch
rostopic echo vision_pose/pose
检查是否有数据.
(如果成功的话,以后只需要运行roslaunch vision_to_mavros t265_all_nodes.launch就可以实现上述三个roslaunch一步到位了,如果报错,动动自己脑筋解决呗,提示:去 vision_to_mavros包找到t265_all_nodes.launch文件,看看它是不是用的apm.launch?改成px4呗)

在QGC地面站,Mavlink inspector查看是否有vision数据.如果有,就放心大胆尝试切入position模式开始室内定位吧.