RMVL
1.5.0-dev
Robotic Manipulation and Vision Library
|
上一篇教程:如何使用/开发 tracker 模块 ↑
下一篇教程:如何使用/开发 group 模块 ↓
基类 rm::tracker
追踪器 tracker
对象创建方法与特征组合 combo
以及图像特征 feature
基本一致,均使用静态工厂函数,这里是使用 make_tracker
完成构建。
构造一个平面目标追踪器的代码如下
rm::tracker 提供了 clone
纯虚拟函数,用于完全复制一份数据。
和低层数据组件类似, 追踪器/特征组合的时间序列(数据组件) 内部维护了各时间下特征组合的相关信息,即特征组合的时间序列。
tracker
记录了时间上彼此关联的一组 combo
,内部使用 std::deque<combo::ptr>
表示。tracker
提供了与 std::deque
容器类似的访问操作,包括
信息获取接口 | 实现功能 |
---|---|
at(idx) | 获取指定的下标idx |
front() | 获取特征组合时间序列最新的元素 |
back() | 获取特征组合时间序列最旧的元素 |
data() | 获取std::deque<combo::ptr> (特征组合时间序列)的数据 |
size() | 获取特征组合时间序列的大小 |
empty() | 判断特征组合时间序列是否为空 |
和低层数据组件类似一样,包含高度、宽度、角度、中心点、角点列表、类型信息、相机外参等内容,但主要表示经过修正后的数据,例如 height
成员方法表示追踪器在通过对时间序列中所有特征组合进行处理,得到的修正后的高度信息(譬如加权平均)。访问方式与 combo
、feature
完全一致,这里不再赘述。
开发与使用是一脉相承的,设计一个新的 rm::tracker 派生类对象也要满足使用上的条件,一个新的派生类对象(假设定义为 MyTracker
)需要满足以下准则。
namespace rm
中;rm::tracker
基类;MyTracker::ptr
和 MyTracker::const_ptr
作为 std::shared_ptr<MyTracker>
和 std::shared_ptr<const MyTracker>
的别名;MyTracker::ptr
为返回值的 MyTracker::make_feature
静态工厂函数;setXXX
或 getXXX
的成员方法;实现从基类共享指针动态转换到派生共享指针的 cast
静态函数,方便起见,可以使用 RMVL_TRACKER_CAST
宏,例如