【无人机学习篇】构建mavros&机载电脑连接,从机载电脑获取pixhawk数据

(本文基于的pixhawk版本:6X minibase V2.2 ,固件:apm)

整个的步骤(baseline):

具体的每一步都可以在网上查到教程,这里只是梳理出一个流程。并且ubantu与ros的版本也不是必须和我的一致,也可以是ubantu18.04与ros melodic

  1. 在机载电脑上安装ubantu20.04(ros必备运行环境)

  2. 安装ros noetic(mavros必备运行环境)

  3. 安装mavros功能包(上位机与下位机的mavlink通信的渠道)

  4. 安装QGroundControL地面站(调试pixhawk参数必备软件)

  5. 用typec数据线,一端连接pixhawk,一端连接机载电脑,打开QGroundControL地面站,在参数设置中搜索"serial",将serial0_protocol改为mavlink1;serial0_baud改为921600.

    如图:

  6. 不要拔掉数据线,关闭QGroundControL地面站,之后在终端窗口运行:

cpp 复制代码
ls /dev/

找到飞控串口对应在机载电脑中的名称。

可能是;ttyACM0,或者是ttyACM1,或者是ttyUSB0,ttyUSB1。总之,要确认是哪一个。

在我实际找的过程中,找不同会发现一下子多出来两个,那就说明两个都可以用。

  1. 之后运行:
cpp 复制代码
roscd mavros
cd launch
sudo gedit apm.launch

打开文件之后要做的事情:

检查其中的串口是否为你刚才找不同找到的串口名称,如果不是,则修改过来,其次要修改波特率为921600。如图:

  1. 准备好这一切之后可以运行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然后运行即可。道理是一样的。
相关推荐
电鱼智能的电小鱼1 分钟前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
nuannuan2311a2 分钟前
12N60-ASEMI无人机专用功率器件12N60
无人机
烁3472 分钟前
每日一题(小白)模拟娱乐篇33
java·开发语言·算法
电鱼智能的电小鱼7 分钟前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算
自由鬼14 分钟前
开源AI开发工具:OpenAI Codex CLI
人工智能·ai·开源·软件构建·开源软件·个人开发
码起来呗19 分钟前
基于SpringBoot的高校学习讲座预约系统-项目分享
spring boot·后端·学习
生信碱移21 分钟前
大语言模型时代,单细胞注释也需要集思广益(mLLMCelltype)
人工智能·经验分享·深度学习·语言模型·自然语言处理·数据挖掘·数据可视化
Yurko1323 分钟前
【C语言】全局变量、静态本地变量
c语言·学习
晴天彩虹雨28 分钟前
Flink 数据清洗与字段标准化最佳实践
大数据·数据仓库·flink
Demons_kirit33 分钟前
LeetCode 2799、2840题解
算法·leetcode·职场和发展