跳转到内容

SensorOPS::ActionOPS API

文档稀疏
符号
56
已记录
15
类型
4
继承关系
1
源码分支
main

41 / 56 个公开 API 符号没有说明。

继承关系总览

继承图尚未加载。

全部继承关系

共 4 个类型

类型目录
类

sensors::ops::ActionOPS

查看源码

上游未提供类型说明。

继承关系

基类
  • protocol::UartRxSync< 2, 28 >公开

构造与析构

1

ActionOPS

函数公开
        sensors::ops::ActionOPS::ActionOPS (UART_HandleTypeDef *huart, Buffer &buffer, const Config &cfg)
      

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:83

成员函数

15

calibration

函数私有const
        void sensors::ops::ActionOPS::calibration () const
      

OPS校准命令(发送"ACTR") 该函数一般情况下不会被使用

ops/ActionOPS/ActionOPS.hpp:122

header

函数受保护const
        const std::array< uint8_t, 2 > & sensors::ops::ActionOPS::header () const override
      

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:101

resetWorldCoord

函数公开
        bool sensors::ops::ActionOPS::resetWorldCoord ()
      

世界坐标系重置函数(清零pos_x、pos_y和陀螺仪偏航角)

ops/ActionOPS/ActionOPS.hpp:88

resetWorldCoordByPose

函数公开
        bool sensors::ops::ActionOPS::resetWorldCoordByPose (const Posture &posture)
      

通过传入的位姿重设世界坐标系

ops/ActionOPS/ActionOPS.hpp:92

sendData

函数私有const
        void sensors::ops::ActionOPS::sendData (const uint8_t *data, const uint16_t len) const
      

OPS串口发送数据 该函数为阻塞发送 data 发送数据指针 len 发送数据长度(字节)

ops/ActionOPS/ActionOPS.hpp:116

updateX

函数私有const
        void sensors::ops::ActionOPS::updateX (const float posx) const
      

OPS更新X坐标(发送"ACTX"+4字节float) posx 目标X坐标(单位m,float类型)

ops/ActionOPS/ActionOPS.hpp:140

updateXY

函数私有const
        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

updateY

函数私有const
        void sensors::ops::ActionOPS::updateY (const float posy) const
      

OPS更新Y坐标(发送"ACTY"+4字节float) posy 目标Y坐标(单位m,float类型)

ops/ActionOPS/ActionOPS.hpp:146

updateYaw

函数私有const
        void sensors::ops::ActionOPS::updateYaw (const float angle) const
      

OPS更新航向角(发送"ACTJ"+4字节float) angle 目标航向角(范围-180~180度,float类型)

ops/ActionOPS/ActionOPS.hpp:134

zeroClearing

函数私有const
        void sensors::ops::ActionOPS::zeroClearing () const
      

OPS清零命令(发送"ACT0") 清零后角度/坐标重置为0

ops/ActionOPS/ActionOPS.hpp:128

成员变量

21

feedback_

变量私有
        struct sensors::ops::ActionOPS::@133326276357152132105351152215175132161221103323 sensors::ops::ActionOPS::feedback_
      

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:176

p_base_

变量私有
        struct sensors::ops::ActionOPS::@356131276030203027363022225277335241143265270130 sensors::ops::ActionOPS::p_base_
      

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:182

p_offset_

变量私有
        struct sensors::ops::ActionOPS::@356131276030203027363022225277335241143265270130 sensors::ops::ActionOPS::p_offset_
      

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:182

setup_

变量私有
        struct sensors::ops::ActionOPS::@271071053364214377313361203232015040322047107106 sensors::ops::ActionOPS::setup_
      

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:193

嵌套类型

3
结构体

sensors::ops::ActionOPS::Config

查看源码

上游未提供类型说明。

成员变量

4

y_offset

变量公开
        float sensors::ops::ActionOPS::Config::y_offset
      

X轴偏移(mm,OPS在车体中心前方为正)

ops/ActionOPS/ActionOPS.hpp:72

yaw_offset

变量公开
        float sensors::ops::ActionOPS::Config::yaw_offset
      

Y轴偏移(mm,OPS在车体中心左侧为正)

ops/ActionOPS/ActionOPS.hpp:73

其他公开符号

宏定义

1

文件

2

ops/ActionOPS/ActionOPS.hpp

文件

ops全方位平面定位系统 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