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

文章目录[隐藏]

需求

经目标检测算法识别出目标后,需要以目标为中心画一个矩形框,将目标框出,在Rviz中显示。

所用的工具为ROS的marker消息类型。Marker显示允许各种基本形状的可编程添加到3D显示,通过发送visualization_msgs/Marker 来实现可视化。

先看效果
在这里插入图片描述

头文件包含

ros::Publisher marker_pub = nh.advertise<visualization_msgs::Marker>("/visualization_marker", 10);

填充数据

//publish target box with marker
        visualization_msgs::Marker line_strip;
        line_strip.header.frame_id = "camera_init";
        line_strip.header.stamp = ros::Time::now();
        line_strip.ns = "target_box";//namespace
        line_strip.action = visualization_msgs::Marker::ADD;
        line_strip.pose.orientation.w = 1.0;
        line_strip.id = 0; //unique id, useful when multiple markers exist.
        line_strip.type = visualization_msgs::Marker::LINE_STRIP; //marker type
        line_strip.scale.x = 0.1; //width of the line
        line_strip.color.r = 1.0; line_strip.color.g = 1.0; line_strip.color.b = 1.0;//color of the line: white.
        line_strip.color.a = 1.0; //不透明度,设0则全透明
        geometry_msgs:: Point p[8];
        //inten_position是目标物的坐标
        p[0].x = inten_position(0);     p[0].y = inten_position(1)+0.2; p[0].z = inten_position(2)+0.5;
        p[1].x = inten_position(0);     p[1].y = inten_position(1)-0.2; p[1].z = inten_position(2)+0.5;
        p[2].x = inten_position(0);     p[2].y = inten_position(1)-0.2; p[2].z = inten_position(2)-1;
        p[3].x = inten_position(0);     p[3].y = inten_position(1)+0.2; p[3].z = inten_position(2)-1;
        p[4].x = inten_position(0)+0.4; p[4].y = inten_position(1)+0.2; p[4].z = inten_position(2)-1;
        p[5].x = inten_position(0)+0.4; p[5].y = inten_position(1)-0.2; p[5].z = inten_position(2)-1;
        p[6].x = inten_position(0)+0.4; p[6].y = inten_position(1)-0.2; p[6].z = inten_position(2)+0.5;
        p[7].x = inten_position(0)+0.4; p[7].y = inten_position(1)+0.2; p[7].z = inten_position(2)+0.5;
        //LINE_STRIP类型仅仅将line_strip.points中相邻的两个点相连,如0和1,1和2,2和3
        for (int i = 0; i < 8; i++){
            line_strip.points.push_back(p[i]);
        }
        //为了保证矩形框的八条边都存在:
        line_strip.points.push_back(p[0]);
        line_strip.points.push_back(p[3]);
        line_strip.points.push_back(p[2]);
        line_strip.points.push_back(p[5]);
        line_strip.points.push_back(p[6]);
        line_strip.points.push_back(p[1]);
        line_strip.points.push_back(p[0]);
        line_strip.points.push_back(p[7]);
        line_strip.points.push_back(p[4]);
        marker_pub.publish(line_strip);

我的顶点index定义如下
在这里插入图片描述

版权声明:本文为CSDN博主「Fang_cheng_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Fang_cheng_/article/details/116454690

Fang_cheng_

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

mmdetection特征图可视化

mmdetection对特征图进行可视化 思路:在前向传播时将四个stage的特征图返回出来(更简单的方法在我下一篇博客,欢迎阅读) 1.two_stage.py修改 我修改的地方都