登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
APM飞控
›
mavros与px4飞控通信的重要消息与服务
返回列表
发新帖
查看:
554
|
回复:
0
mavros与px4飞控通信的重要消息与服务
[复制链接]
贺兰石
贺兰石
当前离线
积分
1295
窥视卡
雷达卡
420
主题
454
帖子
1295
积分
金牌飞友
金牌飞友, 积分 1295, 距离下一级还需 1705 积分
金牌飞友, 积分 1295, 距离下一级还需 1705 积分
积分
1295
飞币
839
注册时间
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"
到这主要参数就结束啦,下次再为大家带来具体的程序例子。
重要
,
通信
,
飞控
,
mavros
,
px4
相关帖子
•
借助px4飞控日志简便估计SLAM位姿时延操作方法
•
MUGINUAV首款飞控产品MuPilot即将发布,敬请期待!#云轮科技 #Ardupilot #飞控 #无人机
•
【PX4开源飞控】独立SoC的开放平台帮助打造高性能AI人工智能无人机 | 96Boards总监Yang Zhang | PX4线上开发者峰会2020·直播录像
•
PX4 Audio Indications
•
请问Pixhawk是比较不何尼尽好的开源飞控板了吧?是否支持自村究己编写飞控代码?...
•
PX4自动代码生成,pixhawk,使用MBD搭建神经网络控制四旋翼,强化学习,神经网络控制,四旋翼姿态控制
•
优像已经有GitHub仓库啦(在完善)!好消息:新的优像光流模块已适配国产飞控Acfly以及Ardupilot(apm)。用px4的童鞋还得等我再爆肝一段时间。
•
OneRTK UM982固件更新,已支持PX4飞控CAN通信下双天线测向
•
请问Pixhawk是比较好的开源飞控板了吧?是否支持自己编写飞控代码?还是...
•
亿航智能EH216-S在西班牙贝尼多姆市完成欧洲首个eVTOL城市飞行,城市空中交通发展迎来又一重要里程碑!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表