object_sequence.h

代码位置:/apollo/modules/perception/lidar/common/object_sequence.h

看起来像是一个存储跟踪障碍物的容器

public:
bool AddTrackedFrameObjects
bool GetTrackInTemporalWindow

protected:
RemoveStaleTracks

这里定义了3中类型的噶关键字。包含id, time, TrackedObjects。

typedef int TrackIdKey;
typedef double TimeStampKey;
typedef std::map<TimeStampKey, std::shared_ptr<apollo::perception::base::Object>>
      TrackedObjects;

成员变量

TimeStampKey current_;
std::map<TrackIdKey, TrackedObjects> sequence_;
std::mutex mutex_;
static constexpr TimeStampKey kMaxTimeOut = 5.0;  // 5 second

object_sequence.cc

void ObjectSequence::RemoveStaleTracks(TimeStampKey current_stamp) 

通过传入当前的时间,移除两类tracked objects。

  1. 最新的跟踪时间超过kMaxTimeOut=5s的障碍物, 已经停止tracking,超过5s没有track的障碍物。可能已经离开车辆视野
  2. Tracked Objects中,会删除5s之前的跟踪信息
bool ObjectSequence::AddTrackedFrameObjects(
    const std::vector<ObjectPtr>& objects, TimeStampKey timestamp)

 std::lock_guard<std::mutex> lock(mutex_);

遍历传入的障碍物,根据障碍物的id去sequence_中搜索。 

  1. 如果没有在map中找到障碍物id,就在sequence中添加新的tracked object。
  2. 如果在map中找到障碍物id,就更新tracked object的timestamp和obj。
  3. 移除陈旧的tracked objects, 更新时间
bool ObjectSequence::GetTrackInTemporalWindow(TrackIdKey track_id,
                                              TrackedObjects* track,
                                              TimeStampKey window_time)

通过传入障碍物和窗口时间,获取在一时间窗口中的障碍物track信息。

时间窗口 = 当前时间 - 窗口开始时间(但是remove stale tracks中会删除大于5s的track,所以这个窗口一般小于5s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值