查看: 565|回复: 0

APM GAZEBO仿真

[复制链接]

37

主题

758

帖子

1498

积分

金牌飞友

Rank: 6Rank: 6

积分
1498
飞币
738
注册时间
2017-9-21
发表于 2022-10-29 01:29:23 | 显示全部楼层 |阅读模式
安装环境

        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

APM GAZEBO仿真-1.jpg
最后发现原因是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");

APM GAZEBO仿真-2.jpg
5. catkin build重新编译后运行,可以正常起飞。
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表