用Apollo dreamview可视化自行采集的点云和检测结果

在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再打开就可以看到点云的可视化效果了。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值