| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 类型 | Public 成员函数 | 静态 Public 成员函数 | 所有成员列表
rm::Armor类 参考final
特征组合体（数据组件） » 装甲模块特征组合

装甲模块组合特征 更多...

`#include <rmvl/combo/armor.h>`

类 rm::Armor 继承关系图:
rm::Armor 的协作图:

## Public 类型
using | ptr = std::shared_ptr<Armor>
using | const_ptr = std::shared_ptr<const Armor>
Public 类型 继承自 rm::combo
using | ptr = std::shared_ptr<combo>
using | const_ptr = std::shared_ptr<const combo>

## Public 成员函数
combo::ptr | clone (int64_t tick) override
| 从另一个组合体进行构造
float | getComboRatio ()
| 获取组合特征宽高比
float | getWidthRatio ()
| 获取左右灯条宽度的比值
float | getLengthRatio ()
| 获取左右灯条长度的比值
float | getCornerAngle ()
| 获取左右灯条错位角
float | getError ()
| 获取匹配误差
void | setType (RobotType stat)
| 设置机器人类型 RobotType
const cv::Vec2f & | getPose () const
| 获取装甲板姿态法向量
Public 成员函数 继承自 rm::combo
float | height () const
| 获取组合体高度
float | width () const
| 获取组合体宽度
float | angle () const
| 获取组合体角度
cv::Point2f | center () const
| 获取组合体中心点
const std::vector< cv::Point2f > & | corners () const
| 获取组合体角点
cv::Point2f | corner (int idx) const
| 获取指定角点
const CameraExtrinsics & | extrinsic () const
| 获取组合体相机外参
const StateInfo & | state () const
| 获取组合体状态
StateInfo & | state ()
| 获取组合体状态
int64_t | tick () const
| 获取捕获该组合体的时间点
cv::Point2f | getRelativeAngle () const
| 获取组合体的相对目标转角
const ImuData & | imu () const
| 获取组合体当前的 IMU 数据
feature::ptr | at (std::size_t idx)
| 获取指定特征
const feature::const_ptr | at (std::size_t idx) const
| 获取指定特征
const std::vector< feature::ptr > & | data () const
| 获取特征列表数据
std::size_t | size () const
| 获取特征列表大小
bool | empty () const
| 判断特征列表是否为空

## 静态 Public 成员函数
static ptr | make_combo (LightBlob::ptr p_left, LightBlob::ptr p_right, const ImuData &imu_data, int64_t tick, ArmorSizeType armor_size_type=ArmorSizeType::UNKNOWN)
| Armor 构造接口
static ptr | cast (combo::ptr p_combo)
static const_ptr | cast (combo::const_ptr p_combo)
static void | loadSVM (const std::string &path)
| 加载 SVM 装甲板大小分类的 *.xml 文件
static void | imuConvertToCamera (const cv::Matx33f &gyro_rmat, const cv::Vec3f &gyro_tvec, const ImuData &imu_data, cv::Matx33f &cam_rmat, cv::Vec3f &cam_tvec)
| 装甲板相机外参从 IMU 坐标系转化为相机坐标系
static void | cameraConvertToImu (const cv::Matx33f &cam_rmat, const cv::Vec3f &cam_tvec, const ImuData &imu_data, cv::Matx33f &gyro_rmat, cv::Vec3f &gyro_tvec)
| 装甲板相机外参从相机坐标系转化为 IMU 坐标系
static bool | isContainBlob (LightBlob::ptr blob, Armor::ptr armor)
| 判断单个装甲板所在区域内是否包含指定的灯条
static cv::Mat | getNumberROI (cv::Mat src, const_ptr p_armor)
| 根据图像中指定装甲板的信息，截取仅包含数字的 ROI

## 额外继承的成员函数
Protected 属性 继承自 rm::combo
std::vector< feature::ptr > | _features
| 特征列表
float | _height {}
| 高度
float | _width {}
| 宽度
float | _angle {}
| 角度
StateInfo | _state {}
| 状态
cv::Point2f | _center
| 中心点
cv::Point2f | _relative_angle
| 相对目标转角
ImuData | _imu_data
| 当前 IMU 数据
std::vector< cv::Point2f > | _corners
| 角点
CameraExtrinsics | _extrinsic
| 相机外参
int64_t | _tick {}
| 捕获该组合体时的时间点

## 详细描述

装甲模块组合特征

注解
  - 特征包括 [0]: 左灯条，[1]: 右灯条
  - 角点为 [0]: 左灯条下顶点，[1]: 左灯条上顶点，[2]: 右灯条上顶点，[3]: 右灯条下顶点

## 成员类型定义说明

## ◆ const_ptr

using rm::Armor::const_ptr = std::shared_ptr<const Armor>

## ◆ ptr

using rm::Armor::ptr = std::shared_ptr<Armor>

## 成员函数说明

## ◆ cameraConvertToImu()

void rm::Armor::cameraConvertToImu | ( | const cv::Matx33f & | cam_rmat,
|  | const cv::Vec3f & | cam_tvec,
|  | const ImuData & | imu_data,
|  | cv::Matx33f & | gyro_rmat,
|  | cv::Vec3f & | gyro_tvec )
| static

装甲板相机外参从相机坐标系转化为 IMU 坐标系

参数

  [in] | cam_rmat | 相机坐标系下的装甲板旋转矩阵
  [in] | cam_tvec | 相机坐标系下的装甲板平移向量
  [in] | imu_data | IMU 数据信息
  [out] | gyro_rmat | IMU 坐标系下的装甲板旋转矩阵
  [out] | gyro_tvec | IMU 坐标系下的装甲板平移向量

