XTDrone仿真平台配置
文章目录1. 依赖安装2. ROS安装与gazebo安装3. MAVROS安装4. PX4配置5. 安装地面站QGroundControl6. XTDrone源码下载7. 用键盘控制无人机飞行8. 出现的问题(必看)笔者在按照肖昆老师给的配置教程配置XTDrone时,遇到了很多莫名其妙的错误,所幸最终通过google解决了。所以在这里写下我的安装过程(绝大部分与XTDrone使用文档中给出的教程一
文章目录
笔者在按照肖昆老师给的配置教程配置XTDrone时,遇到了很多莫名其妙的错误,所幸最终通过google解决了。所以在这里写下我的安装过程(绝大部分与XTDrone使用文档中给出的教程一致),以供大家参考。
1. 依赖安装
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 xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion
pip3 install packaging numpy empy toml pyyaml jinja2
有时候apt报错,提示有几个软件包无法下载,可以试试运行 apt-get update 或者加上 --fix-missing 的选项,按照提示进行操作即可。
2. ROS安装与gazebo安装
ros安装(melodic版本)可参考这篇博客。
安装成功ros后,默认会安装gazebo,考虑到版本的问题,请在终端中运行如下命令重新安装:
sudo apt install ros-melodic-gazebo-*
Gazebo有很多开源的模型文件,在终端输入:
git clone https://github.com/osrf/gazebo_models.git
进行下载。然后将该文件夹放在~/.gazebo
中,并且重命名为models
,此时在~/.gazebo/models/
路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。
3. MAVROS安装
sudo apt install ros-melodic-mavros ros-melodic-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
最后一步需要装挺长时间,请耐心等待。
4. PX4配置
按照XTDone的安装文档进行:
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
git submodule update --init --recursive
make px4_sitl_default gazebo
这是github安装方式,如果嫌网速慢安装不了,移步安装文档,里面有gitee的安装方式。
编译完成后,会弹出Gazebo界面,将其关闭即可。
下一步修改 ~/.bashrc:
gedit ~/.bashrc
在.bashrc文件的最末尾
加入以下代码,注意路径匹配,千万注意!!!前两个source顺序不能颠倒。
px4_dir=~/PX4_Firmware
source ~/ros_wc/devel/setup.bash
source $px4_dir/Tools/setup_gazebo.bash $px4_dir $px4_dir/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$px4_dir
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$px4_dir/Tools/sitl_gazebo
注意两个source的位置都在两个export的前面,如果source在它下面会有问题。
添加完成后不要忘记source:
source ~/.bashrc
然后运行如下命令,此时会启动Gazebo,如下图所示。
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
在新的终端运行:
rostopic echo /mavros/state
若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。如果检查路径无误后,依旧为false,可参考我下文的解决方法。
5. 安装地面站QGroundControl
地面站的安装可参考我之前写的一篇文章:
ubuntu20.04配置marvos+px4+XTDrone
6. XTDrone源码下载
在利用XTDrone的使用文档安装方法,后面运行roslaunch px4 indoor1.launch
时控制飞机起飞的时候一直没反应。后在评论区找到了下面这种安装步骤:
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/
# cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp -r sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
# cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models
# cp -r sitl_config/models/* ~/.gazebo/models/
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
#
注释的是原来的安装步骤。
如果之前没有catkin_ws,需要建立一下,之后的教程会用到
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
再重新编译一次:
cd ~/PX4_Firmware
make px4_sitl_default gazebo
然后关闭即可。
7. 用键盘控制无人机飞行
在一个终端运行:
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
Gazebo启动后,在另一个终端运行:
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
与0号iris建立通信后,再打开一个终端,运行
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
这边的数字1
表示的是无人机个数。
一切正常的话,便可以通过键盘控制1架iris的解锁/上锁(arm/disarm),修改飞行模式,飞机速度等。使用v起飞利用的是takeoff飞行模式,相关参数(起飞速度、高度)要在rcS中设置。一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞(即:upward velocity 需要大于0.3)。注意,飞机要先解锁才能起飞!飞到一定高度后可以切换为‘hover’模式悬停,再运行自己的飞行脚本,或利用键盘控制飞机。
但事实并非如此。
8. 出现的问题(必看)
运行第7部分时,发现无人机每反应,打开rostopic
查看话题:/iris_0/mavros/state
:
rostopic echo /iris_0/mavros/state
发现与mavros的连接一直为false。简单说就是UDP通信没连接上。后来对比下载下来的PX4文件和官网的px4文件,终于发现了问题所在。XTDrone中配置的PX4的launch文件,例如mavros_posix_sitl.launch(路径在PX4_Firmware/launch/
),打开它你会发现有如下这行:
<!-- MAVROS configs -->
<arg name="fcu_url" default="udp://:24540@localhost:34580"/>
<arg name="respawn_mavros" default="false"/>
他与px4官网上的代码不一样,官网的代码为:
<!-- MAVROS configs -->
<arg name="fcu_url" default="udp://:14540@localhost:14557"/>
<arg name="respawn_mavros" default="false"/>
因此,将其修改为官方代码或者如下:
<!-- MAVROS configs -->
<arg name="fcu_url" default="udp://:14540@127.0.0.1:14557"/>
<arg name="respawn_mavros" default="false"/>
重新roslaunch相关的launch文件,与mavros的连接终于变成了True。接下来就跟第七部分一样测试代码就好。
当需要使用其他launch文件时类似这样改就行。
更多推荐
所有评论(0)