31 AERROR <<
"Get LidarTrackingComponentConfig file failed";
34 AINFO <<
"Lidar Tracking Component Configs: " << comp_config.DebugString();
42 std::string multi_target_tracker_name = multi_target_tracker_param.name();
43 multi_target_tracker_ = BaseMultiTargetTrackerRegisterer::GetInstanceByName(
44 multi_target_tracker_name);
45 CHECK_NOTNULL(multi_target_tracker_);
48 tracker_init_options.
config_path = multi_target_tracker_param.config_path();
49 tracker_init_options.
config_file = multi_target_tracker_param.config_file();
50 ACHECK(multi_target_tracker_->
Init(tracker_init_options));
69 const std::shared_ptr<LidarFrameMessage>& message) {
71 AINFO << std::setprecision(16)
72 <<
"Enter LidarTracking component, message timestamp: "
73 << message->timestamp_
76 auto out_message = std::make_shared<SensorFrameMessage>();
78 if (InternalProc(message, out_message)) {
79 writer_->Write(out_message);
83 AERROR <<
"Send lidar tracking output message failed!";
87bool LidarTrackingComponent::InternalProc(
88 const std::shared_ptr<const LidarFrameMessage>& in_message,
89 const std::shared_ptr<SensorFrameMessage>& out_message) {
90 out_message->timestamp_ = in_message->timestamp_;
91 out_message->lidar_timestamp_ = in_message->lidar_timestamp_;
92 out_message->seq_num_ = in_message->seq_num_;
94 out_message->sensor_id_ = in_message->lidar_frame_->sensor_info.name;
97 out_message->error_code_ = in_message->error_code_;
98 AERROR <<
"Lidar tracking receive message with error code, skip it.";
102 auto& lidar_frame = in_message->lidar_frame_;
105 MultiTargetTrackerOptions tracker_options;
106 if (!multi_target_tracker_->Track(tracker_options, lidar_frame.get())) {
107 AINFO <<
"Lidar tracking, multi_target_tracker_ Track error.";
123 out_message->hdmap_ = lidar_frame->hdmap_struct;
124 auto& frame = out_message->frame_;
125 frame = base::FramePool::Instance().Get();
126 frame->sensor_info = lidar_frame->sensor_info;
127 frame->timestamp = in_message->timestamp_;
128 frame->objects = lidar_frame->tracked_objects;
129 frame->sensor2world_pose = lidar_frame->lidar2world_pose;
130 frame->lidar_frame_supplement.on_use =
true;
131 frame->lidar_frame_supplement.cloud_ptr = lidar_frame->cloud;
134 const double end_latency = (end_timestamp - in_message->timestamp_) * 1e3;
135 AINFO << std::setprecision(16)
136 <<
"FRAME_STATISTICS:LidarTracking:End:msg_time["
137 << in_message->timestamp_ <<
"]:cur_time[" << end_timestamp
138 <<
"]:cur_latency[" << end_latency <<
"]";
a singleton clock that can be used to get the current timestamp.
static double NowInSeconds()
gets the current time in second.
bool GetProtoConfig(T *config) const
std::shared_ptr< Node > node_
virtual bool Init(const MultiTargetTrackerInitOptions &options=MultiTargetTrackerInitOptions())=0
Init multi target tarcker
bool Init() override
Initialize the node
bool Proc(const std::shared_ptr< LidarFrameMessage > &message) override
Data callback upon receiving a LidarFrameMessage.
#define PERF_FUNCTION(...)
optional perception::PluginParam multi_target_tracker_param
optional string output_channel_name