(本文基于的pixhawk版本:6X minibase V2.2 ,固件:apm)
整个的步骤(baseline):
具体的每一步都可以在网上查到教程,这里只是梳理出一个流程。并且ubantu与ros的版本也不是必须和我的一致,也可以是ubantu18.04与ros melodic
-
在机载电脑上安装ubantu20.04(ros必备运行环境)
-
安装ros noetic(mavros必备运行环境)
-
安装mavros功能包(上位机与下位机的mavlink通信的渠道)
-
安装QGroundControL地面站(调试pixhawk参数必备软件)
-
用typec数据线,一端连接pixhawk,一端连接机载电脑,打开QGroundControL地面站,在参数设置中搜索"serial",将serial0_protocol改为mavlink1;serial0_baud改为921600.
如图:
-
不要拔掉数据线,关闭QGroundControL地面站,之后在终端窗口运行:
cpp
ls /dev/
找到飞控串口对应在机载电脑中的名称。
可能是;ttyACM0,或者是ttyACM1,或者是ttyUSB0,ttyUSB1。总之,要确认是哪一个。
在我实际找的过程中,找不同会发现一下子多出来两个,那就说明两个都可以用。
- 之后运行:
cpp
roscd mavros
cd launch
sudo gedit apm.launch
打开文件之后要做的事情:
检查其中的串口是否为你刚才找不同找到的串口名称,如果不是,则修改过来,其次要修改波特率为921600。如图:
- 准备好这一切之后可以运行mavros命令:
cpp
sudo chmod 777 /dev/ttyACM0 //先给串口赋予使用权限,后面运行节点才有权限使用该串口
roslaunch mavros apm.launch fcu_url:="/dev/ttyACM0:921600"
注意你的串口不一定是ttyACM0,这里要根据你的实际情况改。
会看到mavros已经运行起来了:(一个很重要的点是:运行上面的代码的时候一定要先关闭QGroundControL地面站,不然会显示busy,无法访问串口,从而停止运行)
之后可以另外打开一个终端,使用rostopic list命令来查看pixhawk已经发布的话题:
在其中找到了我需要的imu信息。
然后使用rostopic echo 命令加上话题名称即可打印输出这个信息:
cpp
rostopic echo /mavros/imu/data
即可出现imu数据:
ps:如果出现了各个程序都没问题,但是最后rostopic /mavros/imu/data的时候结果为空,可以检查如下几个问题:
- 有没有运行sudo chmod 777 赋予串口权限?
- 有没有正确修改apm.launch文件?
- 如果都没有问题,那就按照上面的顺序重新来一遍,就基本上OK了。
再插一句话:如果你用的是px4插件,则把上面命令终端apm.launch改为px4.launch然后运行即可。道理是一样的。