• 使用mavros在pixhawk和树莓派4B之间通信


    环境

    windows 11
    pixhawk2.4.8
    树莓派4B
    QGroundControl 4.2.8
    Mission Planner 1.3.80
    ardupilot
    ubuntu 20.04.2
    ros noetic
    (本人搭建所使用的软件硬件版本,仅供参考)

    步骤

    1. pixhawk安装固件(本人使用arduSub 4.2.0)
    2. 树莓派安装ubuntu20
    3. 树莓派开通硬件串口通讯
    4. 在树莓派上安装ros
    5. 在树莓派上安装mavros
    6. pixhawk在QGroundControl中配置串口
    7. 配置mavros的启动脚本
    8. 树莓派与pixhawk之间连线
    9. 启动mavros测试
    10. 话题发布与订阅

    1. pixhawk安装固件

    使用地面站软件(mission planner或QGC)烧录,可以在线安装,也支持离线安装
    在windows 11使用apj后缀的固件(ardusub.apj),在mp上直接安装,根据提示即可,出错就反复安装
    在这里插入图片描述

    2. 树莓派安装ubuntu20

    目前来说,ubuntu20会比较稳定,支持ros 1的版本noetic
    操作系统当然得从官网下载啦
    网上教程太多,略过

    3. 树莓派开通硬件串口通讯

    树莓派4B有40个引脚,其中的TXD,RXD是用于做串口通讯的,需要配置一下才能使用

    在这里插入图片描述
    在ubuntu系统中,使用命令可以找到名称为ttyAMA0的串口

    ll /dev/
    
    • 1

    将ttyAMA0设置为硬件串口,参考大佬的教程
    要出现

    serial0 → ttyAMA0
    serial1 → ttyS0
    
    • 1
    • 2

    其中,ubuntu20安装raspi-config参考这

    4. 在树莓派上安装ros

    鱼香ros一键安装太香了

    5. 在树莓派上安装mavros

    教程很多,这里使用二进制安装

    sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras
    
    • 1

    官网推荐的GeographicLib依赖库安装由于网咯问题经常装不了,建议离线安装,从大佬的gitee上下载
    将 geoids gravity magnetic 三个文件夹拷贝到 /usr/share/GeographicLib 文件夹下面
    跳到mavros目录下

    roscd mavros
    
    • 1

    启动mavros节点可以看到是否安装成功

    roslanch mavros apm.launch 
    
    • 1

    6. pixhawk在QGroundControl中配置串口

    pixhawk上有多个串口,我使用telem 2 与树莓派通讯,为了避免 RTT too high for timesync的告警(波特率太低),需要设置串口固定波特率为921600
    pixhawl与QGC进行usb连接,在设置里面把serial2 波特率改为921600
    在这里插入图片描述

    7. 配置mavros的启动脚本

    由于我使用的是ardusub固件,所以用apm.launch脚本启动节点
    修改 /opt/ros/noetic/share/mavros/launch下的apm.launch文件

    <arg name="fcu_url" default="/dev/ttyACM0:57600" />
    
    • 1

    把串口名称和波特率改为如下

    <arg name="fcu_url" default="/dev/ttyAMA0:921600" />
    
    • 1

    需要sudo权限修改

    8. 树莓派与pixhawk之间连线

    pixhawk接telem 2和power口即可(测试需要)
    telem 2的TX,RX,GND接出来
    在这里插入图片描述
    power口接电流计,电流计接电源单独供电(我使用pixhawk的usb口与树莓派相连时会断电重启,可能是电压不稳定,所以单独供电)
    在这里插入图片描述
    最后把telem 2的三根线与树莓派的引脚连接起来,参考大佬,建议使用杜邦线,我没有接5v,所以是3根线,树莓派和pixhawk都是单独供电
    在这里插入图片描述

    9. 启动mavros测试

    roslaunch mavros apm.launch 
    
    • 1

    打印窗口可以看到窗口连接成功,初始化成功,监听到heartbeat,即可

    10. 话题发布与订阅

    使用命令可以查看到所有话题

    rostopic list
    
    • 1
    /mavlink/from
    /mavlink/gcs_ip
    /mavlink/to
    /mavros/adsb/send
    /mavros/adsb/vehicle
    /mavros/battery
    /mavros/cam_imu_sync/cam_imu_stamp
    /mavros/camera/image_captured
    /mavros/cellular_status/status
    /mavros/companion_process/status
    /mavros/distance_sensor/rangefinder_pub
    /mavros/distance_sensor/rangefinder_sub
    /mavros/esc_info
    /mavros/esc_status
    /mavros/esc_telemetry
    /mavros/estimator_status
    /mavros/extended_state
    /mavros/fake_gps/mocap/pose
    /mavros/geofence/waypoints
    /mavros/global_position/compass_hdg
    /mavros/global_position/global
    /mavros/global_position/gp_lp_offset
    /mavros/global_position/gp_origin
    /mavros/global_position/local
    /mavros/global_position/raw/fix
    /mavros/global_position/raw/gps_vel
    /mavros/global_position/raw/satellites
    /mavros/global_position/rel_alt
    /mavros/global_position/set_gp_origin
    /mavros/gps_input/gps_input
    /mavros/gps_rtk/rtk_baseline
    /mavros/gps_rtk/send_rtcm
    /mavros/gpsstatus/gps1/raw
    /mavros/gpsstatus/gps1/rtk
    /mavros/gpsstatus/gps2/raw
    /mavros/gpsstatus/gps2/rtk
    /mavros/home_position/home
    /mavros/home_position/set
    /mavros/imu/data
    /mavros/imu/data_raw
    /mavros/imu/diff_pressure
    /mavros/imu/mag
    /mavros/imu/static_pressure
    /mavros/imu/temperature_baro
    /mavros/imu/temperature_imu
    /mavros/landing_target/lt_marker
    /mavros/landing_target/pose
    /mavros/landing_target/pose_in
    /mavros/local_position/accel
    /mavros/local_position/odom
    /mavros/local_position/pose
    /mavros/local_position/pose_cov
    /mavros/local_position/velocity_body
    /mavros/local_position/velocity_body_cov
    /mavros/local_position/velocity_local
    /mavros/log_transfer/raw/log_data
    /mavros/log_transfer/raw/log_entry
    /mavros/mag_calibration/report
    /mavros/mag_calibration/status
    /mavros/manual_control/control
    /mavros/manual_control/send
    /mavros/mission/reached
    /mavros/mission/waypoints
    /mavros/mocap/pose
    /mavros/mount_control/command
    /mavros/mount_control/orientation
    /mavros/mount_control/status
    /mavros/nav_controller_output
    /mavros/obstacle/send
    /mavros/odometry/in
    /mavros/odometry/out
    /mavros/onboard_computer/status
    /mavros/param/param_value
    /mavros/play_tune
    /mavros/radio_status
    /mavros/rallypoint/waypoints
    /mavros/rangefinder/rangefinder
    /mavros/rc/in
    /mavros/rc/out
    /mavros/rc/override
    /mavros/setpoint_accel/accel
    /mavros/setpoint_attitude/cmd_vel
    /mavros/setpoint_attitude/thrust
    /mavros/setpoint_position/global
    /mavros/setpoint_position/global_to_local
    /mavros/setpoint_position/local
    /mavros/setpoint_raw/attitude
    /mavros/setpoint_raw/global
    /mavros/setpoint_raw/local
    /mavros/setpoint_raw/target_attitude
    /mavros/setpoint_raw/target_global
    /mavros/setpoint_raw/target_local
    /mavros/setpoint_trajectory/desired
    /mavros/setpoint_trajectory/local
    /mavros/setpoint_velocity/cmd_vel
    /mavros/setpoint_velocity/cmd_vel_unstamped
    /mavros/state
    /mavros/statustext/recv
    /mavros/statustext/send
    /mavros/terrain/report
    /mavros/time_reference
    /mavros/timesync_status
    /mavros/trajectory/desired
    /mavros/trajectory/generated
    /mavros/trajectory/path
    /mavros/tunnel/in
    /mavros/tunnel/out
    /mavros/vfr_hud
    /mavros/vision_pose/pose
    /mavros/vision_pose/pose_cov
    /mavros/wind_estimation
    /move_base_simple/goal
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113

    查看话题信息

    rostopic info 话题名称
    
    • 1

    查看话题发布频率

    rostopic hz 话题名称
    
    • 1

    打印话题信息

    rostopic echo 话题名称
    
    • 1
    打印航向角
    rostopic echo /mavros/global_position/compass_hdg
    
    • 1
    打印三轴加速度和角速度
    rostopic echo /mavros/imu/data
    
    • 1

    如果打印没有输出,请参考大佬的做法

    rosservice call /mavros/set_stream_rate 0 10 1
    
    • 1

    修改飞控的广播频率

    ros2 foxy 安装 mavros

    安装依赖

    sudo apt install ros-foxy-mavros ros-foxy-mavros-extras
    
    • 1

    再安装GeographicLib下的文件

    ros2的launch文件应为py、xml、yaml文件,但是安装的launch文件(ros1运行使用的文件)
    运行ros2 launch mavros apm.launch会报错"syntax error"
    但是可以直接运行节点

    ros2 run mavros mavros_node fcu_url:=/dev/ttyACM0:57600
    
    • 1
  • 相关阅读:
    xilinx 除法ip核(divider) 不同模式结果和资源对比(VHDL&ISE)
    第2-3-8章 分片上传和分片合并的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
    辩证性在需求面前毫无逻辑
    深度学习案例分享 | 手写数字识别 - PyTorch 实现
    石子合并 ——区间DP
    Word文档打开后不能编辑,可以这样处理
    文件服务器 — File Browser
    【计算机视觉】Matlab图像增强----直方图均衡化
    工作簿和工作表的区别及编程实现
    busybox的基本使用记录壹
  • 原文地址:https://blog.csdn.net/u014220146/article/details/134055757