Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建(XTDrone的)

摘自:https://www.ngui.cc/51cto/show-23557.html

Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建

编程学习 · 2020/7/12 19:50:27 · 522 次浏览

Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建

参考资料:https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
https://blog.csdn.net/qq_42585108/article/details/106781596
本文只是在这两篇文章的基础上进行了些总结和个人安装时的经验心得,中间可能引用较多,若是构成了侵权请联系我删除。

系统Ubuntu18.04,本人从一个刚装好的纯净的Ubuntu开始安装,一步步走下来,综合了一些网络上的搭建方法以及在其中遇到的问题,把这些记录下来,方便大家和自己参考。若有错误不对欢迎指正。

一、依赖安装

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 \

2、

pip install \
pandas \
jinja2 \
pyserial \
cerberus \
pyulog \
numpy \
toml \
pyquaternion

二、ROS安装

安装见ROS官方网站:http://wiki.ros.org/Installation/Ubuntu
或者教程:https://ismango.blog.csdn.net/article/details/106049992
注意:Ubuntu18.04直接全部安装(desktop-full 即对于ROS Melodic,选择desktop-full的方式安装,这将同时安装Gazebo9和感知相关库) 16.04(ROS Kinetic)选择destop否则安装gazebo7无法进行后续仿真
安装以后启动ROS:

roscore

有下列输出说明安装成功:

... logging to /home/robin/.ros/log/a5118af0-5474-11ea-8b86-e454e828c524/r
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://robin-G3-3590:34223/
ros_comm version 1.12.14
SUMMARY
========
PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.14
NODES
auto-starting new master
process[master]: started with pid [30244]
ROS_MASTER_URI=http://robin-G3-3590:11311/
setting /run_id to a5118af0-5474-11ea-8b86-e454e828c524
process[rosout-1]: started with pid [30261]
started core service [/rosout]

三、Gazebo安装

此步骤针对Ubuntu 16.04,18.04中已经安装了gazebo9不需要再安装
Gazebo安装见官网:
http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install
注意几点:
1.选用Alternative installation: step-by-step的安装方式
2.安装Gazebo9
Gazebo本身是独立于ROS的,因此还需要安装ROS的Gazebo插件

sudo apt install ros-kinetic-gazebo9-*

四、MAVROS安装

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

五、PX4配置

git clone https://github.com/PX4/Firmware
mv Firmware PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
git submodule update --init --recursive

安装必要的python依赖:

 cd PX4_Firmware
 bash
 bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

编译

make posix_sitl_default gazebo

修改 ~/.bashrc,加入以下代码,注意路径匹配

cd PX4_Firmware
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

然后运行如下命令,此时会启动Gazebo,如下图所示。

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

在这里插入图片描述
并运行

rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功。

---
header:
seq: 11
stamp:
secs: 1827
nsecs: 173000000
frame_id: ''
connected: True
armed: False
guided: False
manual_input: True
mode: "MANUAL"
system_status: 3
---

注意:
1.有条件的建议科学上网下载。GitHub上下载速度比较缓慢,还可能失败,我也尝试过修改网络什么的效果几乎没有,建议在git clone之前把GitHub上PX4源码的放到码云(gitee)上,码云的使用请大家自行搜索。
如果是把代码放到码云上下载,在更新子模块(git submodule update --init --recursive)中还是从GitHub上下载速度也是很慢,这个好像需要修改submodule,但是我还不知道如何操作,若有大神希望指导一下。
2.make px4_sitl_default gazebo这个过程可能比较考验电脑内存,我电脑有几次CPU都是100%运行,而且停下卡住
情况可能如下:

