登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
APM飞控
›
mavros与px4飞控通信的重要消息与服务
返回列表
发新帖
查看:
446
|
回复:
0
mavros与px4飞控通信的重要消息与服务
[复制链接]
贺兰石
贺兰石
当前离线
积分
1055
窥视卡
雷达卡
340
主题
374
帖子
1055
积分
金牌飞友
金牌飞友, 积分 1055, 距离下一级还需 1945 积分
金牌飞友, 积分 1055, 距离下一级还需 1945 积分
积分
1055
飞币
679
注册时间
2017-7-28
发消息
发表于 2022-11-2 19:25:48
|
显示全部楼层
|
阅读模式
各个版本的pixhawk
小编最近在用树莓派+pixhawk(px4固件)的无人机降落二维码的训练,其中与飞机进行通信,用的是mavros,在offboard模式下,对飞机进行控制,小编后续会给出几个具体如何用板载计算机控制px4飞控的例子,如让飞控自主飞一个正方形轨迹等等。这里小编先给出要使用频率最高的一些mavros消息。其中相关源代码,github上搜索mavros即可看到。下文整理主要来自阿木实验室:
树莓派3b
——————————————————————————————————————————————————————————
1.global_position 订阅GPS数据
消息名称:mavros/global_position/global
类型名称:sensor_msgs::NavSatFix
类型所在头文件:sensor_msgs/NavSatFix.h
常用类成员变量:
float64 latitude//经
float64 longitude//纬
float64 altitude//海拔
float64[9] position_covariance
uint8 position_covariance_type
——————————————————————————————————————————————————————————
2.imu_pub 订阅IMU原始数据
消息名称:mavros/imu/data(或者mavros/imu/data_raw mavros/imu/data为经过滤波后的数据)
类型名称:sensor_msgs::Imu
类型所在头文件:sensor_msgs/Imu.h
常用类成员变量:
geometry_msgs::Quaternion orientation//旋转四元数(xyzw)
float64[9] orientation_covariance//方差
geometry_msgs::Vector3 angular_velocity//3轴角速度(xyz)
float64[9] angular_velocity_covariance//方差
geometry_msgs::Vector3 linear_acceleration//线性加速度(xyz)
float64[9] linear_acceleration_covariance//方差
geometry_msgs::Quaternion类成员变量:
float64 x
float64 y
float64 z
float64 w
geometry_msgs::Vector3类成员变量:
float64 x
float64 y
float64 z
——————————————————————————————————————————————————————————
3.local_position 订阅本地位置数据
消息名称:mavros/local_position/pose
类型名称:geometry_msgs::PoseStamped
类型所在头文件:geometry_msgs/PoseStamped.h
常用类成员变量:
geometry_msgs::Pose pose
geometry_msgs::Pose类成员变量:
geometry_msgs::Point position
geometry_msgs::Quaternion orientation
geometry_msgs::Point类成员变量:
float64 x
float64 y
float64 z
——————————————————————————————————————————————————————————
4.manual_control 订阅遥控器的值
消息名称:mavros/manual_control/control
类型名称:mavros_msgs::ManualControl
类型所在头文件:mavros_msgs/ManualControl.h
常用类成员变量:
float32 x
float32 y
float32 z
float32 r
uint16 buttons
——————————————————————————————————————————————————————————
5.sys_status 查询系统状态
消息名称:mavros/state
类型名称:mavros_msgs::State
类型所在头文件:mavros_msgs/State.h
常用类成员变量:
bool connected//是否连接
bool armed//是否解锁
bool guided//是否被引导(offboard模式)
string mode//模式类型
uint8 system_status
——————————————————————————————————————————————————————————
6.waypoint 查询航点
消息名称:mavros/mission/waypoints
类型名称:mavros_msgs::WaypointList
类型所在头文件:mavros_msgs/WaypointList.h
常用类成员变量:
uint16 current_seq//当前航点索引
mavros_msgs::Waypoint[] waypoints//航点列表(注意ros中[] 表示此变量实际上是c++中的一个vector)
mavros_msgs::Waypoint类成员变量:
uint8 frame//坐标类型
uint16 command//命令id,16为航点
bool is_current
bool autocontinue
float32 param1
float32 param2
float32 param3
float32 param4
float64 x_lat//经度或者x坐标
float64 y_long//维度或者y坐标
float64 z_alt//海拔或者z坐标
下面介绍mavros中比较常用的控制消息,以及消息参数代表的意义
——————————————————————————————————————————————————————————
1.actuator_control 控制飞控IO输出(混控器)
消息名称:mavros/actuator_control
类型名称:mavros_msgs::ActuatorControl
类型所在头文件:mavros_msgs/ActuatorControl.h
常用类成员变量:
uint8 group_mix//要控制的混控器分组1-8(control group)
float32[8] controls//控制量(前四个分别是,roll pitch yaw thrust)
——————————————————————————————————————————————————————————
2.setpoint_accel 控制期望的加速度
消息名称:mavros/setpoint_accel/accel
类型名称:geometry_msgs::Vector3Stamped
类型所在头文件:geometry_msgs/Vector3Stamped.h
常用类成员变量:
geometry_msgs::Vector3 vector//三轴加速度
——————————————————————————————————————————————————————————
3.setpoint_attitude 控制期望的姿态
消息名称:mavros/setpoint_attitude/attitude
类型名称:geometry_msgs::PoseStamped
类型所在头文件:geometry_msgs/PoseStamped.h
常用类成员变量:
geometry_msgs::Pose pose//三个欧拉角,或者4元数任选其一
——————————————————————————————————————————————————————————
4.setpoint_position 控制期望的位置
消息名称:mavros/setpoint_position/local
类型名称:geometry_msgs::PoseStamped
类型所在头文件:geometry_msgs/PoseStamped.h
常用类成员变量:
geometry_msgs::Pose pose//NED坐标系下的位置(xyz),只有position成员变量生效
——————————————————————————————————————————————————————————
5.setpoint_velocity 控制期望的速度
消息名称:mavros/setpoint_velocity/cmd_vel
类型名称:geometry_msgs::TwistStamped
类型所在头文件:geometry_msgs/TwistStamped.h
常用类成员变量:
geometry_msgs::Twist twist//三轴速度
geometry_msgs::Twist类成员变量:
geometry_msgs::Vector3 linear//三轴线性速度
geometry_msgs::Vector3 angular//三轴角速度
——————————————————————————————————————————————————————————
6.控制期望的位置(GPS坐标)
消息名称:mavros/setpoint_position/global
类型名称:mavros_msgs::GlobalPositionTarget
类型所在头文件:mavros_msgs/GlobalPositionTarget.h
常用类成员变量:
uint8 coordinate_frame//5为绝对GPS坐标,6为相对高度GPS坐标
uint16 type_mask
/*以下为控制掩码,如果只想控制经纬高,type_mask=8+16+32+64+128+256+512+1024+2048
uint16 IGNORE_LATITUDE = 1# Position ignore flags
uint16 IGNORE_LONGITUDE = 2
uint16 IGNORE_ALTITUDE = 4
uint16 IGNORE_VX = 8# Velocity vector ignore flags
uint16 IGNORE_VY = 16
uint16 IGNORE_VZ = 32
uint16 IGNORE_AFX = 64# Acceleration/Force vector ignore flags
uint16 IGNORE_AFY = 128
uint16 IGNORE_AFZ = 256
uint16 FORCE = 512# Force in af vector flag
uint16 IGNORE_YAW = 1024
uint16 IGNORE_YAW_RATE = 2048*/
float64 latitude//经纬高
float64 longitude
float32 altitude
geometry_msgs/Vector3 velocity//速度
geometry_msgs/Vector3 acceleration_or_force//加速度
float32 yaw//偏航
float32 yaw_rate//偏航速度
下面将会围绕两个服务来进行讲解(模式切换、解锁)介绍:
——————————————————————————————————————————————————————————————
1.arming Services加解锁服务
消息名称:mavros/cmd/arming
类型名称:mavros_msgs::CommandBool
类型所在头文件:mavros_msgs/CommandBool.h
服务请求参数:
bool value//设置true为解锁,false为加锁
服务返回结果:
bool success//是否执行成功
uint8 result//错误信息
注意:在ros中所有服务参数都在xxx.request中,所有返回状态都在xxx.response中
如果我们想要解锁,那么代码可以如下来写:
ros::init(argc, argv, "offb_node");
ros::NodeHandle nh;
ros::ServiceClient arming_client = nh.serviceClient<mavros_msgs::CommandBool>("mavros/cmd/arming");
mavros_msgs::CommandBool arm_cmd;
arm_cmd.request.value = true;//注意这里是arm_cmd.request.value,不是arm_cmd.value
arming_client.call(arm_cmd);
执行完毕以后返回信息在:
arm_cmd.response.success
arm_cmd.response.result
——————————————————————————————————————————————————————————
2.模式切换
消息名称:mavros/set_mode
类型名称:mavros_msgs::SetMode
类型所在头文件:mavros_msgs/SetMode.h
服务请求参数:
uint8 base_mode//基本模式,如果custom_mode不为空,此项无效
string custom_mode//通常我们使用custom_mode,如果想进入offboard模式,在px4中赋值为"OFFBOARD",APM中为"GUILDED"
到这主要参数就结束啦,下次再为大家带来具体的程序例子。
服务
,
消息
,
重要
,
通信
,
飞控
相关帖子
•
无人机飞控系统解析:如何实现精准姿态控制[保华润天航空无人机]
•
无人机飞控系统:技术原理与高级应用全解析![新疆无人机培训]
•
法国在2024年巴黎奥运会上提供飞行出租车服务,汽车“飞起来”安全...
•
X6开源飞控四旋翼飞行大动作测试@1m轴距 即将上市,敬请期待
•
又有一款开源飞控来啦!零一科技X6飞控&OneGNSS定位模块如何呢
•
冒烟 牌 飞控 第二版 STM32 F407 ZGT6 版本 自制飞控 四轴 无人机 小 飞机 控制 第七季 第7集
•
气压计定高 PID 调节 冒烟 牌 飞控 第三版 STM32 F405 版本 自制飞控 四轴 无人机 小 飞机 控制 第十五季 第15集
•
〖T.O.P.〗出场ArduPilot固件的多旋翼飞控,跟穿越机常见的bf飞控有哪些不同?
•
《无人机驾驶员》无人机飞控原理及开源飞控网站、无人机飞行注意事项、多旋翼无人机飞行原理及飞行模式等知识-高级技师培训考试学习!
•
零一x6飞控(全地形火星车项目)开箱测试
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表