有内涵才man 发表于 2022-10-29 01:29:23

APM GAZEBO仿真

安装环境

        ubuntu20.04, gazebo-11
准备工作


[*]APM官网下载编译ardupilot代码
[*]下载安装GAZEBO-11(之前下载PX4代码的时候顺便安装过了)
下载并编译ardupilot_gazebo


[*]git clone https://github.com/SwiftGust/ardupilot_gazebo ,之前下载过         https://github.com/khancyr/ardupilot_gazebo,后面做APM多机仿真的时候fdm_addr等的类型有问题,与gazebo的版本有关。
[*]cd ardupilot_gazebo
[*]mkdir build
[*]cd build
[*]cmake ..
[*]make -j4
[*]sudo make install
[*]设置环境变量
source /usr/share/gazebo/setup.sh
export         GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}
export         GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}
export         GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}
export         GAZEBO_PLUGIN_PATH=~/ardupilot_gazebo/build:${GAZEBO_PLUGIN_PATH}
启动gazebo地图


[*]gazebo --verbose iris_ardupilot.world


最后发现原因是iris_ardupilot.world里使用了models里的iris_with_standoffs_demo,打开这个文件夹里的model.sdf发现sdf version后面有一个网址,去掉即可。
APM sitl仿真


[*]cd ~/ardupilot/ArduCopter
[*]../Tools/autotest/sim_vehicle.py -f gazebo-iris --console         --map
-f gazebo-iris 为机架类型,-f         heli可以选择直升机机架
--console 打开终端
--map打开地图
[*]启动sitl后
mode guided 进入guided模式
arm throttle 解锁
takeoff         10 起飞,可以在gazebo中看到动作
[*]启动过程参考sim_vehicle.py
默认参数参考autotest/default_params里的各个文件
启动launch文件


[*]ros mavros安装过程参考笔者其他文章
[*]上一步骤中发现打开了127.0.0.1:14550,14551端口,14550给地面站,14551连接mavros
[*]将apm.launch文件修改
<arg name="fcu_url"         default="udp://127.0.0.1:14551@14555" />
[*]启动launch文件roslaunch         mavros apm.launch
新打开一个终端,输入rostopic         list能看到对应的mavros消息
Ros程序修改


[*]下载PX4         offboard_node.cpp 官方例程。与PX4不同的是,ardupilot里没有offboard模式,用guided模式代替。
[*]catkin build并启动offboard_node节点后发现,能进入guided模式、解锁,但不能起飞。
[*]回想使用ardupilot代码的过程,从地面进入guied模式,直接设置航点确实不能起飞。需要先takeoff一下。
[*]所以,查阅mavros官方资料,在offboard_node.cpp         加入了takeoff相关代码。
ros::ServiceClient set_takeoff_client =         nh.serviceClient<mavros_msgs::CommandTOL>
("mavros/cmd/takeoff");


5. catkin build重新编译后运行,可以正常起飞。
页: [1]
查看完整版本: APM GAZEBO仿真