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=&#34;fcu_url&#34; default=&#34;udp://127.0.0.1:14551@14555&#34; />
[*]启动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>
(&#34;mavros/cmd/takeoff&#34;);
5. catkin build重新编译后运行,可以正常起飞。
页:
[1]