当前位置:   article > 正文

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

mavros

前期准备:

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

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

终端运行:

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

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

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

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

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

  1. sudo apt install -y \
  2. ninja-build \
  3. exiftool \
  4. python-argparse \
  5. python-empy \
  6. python-toml \
  7. python-numpy \
  8. python-yaml \
  9. python-dev \
  10. python-pip \
  11. ninja-build \
  12. protobuf-compiler \
  13. libeigen3-dev \
  14. genromfs
  1. pip install \
  2. pandas \
  3. jinja2 \
  4. pyserial \
  5. cerberus \
  6. pyulog \
  7. numpy \
  8. toml \
  9. 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 :

  1. wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x install_geographiclib_datasets.sh
  1. #安装geographiclib_datasets.sh
  2. sudo ./install_geographiclib_datasets.sh

#PX4 Firmware

cd ~/mavros_ws/src

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

  1. git clone GitHub - PX4/PX4-Autopilot: PX4 Autopilot Software
  2. cd Firmware
  3. make posix_sitl_default gazebo

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

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

sudo gedit ~/.bashrc

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

  1. source ~/mavros_ws/src/Firmware/Tools/setup_gazebo.bash ~/mavros_ws/src/Firmware/ ~/mavros_ws/src/Firmware/build/posix_sitl_default
  2. export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmware
  3. 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文件末尾:

  1. source /opt/ros/melodic/setup.bash
  2. source ~/offboard_ws/devel/setup.bash
  3. source ~/mavros_ws/src/Firmware/Tools/setup_gazebo.bash ~/mavros_ws/src/Firmware/ ~/mavros_ws/src/Firmware/build/posix_sitl_default
  4. export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmware
  5. 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

  1. rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0//提高mavros/imu/data_raw频率
  2. rosrun mavros mavcmd long 511 31 10000 0 0 0 0 0//提高mavros/imu/data频率

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

四、安全建议

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/393228
推荐阅读
相关标签
  

闽ICP备14008679号