ardupilot_gazebo仿真(三)

标签(空格分隔): 未分类


创建ROS node 实现对无人机的控制(软件在环)

MAVROS

MAVROS是ROS中的一个能够连接支持MAVLink地面站、支持MAVLink飞控和ROS计算机的工具。

安装MAVROS

Installing MAVROS

安装参照官网即可

  1. sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras
  2. wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
  3. chmod a+x install_geographiclib_datasets.sh
  4. ./install_geographiclib_datasets.sh

推荐安装rqt

  1. sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-rqt-robot-plugins

创建外部控制包

外部控制程序中文介绍

根据ROS官网教程,创建一个ROS包

  1. cd ~/catkin_ws/src
  2. catkin_create_pkg offboard roscpp mavros geometry_msgs

这时会在catkin_ws/src目录中生成offboard文件夹,其中包含include和src两个文件夹。我们将offboard_node.cpp放在刚刚生成的offboard/src中。修改offboard目录下的CMakeLists.txt文件,取消一些注释生成相应节点。

  1. ## Declare a C++ executable
  2. ## With catkin_make all packages are built within a single CMake context
  3. ## The recommended prefix ensures that target names across packages don't collide
  4. add_executable(${PROJECT_NAME}_node src/offboard_node.cpp)
  5. ## Rename C++ executable without prefix
  6. ## The above recommended prefix causes long target names, the following renames the
  7. ## target back to the shorter version for ease of user use
  8. ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
  9. # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
  10. ## Add cmake target dependencies of the executable
  11. ## same as for the library above
  12. # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
  13. ## Specify libraries to link a library or executable target against
  14. target_link_libraries(${PROJECT_NAME}_node
  15. ${catkin_LIBRARIES}
  16. )

offboard_node.cpp是我们创建的节点的名字。

然后在catkin_ws中,进行编译

  1. cd ~/catkin_ws
  2. catkin_make
  3. source devel/setup.bash

每次要运行节点是都要source setup.bash

启动仿真

01.启动地面站MAVproxy

  1. cd ardupilot/ArduCopter
  2. sim_vehicle.py --map --console

02.launch MAVROS

  1. roslaunch mavros apm.launch

03.运行自己做的外部程序节点

  1. cd catkin_ws/
  2. source devel/setup.bash
  3. rosrun offboard offboard_node

利用graph实时绘制曲线

graph是MAVproxy的一个module

用之前先要load graph

  1. module load graph

常用参数监视

  1. graph NAV_CONTROLLER_OUTPUT.nav_roll ATTITUDE.roll*57.32
  2. graph NAV_CONTROLLER_OUTPUT.nav_pitch ATTITUDE.pitch*57.32
  3. graph NAV_CONTROLLER_OUTPUT.nav_bearing ATTITUDE.yaw*57.32
  4. graph VFR_HUD.alt
  5. graph VFR_HUD.climb

NAV_CONTROLLER_OUTPUT 是期望数据

ATTITUDE 姿态需要乘以57.32变成角度

  1. VFR_HUD.airspeed VFR_HUD.climb VFR_HUD.heading
  2. VFR_HUD.alt VFR_HUD.groundspeed VFR_HUD.throttle

MAVprovxy控制无人机的指令

参考MAVproxy教程,官网给出了较完整的命令集

这里只做最简单的介绍,可以让无人机飞起来。

  1. mode guided
  2. arm throttle
  3. takeoff 40

其中一些飞行模式需要rc 3 在中立的位置,例如alt_hold loiter circle 模式等

  1. rc 3 1500

在地面站还可以对参数进行设置

  1. GUIDED> param show fence*
  2. GUIDED> FENCE_ACTION 1.000000
  3. FENCE_ALT_MAX 100.000000
  4. FENCE_ENABLE 0.000000
  5. FENCE_MARGIN 2.000000
  6. FENCE_RADIUS 150.000000
  7. FENCE_TYPE 3.000000

ardupilot_gazebo仿真(三)的更多相关文章

  1. ardupilot_gazebo仿真(四)

    ardupilot_gazebo仿真(四) 标签(空格分隔): 未分类 Multi-MAV simulation 参考官网给出的multi-vehicle-simulation的方法 在每次打开sim ...

  2. ardupilot_gazebo仿真(二)

    ardupilot_gazebo仿真(二) 标签(空格分隔): 未分类 在模型中添加sensor gezebo官网-sensor部分教程 gezebo官网-基础部分教程 Gazebo plugins ...

  3. ardupilot_gazebo仿真(一)

    ardupilot_gazebo仿真 标签(空格分隔): 未分类 ardupilot_gazebo仿真 官网网址 代码更新地址 Ardupilot Gazebo Plugin & Models ...

  4. MFC框架仿真<三>R T T I

    RTTI,简单的说,就是判定A类是否为B类的基类.将书本的内容最大程度的简化,如下图的类层次,现在解决的问题就是:判定“梨”是否是“红富士”的基类.

  5. 常见行为:仿真&重力&碰撞&捕捉

    一.UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架.可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象,重力.弹性碰撞等,游戏开发中很常见,例如愤怒的小鸟. 二.UI ...

  6. UIDynamic(简单介绍)

    一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力.弹性碰撞等现 ...

  7. iOS开发拓展篇—UIDynamic(简单介绍)

    iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟 ...

  8. 李洪强iOS开发之拓展篇—UIDynamic(简单介绍)

      iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能 ...

  9. iOS开发——UI篇OC篇&UIDynamic详解

    iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟 ...

随机推荐

  1. Android学习笔记_9_SQLiteOpenHelper对象之数据库增删改查以及事务回滚操作

    一.SQLite数据库: 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进 ...

  2. JavaEE权限管理系统的搭建(八)--------角色的增删改

    如下图所示,添加角色的同时,要给角色分配权限菜单,关于权限数的显示,我实现了两种方式,普通方式和Ztree方式, 普通方式展示树: 主要代码部分: /** * 进入角色添加页面 * @param mo ...

  3. jquery插件layer

    //信息框-例1 layer.alert('见到你真的很高兴', {icon: 6}); //信息框-例2 layer.confirm('你确定你很帅么?', {icon: 3}, function( ...

  4. swiper插件使用技巧

    1.加载插件: <!DOCTYPE html> <html> <head> ... <link rel="stylesheet" href ...

  5. 自己理解的数据库shcema

    不懂就被人嘲笑呀 ,你还不知道怎么说. 从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点 ...

  6. Angularjs基础(五)

    AngularJS Select(选项框) AngularJS 可是使用数组或对象创建一个下拉列表选项.使用ng-options创建选项框 在AngularJS 中我们可以使用ng-option指令来 ...

  7. web常用软件

    编辑器: VSCode HBuilder WebStorm NotePad++ Eclipse Atom 常用插件: SwitchyOmega Vue-Tools server类: tomcat Ng ...

  8. VS中R转义字符处理

    std::string s1 = R"(Name="Hello World ... ")"; std::string s2 = R"-(Name=&q ...

  9. Recycler实现瀑布流

    (开发环境Android studio) 首先,在开发环境中添加引用(在外层的build.gradle文件下的dependencies里面添加如下引用) implementation 'com.and ...

  10. PHP+Mysql注入防护与绕过

    今天给大家分享一个关于php常见的注入防护以及如何bypass的文章,文章内容来源国外某大佬总结,我做了一下整理,文章来源地址不详,下面正文开始.以下的方式也仅仅是针对黑名单的过滤有一定的效果,为了安 ...