Apollo 10.0
自动驾驶开放平台
apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager类 参考

#include <ultrasonic_radar_message_manager.h>

类 apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager 继承关系图:
apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager 的协作图:

Public 成员函数

 UltrasonicRadarMessageManager (const int entrance_num, const std::shared_ptr<::apollo::cyber::Writer< Ultrasonic > > &writer)
 
virtual ~UltrasonicRadarMessageManager ()=default
 
void Parse (const uint32_t message_id, const uint8_t *data, int32_t length)
 
void set_can_client (std::shared_ptr< CanClient > can_client)
 

详细描述

在文件 ultrasonic_radar_message_manager.h46 行定义.

构造及析构函数说明

◆ UltrasonicRadarMessageManager()

apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager::UltrasonicRadarMessageManager ( const int  entrance_num,
const std::shared_ptr<::apollo::cyber::Writer< Ultrasonic > > &  writer 
)

在文件 ultrasonic_radar_message_manager.cc30 行定义.

33 : entrance_num_(entrance_num), ultrasonic_radar_writer_(writer) {
34 sensor_data_.mutable_ranges()->Resize(entrance_num_, 0.0);
35}

◆ ~UltrasonicRadarMessageManager()

virtual apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager::~UltrasonicRadarMessageManager ( )
virtualdefault

成员函数说明

◆ Parse()

void apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager::Parse ( const uint32_t  message_id,
const uint8_t *  data,
int32_t  length 
)

在文件 ultrasonic_radar_message_manager.cc42 行定义.

43 {
44 if (message_id == 0x301) {
45 sensor_data_.set_ranges(0, data[1]);
46 sensor_data_.set_ranges(1, data[2]);
47 sensor_data_.set_ranges(2, data[3]);
48 sensor_data_.set_ranges(3, data[4]);
49 } else if (message_id == 0x302) {
50 sensor_data_.set_ranges(4, data[1]);
51 sensor_data_.set_ranges(5, data[2]);
52 sensor_data_.set_ranges(6, data[3]);
53 sensor_data_.set_ranges(7, data[4]);
54 } else if (message_id == 0x303) {
55 sensor_data_.set_ranges(8, data[1]);
56 sensor_data_.set_ranges(9, data[2]);
57 } else if (message_id == 0x304) {
58 sensor_data_.set_ranges(10, data[1]);
59 sensor_data_.set_ranges(11, data[2]);
60 common::util::FillHeader("ultrasonic_radar", &sensor_data_);
61 ultrasonic_radar_writer_->Write(sensor_data_);
62 }
63
64 received_ids_.insert(message_id);
65 // check if need to check period
66 const auto it = check_ids_.find(message_id);
67 if (it != check_ids_.end()) {
68 const int64_t time = Time::Now().ToMicrosecond();
69 it->second.real_period = time - it->second.last_time;
70 // if period 1.5 large than base period, inc error_count
71 const double period_multiplier = 1.5;
72 if (it->second.real_period >
73 (static_cast<double>(it->second.period) * period_multiplier)) {
74 it->second.error_count += 1;
75 } else {
76 it->second.error_count = 0;
77 }
78 it->second.last_time = time;
79 }
80}
uint64_t ToMicrosecond() const
convert time to microsecond (us).
Definition time.cc:85
static Time Now()
get the current time.
Definition time.cc:57

◆ set_can_client()

void apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager::set_can_client ( std::shared_ptr< CanClient can_client)

在文件 ultrasonic_radar_message_manager.cc37 行定义.

38 {
39 can_client_ = can_client;
40}

该类的文档由以下文件生成: