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

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

参考资料:
https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
https://blog.csdn.net/qq_42585108/article/details/106781596
https://blog.csdn.net/qq_44830040/article/details/106049992
https://blog.csdn.net/abc869788668/article/details/78323395?locationNum=8&fps=1

无人机仿真平台的搭建用了肖昆的XTDrone项目,十分感谢,相关网页:https://gitee.com/robin_shaun/XTDrone,我这里只是对仿真无人机平台的搭建做了个总结。
本文只是在这几篇文章的基础上进行了些总结和个人安装时的经验心得,中间可能引用较多,若是构成了侵权请联系我删除。

系统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 \
genromfs \
xmlstarlet \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev

2、

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

如果出现如下报错情况,可先更新 setuptools 和 pip

Collecting pandas
  Using cached https://files.pythonhosted.org/packages/64/f1/8fdbd74edfc31625d597717be8c155c6226fc72a7c954c52583ab81a8614/pandas-1.1.2.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-qtvsjq8t/pandas/setup.py", line 349
        f"{extension}-source file '{sourcefile}' not found.\n"
                                                             ^
    SyntaxError: invalid syntax
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qtvsjq8t/pandas/
pip install --upgrade setuptools
#若未报错不需要输入这两行命令
python -m pip install --upgrade pip

二、ROS安装

安装见ROS官方网站:http://wiki.ros.org/Installation/Ubuntu
或者参考教程:https://blog.csdn.net/qq_44830040/article/details/106049992(这个教程是用的国内源安装,虽然可以使用ros,但是可能在和其他的一起使用时出现问题例如darknet_ros,虽然国内源下载会快很多,但还是建议从官网下载)

注意:Ubuntu18.04可以直接全部安装(即指令 sudo apt-get install ros-melodic-desktop 即对于ROS Melodic,选择desktop-full的方式安装,这将同时安装Gazebo9和感知相关库)但是我个人建议18.04的也不进行全部安装,直接安装的gazebo9.0存在缺陷可能在后面出现问题,建议也是选择安装desktop,然后在下面的步骤中安装gazebo9.13或者以上
Ubuntu16.04(ROS Kinetic)选择destop否则安装gazebo7无法进行后续仿真
这里把安装ROS(以melodic为例)也列举出来:

1.配置Ubuntu存储库
在软件与更新中点击 源代码
在这里插入图片描述
2.设置sources.list
以下分别是清华镜像、中科大镜像和官方默认选其中一个即可,但是个人推荐国内镜像,下载会快很多

清华镜像:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

中科大镜像:

扫描二维码关注公众号,回复: 11763362 查看本文章
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

官方默认:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

3.设置key

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4.安装

sudo apt update
sudo apt install ros-melodic-desktop

正常安装ROS的话可以sudo apt install ros-melodic-desktop-full,我这里是sudo apt install ros-melodic-desktop原因前面已经说了

5.设定环境

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

6.构建软件包的依赖关系

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init

如果出现错误:
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
执行如下命令:

cd /etc
sudo gedit hosts

末尾添加:151.101.84.133 raw.githubusercontent.com然后保存文件退出即可。

如果出现错误:ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
解决办法,执行如下命令:

sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

然后再次执行sudo rosdep init

7.执行rosdep update更新

rosdep update

如果出现如下错误:
ERROR: error loading sources list:
(‘The read operation timed out’,)
大概是网络的问题,反复执行rosdep update命令即可

安装以后启动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]

新建工作空间,推荐使用catkin-tools管理工作空间,之后除去PX4仿真环境启动外,其余ROS相关工程在此工作空间下管理。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash

三、Gazebo安装

无论是ros Kinetic还是Melodic,自带的Gazebo都存在缺陷,若是安装ros时已经安装了gazebo建议卸载并重新安装。建议gazebo版本在9.13以上
Gazebo安装见官网:
http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install
注意几点:
1.选用Alternative installation: step-by-step的安装方式
2.安装Gazebo9.13或者以上

这里为了方便把gazebo的安装也列出来

1.设置计算机以接受来自package.osrfoundation.org的软件

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
cat /etc/apt/sources.list.d/gazebo-stable.list
#如果出现deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示没问题

2.设置密钥

wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update

3.安装gazebo9.1指令:

sudo apt-get install gazebo9=9.1*

安装之后终端输入gazebo若打开Gazebo说明安装成功

4.Gazebo本身是独立于ROS的,因此还需要安装ROS的Gazebo插件

sudo apt install ros-melodic-gazebo9-*
sudo apt install ros-melodic-gazebo-*

测试

roscore  
rosrun gazebo_ros gazebo 

若能打开Gazebo说明Gazebo和ROS间的插件也安装成功。
输入gazebo --version也可以查看到gazebo的版本

四、MAVROS安装

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
roscd mavros
sudo 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 

最后的sudo ./install_geographiclib_datasets.sh 这步需要装一段时间,请耐心等待

五、PX4配置(1.11版本)

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

由于下载源码以及更新子模块太慢,我这里提供了已经下载并且更新好的PX4_Firmware链接,下载后在主目录解压提取即可:https://download.csdn.net/download/qq_45067735/12713464

安装必要的python依赖:

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

编译

make px4_sitl_default gazebo

如果编译报错提示PX4_Firmware/Tools/sitl_gazebo/src/gazebo_usv_dynamics_plugin.cpp中的ignition::math::Matrix4 xformV(vq);语句中,xformV之前没有定义类型
将其修改为ignition::math::Matrix4 xformV(vq);保存之后重新编译。

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

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%运行,而且停下卡住
情况可能如下:

在这里插入图片描述
可以尝试先增加临时swap空间,再执行make px4_sitl_default gazebo指令,或者直接再次执行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可能有一段时间黑屏,其实这是在初始化,请耐心等待一下,后面的情况也如此。

6.建议修改./bashrc文件时直接在主目录中修改,用control + h查看隐藏文件,把上面是三行直接复制到最下面然后输入source ~/.bashrc重启barshc,这样一劳永逸,但是修改完之后每次打开命令行会出现刚刚加进去的
在这里插入图片描述

六、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

第一次运行roslaunch px4 indoor1.launch时gazebo可能需要加载一段时间,请耐心等待

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才能起飞。(起飞方法:先按t键解锁,再按i键使得upward velocity大于等于0.3,此时可以看到旋翼转起来,最后按b键起飞。这之间的按键的时候间隔应当快一点,否则时间间隔过长的话无人机会自动锁上,又要重复刚刚的步骤)
在这里插入图片描述到此,仿真平台基础配置完成
注意:
roslaunch px4 indoor1.launch时可能发生以下错误:
1.
在这里插入图片描述
解决方法见:https://blog.csdn.net/abc869788668/article/details/78323395?locationNum=8&fps=1
即输入如下指令:

sudo /opt/ros/melodic/lib/mavros/install_geographiclib_datasets.sh

时间可能较长,需要耐心等待
2.
在这里插入图片描述
原作者说可能是三维激光雷达的问题,但是经过几天的尝试我发现安装的gazebo9.0会出现如上错误,而gazebo9.13可以运行,可以尝试把gazebo版本换到9.13进行尝试,这也是我在安装ros和gazebo时建议选择melodic-desktop已经后面安装gazebo9.13或者以上的原因。

参考网页:
[1]: https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
[2]: https://blog.csdn.net/qq_42585108/article/details/106781596
[3]: https://blog.csdn.net/qq_44830040/article/details/106049992
[4]: https://blog.csdn.net/abc869788668/article/details/78323395?locationNum=8&fps=1

猜你喜欢

转载自blog.csdn.net/qq_45067735/article/details/107303796