[11/33] Building CXX object CMakeFiles...plugin.dir/src/gazebo_uuv_plugin.cpp.o
FAILED: /usr/bin/c++   -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dgazebo_uuv_plugin_EXPORTS -isystem /usr/include/qt4 -isystem /usr/include/qt4/QtGui -isystem /usr/include/qt4/QtCore -isystem /usr/include/gazebo-7 -isystem /usr/include/sdformat-4.4 -isystem /usr/include/ignition/math2 -isystem /usr/include/OGRE -I/home/weiweu/PX4_Firmware/Tools/sitl_gazebo/include -I. -I/usr/include/eigen3 -I/usr/include/eigen3/eigen3 -I/usr/include/gazebo-7/gazebo/msgs -I/home/weiweu/PX4_Firmware/mavlink/include -I/usr/include/OGRE/Paging -isystem /opt/ros/kinetic/include/opencv-3.3.1-dev -isystem /opt/ros/kinetic/include/opencv-3.3.1-dev/opencv -I/home/weiweu/PX4_Firmware/Tools/sitl_gazebo/external/OpticalFlow/include -I/usr/include/gstreamer-1.0 -I/usr/lib/x86_64-linux-gnu/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wno-deprecated-declarations -Wno-address-of-packed-member -fPIC   -std=gnu++14 -MMD -MT CMakeFiles/gazebo_uuv_plugin.dir/src/gazebo_uuv_plugin.cpp.o -MF CMakeFiles/gazebo_uuv_plugin.dir/src/gazebo_uuv_plugin.cpp.o.d -o CMakeFiles/gazebo_uuv_plugin.dir/src/gazebo_uuv_plugin.cpp.o -c /home/weiweu/PX4_Firmware/Tools/sitl_gazebo/src/gazebo_uuv_plugin.cpp
c++: internal compiler error: 已杀死 (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
[11/33] Building CXX object CMakeFiles...dir/src/gazebo_mavlink_interface.cpp.o
ninja: build stopped: subcommand failed.
[2/5] Generating ../../logs
FAILED: cd /home/weiweu/PX4_Firmware/build/px4_sitl_default/build_gazebo && /usr/bin/cmake --build .
ninja: build stopped: subcommand failed.
Makefile:198: recipe for target 'px4_sitl_default' failed
make: *** [px4_sitl_default] Error 1

可以尝试先增加临时swap空间,再执行make px4_sitl_default gazebo指令

#注释:of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,64M就是块大小,这里是64MB,所以总共空间就是bs*count=1024MB.这里分配空间的时候需要一点时间,等待执行完毕。
sudo dd if=/dev/zero of=/home/swap bs=64M count=16  

#注释:把刚才空间格式化成swap各式
sudo mkswap /home/swap (可能会提示warning: don't erase bootbits sectorson whole disk. Use -f to force,不用理会)


#注释:使刚才创建的swap空间
sudo swapon /home/swap

3.在最后一个指令(make px4_sitl_default gazebo)运行时可能出现如下错误:
在这里插入图片描述
解决方法:

sudo apt-get install libgstreamer-plugins-base1.0-dev

4.运行时可能会出现如下状况:
在这里插入图片描述
在这里插入图片描述这些报错和警告并不影响使用,可以直接无视。

5.第一次运行时进程比较缓慢,gazebo可能有一段时间黑屏,其实这是在初始化,请耐心等待一下,后面的情况也如此。

六、QGC地面站安装

安装链接:https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html
启动后,将出现下图 所示画面。注意Ubuntu16.04没法直接使用QGroundcontrol 版本4系列(可以使用版本3系列),Ubuntu16.04需要源码编译版本4系列,请仔细查看安装链接。
在这里插入图片描述

七、XTDrone源码下载

git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp 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 sitl_config/launch/* ~/PX4_Firmware/launch/
#如果之前没有catkin_ws,需要建立一下,之后的教程会用到
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts

注意:cp -r sitl_config/models/* ~/.gazebo/models/ 这一步可能出现如下情况:
在这里插入图片描述
可以暂时先不要管,继续进行后面的步骤,编译后再进行尝试可能就成功了。

八、用键盘控制无人机飞行

在一个终端运行

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch

Gazebo启动后,在另一个终端运行

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

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

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

成功后如图所示
可以通过键盘控制1架iris的解锁/上锁,修改飞行模式,飞机速度等。使用t起飞利用的是takeoff飞行模式,相关参数(起飞速度、高度)要在rcS中设置。一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞。
在这里插入图片描述到此,仿真平台基础配置完成
注意:执行roslaunch px4 indoor1.launch指令时可能会发生如下错误:
在这里插入图片描述目前我无法解决这个问题,原作者说可能是三维激光雷达的问题,据说把
gazebo9升到11可以解决,我还没有进行尝试

参考网页:
[1]: https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
[2]: https://blog.csdn.net/qq_42585108/article/details/106781596

猜你喜欢

转载自blog.csdn.net/sinat_16643223/article/details/113077233