前期准备:

本文默认使用的是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 Softwarecd Firmwaremake 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_defaultexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmwareexport 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.bashsource ~/offboard_ws/devel/setup.bashsource ~/mavros_ws/src/Firmware/Tools/setup_gazebo.bash ~/mavros_ws/src/Firmware/ ~/mavros_ws/src/Firmware/build/posix_sitl_defaultexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmwareexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/mavros_ws/src/Firmware/Tools/sitl_gazebo

2.2真机

参考Companion Computer for Pixhawk Series,MAVLink 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搭建到真机飞行的全过程,遂作本文

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

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

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

  1. Android Studio下载、安装、配置及连接真机开发第一个App ——入门选手快进

      最近的安卓测试给我心态搞蹦了,问也没人问,难受简直了!又是一轮自学之路(说实话这一路上教会我一个很大的道理就是一定要有愿意帮助你的老师,还有自己的自觉,一样也不能少.前者没有的话只能后者补了呜呜呜 ...

  2. 远程连接模拟真机ADB 调试工具安装详解

    在Android开发过程中,有时候没有真机,需要连接云手机,或者三方模拟真机进行调试,这里就会用到ADB工具. 一.我们先准备好ADB工具,获得ADB途径可以 官方下载:官网下载 CSDN下载:csd ...

  3. 配置虚拟机与真机在同一个网段下

    为了方便物理机访问虚拟机,需要分别将虚拟机网卡和物理机连接内网的网卡配置在同一个网关下.最后通过ping操作,查看是否配置成功. 配置过程非常简单,但是笔者在配置中遇到一点小问题,一有步骤没有做好,磨 ...

  4. 模拟真机环境_QFramework 使用指南 2020(八):Res Kit(2)模拟模式与非模拟模式...

    在上一篇,介绍了 Res Kit 的基本使用,相信大家已经体会到了 Res Kit 的简便之处了. 在这一篇,我们试着探讨一下 Res Kit 的设计背后原理. AssetBundle 的不便之处 在 ...

  5. 华为(huawei)USG6000的CLI命令行综合配置之Ensp真机连接 USG6000防火墙

    文章目录 前言 一.拓扑图及拓扑说明 二.配置步骤及验证 1.配置真机连接USG6000 前言 华为的USG系列防火墙一般部署在园区网出口中,很多朋友对USG系列如何进行配置不是太了解.本案例将用en ...

  6. 手机自动化脚本-- 模拟器模拟真机环境过检测

    文章目录 安装包目录结构 一.安装雷电模拟器9 二.新建模拟器并且初始化 1. 性能设置 2. 其他设置 3. 当前配置 三.面具 1. 安装 2. 面具初始化 四.修改机型 1. 将机型模块安装到模 ...

  7. Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法...

    Android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹,问题在于data文件夹没有权限,用360手机助手或豌豆荚也是看不见的. 有以下两种解决方法: ...

  8. 2022年微信小程序真机调试全流程及10大常见问题处理

    更多Eclipse.IDEA.微信开发者.数据库调试问题,请关注博主进行交流探讨.开发相关软件无偿下载. 目录 一.微信开发者ID注册: 1. 注册地址:https://mp.weixin.qq.co ...

  9. MySQL之MGR原理+保姆级配置部署

    文章目录 MGR MGR特点 组复制故障检测 组复制的限制 MGR主从复制实战 环境清理(这步可忽略) 三台机器的准备工作 安装数据库:每个机器都做,MySQL版本最好一致 master配置内容 配置 ...

最新文章

  1. 【经典】javascript ES5原生实现考试题答案全排列组合数组结果获取
  2. 准官宣?余承东证实华为已有自研操作系统
  3. CodeForces - 1295C Obtain The String(dp预处理+贪心)
  4. 对偶图 【BZOJ】1001: [BeiJing2006]狼抓兔子(对偶图+最短路)
  5. Flask笔记-session安全问题(避免任务重复提交)
  6. MySQL高级-索引
  7. 报错:error LNK2001:unresolved external symbol _WinMain@16
  8. 中低频量化交易策略研发01_引言
  9. 脱口秀在尝试处理一件难事
  10. qq强制聊天对话php代码,qq强制聊天代码大全
  11. C# Winfrom MQTT 客户端与服务器【代码】
  12. Predator:比微软Kinect更强的视频追踪算法——来自捷克博士论文
  13. Windows下安装JanusGraph(踩坑记录)
  14. 蓝鲸Epicor MES解决方案
  15. 数据导入与预处理——1.初步熟悉kettle-Spoon
  16. 老牌安全公司CYBER ARK眼中的RPA部署安全问题
  17. 女人是这样哄的,学以致用
  18. 盘式过滤器详细介绍分析
  19. 无盘服务器网线接法,无盘经验:解析网吧千兆网线的标准做法
  20. React写响应式官方网站-媒体查询

热门文章

  1. nodejs基于vue小社区报修维修平台
  2. 微服务——服务拆分策略与原则
  3. 数学建模:线性规划与多目标规划
  4. pandas中常用函数
  5. (三) 数据库的设计
  6. CSS实现隐藏滚动条但是可以滚动
  7. 二叉树遍历算法的应用——计算二叉树的深度、计算二叉树的节点总数、计算二叉树的叶子节点数(均采用递归的思想)
  8. openfalcon监控端口大全
  9. 营业执照的五大误区,企业千万不要踩雷
  10. jquery中的ajax请求的基本使用以及登陆注册不刷新页面的例子/jquery中get、post以及ajax的使用/运用jQuery实现登陆注册案例