mavros_msgs的type_mask用法

文章探讨了无人机控制代码中mavros_msgs::PositionTargetPositionSetpoint消息的type_mask属性,这是一个用于设定无人机忽略特定运动参数的位掩码。0b100111000000的二进制值表示忽略AFX、AFY、AFZ加速力向量以及YAW_RATE。此部分代码解析有助于理解无人机自主导航系统如何指定和忽略飞行参数。
摘要由CSDN通过智能技术生成

这几天在看自主无人机的一些代码,如下:

mavros_msgs::PositionTarget PositionSetpoint

PositionSetpoint.type_mask = 0b100111000000   看到这几句代码不是很懂,然后网上查询了下。

首先看该消息的说明:

# Message for SET_POSITION_TARGET_LOCAL_NED
#
# Some complex system requires all feautures that mavlink
# message provide. See issue #402.

std_msgs/Header header

uint8 coordinate_frame
uint8 FRAME_LOCAL_NED = 1
uint8 FRAME_LOCAL_OFFSET_NED = 7
uint8 FRAME_BODY_NED = 8
uint8 FRAME_BODY_OFFSET_NED = 9

uint16 type_mask
uint16 IGNORE_PX = 1 # Position ignore flags
uint16 IGNORE_PY = 2
uint16 IGNORE_PZ = 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

geometry_msgs/Point position
geometry_msgs/Vector3 velocity
geometry_msgs/Vector3 acceleration_or_force
float32 yaw
float32 yaw_rate

可以看到type_mask下的键的值都是2的次方(即二进制的位数),由此我们不难得出

PositionSetpoint.type_mask = 0b100111000000(二进制)代表了

uint16 IGNORE_AFX = 64(1000000)
uint16 IGNORE_AFY = 128(10000000)
uint16 IGNORE_AFZ = 256(100000000)

uint16 IGNORE_YAW_RATE = 2048(100000000000)  生效

这样就可以简要表明那些参数生效了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值