关于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

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
10月前
|
Ubuntu Linux iOS开发
ROS与操作系统版本对应关系
ROS与操作系统版本对应关系
1228 0
|
10月前
|
Ubuntu 索引
Ubuntu 安装 ROS 详细教程(以最后一个ROS1版本Noetic为例)
Ubuntu 安装 ROS 详细教程(以最后一个ROS1版本Noetic为例)
957 0
|
C语言 C++
ROS i2c 通信(c++版本)
ROS i2c 通信(c++版本)
ROS i2c 通信(c++版本)
|
Ubuntu 计算机视觉
Ubuntu环境下ROS安装自己OPENCV版本(下)
Ubuntu环境下ROS安装自己OPENCV版本(下)
1030 0
Ubuntu环境下ROS安装自己OPENCV版本(下)
|
Ubuntu Shell 开发工具
Ubuntu环境下ROS安装自己OPENCV版本(上)
Ubuntu环境下ROS安装自己OPENCV版本(上)
Ubuntu环境下ROS安装自己OPENCV版本(上)
|
2月前
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
85 1
|
25天前
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
39 2
|
18天前
|
机器人 定位技术 C++
技术笔记:ROS中测试机器人里程计信息
技术笔记:ROS中测试机器人里程计信息
|
2月前
|
NoSQL 机器人 Windows
ROS机器人编程技术控制两只小海龟的编队运动
ROS机器人编程技术控制两只小海龟的编队运动
88 1
|
2月前
|
机器人 Python Windows
ROS机器人编程技术应用与实践
ROS机器人编程技术应用与实践
34 1

推荐镜像

更多