在dreamview里播放自带的那个demo_3.5.record和可视化展示肯定是没什么问题,但是换成播放自己采集的数据包文件后,发现点云和检测结果都没能显示出来,控制感知部分的检测结果的显示的配置修改是在modules/perception/data/flag/perception_common.flag里,修改标志obs_enable_visualization的值为true后执行 bash apolloo.sh build perception编译完后再重启lidar_detection等component即可:
# whether to send message for visualization.
# type: bool
# default: false
--obs_enable_visualization=true
但是点云始终显示不出来,在dreamview的窗口里选择点云channel的下拉列表里也看不到自采集数据的点云topic名字,重启dreamview都不官用,只好去看dreamview的源码,在
modules/dreamview/backend/point_cloud/point_cloud_updater.cc
里找到这段代码:
void PointCloudUpdater::GetChannelMsg(std::vector<std::string> *channels) {
enabled_ = true;
auto channelManager =
apollo::cyber::service_discovery::TopologyManager::Instance()
->channel_manager();
std::vector<apollo::cyber::proto::RoleAttributes> role_attr_vec;
channelManager->GetWriters(&role_attr_vec);
for (auto &role_attr : role_attr_vec) {
std::string messageType;
messageType = role_attr.message_type();
int index = messageType.rfind("PointCloud");
int index_sensor = role_attr.channel_name().rfind("sensor");
if (index != -1 && index_sensor != -1) {
channels->push_back(role_attr.channel_name());
}
}
channels_.clear();
channels_ = {channels->begin(), channels->end()};
}
Apollo对数据的topic作了限制,要求消息类型是PointCloud且topic的名字里面必须有sensor,自行采集的数据包肯定不会遵循这个规则,所以dreamview没画出来, 但是自采集数据包也不好去一个个修改挺麻烦的,所以对上面的代码做个简单粗暴的修改去掉这个限制:
void PointCloudUpdater::GetChannelMsg(std::vector<std::string> *channels) {
enabled_ = true;
auto channelManager =
apollo::cyber::service_discovery::TopologyManager::Instance()
->channel_manager();
std::vector<apollo::cyber::proto::RoleAttributes> role_attr_vec;
channelManager->GetWriters(&role_attr_vec);
for (auto &role_attr : role_attr_vec) {
/*
std::string messageType;
messageType = role_attr.message_type();
int index = messageType.rfind("PointCloud");
int index_sensor = role_attr.channel_name().rfind("sensor");
if (index != -1 && index_sensor != -1) {
*/
channels->push_back(role_attr.channel_name());
/*}*/
}
channels_.clear();
channels_ = {channels->begin(), channels->end()};
}
然后编译和重启dreamview:
bash apollo.sh build dreamview
bash scripts/bootstrap.sh restart
dreamview主页面里选择点云的下拉列表里就可以看到自采集数据包里的点云topic了,选择topic后先关闭pointcloud再打开就可以看到点云的可视化效果了。