Ardupilot多架无人机于gazebo内仿真

采用最新Ardupilot_gazebo插件和gazebo-sim 7于ubuntu20.04的docker容器内部署

一、Ardupilot_gazebo插件安装

1.安装额外依赖项(for Gazebo garden):

sudo apt update
sudo apt install libgz-sim7-dev rapidjson-dev

2.创建工作区文件夹并克隆插件库:

mkdir -p gz_ws/src && cd gz_ws/src
git clone https://github.com/ArduPilot/ardupilot_gazebo

3.构建插件:根据安装的gazebo版本设置GZ_VERSION环境变量

export GZ_VERSION=garden
cd ardupilot_gazebo
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j4

二、配置Gazebo环境

Gazebo 使用许多环境变量在运行时定位插件和模型。这些可以在用于运行 Gazebo 的终端中设置,或者在.bashrc或.zshrc文件中设置:
在终端:

export GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/gz_ws/src/ardupilot_gazebo/build:$GZ_SIM_SYSTEM_PLUGIN_PATH
export GZ_SIM_RESOURCE_PATH=$HOME/gz_ws/src/ardupilot_gazebo/models:$HOME/gz_ws/src/ardupilot_gazebo/worlds:$GZ_SIM_RESOURCE_PATH

三、测试运行Gazebo与Ardupilot结合使用

1.运行gazebo:gz sim -v4 -r iris_runway.sdf
2.运行SITL:sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --map --console
3.解锁并起飞:

STABILIZE> mode guided
GUIDED> arm throttle
GUIDED> takeoff 5

(参考:官方文档)

四、多架无人机文件配置

1.模型文件修改
在安装ardupilot_gazebo的文件夹/gz_ws/src/ardupilot_gazebo/models中有文件夹iris_with_ardupilot将其复制三个(所需无人机个数),分别改名为iris_with_ardupilot_9002,iris_with_ardupilot_9012,iris_with_ardupilot_9022(文件夹名后的数字仅为方便对应端口号,原则任意填写文件夹名)

同样的有文件夹iris_with_standoffs将其复制三个,分别改名为iris_with_standoffs_9002,iris_with_standoffs_9012,iris_with_standoffs_9022
2.模型文件信息修改
以文件夹iris_with_ardupilot_9002为例,修改其内文件model.sdf,将model name修改为iris_with_ardupilot_9002,标签内的地址修改为model://iris_with_standoffs_9002(两文件夹存在引用)

在plugins注释后的代码段中找到plugin name为ArduPilotPlugin的标签,将 <fdm_port_in>下添加 <fdm_port_out>并在原有端口上加1

model.sdf代码段中有很多设置传感器的部分,其中每一部分的引用都要改为model name,使用ctrl+h进行搜索iris_with_ardupilot并替换为iris_with_ardupilot_9002(已被注释部分可不用修改)

修改model.config文件,代码段尾部的标签内的路径修改为iris_with_standoffs_9002,到此关于iris_with_ardupilot_9002文件夹下的文件修改完毕,其余文件夹中的文件类似处理即可。

以文件夹iris_with_standoffs_9002为例,修改其内文件model.sdf,将model name改为iris_with_standoffs_9002

model.sdf代码段中有很多旋翼设置,其中每一部分的引用都要改为model name,使用ctrl+h进行搜索iris_with_standoffs并替换为iris_with_standoffs_9002(已被注释部分可不用修改),到此关于iris_with_standoffs_9002文件夹下的文件修改完毕,其余文件夹中的文件类似处理即可。

3.加载世界文件修改
在安装Ardupilot_gazebo文件夹下,/gz_ws/src/ardupilot_gazebo/worlds复制其中文件iris_runway.sdf留存备份,在其代码段底部添加三架无人机模型路径信息(原本有一架,将其修改即可需将pose degress调整使其错开)并保存。

4.启动无人机并连接Gazebo
新建四个终端并分别输入:

sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --map --console -I0
sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --map --console -I1
sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --map --console -I2
gz sim -v4 -r iris_runway.sdf

前三行分别是启动三个无人机并按id进行端口排序,默认9002,9012,9022,最后一行是启动具有多无人机的世界场景。

附件资源为带图版文档,懒得贴图的,需要自取,因为这个新版的多机网上基本没资源,所以才发一下的

  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PX4无人机以及Gazebo仿真环境是目前广泛使用的无人机软件和仿真平台,能够帮助开发者进行无人机飞行控制算法的开发和测试。在使用PX4和Gazebo进行仿真时,可以通过编写代码实现无人机跟踪移动物体的功能。 首先,需要在Gazebo仿真环境中创建一个场景,并将无人机和移动物体添加到场景中。可以使用Gazebo自带的模型库或者自定义模型来创建无人机和移动物体。然后,将无人机Gazebo和PX4进行连接,以便将无人机的状态信息传输到Gazebo仿真环境中。 其次,需要编写代码来实现无人机对移动物体的跟踪。首先,需要获取无人机和移动物体的位置信息。可以通过Gazebo提供的API或者PX4提供的功能来获取无人机和移动物体的位置。然后,根据无人机和移动物体的位置信息,计算出无人机需要采取的飞行姿态和动作来实现跟踪移动物体的功能。最后,通过控制无人机的舵面、电机等飞行控制设备,实现无人机的飞行动作。 在跟踪移动物体的过程中,还可以添加一些算法来提高跟踪的准确性和稳定性。例如,可以使用视觉传感器来实时识别和跟踪移动物体,通过视觉算法和控制算法来控制无人机的飞行动作。另外,还可以使用数据融合算法,将无人机的惯性传感器数据和视觉传感器数据进行融合,提高跟踪的鲁棒性和精确性。 综上所述,通过在Gazebo仿真环境中使用PX4无人机,可以实现对移动物体的跟踪。通过获取无人机和移动物体的位置信息,并根据位置信息计算出无人机的飞行动作,以实现跟踪移动物体的功能。同时,还可以添加一些算法来提高跟踪的准确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值