【ROS 快速实践】使用 Marker 标记 rviz 中的给定位置

ROS MarkerArray的几种常见用法 ros使用过程中,经常会用到rviz可视化各种数据。而在rviz中,marker与markerarray是常用的一种可视化工具,最近也用到过几次了,这里随手记录一下。 阅读详情

在这里插入图片描述

本篇博客的诞生:我想观测在特定点附近的轨迹情况, 所以想在 rviz 的给定位置上标记下;本以为是个很简答功能实现,在搜索了好久都没找到一份清晰的指引,所以我希望能用最简单清晰的方式给出答案 ~

  • 有任何建议 or 操作上的问题欢迎大家留言哇嘻嘻 ,会立即完善哒
  • 先给出官方答案,友友们自取叭 👉 官方文档指路

本篇以球体 visualization_msgs::Marker::SPHERE 为例,其他基本形状 (如 立方体,球体,圆柱体和箭头 …) 同理 ~

  • 立方体: visualization_msgs::Marker::CUBE
  • 球体:visualization_msgs::Marker::SPHERE
  • 箭头:visualization_msgs::Marker::ARROW
  • 圆柱体:visualization_msgs::Marker::CYLINDER

💜 创建功能包 using_markers

catkin_create_pkg using_markers roscpp visualization_msgs

💜 编写发送方代码 send_mamrkers.cpp

  • 在创建的功能包 using_markers 的 src/ 下创建并编写 send_mamrkers.cpp
  • 以下为 send_mamrkers.cpp 代码参考
    #include <ros/ros.h>
    #include <visualization_msgs/Marker.h>
    
     int main( int argc, char** argv )
     {
        ros::init(argc, argv, "basic_shapes");
        ros::NodeHandle n;
        ros::Rate r(1);
        ros::Publisher marker_pub = n.advertise<visualization_msgs::Marker>("visualization_marker", 1);
      
        uint32_t shape = visualization_msgs::Marker::SPHERE;  // 指定形状为球体 ~~~~~ 
      
        while (ros::ok())
        {
    		visualization_msgs::Marker marker;
    
    		marker.header.frame_id = "/my_frame";
    		marker.header.stamp = ros::Time::now();
    		
    		// Set the namespace and id for this marker.  This serves to create a unique ID
    		// Any marker sent with the same namespace and id will overwrite the old one
    		marker.ns = "basic_shapes";
    		marker.id = 0;
    		
    		// Set the marker type.  
    		marker.type = shape;
    		
    		// Set the marker action.  
    		marker.action = visualization_msgs::Marker::ADD;
    		
    		// Set the pose of the marker.  
    		marker.pose.position.x = 0;
    		marker.pose.position.y = 0;
    		marker.pose.position.z = 0;
    		marker.pose.orientation.x = 0.0;
    		marker.pose.orientation.y = 0.0;
    		marker.pose.orientation.z = 0.0;
    		marker.pose.orientation.w = 1.0;
    		
    		// Set the scale of the marker.
    		marker.scale.x = 1.0;
    		marker.scale.y = 1.0;
    		marker.scale.z = 1.0;
    		
    		// Set the color.
    		marker.color.r = 0.0f;
    		marker.color.g = 1.0f;
    		marker.color.b = 0.0f;
    		marker.color.a = 0.5;  // 透明度 
    		
    		marker.lifetime = ros::Duration();
    		
    		// Publish the marker
    		while (marker_pub.getNumSubscribers() < 1)
    		{
    			if (!ros::ok())
    			{
    				return 0;
    			}
    			ROS_WARN_ONCE("Please create a subscriber to the marker");
    			sleep(1);
    		}
    		marker_pub.publish(marker); 
    		r.sleep();
    		}
      }
    

💜 编译并运行 catkin_make + rosrun

catkin_make
rosrun using_markers send_mamrkers

💜 在 rviz 查看结果 rosrun rviz rviz

  • 运行 rviz,并添加新的 Markers 指定主题 (即 send_mamrkers.cpp 所发布的话题)
  • 此时,可正常观测到
# rosrun using_markers send_mamrkers 
# rosrun rviz rviz

在这里插入图片描述

以上是我亲测有效的方案 ~

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦

ROS2实战:用visualization_msgs在RViz2中绘制动态轨迹(附完整代码) 本文详细介绍了如何在ROS2中利用visualization_msgs包,特别是LINE_STRIP标记类型,在RViz2中实现动态轨迹的图形化显示。内容涵盖从核心概念解析、基础代码实现到颜色渐变、动态更新等高级技巧,并提供了完整的C++示例代码,帮助开发者高效进行机器人算法的可视化调试。 阅读详情

相关推荐

ROS Moveit新手必看:Interactive Marker消失的5种修复方法(附RVIZ配置截图)

