赞
踩
本文默认使用的是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了!!!
接下来将使用简单示例代码完成模拟及真机的飞行试验:
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
roslaunch px4 posix_sitl.launch
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
参考Companion Computer for Pixhawk Series,MAVLink Peripherals (GCS/OSD/Companion)
一开始参数里可能只有MAV_1_CONFIG,而搜不到另外两个参数,只需要先把MAV_1_CONFIG设置为TELEM 2,然后把飞控重启后就有了
电脑+数传电台:
插上数传,一空一地,查看数传对应的串口号:
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搭建到真机飞行的全过程,遂作本文
--来自刚学没多久的某末流大专大学——大二机电苦逼仔
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。