ROS RVIZ Marker可视化 直线 矩形框

前言:因为最近在研究车道线的拟合,为了直观进行数据的可视化分析,故记录一下 ROS RVIZ中使用marker进行可视化直线和矩形框

可视化直线:

可视化矩形框:

注意:

#使用ros rviz marker需要注意的事项
1.line.lifetime  为marker的维持时间, ros::Duration();   永远不会被删除
2.需要指定 line.header.frame_id
3.颜色使用,本问增加了colorMap,以支持不同直线显示不同颜色
4.line.id 不能重复,重复Rviz会出现冲突
5.一个line能连接相近的两个点,在绘制矩形时,可先预想几个点的相连
参考链接: https://blog.csdn.net/Fang_cheng_/article/details/116454690

完整代码:

FILE: marker_visual.cpp

#include <iostream>
#include <vector>
#include <string>
#include<iomanip>//必要头文件#include <visualization_msgs/Marker.h>
#include <visualization_msgs/MarkerArray.h>#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <sensor_msgs/PointCloud2.h>#include <Eigen/Core>
#include <Eigen/Geometry>using namespace std ;int makerIdCount  = 0 ;
visualization_msgs::MarkerArray    lane ;
visualization_msgs::MarkerArray    box ;
ros::Publisher marker_pub_lane  ;
ros::Publisher marker_pub_box ;vector<vector<int>> colorMap = vector<vector<int>> (11, vector<int>(3)) = {{160,82,45}, {255,140,0},{0,255,0}, {220,20,60},{245,255,250}, {0,0,255},{255,0,255},{255,20,147},{64,224,208} , {255,255,0},{255,0,0 },
};void visualLaneLine(visualization_msgs::MarkerArray  &lineMakerArray, vector<Eigen::Vector3d> pointsVec,  int id, bool colorUsed, double timeDelay){  visualization_msgs::Marker line ;line.lifetime = ros::Duration(timeDelay,0);               //  ros::Duration();   永远不会被删除line.type = visualization_msgs::Marker::LINE_STRIP;             //  形状为线line.action = visualization_msgs::Marker::ADD;line.header.frame_id =  "camera_init" ;line.ns = "lane";line.scale.x = 0.80;if(colorUsed){          //  true 使用彩色 ,false 单调色line.color.r =   colorMap[id%10][0];            //  10种颜色选择line.color.g =  colorMap[id%10][1]; line.color.b =  colorMap[id%10][2]; }else{line.color.r = 160 ;  line.color.g  = 82 ;line.color.b  = 45 ;    // 红色}line.color.a =  1.0f ;line.pose.orientation.w = 1;line.id = id ;             //  线不同line ID号不能重复for (int i = 0; i < pointsVec.size() ; i ++){geometry_msgs::Point p;p.x =  pointsVec[i].x() ;p.y =  pointsVec[i].y() ;p.z =  pointsVec[i].z() ;line.points.push_back(p);}lineMakerArray.markers.push_back(line);makerIdCount ++ ;
}int main(int argc, char **argv)
{ros::init(argc, argv, "marker visual");ros::NodeHandle n;marker_pub_lane = n.advertise<visualization_msgs::MarkerArray>("visualization_marker_lane_vec", 10);marker_pub_box = n.advertise<visualization_msgs::MarkerArray>("visualization_marker_box", 10);//  生成点  max :(10  20  10)  min(-10 -20 -10)Eigen::Vector3d max(10, 20, 10);Eigen::Vector3d min(-10,-20,-10);Eigen::Vector3d p0_b(min.x(), max.y(), max.z());Eigen::Vector3d p1_b(min.x(), min.y(), max.z());Eigen::Vector3d p2_b(min.x(), min.y(), min.z());Eigen::Vector3d p3_b(min.x(), max.y(), min.z());Eigen::Vector3d p4_b(max.x(), max.y(), min.z());Eigen::Vector3d p5_b(max.x(), min.y(), min.z());Eigen::Vector3d p6_b(max.x(), min.y(), max.z());Eigen::Vector3d p7_b(max.x(), max.y(), max.z());// 直线点vector<vector<Eigen::Vector3d>> linesVec(3) ;       //存储三条线linesVec[0].push_back(p0_b);linesVec[0].push_back(p1_b);linesVec[1].push_back(p4_b);linesVec[1].push_back(p5_b);linesVec[2].push_back(p6_b);linesVec[2].push_back(p7_b);//  矩形点vector<Eigen::Vector3d>  boxPointsVec ;boxPointsVec.push_back(p0_b);boxPointsVec.push_back(p3_b);boxPointsVec.push_back(p2_b);boxPointsVec.push_back(p5_b);boxPointsVec.push_back(p6_b);boxPointsVec.push_back(p1_b);  boxPointsVec.push_back(p0_b);boxPointsVec.push_back(p7_b);boxPointsVec.push_back(p4_b);boxPointsVec.push_back(p3_b);boxPointsVec.push_back(p4_b);boxPointsVec.push_back(p5_b);boxPointsVec.push_back(p6_b);boxPointsVec.push_back(p7_b);           ros::Rate loop_rate(10);//  可视化直线 // for(int i = 0; i < linesVec.size(); i++ ){//         visualLaneLine(lane, linesVec[i], makerIdCount, true, 1000); // }//  可视化boxvisualLaneLine(box,boxPointsVec, makerIdCount, false, 1000); while(ros::ok()){marker_pub_lane.publish(lane);marker_pub_box.publish(box);loop_rate.sleep();}return 0 ;
}

