参考资料

  1. XTDrone使用文档
  2. px4 ROS gazebo仿真环境搭建
  3. QGroundControl

使用环境

所使用的为:ubuntu20.04、ros noetic、gazebo11。

(以下教程默认已经安装 ros noetic)

注:由于博主不再从事相关研究方向,如果按照以下安装步骤时依旧会碰到问题,请自行Google哈~(2023.11)

1.Mavros安装

在安装之前,请先更新软件库:

sudo apt-get update
sudo apt-get upgrade

如果更新过程报校验数字签名出错,如下图所示:
在这里插入图片描述则有可能是ros的密钥问题,我们更新ROS apt 仓库使用的公共密钥:

curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

然后安装mavros:

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间,请耐心等待PX4配置

最后一步请耐心等待,我大概等待了20分钟左右。

2. PX4配置

对于PX4的配置,直接用git clone的方法即可。

git clone https://github.com/PX4/Firmware.git --recursive

然后执行Firmware文件夹里的这个.sh文件:

bash ./Tools/setup/ubuntu.sh

执行完成后,cd到Firmware文件夹:

cd Firemare
make px4_sitl_default gazebo

编译完成后,会弹出Gazebo界面,将其关闭即可。
在这里插入图片描述
随后,打开bashrc文件:

gedit ~/.bashrc

将以下路径添加到文件中:

source ~/catkin_ws/devel/setup.bash
source ~/Firmware/Tools/setup_gazebo.bash ~/Firmware/ ~/Firmware/build/px4_sitl_default

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

注意与自己路径的匹配,适当修改上述命令。前两个source顺序不能颠倒。
添加完成后,记得source:

source ~/.bashrc

然后运行如下命令,此时会启动Gazebo,界面与上图一样。

cd ~/Firmware
roslaunch px4 mavros_posix_sitl.launch

再打开一个终端,运行:

rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。如果一直false,则重新在配置PX4一遍试试。

3. 安装地面站QGroundControl

这个参考官网资料连接。其实非常简单:
首先在终端:

sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y

然后下载QGroundControl.AppImage.
下载完成后,进入到QGroundControl.AppImage相应的目录,修改QGroundControl.AppImage权限:

chmod +x ./QGroundControl.AppImage

然后双击QGroundControl.AppImage或者在终端切换到QGroundControl.AppImage目录后,输入以下命令即可打开地面站:

./QGroundControl.AppImage

4. XTDrone源码下载

git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp sitl_config/launch/* ~/PX4_Firmware/launch/
#如果之前没有catkin_ws,需要建立一下,之后的教程会用到
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts

由于修改了PX4 sitl_gazebo中的gazebo_gimbal_controller_plugin.cpp(源代码不能控制多无人机的云台),要再编译一次。

cd ~/Firmware
make px4_sitl_default gazebo

5. 用键盘控制无人机飞行

在一个终端运行:

cd ~/Firmware
roslaunch px4 indoor1.launch

正常的话gazebo会出现如下界面:
在这里插入图片描述

在另一个终端运行:

cd ~/XTDrone/communication/
python multirotor_communication.py iris 0

如果运行后报错:

import rospy
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/__init__.py", line 49, in <module>
    from .client import spin, myargv, init_node, \
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/client.py", line 60, in <module>
    import rospy.impl.init
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/impl/init.py", line 54, in <module>
    from .tcpros import init_tcpros
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/impl/tcpros.py", line 45, in <module>
    import rospy.impl.tcpros_service
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/impl/tcpros_service.py", line 54, in <module>
    from rospy.impl.tcpros_base import TCPROSTransport, TCPROSTransportProtocol, \
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/impl/tcpros_base.py", line 160
    (e_errno, msg, *_) = e.args
                   ^
SyntaxError: invalid syntax

则将**/opt/ros/noetic/lib/python3/dist-packages/rospy/impl/tcpros_base.py** 的(e_errno, msg, *_) = e.args 改为(e_errno, msg) = e.args

如果还报:

No module named pyquaternion

使用apt安装即可:

sudo pip2 install pyquaternion

与0号iris建立通信后,在另一个终端运行:

cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel

便可以通过键盘控制1架iris的解锁/上锁(arm/disarm),修改飞行模式,飞机速度等。使用v起飞利用的是takeoff飞行模式,相关参数(起飞速度、高度)要在rcS中设置。一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞(即:upward velocity 需要大于0.3)。注意,飞机要先解锁才能起飞!飞到一定高度后可以切换为‘hover’模式悬停,再运行自己的飞行脚本,或利用键盘控制飞机。
推荐起飞流程:按i把向上速度加到0.3以上,再按b切offboard模式,最后按t解锁。

至此,仿真平台基础配置完成。

=====================================================
=分割线===

使用XTDrone后,发现MAVROS与SITL通信一直为false,无法控制无人机飞行,一方面猜测原因是安装的px4是最新版本的,而XTDrone要求的px4是1.11版本的。考虑到暂时可能用不到XTDrone,因此仿真测试可以使用下面这种方法:
px4 运行mavros仿真
另一方面,可能是launch文件中的fcu_url路径有问题,可参考我另一篇关于XTDrone配置的博客,最后一部分提到了这个问题的解决方法。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