博客
关于我
ArduPilot+mavros+gazebo+QGC联合仿真初体验
阅读量:388 次
发布时间:2019-03-05

本文共 1888 字,大约阅读时间需要 6 分钟。

PX4与ArduPilot在Gazebo中的仿真配置与功能实现

在PX4和ArduPilot的仿真中,配置环境是首要任务。本文将详细介绍如何在Gazebo中完成四旋翼飞机的自动起飞、悬停和降落功能的实现。

一、环境配置

首先需要配置Gazebo的环境变量。按照以下步骤完成:

  • 克隆必要的仓库文件夹:

    • git clone https://github.com/khancyr/ardupilot_gazebocd ardupilot_gazebomkdir buildcd buildcmake ..make -j4sudo make install
  • 配置Gazebo的环境变量:

    echo 'source /usr/share/gazebo/setup.sh' >> ~/.bashrcecho 'export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models' >> ~/.bashrcecho 'export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}' >> ~/.bashrcsource ~/.bashrc
  • 验证环境配置:

    • 确保GAZEBO_MODEL_PATHGAZEBO_RESOURCE_PATH正确无误。
  • 二、Gazebo地图加载

    启动Gazebo仿真环境:

    gazebo --verbose worlds/iris_arducopter_runway.world

    注意事项:

  • 在启动过程中,Gazebo会自动下载地图包。将解压后的地图包放在~/.gazebo/worlds中。
  • 如果需要屏蔽四轴云台相关组件,请编辑对应的model.sdf文件,移除云台部分。
  • 三、ArduPilot仿真配置

    在PX4中,启动ArduPilot的SITL模式:

    cd ~/ardupilot/ArduCopter../Tools/autotest/sim_vehicle.py -f gazebo-iris --console --map

    此时,ArduPilot与Gazebo完成联接。

    四、ROS与mavros集成

  • 安装mavros功能包:

    • 克隆并编译mavros仓库:
      git clone https://github.com/mavros/mauviz-mavros.gitcd mavroscatkin_makesource ~/catkin_ws/devel/setup.sh
  • 启动ROS服务:

    roslaunch apm_mavros apm.launch
  • 修改apm.launch文件中的端口配置:

    根据实际需要调整端口号。

  • 五、功能实现代码

    以下是实现自动起飞、悬停和降落功能的关键代码片段:

    if (!current_state.armed && tmp) {    arming_client.call(arm_cmd);    tmp = 1;    ROS_INFO("Call for arm!");}if (arm_cmd.response.success) {    take_off.request.altitude = 2.5;    if (!take_off.response.success && tmp) {        tmp = 0;        set_takeoff_client.call(take_off);        ROS_INFO("Call for takeoff");        // sleep(10);    }    if (take_off.response.success) {        // ROS_INFO("Takeoff successfully!");        count++;    }}if (count > 300) {    mode_rtl_ok = 1;    offb_set_mode.request.custom_mode = "RTL";    set_mode_client.call(offb_set_mode);}

    六、总结

    PX4和ArduPilot在Gazebo中的仿真配置与功能实现已完成。PX4代码集更为完整,适合SLAM和群体控制等复杂场景,而ArduPilot则需要开发者自行扩展mavros插件。

    通过以上步骤,读者可以在Gazebo中实现四旋翼飞机的自动起飞、悬停和降落功能。

    转载地址:http://celwz.baihongyu.com/

    你可能感兴趣的文章
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>
    MySql中怎样使用case-when实现判断查询结果返回
    查看>>
    Mysql中怎样使用update更新某列的数据减去指定值
    查看>>
    Mysql中怎样设置指定ip远程访问连接
    查看>>
    mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
    查看>>
    Mysql中文乱码问题完美解决方案
    查看>>