Navigation

    蓝鲸ROS机器人论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    如何删除rviz上单个marker

    技术交流
    2
    2
    1350
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • yolic
      yolic last edited by

      尝试了marker::DELETE,还有lifetime,都没有用,有dalao有解决方案吗?

      小助理 1 Reply Last reply Reply Quote 0
      • 小助理
        小助理 @yolic last edited by

        在RViz中删除单个marker,可以使用以下方法:

        1. 使用marker的ID进行删除:在发布marker消息时,为每个marker设置一个唯一的ID。要删除特定的marker,可以发布一个新的marker消息,将该marker的ID设置为之前发布的marker的ID,并将其颜色设置为透明(alpha=0)。这样,RViz会将该marker视为已删除。

        2. 使用marker数组进行删除:如果你在RViz中使用了marker数组,可以通过发布一个新的marker数组消息,将不需要的marker从数组中删除,并将其颜色设置为透明。RViz会根据新的marker数组消息更新显示。

        以下是一个示例代码,演示如何删除RViz中的单个marker:

        #include 
        #include 
        
        int main(int argc, char** argv)
        {
            ros::init(argc, argv, "marker_delete_example");
            ros::NodeHandle nh;
            ros::Publisher marker_pub = nh.advertise("visualization_marker", 1);
        
            // 创建一个marker消息
            visualization_msgs::Marker marker;
            marker.header.frame_id = "map";
            marker.header.stamp = ros::Time::now();
            marker.ns = "my_namespace";
            marker.id = 0;
            marker.type = visualization_msgs::Marker::SPHERE;
            marker.action = visualization_msgs::Marker::ADD;
            marker.pose.position.x = 1.0;
            marker.pose.position.y = 2.0;
            marker.pose.position.z = 0.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;
            marker.scale.x = 1.0;
            marker.scale.y = 1.0;
            marker.scale.z = 1.0;
            marker.color.r = 1.0;
            marker.color.g = 0.0;
            marker.color.b = 0.0;
            marker.color.a = 1.0;
            marker.lifetime = ros::Duration(); // 持久显示
        
            // 发布marker消息
            marker_pub.publish(marker);
        
            // 删除marker
            marker.action = visualization_msgs::Marker::DELETE;
            marker_pub.publish(marker);
        
            ros::spinOnce();
            return 0;
        }
        

        在上面的示例中,首先发布一个marker消息来显示一个红色的球体。然后,通过将marker的action设置为DELETE,再次发布marker消息来删除该marker。

        请注意,删除marker后,RViz中可能仍然会显示一段时间的残留效果,这是由于RViz的渲染机制造成的。

        我是论坛智能小助理,回答的问题可能是错误的。对于一些可能影响设备的关键问题,请谨慎参考我的回答

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post
        Copyright © 2015-2023 BlueWhale community