本文针对ROS MoveIt新手在RVIZ中遇到的Interactive Marker(交互标记/拖动轨迹球)消失问题,提供了从kinematics.yaml配置文件检查、RVIZ MotionPlanning插件配置、启动文件参数核查到网络通信诊断的5种系统修复方法。通过详细的排查步骤与配置截图,帮助用户快速定位并解决这一常见但关键的视觉交互障碍,确保运动规划调试顺利进行。

sand8的博客 239

rviz中显示Marker标记

Marker标记的使用 本文主要涉及rviz中visualization_msgs/Marker Message,这些话题可以在rviz中可视化以观察自己数据是否符合预期。 1. roswiki上相应msg的定义 uint8 ARROW=0 uint8 CUBE=1 uint8 SPHERE=2 uint8 CYLINDER=3 uint8 LINE_STRIP=4 uint8 LINE_LIS...

REXLXX的博客 1万+

ROS Moveit实战:Interactive Marker(拖动轨迹球)配置与RVIZ调试技巧

本文针对ROS Moveit新手在RVIZ中找不到或无法拖动Interactive Marker(拖动轨迹球)的常见问题,提供了深度排查与修复指南。核心在于检查并正确配置kinematics.yaml文件中的运动学求解器参数,并在RVIZ中启用“Approx Ik Solutions”选项以确保流畅交互。文章详细讲解了从配置源头到RVIZ调试的完整技巧,帮助用户快速恢复并优化可视化轨迹规划体验。

weixin_29057695的博客 363

5分钟快速上手:使用Aruco_ROS实现机器人视觉定位的完整指南

Aruco_ROS是一个基于ROS的开源软件包,提供了Aruco增强现实标记检测库的ROS封装。通过黑白Aruco标记,机器人能够实现6自由度(6DoF)的精准视觉定位,包括X、Y、Z平移和绕X、Y、Z旋转的姿态估计。这个项目为机器人开发者提供了简单易用的视觉定位解决方案,特别适合需要精确位置感知的机器人应用场景。😊 ## 🎯 Aruco标记是什么? Aruco标记是一种特殊的二维码,由黑

gitblog_00721的博客 1036

ROS可视化实战:用visualization_msgs::Marker在RViz中绘制自定义3D箭头(附完整代码)

本文详细介绍了如何在ROS中使用`visualization_msgs::Marker`在RViz中绘制自定义3D箭头,适用于路径规划和力反馈显示等场景。通过解析核心参数、提供完整代码示例和高级定制技巧,帮助开发者快速实现高效的可视化方案。

weixin_30832143的博客 155

ROS1实战:将PCL点云数据在rviz中漂亮地显示出来

本文详细介绍了如何在ROS1中使用PCL点云数据,并通过rviz实现高级三维可视化。从PCL到ROS消息的转换技巧、rviz基础配置到智能着色和多视角分析等高级技巧,帮助开发者高效处理激光雷达或深度相机的点云数据,提升调试效率。

weixin_28745067的博客 394

ROS Moveit新手必看:Interactive Marker消失的5种常见原因及快速修复方法

本文详细解析了ROS Moveit中Interactive Marker消失的5种常见原因及快速修复方法,包括运动学配置文件错误、RVIZ插件配置问题、规划场景监控未启动、TF坐标帧配置错误和可视化主题冲突。通过实战案例和调试技巧,帮助开发者高效解决交互标记消失问题,提升机械臂调试效率。

weixin_30329623的博客 367

Rviz可视化进阶:巧用Marker和/clicked_point话题打造交互式路径规划工具

本文深入探讨了如何利用Rviz中的Marker和/clicked_point话题构建交互式路径规划工具。通过详细解析Rviz的交互机制、Marker定制技巧以及路径规划工具的实现方法,帮助开发者高效创建可视化调试工具,提升机器人开发效率。重点介绍了publish point功能在交互式路径标注中的应用实践。

weixin_30733003的博客 430

ROS 2 Rviz可视化工具使用教程:实时监控机器人数据

ROS 2 Rviz是一款强大的3D可视化工具,专为ROS 2机器人系统设计,能够帮助开发者实时监控机器人传感器数据、状态信息和环境模型。本文将详细介绍如何快速上手Rviz,掌握核心功能并应用于实际机器人项目中。 ## 为什么选择Rviz进行机器人数据可视化? Rviz作为ROS 2生态系统中最核心的可视化工具,提供了直观的3D界面来展示机器人的各种数据。无论是激光雷达点云、摄像头图像,还是机

gitblog_00899的博客 1002

ROS机器人开发必备:RViz三维可视化从入门到精通(附常用Display配置技巧)

