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

    机器人在导航的时候雷达点云不和地图贴合,并且定位不准确

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    定位 导航
    8
    11
    1.2k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1
      wenhaoガ
      最后由 编辑

      背景

      ROS Noetic
      Ubuntu 20.04 (工控机)

      问题描述:

      小车启动导航了之后,通过cmd_vel话题控制移动,在一开始的1-2分钟之内都一切正常,但是大概2分钟左右就会出现小车在转向的时候,雷达的点云不能和地图贴合在一起而是和小车一起旋转。出现这个问题的时间都是在启动导航后1-2分钟就会出现。请问如何解决这个问题?

      具体细节和上下文:

      小车出现该问题的RVIZ显示:
      图片中的雷达点云已经脱离了地图,跟随小车一起旋转了,正常应该是贴合地图的墙壁才对。
      e40d2515-ffe0-4b98-a854-17ae82366a33-image.png

      5d59990b-2199-43a2-a930-353269e99fa3-image.png

      小车的节点详细:(没法上传大图,仅截取部分)
      我使用了robot_pose_ekf来输出融合里程计给到amcl的。
      cb816020-2885-4fbb-b274-d252bb120a94-image.png

      小车的TF树:(没法上传大图,仅截取部分)
      940a7f27-7895-4082-874d-9ad028938cd9-image.png

      代价地图的参数配置:

      文件 [global_costmap_params.yaml] 👇

      #全局代价地图参数命名空间
      global_costmap:
        global_frame: map 
        robot_base_frame: base_footprint
        transform_tolerance: 0.5
        #代价地图刷新频率,单位:Hz
        update_frequency: 1
        #代价地图的可视化话题发布频率,单位:Hz
        publish_frequency: 1
      
        #是否直接使用静态地图生成代价地图
        #static_map: true #使用plugins手动配置代价地图时,该参数无效
        #代价地图是否跟随机器人移动,static_map为true时该参数必须为false
        rolling_window: false
        #代价地图宽度,这里会被静态层扩宽,单位:m
        width: 10.0 
        #代价地图高度,这里会被静态层扩宽,单位:m
        height: 10.0 
        #代价地图分辨率(米/单元格)
        resolution: 0.05
        
        #为代价地图设置地图层,这里设置了三层,分别作为静态层、障碍层和膨胀层
        plugins:
          #定义地图层的名称,设置地图层的类型
          - {name: static_layer,      type: "costmap_2d::StaticLayer"}
          #定义地图层的名称,设置地图层的类型。
          #障碍层可以使用VoxelLayer代替ObstacleLayer
          - {name: obstacle_layer,    type: "costmap_2d::VoxelLayer"}
          #定义地图层的名称,设置地图层的类型
          - {name: inflation_layer,   type: "costmap_2d::InflationLayer"}
        #各地图层的参数,会以地图层名称作为命名空间
        #各地图层的参数,会在【costmap_common_params.yaml】内进行设置
      

      文件 [local_costmap_params.yaml] 👇

      #局部代价地图参数命名空间
      local_costmap:
        #代价地图的TF参考坐标系
        global_frame: map
        #机器人的TF坐标名称
        robot_base_frame: base_footprint
        #global_frame和robot_base_frame间的TF坐标停止发布多久后,控制机器人停止,单位:s
        transform_tolerance: 0.5
        #代价地图刷新频率,单位:Hz
        update_frequency: 10      
        #代价地图的可视化话题发布频率,单位:Hz
        publish_frequency: 10   
      
        #是否直接使用静态地图生成代价地图
        #static_map: false #使用plugins手动配置代价地图时,该参数无效
        #代价地图是否跟随机器人移动,static_map为true时该参数必须为false
        rolling_window: true
        #代价地图宽度,单位:m
        width: 5.0 
        #代价地图高度,单位:m
        height: 5.0 
        #代价地图分辨率(米/单元格)
        resolution: 0.05 
      
        #为代价地图设置地图层,这里设置了两层,分别作为障碍层和膨胀层
        #局部代价动态要求高刷新率,不使用静态层以节省计算资源
        plugins:
          #定义地图层的名称,设置地图层的类型
          - {name: static_layer,      type: "costmap_2d::StaticLayer"}
          #定义地图层的名称,设置地图层的类型
          - {name: obstacle_layer,      type: "costmap_2d::ObstacleLayer"}
          #定义地图层的名称,设置地图层的类型
          - {name: inflation_layer,     type: "costmap_2d::InflationLayer"}
        #各地图层的参数,会以地图层名称作为命名空间
        #各地图层的参数,会在【costmap_common_params.yaml】内进行设置
      
      

      尝试过的解决方法:

      1、尝试了解过是不是IMU模块的累积误差问题,但是对于IMU没有太多的了解,放弃了这个方向。

      1 1 条回复 最后回复 回复 引用 0
      • 1
        wenhaoガ @1992558282
        最后由 编辑

        @1992558282 有没有谁遇到过类似这个问题的情况呢,可以分享一下解决思路吗?或者我应该往哪个方向去解决问题呢?这个问题实在卡的挺久的🤧 🤧

        28163290072 1 条回复 最后回复 回复 引用 0
        • 28163290072
          悟 @1992558282
          最后由 编辑

          @1992558282 里程计校准了嘛

          1 1 条回复 最后回复 回复 引用 0
          • 22583102972
            10.12
            最后由 编辑

            你好,这个问题解决了吗,我也遇到了同样的问题

            1 条回复 最后回复 回复 引用 0
            • 1
              wenhaoガ @2816329007
              最后由 编辑

              @2816329007 里程计校准,是测量小车x轴行走1米,然后用尺子量一下是不是1m,还有测量小车转90°是否准确,指的是这个吗?

              小鱼小 28163290072 2 条回复 最后回复 回复 引用 0
              • 小鱼小
                小鱼 技术大佬 @1992558282
                最后由 编辑

                @1992558282 他说的是这个意思应该,从传感器入手检查问题是正确思路

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

                1 条回复 最后回复 回复 引用 0
                • 28163290072
                  悟 @1992558282
                  最后由 编辑

                  @1992558282 是

                  1 条回复 最后回复 回复 引用 0
                  • T
                    td
                    最后由 编辑

                    此回复已被删除!
                    1 条回复 最后回复 回复 引用 0
                    • 2
                      2635781139
                      最后由 编辑

                      你好,这个问题解决了吗,我也遇到了类似的问题

                      1 1 条回复 最后回复 回复 引用 0
                      • B
                        breadfish
                        最后由 编辑

                        一摸一样,想问一下有没有解决方法

                        1 条回复 最后回复 回复 引用 0
                        • 1
                          1269427155 年度VIP @2635781139
                          最后由 编辑

                          @2635781139 同问,我有时候会卡在某一刻,之后的地图就不更新了

                          1 条回复 最后回复 回复 引用 0
                          • 第一个帖子
                            最后一个帖子
                          皖ICP备16016415号-7
                          Powered by NodeBB | 鱼香ROS