关于ros版本问题导致MarkerArray的不显示解决

简介: 关于ros版本问题导致MarkerArray的不显示解决

前言

最近使用ROS的MarkerArray和Marke发送显示显示自己的一些二维障碍物显示信息,这里面的使用案例大家可以在网上去搜索哈,本篇就不多赘述了,今天介绍自己使用时候遇到一个不显示的问题。

publishers.advertise<visualization_msgs::MarkerArray>("obj_map_markers", 1);`
publishers.advertise<visualization_msgs::Marker>("target_marker", 1);

上面是使用的两个topic数据发送对应的数据,其中用到的数据类型为visualization_msgs::Markervisualization_msgs::MarkerArray map_markers

但是启动rviz之后就会显示如下问题:

839886cd3c004deb9abdba851aa48a4c.png

[ERROR] [1501915695.729391644]: Client [/rviz_1650338584890468180] wants topic target_marker to have datatype/md5sum [visualization_msgs/Marker/4048c9de2a16f4ae8e0538085ebf1b97], but our version has [visualization_msgs/Marker/18326976df9d29249efc939e00342cde]. Dropping connection.
[ WARN] [1501915695.831973737]: [lds driver] readSuccess 214: First time read data succeeded.
[ERROR] [1501915695.934151873]: Client [/rviz_1650338584890468180] wants topic obj_map_markers to have datatype/md5sum [visualization_msgs/MarkerArray/d155b9ce5188fbaf89745847fd5882d7], but our version has [visualization_msgs/MarkerArray/90da67007c26525f655c1c269094e39f]. Dropping connection.

解决方法

这个问题的出现是ros编译源码包版本不一致,导致msg生成的类型文件里面的md5校验不一致导致的无法显示问题。

打开你编译空间下对应的类 头文件,修改对应的return返回值为 报警信息中的返回值

vi opt/ros/indigo/include/visualization_msgs/MarkerArray.h

这是打开后的文件        

839886cd3c004deb9abdba851aa48a4c.png                                      

修改return返回值:

839886cd3c004deb9abdba851aa48a4c.png

同理另一个文件的修改如下

vi opt/ros/indigo/include/visualization_msgs/Marker.h

template<class ContainerAllocator>
struct MD5Sum< ::visualization_msgs::Marker_<ContainerAllocator> >
{
  static const char* value()
  {
    //return "18326976df9d29249efc939e00342cde";
    return "4048c9de2a16f4ae8e0538085ebf1b97";
  }
  static const char* value(const ::visualization_msgs::Marker_<ContainerAllocator>&) { return value(); }
  static const uint64_t static_value1 = 0x18326976df9d2924ULL;
  static const uint64_t static_value2 = 0x9efc939e00342cdeULL;
};

再次编译,再设备中运行代码,打开rviz。

这是解决之后的rviz显示效果:

839886cd3c004deb9abdba851aa48a4c.png

其中黄色栅格显示部分就是使用MarkerArray发送的障碍物表达。

839886cd3c004deb9abdba851aa48a4c.png

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
打赏
0
0
0
0
10
分享
相关文章
大疆Livox Mid360 使用指南
本文是大疆Livox Mid-360激光雷达的使用指南,包括Livox Viewer 2的安装与使用、Livox SDK2的安装与演示、Livox ROS的配置与启动,以及一些使用时的注意事项。文章还提供了关于Livox Mid-360的详细特点、接线信息、尺寸信息、主控端IP设置、修改Livox Mid 360的IP方法、坐标系定义和IMU内参的介绍。此外,还提供了官方资料和软件下载的链接。
3633 2
Pillar-Base | 超越SECOND、PointPillar等一系列3D目标检测,PillarNet=Pillar王者(一)
Pillar-Base | 超越SECOND、PointPillar等一系列3D目标检测,PillarNet=Pillar王者(一)
530 0
在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:修改sdf、urdf模型
在使用ros做仿真实验时,有时会需要在空间中添加一个模型文件,使之悬浮在空间中的某个坐标,但是往往会因为重力原因,模型会直接掉落在地上
1119 0
【ROS】TF2坐标转换及实战示例
ROS中提供了坐标转换的软件包 Transform Frame TF的作用是ROS中实现不同坐标点/向量的转换。
953 0
Ubuntu查看ros版本-linux查看ros版本
通过上述方法,您可以轻松检查和确认您的Ubuntu或其他Linux系统上安装的ROS版本,以确保您的机器人项目能够顺利进行。
2773 0
【Ubuntu】Ubuntu安装PCL(安装PCL/卸载PCL/查看PCL版本/PCL报错处理相关操作)(史上最详细)
【Ubuntu】Ubuntu安装PCL(安装PCL/卸载PCL/查看PCL版本/PCL报错处理相关操作)(史上最详细)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问