Apollo 10.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
 UpdaterWithChannelsBase (const std::vector< std::string > &filter_message_types, const std::vector< std::string > &filter_channels)
 
void GetChannelMsgWithFilter (std::vector< std::string > *channels)
 
bool IsChannelInUpdater (const std::string &message_type, const std::string &channel_name)
 Check if the channel belongs to current updater.
 
- Public 成员函数 继承自 apollo::dreamview::UpdaterBase
 UpdaterBase ()
 Updaterbase
 
virtual ~UpdaterBase ()
 

额外继承的成员函数

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

详细描述

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

在文件 obstacle_updater.h59 行定义.

构造及析构函数说明

◆ ObstacleUpdater()

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

在文件 obstacle_updater.cc35 行定义.

36 : UpdaterWithChannelsBase({"perception.PerceptionObstacles"}, {""}),
37 websocket_(websocket),
38 node_(cyber::CreateNode("obstacle_updater")) {
39 Init();
40}
UpdaterWithChannelsBase(const std::vector< std::string > &filter_message_types, const std::vector< std::string > &filter_channels)
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.cc132 行定义.

132 {
133 enabled_ = true;
134 GetChannelMsgWithFilter(channels);
135}
void GetChannelMsgWithFilter(std::vector< std::string > *channels)

◆ Init()

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

在文件 obstacle_updater.cc42 行定义.

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

◆ OnTimer()

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

在文件 obstacle_updater.cc113 行定义.

113 {
114 PublishMessage(channel_name);
115}
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.cc117 行定义.

117 {
118 std::string to_send = "";
119 GetObjects(&to_send, channel_name);
120 StreamData stream_data;
121 std::string stream_data_string;
122 stream_data.set_action("stream");
123 stream_data.set_data_name("obstacle");
124 stream_data.set_channel_name(channel_name);
125 std::vector<uint8_t> byte_data(to_send.begin(), to_send.end());
126 stream_data.set_data(&(byte_data[0]), byte_data.size());
127 stream_data.set_type("obstacle");
128 stream_data.SerializeToString(&stream_data_string);
129 websocket_->BroadcastBinaryData(stream_data_string);
130}
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.cc65 行定义.

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

◆ Stop()

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

在文件 obstacle_updater.cc106 行定义.

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

◆ StopStream()

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

Stop data flow.

实现了 apollo::dreamview::UpdaterBase.

在文件 obstacle_updater.cc89 行定义.

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

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