无人机MAVROS保姆级配置及模拟、真机飞行(全)

前期准备:

本文默认使用的是ubuntu18.04 melodic系统

进入ubuntu,建议使用鱼香ros一键安装ros:

终端运行:

​
wget http://fishros.com/install -O fishros && . fishros
​

安装ros1,建议添加新源但不清除系统源

安装完成启动roscore以验证ros是否安装成功!

下面开始进行mavros飞行环境的搭建:

为了确保脚本的顺利进行,安装基本依赖项:

sudo apt install -y \
ninja-build \
exiftool \
python-argparse \
python-empy \
python-toml \
python-numpy \
python-yaml \
python-dev \
python-pip \
ninja-build \
protobuf-compiler \
libeigen3-dev \
genromfs
pip install \
pandas \
jinja2 \
pyserial \
cerberus \
pyulog \
numpy \
toml \
pyquaternion

genxinpiphepip3

安装相关依赖:

sudo apt install python-rosinstall python-catkin-tools python-rosinstall-generator python-wstool build-essential

安装gazebo:

sudo apt install ros-melodic-gazebo-*

创建一个mavros 的工作空间:

mkdir -p ~/mavros_ws/src

MAVROS是一层MAVLink与ROS通信的封装,旨在方便无人机与机载电脑通信。

#二进制安装:

sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras

# 安装geographic lib :

​
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh

​
sudo chmod a+x install_geographiclib_datasets.sh
#安装geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh

#PX4 Firmware

cd ~/mavros_ws/src

# 请保证网络连接正常,此步骤耗时较长

​
git clone GitHub - PX4/PX4-Autopilot: PX4 Autopilot Software

cd Firmware

make posix_sitl_default gazebo

若以上步骤通过,此时会弹出Gazebo模拟器窗口,你会看到一架无人机出现在环境中,现在将窗口关闭即可

修改环境变量,这样每次打开新的终端都可以保持环境变量一致:

sudo gedit ~/.bashrc

# 在bashrc中,拷贝以下内容到bashrc尾端(接在source /opt/ros/melodic/setup.bash后面)

source ~/mavros_ws/src/Firmware/Tools/setup_gazebo.bash ~/mavros_ws/src/Firmware/ ~/mavros_ws/src/Firmware/build/posix_sitl_default

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmware

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmware/Tools/sitl_gazebo

打开一个新终端,输入:

roslaunch px4 posix_sitl.launch

在另一个终端,输入:

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

或者你可以直接输入:

roslaunch px4 mavros_posix_sitl.launch

一个如下图所示的窗口会弹出:

Figure 1, Gazebo and PX4 simulation in empty world

在一个新终端,输入

rostopic echo /mavros/state

你可以看到无人机的状态信息:

如果你看到上面的connected为True,那就代表你的Gazebo仿真环境配置成功,同时你的MAVROS通信也成功设置

完成以上例程,恭喜你已经成功安装上mavros了!!!

接下来将使用简单示例代码完成模拟及真机的飞行试验:

二、MAVROS与PX4的连接

2.1 Gazebo仿真

2.1.1启动Mavros

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

2.1.2启动Gazebo仿真环境

roslaunch px4 posix_sitl.launch

2.1.2启动外部控制节点

rosrun offboard offboard_node

可以看到gazebo启动,无人机以及场地出现在窗口中

运行rostopic查看无人机状态:

rostopic echo /mavros/state

一会无人机会上升至2m左右,相应的状态也为offboard模式

关于无人机的offboard模式demo:可以参考官方的px4文档MAVROS Offboard control example (C++) | PX4 User Guide

拷贝相应的示例代码后,按照相应的c++文件配置流程完成offboard_node节点的设置,最后建议在.bashrc文件中添加source ~/你的offboard代码工作空间/devel/setup.bash这样可以省去了每次改完代码都要source一下的麻烦,全自动source

就像我搭建完毕后.bashrc文件末尾:

source /opt/ros/melodic/setup.bash

source ~/offboard_ws/devel/setup.bash

source ~/mavros_ws/src/Firmware/Tools/setup_gazebo.bash ~/mavros_ws/src/Firmware/ ~/mavros_ws/src/Firmware/build/posix_sitl_default

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmware

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmware/Tools/sitl_gazebo

