前言
在进行gazebo仿真的时候首先要验证软件在环能否仿真,如果软件在环或者编译环境不会的话去看我上一篇博客。
单纯的软件在环只需在ardusub目录下输入终端命令:
sim_vehicle.py -L RATBeach --out=udp:0.0.0.0:14550 --map --console
如果在进行多次下载删除gazebo后可能在重新下载的时候会因为出现依赖项导致无法成功下载,这时候可以先一个个下载依赖项然后再进行下载,或者遇到文件冲突的时候可以进行强制覆盖等操作,例如
sudo dpkg -i --force-overwrite /var/cache/apt/archives/gazebo9_9.19.0-2~focal_amd64.deb
可以使用 dpkg
命令的 --force-overwrite
选项来实现。这样做将强制 dpkg
安装软件包,即使存在文件冲突也会覆盖已有文件。
请注意,这种操作可能导致系统不稳定或引起其他软件功能的问题,因为它可能破坏了现有软件包的期望行为。在决定执行这一步骤之前,请确保您理解潜在的风险并做好备份。
1.安装gazebo
我所使用的是ubuntu20.04.6,安装的gazebo9,官网给出的是gazebo7或8,9+以上是不能安装gazebo插件的。但是在浏览论坛时发现已经更新了gazebo插件,最新的gazebo插件地址:GitHub - ArduPilot/ardupilot_gazebo:使用 ArduPilot SITL 控制器在 Gazebo Sim 中进行车辆模拟的插件和模型
然而我在尝试后发现这个最新的gazebo插件地址所下载的插件是gazebo7的插件。暂时放弃了此次尝试。
接下来我将演示我的步骤。
ardusub官网的方法步骤参考:SITL · GitBook (ardusub.com)
安装gazebo9,在ubuntu终端输入
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 gazebo9 libgazebo9-dev
安装成功后查看是否可以打开gazebo。
安装gazebo11的可以看下面的网址:
Gazebo : Tutorial : Ubuntu (gazebosim.org)
2.安装freebuoyancy_gazebo用于浮力模拟的插件
这个一般是不会有问题的,如果想要验证浮力插件是否安装成功可以在下载 BlueRov2 Gazebo 模型后仿真看看ardusub是否会在海面漂浮,如果没有这个浮力插件,ardusub在按下仿真开始键后会直接沉入海底。
该软件包构建了两个 Gazebo 插件:
freebuoyancy_gazebo(模型插件) 模拟来自水的浮力和粘性力
安装:在ubuntu终端输入
git clone https://github.com/bluerobotics/freebuoyancy_gazebo
cd freebuoyancy_gazebo
mkdir build
cd build
cmake ..
make
sudo make install
3.安装 ardupilot_gazebo/add_link 插件进行 ardupilot-gazebo 通信。add_link 是一个通过 sdf 链路提供驱动功能的分支,在 之后,必须运行 .git clone
git checkout add_link
这一步是最重要的,由于旧版本的gazebo7/8已经淘汰,很多人都因为无法下载gazebo插件而导致仿真失败。
官方给的插件网址:GitHub - patrickelectric/ardupilot_gazebo at add_link
对比官方给的步骤我们稍作更改
我们安装gazebo9的插件,当然有用更高版本的可以进行尝试更改比如gazebo11,我这里用的是gazebo9
sudo apt install gazebo9 libgazebo9-dev
git clone https://github.com/patrickelectric/ardupilot_gazebo
cd ardupilot_gazebo
git checkout add_link
mkdir build
cd build
cmake ..
make -j4
sudo make install
下面切换到主文件夹的终端,根据以上的命令我们已经切换到ardupilot_gazebo/build路径下了,接下来的命令是在主文件夹下进行的,如何不会切换终端路径的命令,可以关闭终端重新开启就返回最初的终端窗口了。
echo 'source /usr/share/gazebo/setup.sh' >> ~/.bashrc
设置 Gazebo 模型的路径(将路径调整为克隆存储库的位置)
echo 'export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models' >> ~/.bashrc
设置 Gazebo 世界的路径(将路径调整为克隆仓库的位置)
echo 'export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}' >> ~/.bashrc
source ~/.bashrc
4.运行 BlueRov2 Gazebo 模型
(1)下载bluerov_ros_playground
终端窗口输入命令:
git clone https://github.com/patrickelectric/bluerov_ros_playground
(2)运行 Gazebo 模型
cd bluerov_ros_playground
source gazebo.sh
gazebo worlds/underwater.world -u
输入完命令后就可以在gazebo上面看到ardusub的模型了,以后每次仿真只需运行上面的命令即可打开ardusub模型。最后不要忘记在gazebo界面点击仿真开始的功能键。
仿真开始后船会下落到海平面上,并且会有起伏的感觉,如果没有这种情况就是浮力插件没有装好,重新装浮力插件。
5.执行 ArduPilot SITL
这部分假设您已经在计算机上设置了 SITL。 首先必须位于 ArduSub 文件夹中
sim_vehicle.py -f gazebo-bluerov2 -L RATBeach --out=udp:0.0.0.0:14550 --console
大概是这样一个界面,接下来打开qgc地面站就能直接连上进行仿真了
打开qgc地面站进行仿真操作。