登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
APM飞控
›
mavros与px4飞控通信的重要消息与服务
返回列表
发新帖
查看:
405
|
回复:
0
mavros与px4飞控通信的重要消息与服务
[复制链接]
贺兰石
贺兰石
当前离线
积分
996
窥视卡
雷达卡
321
主题
353
帖子
996
积分
高级飞友
高级飞友, 积分 996, 距离下一级还需 4 积分
高级飞友, 积分 996, 距离下一级还需 4 积分
积分
996
飞币
641
注册时间
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"
到这主要参数就结束啦,下次再为大家带来具体的程序例子。
服务
,
消息
,
重要
,
通信
,
飞控
相关帖子
•
移动应急通信布控球 通信单兵 图传 无人机5G图传智能高清传输,海伊视讯构建智慧安防新领域
•
第一讲:梦创飞控固件烧录教程
•
无人机飞控技术,无人机飞行控制系统介绍,飞控系统硬件设计原理与实现方法
•
解决 ELRS 接收机 SBUS 接F4 飞控 通电 进 DFU Bootloader 模式劫持 Jumper RC 自制 冒烟 牌 飞控
•
无人机飞控系统解析:如何实现精准姿态控制[保华润天航空无人机]
•
无人机飞控系统:技术原理与高级应用全解析![新疆无人机培训]
•
法国在2024年巴黎奥运会上提供飞行出租车服务,汽车“飞起来”安全...
•
X6开源飞控四旋翼飞行大动作测试@1m轴距 即将上市,敬请期待
•
又有一款开源飞控来啦!零一科技X6飞控&OneGNSS定位模块如何呢
•
〖T.O.P.〗出场ArduPilot固件的多旋翼飞控,跟穿越机常见的bf飞控有哪些不同?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表