## ◆ cast() [1/2]

const_ptr rm::Armor::cast | ( | combo::const_ptr | p_combo | ) |
| inline static

## ◆ cast() [2/2]

ptr rm::Armor::cast | ( | combo::ptr | p_combo | ) |
| inline static

示例
  samples/detector/hik/sample_hik_armor_collection.cpp, samples/detector/hik/sample_hik_armor_size_classify.cpp, samples/detector/mv/sample_mv_armor_collection.cpp , 以及 samples/detector/mv/sample_mv_armor_size_classify.cpp.

## ◆ clone()

combo::ptr rm::Armor::clone | ( | int64_t | tick | ) |
| override virtual

Python:
| rm.Armor.clone( | t | ) -> | <rm.Armor object>

从另一个组合体进行构造

参数

  [in] | tick | 当前时间点，可用 rm::Time::now() 获取

返回
  指向新组合体的共享指针

实现了 rm::combo.

函数调用图:

## ◆ getComboRatio()

float rm::Armor::getComboRatio | ( |  | ) |
| inline

Python:
| rm.Armor.getComboRatio( |  | ) -> | ratio

获取组合特征宽高比

## ◆ getCornerAngle()

float rm::Armor::getCornerAngle | ( |  | ) |
| inline

Python:
| rm.Armor.getCornerAngle( |  | ) -> | angle

获取左右灯条错位角

## ◆ getError()

float rm::Armor::getError | ( |  | ) |
| inline

Python:
| rm.Armor.getError( |  | ) -> | err

获取匹配误差

## ◆ getLengthRatio()

float rm::Armor::getLengthRatio | ( |  | ) |
| inline

Python:
| rm.Armor.getLengthRatio( |  | ) -> | ratio

获取左右灯条长度的比值

## ◆ getNumberROI()

cv::Mat rm::Armor::getNumberROI | ( | cv::Mat | src,
|  | const_ptr | p_armor )
| static

根据图像中指定装甲板的信息，截取仅包含数字的 ROI

参数

  [in] | src | 输入图像
  [in] | p_armor | 指定的参考装甲板

返回
  ROI

示例
  samples/detector/hik/sample_hik_armor_collection.cpp , 以及 samples/detector/mv/sample_mv_armor_collection.cpp.

## ◆ getPose()

const cv::Vec2f & rm::Armor::getPose | ( |  | ) | const
| inline

Python:
| rm.Armor.getPose( |  | ) -> | px, py

获取装甲板姿态法向量

## ◆ getWidthRatio()

float rm::Armor::getWidthRatio | ( |  | ) |
| inline

Python:
| rm.Armor.getWidthRatio( |  | ) -> | ratio

获取左右灯条宽度的比值

## ◆ imuConvertToCamera()

void rm::Armor::imuConvertToCamera | ( | const cv::Matx33f & | gyro_rmat,
|  | const cv::Vec3f & | gyro_tvec,
|  | const ImuData & | imu_data,
|  | cv::Matx33f & | cam_rmat,
|  | cv::Vec3f & | cam_tvec )
| static

装甲板相机外参从 IMU 坐标系转化为相机坐标系

参数

  [in] | gyro_rmat | IMU 坐标系下的装甲板旋转矩阵
  [in] | gyro_tvec | IMU 坐标系下的装甲板平移向量
  [in] | imu_data | IMU 数据信息
  [out] | cam_rmat | 相机坐标系下的装甲板旋转矩阵
  [out] | cam_tvec | 相机坐标系下的装甲板平移向量

## ◆ isContainBlob()

bool rm::Armor::isContainBlob | ( | LightBlob::ptr | blob,
|  | Armor::ptr | armor )
| static

判断单个装甲板所在区域内是否包含指定的灯条

参数

  [in] | blob | 指定的灯条
  [in] | armor | 单一装甲板

返回
  是否包含灯条中心

## ◆ loadSVM()

void rm::Armor::loadSVM | ( | const std::string & | path | ) |
| inline static

Python:
| rm.Armor.loadSVM( | path | ) -> | None

加载 SVM 装甲板大小分类的 *.xml 文件

参数

  [in] | path | *.xml 文件路径

函数调用图:

## ◆ make_combo()

ptr rm::Armor::make_combo | ( | LightBlob::ptr | p_left,
|  | LightBlob::ptr | p_right,
|  | const ImuData & | imu_data,
|  | int64_t | tick,
|  | ArmorSizeType | armor_size_type = ArmorSizeType::UNKNOWN )
| static

Python:
| rm.Armor.make_combo( | l, r, imu, t[, type] | ) -> | <rm.Armor object>

Armor 构造接口

注解
  若提供具体的 armor_size_type 参数，则不进行可行性验证，直接强制构造

参数

  [in] | p_left | 左灯条共享指针
  [in] | p_right | 右灯条共享指针
  [in] | imu_data | 当前时刻组合特征对应的 IMU 数据
  [in] | tick | 捕获组合特征的时间点
  [in] | armor_size_type | 需要指定的大小装甲板类型，默认为 ArmorSizeType::UNKNOWN

返回
  若成功，返回 Armor 的共享指针，否则返回空

函数调用图:

## ◆ setType()

void rm::Armor::setType | ( | RobotType | stat | ) |

Python:
| rm.Armor.setType( | stat | ) -> | None

设置机器人类型 RobotType