2.2真机

参考Companion Computer for Pixhawk SeriesMAVLink Peripherals (GCS/OSD/Companion)

2.2.1配置Pixhawk上的Telem2作为MAVLINK端口

  • MAV_1_CONFIG= TELEM 2
  • MAV_1_MODE = Onboard
  • SER_TEL2_BAUD = 921600 8N1

一开始参数里可能只有MAV_1_CONFIG,而搜不到另外两个参数,只需要先把MAV_1_CONFIG设置为TELEM 2,然后把飞控重启后就有了

2.2.2在电脑上启动MAVROS

电脑+数传电台:

插上数传,一空一地,查看数传对应的串口号:

ls /dev/ttyUSB*

给予相应的权限:

sudo chmod 777 /dev/ttyUSB*

修改launch文件,使用sudo权限打开/opt/ros/melodic/share/mavros/launch/px4.launch,将其中的

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

修改为自己的端口及波特率

<arg name="fcu_url" default="/dev/ttyUSB0:921600" />

启动MAVROS:

roslaunch mavros px4.launch fcu_url:="/dev/ttyUSB0"

运行rostopic查看无人机状态:

rostopic echo /mavros/state

启动外部控制节点:

rosrun offboard offboard_node

将会看到无人机缓慢上升至2m的高度,如需降落则(ctrl+c)quit掉控制节点,无人机将会执行auto.land自动降落过程

机载电脑+USB线:

jetson nano的串口2,也就是dev/ttyTHS1,这个按照自己实际情况写就好了。最后的921600是波特率,就是2.2.1中设置的SER_TEL2_BAUD,改成设置的值就行了。

roslaunch mavros px4.launch fcu_url:=serial:///dev/ttyTHS1:921600 gcs_url:=udp://@192.168.0.0

gcs_url为运行QGC的主机的IP

设置为以下参数表示自动寻址,直到连上QGC

roslaunch mavros px4.launch fcu_url:=serial:///dev/ttyTHS1:921600 gcs_url:=udp-b://@

可能会报错

FCU: DeviceError:serial:open: Permission denied

解决方法是给对应的串口权限

sudo chmod 777 /dev/ttyTHS1

虽然这样子mavros就正常运行了,但是节点信息会卡在xxxxxx start xxxxxxx,然后/mavros/state中的connected是false。可以尝试把波特率往下降到460800以下。也有大佬说可能因为数据线太长,导致传输过程中到达不了那么高的波特率,所以不能成功连接

串口设置:由于机载计算机进行飞行控制时需要很高的实时性,mavros会检测通信实时性,如果串口波特率设置太低,则会提示TM:RTT too high for timesync,故应该配置高速波特率。

可能会报timesync超时等异常,解决方法是:

sudo gedit /opt/ros/melodic/share/mavros/launch/px4_config.yaml

把其中的第12行改为

timesync_rate: 0.0

由于时间有限,更多的机载电脑配置资料请参考:基于mavros机载控制 - 知乎

三、其他

3.1关于提高mavros中IMU话题的发布频率(参考:提高mavros中IMU话题的发布频率_dckwin的博客-CSDN博客​blog.csdn.net/qq_38649880/article/details/89419736

rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0//提高mavros/imu/data_raw频率

rosrun mavros mavcmd long 511 31 10000 0 0 0 0 0//提高mavros/imu/data频率

10000表示话题的发布时间间隔为10000us,可以自由调节

四、安全建议

注意:到真机实验的场地,需要重新校准一下所有的传感器,避免传感器出错及不准确等情况

绑飞:找到能够绑住无人机而对其飞行影响较小的细绳,减小损失,避免无人机失控炸机、伤人等

本文参考结合GAAS飞行(无人机自动驾驶软件系列 E01:OFFBOARD控制以及Gazebo仿真 - GAAS)知乎文章:常用MAVROS话题和服务 - 知乎 整顿融合,为了实现从mavros搭建到真机飞行的全过程,遂作本文

专栏持续更新中!!!若有疑惑,可评论区留言,大家一起学习,不定期上线,有时间会一一解答,最后希望本文对热爱无人机的大家有所帮助!

                                                                  --来自刚学没多久的某末流大专大学——大二机电苦逼仔

  • 15
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值