跳转到内容

SensorOPS::ActionOPS API

文档稀疏
符号
56
已记录
15
修订版本
0.1.0+cea60a9e62e2

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

命名空间

3

protocol

上游未提供说明。

1

结构体

3

函数

16

sensors::ops::ActionOPS::ActionOPS

                    sensors::ops::ActionOPS::ActionOPS (UART_HandleTypeDef *huart, const Config &cfg)
                  

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:83

sensors::ops::ActionOPS::calibration

                    void sensors::ops::ActionOPS::calibration () const
                  

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

ops/ActionOPS/ActionOPS.hpp:122

sensors::ops::ActionOPS::decode

                    bool sensors::ops::ActionOPS::decode (const uint8_t data[26]) override
                  

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:107

sensors::ops::ActionOPS::header

                    const std::array< uint8_t, 2 > & sensors::ops::ActionOPS::header () const override
                  

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:101

sensors::ops::ActionOPS::resetWorldCoord

                    bool sensors::ops::ActionOPS::resetWorldCoord ()
                  

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

ops/ActionOPS/ActionOPS.hpp:88

sensors::ops::ActionOPS::resetWorldCoordByPose

                    bool sensors::ops::ActionOPS::resetWorldCoordByPose (const Posture &posture)
                  

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

ops/ActionOPS/ActionOPS.hpp:92

sensors::ops::ActionOPS::sendData

                    void sensors::ops::ActionOPS::sendData (const uint8_t *data, const uint16_t len) const
                  

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

ops/ActionOPS/ActionOPS.hpp:116

sensors::ops::ActionOPS::updateX

                    void sensors::ops::ActionOPS::updateX (const float posx) const
                  

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

ops/ActionOPS/ActionOPS.hpp:140

sensors::ops::ActionOPS::updateXY

                    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

sensors::ops::ActionOPS::updateY

                    void sensors::ops::ActionOPS::updateY (const float posy) const
                  

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

ops/ActionOPS/ActionOPS.hpp:146

sensors::ops::ActionOPS::updateYaw

                    void sensors::ops::ActionOPS::updateYaw (const float angle) const
                  

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

ops/ActionOPS/ActionOPS.hpp:134

sensors::ops::ActionOPS::zeroClearing

                    void sensors::ops::ActionOPS::zeroClearing () const
                  

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

ops/ActionOPS/ActionOPS.hpp:128

变量

30

sensors::ops::ActionOPS::Config::y_offset

                    float sensors::ops::ActionOPS::Config::y_offset
                  

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

ops/ActionOPS/ActionOPS.hpp:72

sensors::ops::ActionOPS::Config::yaw_car

                    const float* sensors::ops::ActionOPS::Config::yaw_car
                  

初始角度偏移(度,逆时针为正)

ops/ActionOPS/ActionOPS.hpp:75

sensors::ops::ActionOPS::Config::yaw_offset

                    float sensors::ops::ActionOPS::Config::yaw_offset
                  

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

ops/ActionOPS/ActionOPS.hpp:73

sensors::ops::ActionOPS::feedback_

                    struct sensors::ops::ActionOPS::@133326276357152132105351152215175132161221103323 sensors::ops::ActionOPS::feedback_
                  

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:176

sensors::ops::ActionOPS::p_base_

                    struct sensors::ops::ActionOPS::@356131276030203027363022225277335241143265270130 sensors::ops::ActionOPS::p_base_
                  

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:182

sensors::ops::ActionOPS::p_offset_

                    struct sensors::ops::ActionOPS::@356131276030203027363022225277335241143265270130 sensors::ops::ActionOPS::p_offset_
                  

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:182

sensors::ops::ActionOPS::setup_

                    struct sensors::ops::ActionOPS::@271071053364214377313361203232015040322047107106 sensors::ops::ActionOPS::setup_
                  

上游未提供说明。

ops/ActionOPS/ActionOPS.hpp:193

宏定义

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