基于Pixhawk和ROS搭建自主无人车(三):ROS通信篇

发布时间:2024年01月17日

参考

1. 硬件接线一览

在这里插入图片描述

2. 安装 Mavros

2.1 简介

  • Mavros 是一个用于与无人机通信的 ROS 功能包,它借助 MAVLink 协议来与 PX4 Autopilot 进行通信,MAVLink 是一种轻量级、高效的无人机通信协议,通过 ROS 与 PX4 Autopilot 进行通信和交互

2.2 安装流程

  • 本文采用二进制方式安装 Mavros,如果需要对源码进行修改可通过源码方式安装
    # 本文使用 ROS-melodic 版本,其他版本直接替换即可
    $ sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras
    
    # 接下来的步骤有两种方法,第一种方法可能会因为网络问题导致下载不下来
    # 方法一
    $ wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
    $ sudo chmod 777 ./install_geographiclib_datasets.sh
    $ ./install_geographiclib_datasets.sh   
    
    # 方法二
    $ cd ~
    $ git clone https://github.com/Robot-Yue/GeographicLib.git
    $ sudo mv GeographicLib /usr/share
    

3. 通信测试

  1. 首先,将 Pixhawk 通过 USB 连接到电脑,打开 QGC 地面站,设置以下参数(本文使用 APM-4.2.3 固件)

    • SERIAL2_BAUD = 921600(如果通信失败则适当降低波特率为 460800
    • SERIAL2_PROTOCOL = MAVLink2
  2. 然后,修改启动文件 apm.launch(如果用的 PX4 固件则对应 px4.launch)下行代码

    • 其中 ttyUSB0 对应于 Pixhawk 和机载电脑(本文使用 USB 转 ttl 和 NUC 连接)的连接串口号
    • 921600 对应上述设置的 SERIAL2_BAUD 波特率数值(如果通信失败则适当降低波特率为 460800
    $ roscd mavros
    $ cd launch
    $ sudo vim apm.launch
    
    // 修改下行代码
    ...
    <arg name="fcu_url" default="/dev/ttyUSB0:921600">
    ...
    
  3. 然后,给 ttyUSB0 添加 777 权限

    $ sudo chmod 777 /dev/ttyUSB0    
    
  4. 最后,启动 apm.launch 建立 Pixhawk 和 NUC 的通信,出现下图则表示通信建立成功

    $ cd ~
    $ roslaunch mavros apm.launch
    

    在这里插入图片描述

    # 另起一个终端,测试 NUC 订阅 Pixhawk 中的 IMU 发布频率信息
    $ rostopic hz /mavros/imu/data_raw
    

    在这里插入图片描述

文章来源:https://blog.csdn.net/qq_42994487/article/details/135655473
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。