RMVL
1.5.0-dev
Robotic Manipulation and Vision Library
|
包含 combo 模块的创建、信息获取以及开发时的注意事项
上一篇教程:AprilTag 视觉标签 ↑
下一篇教程:如何使用/开发 tracker 模块 ↓
基类 rm::combo
特征组合 combo
对象创建方法与 feature
基本一致,都是使用静态工厂函数,这里是使用 make_combo
完成构建,同样会在最初进行能否构造的判断。
构造一个装甲板的代码如下
rm::combo 提供了 clone
纯虚拟函数,用于完全复制一份数据,适合于强制构造无视匹配要求的情况。
特征组合体(数据组件) 与 图像轮廓特征(数据组件) 在信息获取上基本一致,但 特征组合体(数据组件) 内部维护了图像特征相关的信息,这一类数据在获取上与 STL 容器的操作基本一致。
combo
记录了空间上彼此关联的一组 feature
,内部使用 std::vector<feature::ptr>
表示。combo
提供了与序列式容器类似的访问操作,包括
信息获取接口 | 实现功能 |
---|---|
at(idx) | 获取指定的下标idx |
data() | 获取std::vector<feature::ptr> (特征列表)的数据 |
size() | 获取特征列表的大小 |
empty() | 判断特征列表是否为空 |
包含高度、宽度、角度、中心点、角点列表、类型信息、相机外参等内容,访问方式与 feature
完全一致,这里不再赘述。
开发与使用是一脉相承的,设计一个新的 rm::combo 派生类对象也要满足使用上的条件,一个新的派生类对象(假设定义为 MyCombo
)需要满足以下准则。
namespace rm
中;rm::combo
基类;MyCombo::ptr
和 MyCombo::const_ptr
作为 std::shared_ptr<MyCombo>
和 std::shared_ptr<const MyCombo>
的别名;MyCombo::ptr
为返回值的 MyCombo::make_feature
静态工厂函数;setXXX
或 getXXX
的成员方法;实现从基类共享指针动态转换到派生共享指针的 cast
静态函数,方便起见,可以使用 RMVL_COMBO_CAST
宏,例如