Apollo 11.0
自动驾驶开放平台
apollo::dreamview::ObstacleUpdater类 参考

A wrapper around WebSocketHandler to keep pushing obstalcles to frontend via websocket. 更多...

#include <obstacle_updater.h>

类 apollo::dreamview::ObstacleUpdater 继承关系图:
apollo::dreamview::ObstacleUpdater 的协作图:

Public 成员函数

 ObstacleUpdater (WebSocketHandler *websocket)
 
void StartStream (const double &time_interval_ms, const std::string &channel_name="", nlohmann::json *subscribe_param=nullptr) override
 Start data flow.
 
void StopStream (const std::string &channel_name) override
 Stop data flow.
 
void OnTimer (const std::string &channel_name="")
 
void PublishMessage (const std::string &channel_name="") override
 Publish Message to dreamview frontend.
 
void GetChannelMsg (std::vector< std::string > *channels)
 GetChannelMsg
 
void Stop ()
 
void Init ()
 
- Public 成员函数 继承自 apollo::dreamview::UpdaterWithChannelsBase
void GetChannelMsgWithFilter (std::vector< std::string > *channels, const std::string &filter_message_type, const std::string &filter_channel, bool reverse_filter_channel=false)
 GetChannelMsgWithFilter:by msg type and channel filter field to filter channels for DataUpdater
 
- Public 成员函数 继承自 apollo::dreamview::UpdaterBase
 UpdaterBase ()
 Updaterbase
 
virtual ~UpdaterBase ()
 

额外继承的成员函数

- Public 属性 继承自 apollo::dreamview::UpdaterWithChannelsBase
std::vector< std::string > channels_
 

详细描述

A wrapper around WebSocketHandler to keep pushing obstalcles to frontend via websocket.

在文件 obstacle_updater.h 第 59 行定义.

构造及析构函数说明

◆ ObstacleUpdater()

apollo::dreamview::ObstacleUpdater::ObstacleUpdater ( WebSocketHandler *  websocket)
explicit

在文件 obstacle_updater.cc 第 35 行定义.

36 : websocket_(websocket), node_(cyber::CreateNode("obstacle_updater")) {
37 Init();
38}
std::unique_ptr< Node > CreateNode(const std::string &node_name, const std::string &name_space)
Definition cyber.cc:33

成员函数说明

◆ GetChannelMsg()

void apollo::dreamview::ObstacleUpdater::GetChannelMsg ( std::vector< std::string > *  channels)
virtual

GetChannelMsg

实现了 apollo::dreamview::UpdaterWithChannelsBase.

在文件 obstacle_updater.cc 第 130 行定义.

130 {
131 enabled_ = true;
132 GetChannelMsgWithFilter(channels, "perception.PerceptionObstacles", "");
133}
void GetChannelMsgWithFilter(std::vector< std::string > *channels, const std::string &filter_message_type, const std::string &filter_channel, bool reverse_filter_channel=false)
GetChannelMsgWithFilter:by msg type and channel filter field to filter channels for DataUpdater

◆ Init()

void apollo::dreamview::ObstacleUpdater::Init ( )

在文件 obstacle_updater.cc 第 40 行定义.

40 {
41 localization_reader_ = node_->CreateReader<LocalizationEstimate>(
42 FLAGS_localization_topic,
43 [this](const std::shared_ptr<LocalizationEstimate>& localization) {
44 OnLocalization(localization);
45 });
46}

◆ OnTimer()

void apollo::dreamview::ObstacleUpdater::OnTimer ( const std::string &  channel_name = "")

在文件 obstacle_updater.cc 第 111 行定义.

111 {
112 PublishMessage(channel_name);
113}
void PublishMessage(const std::string &channel_name="") override
Publish Message to dreamview frontend.

◆ PublishMessage()

void apollo::dreamview::ObstacleUpdater::PublishMessage ( const std::string &  channel_name = "")
overridevirtual

Publish Message to dreamview frontend.

实现了 apollo::dreamview::UpdaterBase.

在文件 obstacle_updater.cc 第 115 行定义.

115 {
116 std::string to_send = "";
117 GetObjects(&to_send, channel_name);
118 StreamData stream_data;
119 std::string stream_data_string;
120 stream_data.set_action("stream");
121 stream_data.set_data_name("obstacle");
122 stream_data.set_channel_name(channel_name);
123 std::vector<uint8_t> byte_data(to_send.begin(), to_send.end());
124 stream_data.set_data(&(byte_data[0]), byte_data.size());
125 stream_data.set_type("obstacle");
126 stream_data.SerializeToString(&stream_data_string);
127 websocket_->BroadcastBinaryData(stream_data_string);
128}
bool BroadcastBinaryData(const std::string &data, bool skippable=false)
Sends the provided binary data to all the connected clients.

◆ StartStream()

void apollo::dreamview::ObstacleUpdater::StartStream ( const double &  time_interval_ms,
const std::string &  channel_name = "",
nlohmann::json *  subscribe_param = nullptr 
)
overridevirtual

Start data flow.

参数
time_interval_msData stream sending frequency. 0 means single subscribe
subscribe_paramsubscribe some updater may need extra params

实现了 apollo::dreamview::UpdaterBase.

在文件 obstacle_updater.cc 第 63 行定义.

65 {
66 if (channel_name.empty()) {
67 AERROR << "Failed to subscribe channel for channel is empty";
68 return;
69 }
70 if (time_interval_ms > 0) {
71 ObstacleChannelUpdater* channel_updater =
72 GetObstacleChannelUpdater(channel_name);
73 if (channel_updater == nullptr) {
74 AERROR << "Failed to subscribe channel: " << channel_name
75 << "for channel updater not registered!";
76 return;
77 }
78 channel_updater->timer_.reset(new cyber::Timer(
79 time_interval_ms,
80 [channel_name, this]() { this->OnTimer(channel_name); }, false));
81 channel_updater->timer_->Start();
82 } else {
83 this->OnTimer(channel_name);
84 }
85}
void OnTimer(const std::string &channel_name="")
#define AERROR
Definition log.h:44

◆ Stop()

void apollo::dreamview::ObstacleUpdater::Stop ( )

在文件 obstacle_updater.cc 第 104 行定义.

104 {
105 if (enabled_) {
106 obstacle_channel_updater_map_.clear();
107 }
108 enabled_ = false;
109}

◆ StopStream()

void apollo::dreamview::ObstacleUpdater::StopStream ( const std::string &  channel_name)
overridevirtual

Stop data flow.

实现了 apollo::dreamview::UpdaterBase.

在文件 obstacle_updater.cc 第 87 行定义.

87 {
88 if (channel_name.empty()) {
89 AERROR << "Failed to unsubscribe channel for channel is empty";
90 return;
91 }
92 if (enabled_) {
93 ObstacleChannelUpdater* channel_updater =
94 GetObstacleChannelUpdater(channel_name);
95 if (channel_updater->timer_) {
96 channel_updater->timer_->Stop();
97 }
98 channel_updater->obj_map_.clear();
99 channel_updater->obstacle_objects_.Clear();
100 channel_updater->obstacles_.clear();
101 }
102}

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