protocol
上游未提供说明。
0.1.0+cea60a9e62e241 / 56 个公开 API 符号没有说明。
上游未提供说明。
上游未提供说明。
ops/ActionOPS/ActionOPS.cpp:12上游未提供说明。
ops/ActionOPS/ActionOPS.cpp:12上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:66上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:69上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:78上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:161
sensors::ops::ActionOPS::ActionOPS (UART_HandleTypeDef *huart, const Config &cfg)
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:83
void sensors::ops::ActionOPS::calibration () const
OPS校准命令(发送"ACTR") 该函数一般情况下不会被使用
ops/ActionOPS/ActionOPS.hpp:122
bool sensors::ops::ActionOPS::decode (const uint8_t data[26]) override
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:107
const float & sensors::ops::ActionOPS::getBodyX () const
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:94
const float & sensors::ops::ActionOPS::getBodyY () const
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:96
const float & sensors::ops::ActionOPS::getBodyYaw () const
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:98
const std::array< uint8_t, 2 > & sensors::ops::ActionOPS::header () const override
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:101
bool sensors::ops::ActionOPS::resetWorldCoord ()
世界坐标系重置函数(清零pos_x、pos_y和陀螺仪偏航角)
ops/ActionOPS/ActionOPS.hpp:88
bool sensors::ops::ActionOPS::resetWorldCoordByPose (const Posture &posture)
通过传入的位姿重设世界坐标系
ops/ActionOPS/ActionOPS.hpp:92
void sensors::ops::ActionOPS::sendData (const uint8_t *data, const uint16_t len) const
OPS串口发送数据 该函数为阻塞发送 data 发送数据指针 len 发送数据长度(字节)
ops/ActionOPS/ActionOPS.hpp:116
void sensors::ops::ActionOPS::transform ()
解算车体中心位姿
ops/ActionOPS/ActionOPS.hpp:158
void sensors::ops::ActionOPS::updateX (const float posx) const
OPS更新X坐标(发送"ACTX"+4字节float) posx 目标X坐标(单位m,float类型)
ops/ActionOPS/ActionOPS.hpp:140
void sensors::ops::ActionOPS::updateXY (float posx, float posy) const
OPS更新XY坐标(发送"ACTD"+8字节float) posx 目标X坐标(单位m,float类型) posy 目标Y坐标(单位m,float类型)
ops/ActionOPS/ActionOPS.hpp:153
void sensors::ops::ActionOPS::updateY (const float posy) const
OPS更新Y坐标(发送"ACTY"+4字节float) posy 目标Y坐标(单位m,float类型)
ops/ActionOPS/ActionOPS.hpp:146
void sensors::ops::ActionOPS::updateYaw (const float angle) const
OPS更新航向角(发送"ACTJ"+4字节float) angle 目标航向角(范围-180~180度,float类型)
ops/ActionOPS/ActionOPS.hpp:134
void sensors::ops::ActionOPS::zeroClearing () const
OPS清零命令(发送"ACT0") 清零后角度/坐标重置为0
ops/ActionOPS/ActionOPS.hpp:128
float sensors::ops::ActionOPS::Config::x_offset
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:71
float sensors::ops::ActionOPS::Config::y_offset
X轴偏移(mm,OPS在车体中心前方为正)
ops/ActionOPS/ActionOPS.hpp:72
const float* sensors::ops::ActionOPS::Config::yaw_car
初始角度偏移(度,逆时针为正)
ops/ActionOPS/ActionOPS.hpp:75
float sensors::ops::ActionOPS::Config::yaw_offset
Y轴偏移(mm,OPS在车体中心左侧为正)
ops/ActionOPS/ActionOPS.hpp:73
float sensors::ops::ActionOPS::Posture::x
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:80
float sensors::ops::ActionOPS::Posture::y
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:80
float sensors::ops::ActionOPS::Posture::yaw
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:80
float sensors::ops::ActionOPS::R::cos
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:163
float sensors::ops::ActionOPS::R::sin
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:164
R sensors::ops::ActionOPS::R_base_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:184
float sensors::ops::ActionOPS::body_x_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:198
float sensors::ops::ActionOPS::body_y_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:199
float sensors::ops::ActionOPS::body_yaw_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:200
struct sensors::ops::ActionOPS::@133326276357152132105351152215175132161221103323 sensors::ops::ActionOPS::feedback_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:176
float sensors::ops::ActionOPS::gyro_offset_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:196
const float* sensors::ops::ActionOPS::gyro_yaw_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:195
osMutexId_t sensors::ops::ActionOPS::lock_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:167
struct sensors::ops::ActionOPS::@356131276030203027363022225277335241143265270130 sensors::ops::ActionOPS::p_base_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:182
struct sensors::ops::ActionOPS::@356131276030203027363022225277335241143265270130 sensors::ops::ActionOPS::p_offset_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:182
float sensors::ops::ActionOPS::pos_x
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:170
float sensors::ops::ActionOPS::pos_y
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:171
struct sensors::ops::ActionOPS::@271071053364214377313361203232015040322047107106 sensors::ops::ActionOPS::setup_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:193
float sensors::ops::ActionOPS::theta_offset_
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:186
float sensors::ops::ActionOPS::w_z
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:175
float sensors::ops::ActionOPS::x
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:180
float sensors::ops::ActionOPS::xangle
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:173
float sensors::ops::ActionOPS::y
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:181
float sensors::ops::ActionOPS::yangle
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:174
float sensors::ops::ActionOPS::yaw
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:192
float sensors::ops::ActionOPS::zangle
上游未提供说明。
ops/ActionOPS/ActionOPS.hpp:172上游未提供说明。
ops/ActionOPS/ActionOPS.cpp:10syhanjin 2026-02-01
ops/ActionOPS/ActionOPS.cppops全方位平面定位系统 mogegee syhanjin 2025-12-24 / 2026-02-01 简述本驱动解算逻辑: W 世界坐标系:本驱动认为的世界坐标系,同时也是返回值的参考坐标系 B 车身坐标系:固定在车体上的坐标系,原点在底盘集合中心,车体正前方为 x,左侧为 y OW 码盘世界坐标系:Action 的码盘认为的世界坐标系 O 码盘坐标系:Action 码盘手册所述的坐标系 Now 重定位坐标系:重定位时刻的 B 符号定义: T_{X}_{Y} 为坐标系 X 到坐标系 Y 的齐次变换矩阵. R 为 T = [R p; 0 1] 中的旋转矩阵,p 为平移向量. 坐标系定义: 初始化时我们会传入 O 与 B 的相对位置,由于码盘是固定在车体的,所以该位置不变, 定义变换矩阵 T0 = T_O_B 为 O 到 B 的变换矩阵。 p = p0 + R0 * pf - Rf * p0; 现在解释重置坐标系的变换原理( W = B ): 向码盘发送重置命令,此时 OW 变为 O,同时 W 重置为 B,于是有变换关系 T_OW_W = T0, 码盘将会返回数据 P 为 O 在 OW 中的位置,由陀螺仪可以得出 O 在 OW 时的 yaw, 即:反馈量为 O 到 OW 的变换 Tf = T_O_OW,目标量为 B 到 W 的变换 T = T_B_W. 所以有 T = T_OW_W * Tf * T_O_B^(-1) = T0 * Tf * T0^(-1). 另外 T = [ R p ; 0 1 ], 我们只需要 p 拆分可得 p = R0 * pf + (I - R0 * Rf * R0^(-1)) * p0; 由于二维情况下 RA * RB = RB * RA,所以可以化简为 p = R0 * pf + (I - Rf) * p0; 得到最终结果: 现在解释以当前位置为反馈进行重定位解算的原理 ( T_B_W = T_Now_W = Tn ): 本情况与上面的区别在于 T_OW_W != T0, 而是满足 T_OW_W = T_Now_W * T_OW_Now, 由于 T_OW_Now = T0,有 T_OW_W = Tn * T0; 此时带入到上面过程有 T = Tn * T0 * Tf * T0^(-1); 所以得到这种情况下结果就是对上面的 p 再做一次 Tn 变换, 可以得到 p = Rn * R0 * pf + Rn * (I - R0 * Rf * R0^(-1)) * p0 + pn = (Rn * p0 + pn) + (Rn * R0) * pf - Rn * Rf * p0 = (Rn * p0 + pn) + (Rn * R0) * pf - Rf * Rn * p0 = p_offset + R_base * pf - Rf * p_base; 其中: p_base = Rn * p0, R_base = Rn * R0 = R(theta_n + theta_0), theta_base = theta_n + theta_0. p_offset = p_base + pn, p = p_offset + R_base * pf - Rf * p_base; yaw = yaw_f + theta_n 所以最后的更新计算函数可以统一为
ops/ActionOPS/ActionOPS.hpp