ardupilot_gazebo仿真(三)

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


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

MAVROS

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

安装MAVROS

Installing MAVROS

安装参照官网即可

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

推荐安装rqt

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

创建外部控制包

外部控制程序中文介绍

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

cd ~/catkin_ws/src
catkin_create_pkg offboard roscpp mavros geometry_msgs

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

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

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

然后在catkin_ws中,进行编译

cd ~/catkin_ws
catkin_make
source devel/setup.bash

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

启动仿真

01.启动地面站MAVproxy

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

02.launch MAVROS

roslaunch mavros apm.launch

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

cd catkin_ws/
source devel/setup.bash
rosrun offboard offboard_node

利用graph实时绘制曲线

graph是MAVproxy的一个module

用之前先要load graph

module load graph

常用参数监视

graph NAV_CONTROLLER_OUTPUT.nav_roll ATTITUDE.roll*57.32
graph NAV_CONTROLLER_OUTPUT.nav_pitch ATTITUDE.pitch*57.32
graph NAV_CONTROLLER_OUTPUT.nav_bearing ATTITUDE.yaw*57.32
graph VFR_HUD.alt
graph VFR_HUD.climb

NAV_CONTROLLER_OUTPUT 是期望数据

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

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

MAVprovxy控制无人机的指令

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

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

mode guided
arm throttle
takeoff 40

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

rc 3 1500

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

GUIDED> param show fence*
GUIDED> FENCE_ACTION 1.000000
FENCE_ALT_MAX 100.000000
FENCE_ENABLE 0.000000
FENCE_MARGIN 2.000000
FENCE_RADIUS 150.000000
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. An error occurred during the installation of assembly 'Microsoft.VC90.ATL or 'Microsoft.VC80.ATL'

    An error occurred during the installation of assembly 'Microsoft.VC90.ATL or 'Microsoft.VC80.ATL' 下载 ...

  2. Unity3d在各个平台读取Sqlite3数据库

    这也是我第一次在Unity3d中使用Sqlite来作为配置表文件,当然了,SQLite有优秀的读写性能. 如果这个项目用着稳定的话,我会一直使用下去. Android平台: 1,下载libsqlite ...

  3. 让IIS支持无后缀名访问

    IIS中添加对Mime类型 .   application/octet-stream

  4. AngularJS 使用 uppercase 过滤器的表格

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  5. flask笔记(一)

    1.第一个flask项目 # 首先你要安装flask这个模块 pip install flask # 安装好了之后,直接新建一个py文件,开始写最简单的flask项目了 from flask impo ...

  6. 【模板】概率dp

    有n个投资事件,和一个成功概率最低接受值rate.每个投资的价值是c[i],成功概率是p[i](浮点数). 在保证成功概率≥rate的情况下,使价值最大化. #include<bits/stdc ...

  7. js-关于iframe:从子页面给父页面的控件赋值方法

    项目中我们经会用到iframe,可能还会把iframe里的数值赋值给父页面空间. 接下来我们来说说有关于iframe赋值给父页面的方法. 1.子页面iframe给父页面的控件赋值方法. parent. ...

  8. vue服务端渲染按需引入mint

    vue服务器渲染按需引入mint-ui 1.修改.babelrc文件,在.babelrc文件中plugins数组中添加 { "presets": [["es2015&qu ...

  9. css3新样式

    超出两行变省略号 overflow:hidden; text-overflow:ellipsis;display:-webkit-box; -webkit-box-orient:vertical;-w ...

  10. PHP----composer安装和TP5验证码类

    妈的,想用TP5做个项目,用到登录验证码了,结果煞笔TP5不内置了,需要用Composer,用吧,来下载 1.安装Composer 1.1 更新 sudo apt-get update 1.2 安装w ...