|
安装环境
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重新编译后运行,可以正常起飞。 |
|