关于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/
目录
相关文章
|
4月前
|
Ubuntu 机器人 Linux
Ubuntu查看ros版本-linux查看ros版本
通过上述方法,您可以轻松检查和确认您的Ubuntu或其他Linux系统上安装的ROS版本,以确保您的机器人项目能够顺利进行。
1322 0
|
Ubuntu Linux iOS开发
ROS与操作系统版本对应关系
ROS与操作系统版本对应关系
2267 0
|
Ubuntu 索引
Ubuntu 安装 ROS 详细教程(以最后一个ROS1版本Noetic为例)
Ubuntu 安装 ROS 详细教程(以最后一个ROS1版本Noetic为例)
1996 0
|
机器学习/深度学习 机器人 决策智能
ubuntu16.04 kinetic 版本ROS安装PR2
ubuntu16.04 kinetic 版本ROS安装PR2
105 0
|
C语言 C++
ROS i2c 通信(c++版本)
ROS i2c 通信(c++版本)
ROS i2c 通信(c++版本)
|
Ubuntu 计算机视觉
Ubuntu环境下ROS安装自己OPENCV版本(下)
Ubuntu环境下ROS安装自己OPENCV版本(下)
1138 0
Ubuntu环境下ROS安装自己OPENCV版本(下)
|
Ubuntu Shell 开发工具
Ubuntu环境下ROS安装自己OPENCV版本(上)
Ubuntu环境下ROS安装自己OPENCV版本(上)
Ubuntu环境下ROS安装自己OPENCV版本(上)
|
1月前
|
Ubuntu 机器人 Linux
|
6天前
|
XML 算法 自动驾驶
ROS进阶:使用URDF和Xacro构建差速轮式机器人模型
【11月更文挑战第7天】本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。

推荐镜像

更多