鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    rviz显示marker不能实时更新

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    rviz marker
    2
    9
    1.1k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小丑汪小
      WOW995
      最后由 编辑

      各位大佬,我想在保存的pcd地图里面用marker显示机器人的位置,我订阅了机器人的坐标形象,但是机器人移动位置变化后,marker位置不变,一直在初始位置;marker不能随机器人移动而更新,希望有了解的大佬帮忙解答一下。

      #include <ros/ros.h>
      #include <visualization_msgs/Marker.h>
      #include <nav_msgs/Odometry.h>
      
      #include <geometry_msgs/Point.h>
      
      double temp_x,temp_y,temp_z;
      double temp_or_x,temp_or_y,temp_or_z,temp_or_w;
      
      void record_point(const nav_msgs::Odometry::ConstPtr& odom)
      {
          temp_x = odom->pose.pose.position.x;
          temp_y = odom->pose.pose.position.y;
          temp_z = odom->pose.pose.position.z;
          temp_or_w = odom->pose.pose.orientation.w;
          temp_or_x = odom->pose.pose.orientation.x;
          temp_or_y = odom->pose.pose.orientation.y;
          temp_or_z = odom->pose.pose.orientation.z;
          
      }
       
      int main( int argc, char** argv )
      {
        ros::init(argc, argv, "points_marker");
        ros::NodeHandle n;
        ros::Publisher marker_pub = n.advertise<visualization_msgs::Marker>("/robot_marker", 10);
        ros::Subscriber odom_pose = n.subscribe<nav_msgs::Odometry>("/aft_mapped_to_init",100,record_point);
        visualization_msgs::Marker points_marker;
      
        ros::Rate r(30);
       
        while (ros::ok())
        {
       
      
          points_marker.header.frame_id ="/camera_init";
          points_marker.header.stamp =ros::Time::now();
          points_marker.ns ="points_marker";
          points_marker.action =visualization_msgs::Marker::ADD;
          points_marker.id = 0;
          points_marker.type = visualization_msgs::Marker::POINTS;
          geometry_msgs::Point obj;
          obj.x = temp_x;
          obj.y = temp_y;
          obj.z = temp_z;
          points_marker.pose.orientation.w = 1;
      
       
          // points_marker markers use x and y scale for width/height respectively
          points_marker.scale.x = 1;
          points_marker.scale.y = 1;
          points_marker.scale.z = 1;
      
          // points_marker are green
          points_marker.color.r = 0.0f;
          points_marker.color.g = 1.0f;
          points_marker.color.b = 0.0f;
          points_marker.color.a = 1.0f;
          points_marker.points.push_back(obj);
       
          points_marker.lifetime = ros::Duration(0.1); // 生命周期
      
          marker_pub.publish(points_marker);
       
          r.sleep();
      
        }
      }
      ![20220718.jpg](/forum/assets/uploads/files/1658153571513-20220718-resized.jpg)
      小丑汪小 小鱼小 3 条回复 最后回复 回复 引用 0
      • 小丑汪小
        WOW995 @小丑汪
        最后由 编辑

        @小丑汪 图片没有传上去
        20220718.jpg

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @小丑汪
          最后由 编辑

          @小丑汪 先用rostopic echo 对应话题,看看有没有数据先,毕竟rviz也只是将数据显示出来,这样就可以诊断出是哪边的问题了。

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          小丑汪小 1 条回复 最后回复 回复 引用 0
          • 小丑汪小
            WOW995 @小鱼
            最后由 编辑

            @小鱼 您好,我看了订阅的/aft_mapped_to_init和marker的话题/robot_marker,/aft_mapped_to_init数据是在更新的,/robot_marker数据一直没变。
            topic.jpg
            sendpix1.jpg

            1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @小丑汪
              最后由 编辑

              @小丑汪 在 rviz显示marker不能实时更新 中说:

              void record_point(const nav_msgs::Odometry::ConstPtr& odom)
              {

              问题大概就是发布的问题了,确认下这个回调函数是否进入了,可以加一些打印进去

              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

              小丑汪小 1 条回复 最后回复 回复 引用 0
              • 小丑汪小
                WOW995 @小鱼
                最后由 编辑

                @小鱼 您好,我在回调函数和下面的ros::ok里面都打印输出了,回调函数没有调用,没有打印输出。我看了订阅和回调写的好像没什么问题

                小鱼小 1 条回复 最后回复 回复 引用 0
                • 小鱼小
                  小鱼 技术大佬 @小丑汪
                  最后由 编辑

                  @小丑汪 没被回调肯定是哪里有问题,比如话题有没有搞错,仔细检查下,问题快找出来了

                  新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                  小丑汪小 1 条回复 最后回复 回复 引用 0
                  • 小丑汪小
                    WOW995 @小鱼
                    最后由 编辑

                    @小鱼 抱歉,我的。我没写ros::spinOnce()

                    小鱼小 1 条回复 最后回复 回复 引用 1
                    • 小鱼小
                      小鱼 技术大佬 @小丑汪
                      最后由 编辑

                      @小丑汪 好的👌🏻

                      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                      1 条回复 最后回复 回复 引用 0
                      • 小丑汪小 小丑汪 将这个主题标记为已解决,在
                      • 第一个帖子
                        最后一个帖子
                      皖ICP备16016415号-7
                      Powered by NodeBB | 鱼香ROS