Ardupilot 仿真之gazebo SITL 3D绘图和规划

    在开发新功能时,先进行仿真验证是十分有效的一种方法.尤其是像无人机这种在天上飞的机器.ardupilot提供了较为详细的教程,但官网中的教程有些老旧且比较分散.下面我以gazebo SITL 3D绘图和规划为例.梳理下如何使用gazebo进行仿真.

一 开发环境

    操作系统:64位 ubuntu 16.04 LTS

    注:因为本文的重点是如何使用gazebo进行仿真,所以如何搭建ardupilot的编译环境将不在此文中进行介绍.需要搭建编译环境的可以去官网查看教程.

二 安装软件包

    写在前面:我的习惯是源代码都放在~/src/目录下,所以下列步骤中的源代码都在~/src/目录下.

1. 安装Gazebo 8

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

2. 添加ROS源

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

3. 安装octomap

sudo apt install liboctomap-dev

4. 安装mavlink

sudo apt install ros-kinetic-mavlink

5. 安装OMPL

sudo apt install ros-kinetic-ompl

6. 安装fcl

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

7. 安装OctomapPlanner

git clone https://github.com/ardupilot/OctomapPlanner
cd OctomapPlanner
mkdir build
cd build
cmake ..
make
cp -r ../models/* ~/.gazebo/models/

8. 安装ardupilot_gazebo

    1. 下载源码,编译并安装

git clone https://github.com/SwiftGust/ardupilot_gazebo
cd ardupilot_gazebo
mkdir build
cd build
cmake ..
make -j4
sudo make install

    2. 打开.bashrc文件

sudo 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

9. 安装MAVProxy

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示例.这个示例程序在我电脑上有些问题.飞机在起飞后会抖动,且不能良好的控制自己的位置,目前还不清楚是什么原因.

猜你喜欢

转载自blog.csdn.net/BreederBai/article/details/84401003
今日推荐