在开发新功能时,先进行仿真验证是十分有效的一种方法.尤其是像无人机这种在天上飞的机器.ardupilot提供了较为详细的教程,但官网中的教程有些老旧且比较分散.下面我以gazebo SITL 3D绘图和规划为例.梳理下如何使用gazebo进行仿真.
操作系统:64位 ubuntu 16.04 LTS
注:因为本文的重点是如何使用gazebo进行仿真,所以如何搭建ardupilot的编译环境将不在此文中进行介绍.需要搭建编译环境的可以去官网查看教程.
写在前面:我的习惯是源代码都放在~/src/目录下,所以下列步骤中的源代码都在~/src/目录下.
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
sudo apt install libgazebo8-dev
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt update
sudo apt install liboctomap-dev
sudo apt install ros-kinetic-mavlink
sudo apt install ros-kinetic-ompl
git clone https://github.com/danfis/libccd
cd libccd
mkdir build && cd build
cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON ..
make && sudo make install
git clone https://github.com/flexible-collision-library/fcl
cd fcl
mkdir build
cd build
cmake ..
sudo make install
git clone https://github.com/ardupilot/OctomapPlanner
cd OctomapPlanner
mkdir build
cd build
cmake ..
make
cp -r ../models/* ~/.gazebo/models/
1. 下载源码,编译并安装
git clone https://github.com/SwiftGust/ardupilot_gazebo
cd ardupilot_gazebo
mkdir build
cd build
cmake ..
make -j4
sudo make install
2. 打开.bashrc文件
gedit ~/.bashrc
3. 将下列语句复制粘贴到.bashrc文件的最下面
source /usr/share/gazebo/setup.sh
export GAZEBO_MODEL_PATH=~/src/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}
export GAZEBO_MODEL_PATH=~/src/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}
export GAZEBO_RESOURCE_PATH=~/src/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}
4 在命令行中输入下列命令,使更改生效
source ~/.bashrc
git clone https://github.com/ArduPilot/MAVProxy.git
cd MAVProxy
python setup.py build
python setup.py install
1. 启动带有演示世界的Gazebo
gazebo --verbose worlds/iris_gas_station_demo.world
效果如下
注:如果严格按照我上面所写的说明操作,gazebo界面应该会很快的打开.如果没有执行2.8中的最后一步,在打开gazebo时会下载一些模块,这个过程因网速而定,我之前的感觉是很慢.
2. 在一个单独的终端上启动ArduCopter SITL.启用APM软件仿真前请先在~/.profile中添加以下两条语句.第一句是你存放源代码的路径.然后执行source ~/.profile使设置生效.
export PATH=$PATH:$HOME/src/ardupilot/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH
在ardupilot/ArduCopter文件夹中打开一个终端,并输入以下命令,启动ArduCopter SITL
sim_vehicle.py -v ArduCopter -f gazebo-iris
效果如下
3. 将飞机切换到GUIDED模式,并使其起飞
a.在启动ArduCopter SITL的终端中输入GUIDED,然后回车
b. 输入arm throttle,然后回车.使飞机解锁
c. 输入takeoff 2,使飞机飞到2米高度,注意仿真环境中解锁几秒钟后没有操作就会锁定电机.所以解锁和起飞这两条命令衔接的要快一点.TAB键可以补全命令.
d. 双击main_node.启用OctomapPlanner SITL示例.这个示例程序在我电脑上有些问题.飞机在起飞后会抖动,且不能良好的控制自己的位置,目前还不清楚是什么原因.