FILE: marker_visual.launch

<?xml version="1.0" encoding="UTF-8"?>
<launch><node pkg="marker_visual" name="marker_visual" type="marker_visual" output="screen"></node>
</launch>

Rviz参考:

参考博客:

Rviz可视化工具Marker示例:目标检测画矩形框

​ edited by kaho 2022.12.20

rviz_marker_绘制直线_矩形框相关推荐

  1. Qt绘制直线、矩形、圆

    Qt绘制直线.矩形.圆 新建一个Qt Widgets Application工程 添加头文件 #include <QPainter> 添加paintEvent函数,代码如下: void M ...

  2. iOS 画线 绘制直线、矩形、三角形

    转载:http://bravoo.diandian.com/ 在UIView中绘制直线.矩形.三角形 直线 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...

  3. R统计绘图-corrplot热图绘制细节调整2(更改变量可视化顺序、非相关性热图绘制、添加矩形框等)

    上一篇文章推送的是怎样调整corrplot热图的可视化参数,以修改字符和图例位置,数据可视化形式和字符小大和颜色等这篇是一个补充部分,记录怎样修改参数以变量排序方式和突出部分数据.本流程还是使用R统计 ...

  4. 结构建模设计——Solidworks软件之草图绘制基础图形工具总结(绘制直线、矩形、圆、槽、圆弧、圆角等)

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发> <A ...

  5. 项目记录一:用Python识别图片中指定颜色标记块并绘制其最小矩形框以及坐标点

    记录准研一小白第一次动手实践课题组师姐安排的任务,非常感谢CSDN前辈们所撰写的博客对我的帮助. 一.项目背景 如图所示,有这样一张现场勘测的图片,要实现绘制出图中三个黄色标记块的最小矩形框以及左上角 ...

  6. cavans图形绘制(直线、矩形、原型、贝塞尔曲线、渐变背景)

    一.绘制直线 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF- ...

  7. 计算机图形学笔记1--新建vs项目及绘制直线、矩形、椭圆

    项目创建--VS2019选择MFC应用,更改以下配置 :1.单个文档   2.MFC规范 绘制基础直线.矩形 void Ctest01View::OnLButtonUp(UINT nFlags, CP ...

  8. java 绘制长方形_Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)...

    控制台程序. import javax.swing.JComponent; import java.util.*; import java.awt.*; import java.awt.geom.*; ...

  9. python如何绘制直线_成对绘制直线

    我正在做一个网络项目,在这个项目中,我需要在成对的点(节点)之间绘制线(边).目前我正在使用matplotlib.pyplot但问题是pyplot.plot绘图(x,y)从(x[0],y[0])开始, ...

最新文章

  1. centos7 virtualbox使用internal network 内网模式
  2. 2017,SAP向云看齐
  3. Linux关闭开关机动画,centos7删除开机动画及修改启动菜单
  4. 信息系统项目管理师:第9章:项目人力资源管理-历年真题
  5. DataTables怎样取消黑白行
  6. Falsy Bouncer(第二种解决方式)
  7. ios开发之 -- 自动轮播图创建
  8. linux gtest安装
  9. 北京电子科技学院计算机怎么样,北京电子科技学院计算机技术怎么样
  10. Fast dev didn't succeed, trying another location
  11. senet-运行和结构篇
  12. anaconda 清华镜像及对应下载
  13. oracle的监听服务详解
  14. ★★iPhone越狱后必装软件和一些心得教程,送给广大的小白们,希望你们能从小白变成“小黑”★★
  15. 【Android智能硬件开发】【010】安卓读写串口
  16. Tcl 语言 ——表达式篇
  17. 二分查找和三分求单峰函数极值
  18. Mybatis下传入时间条件,查询慢的优化方法
  19. 基于Android studio有声听书系统 java音乐播放器系统
  20. Azuki:缔造NFT元宇宙品牌

热门文章

  1. 数据仓库知识与实战——电信运营商数仓建模
  2. 单元测试框架NUnit 之 Attributes特性(一)
  3. DPlayer播放m3u8
  4. select标签默认选项
  5. 11 个最佳免费安全网站
  6. 【PHP框架 | Laravel8 系列3】 - 路由
  7. u盘修复计算机w7,win7系统提示需要修复U盘的解决方法
  8. 让最新免费版WPS支持Office VBA
  9. 《深度学习之TensorFlow》reading notes(3)—— MNIST手写数字识别之二
  10. 崛起于Springboot2.X之集成规则引擎Drools(41)