本文深入探讨了ROS机器人开发中RViz三维可视化工具的核心价值与高级应用。文章超越了基础操作,将RViz定位为连接算法与物理世界的动态调试沙盘,详细解析了PointCloud2、GridCells、RobotModel等核心Display的实战配置技巧,并分享了建立标准化调试配置文件、优化性能及协同命令行与脚本的高效工作流,旨在帮助开发者打通感知、规划与调试全流程。

milk5的博客 830

ROS高级:Marker标记---点和线 (C++)

在实际的仿真过程,需要标注信息,比如,运动物体的行动轨迹;这个时候需要ROS节点给仿真软件rivz发送标注信息,rixz按照标注的坐标等信息画出标注记号。

gongdiwudu的专栏 8221

ROS rviz可视化插件实战:从Grid到Marker的保姆级配置指南

本文提供了一份ROS rviz可视化插件的实战配置指南,涵盖从基础环境构建到高级自定义绘图的完整流程。详细解析了Grid、TF、Map、LaserScan、PointCloud2、Path、Image及Marker等核心插件的关键参数配置与调试技巧,旨在帮助机器人开发者高效配置rviz,实现清晰、直观的数据可视化,提升开发与调试效率。

weixin_28365523的博客 500

ROS之rviz显示(visualization_msgs/Marker)

(1)在ROS中,odombase_link和map是常见的坐标系(frame)用于机器人定位和导航。odom坐标系是机器人的里程计坐标系,相对于起始位置的运动。base_link坐标系是机器人的本体坐标系,与机器人的移动无关。map坐标系是机器人所在的全局地图坐标系,提供了固定的参考框架用于定位和导航机器人在全局环境中的位置。(2)是ROS中的消息类型,用于在RViz中发布多个Marker的数组消息由以下字段组成:markers():包含多个对象的数组。

BigDavid123的博客 1万+

如何用AI自动生成ROS可视化工具RViz的配置文件

但是,手动配置RViz的配置文件(.rviz)往往比较繁琐,特别是当需要显示多种数据类型和复杂的坐标系变换时。RViz的配置文件是一个XML格式的文件,包含了各种显示面板、数据类型、坐标系和可视化属性的配置。通过这种方式,AI工具可以显著简化ROS开发中的可视化配置工作,让开发者更专注于核心算法的实现。在实际使用中,我发现平台的AI对话功能非常便捷,能够准确理解我的需求并生成可用的配置文件。:如果用户输入的描述不完整或存在歧义,AI工具应能给出友好的提示,帮助用户完善需求。

BlackironPanther23的博客 421

ROS中级:Marker 向rviz发送基本形状 (C++)

说明: 小乌龟程序虽然简单,但包含内容全面,需要仔细消化琢磨。本篇就是回归自己对乌龟程序的看法写出的总结报告,以便以后忘记后参考。 二、程序分析 2.1Draw_square.cpp 源代码: ros::NodeHandlenh; subscribe("turtle1/pose", 1, poseCallback); nh.advertise("turtle1/cmd_vel", 1); ros::ServiceClientreset = nh.serviceCli...

gongdiwudu的专栏 1万+

ROS2快速上手:节点通信、TF坐标变换、RViz可视化

ROS2不是完美的——它的学习曲线陡峭,文档分散,调试困难。但它是目前唯一被工业界和学术界同时广泛采用的机器人中间件。模块化开发复杂机器人系统的能力多传感器数据融合的工程基础与全球机器人社区协作的共同语言下一步:将ROS2与前面文章中的运动学、动力学模型结合,实现真实的机械臂控制。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

ROS2实战指南——在rviz2中动态绘制多边形区域

本文详细介绍了在ROS2的rviz2中动态绘制多边形区域的两种方法:Marker消息和PolygonStamped消息。通过实际代码示例和关键参数解析,帮助开发者快速掌握动态多边形的绘制技巧,适用于机器人导航、自动驾驶等场景。

weixin_29232121的博客 218

把RViz嵌进Qt:ROS机器人可视化界面开发实战

在机器人开发中,图形界面集成是打通算法调试与产品交付的关键环节。RViz作为ROS生态最常用的三维可视化工具,本质上是一个基于Ogre3D的Qt应用,其渲染核心由VisualizationManager与RenderPanel等对象构成。理解这些底层机制后,开发者可以跳过独立RViz窗口,将三维场景无缝嵌入自定义Qt界面,实现可视化面板与交互控件的深度联动。这种嵌入方案在科研评审、产品原型、一体化部署等场景中尤为实用——它让激光地图、路径规划等数据展示收敛为单一可执行程序,而非多个终端命令的临时拼凑。本文从

weixin_29192365的博客 327
上一篇: 常见路径规划汇总 图解分析+ 优劣对比
下一篇: 【概念速通】堆 什么是堆,如何建堆,堆能干嘛
CODE_RabbitV
博客等级 码龄7年 2931粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值