chocolate478 2024-04-24 21:33 采纳率: 50%
浏览 6
已结题

ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)

问题遇到的现象和发生背景

最近在跟着教程弄一个树莓派+arduino的导航小车,在实现小车路径规划的功能时,用rviz里面的2d nav goal设置目标点小车却一点反应也没有,并且启动路径规划的终端报警告:

[ WARN] [1713964004.535452443]: Map update loop missed its desired rate of 1.0000Hz... the loop actually took 2.5540 seconds
[ WARN] [1713964005.413957599]: Clearing both costmaps to unstuck robot (1.84m).
[ WARN] [1713964007.151008850]: Map update loop missed its desired rate of 1.0000Hz... the loop actually took 1.6156 seconds
[ WARN] [1713964010.420793022]: Map update loop missed its desired rate of 1.0000Hz... the loop actually took 1.8853 seconds
[ WARN] [1713964010.513953053]: Rotate recovery behavior started.

img

操作环境、软件版本等信息

树莓派和电脑的ubuntu版本都是18.04,ros版本是Melodic

尝试过的解决方法

网上查的主要有两种解决办法
一是说树莓派和电脑的分布式框架没弄好ip地址没有设置好什么的,但我的能正常发布里程计数据,所以大概率不是因为这个。二是说在move_base.launch文件修改其中的频率:

    <param name="controller_frequency" value="5.0"/>
    <param name="controller_patiente" value="15.0"/>

也还是会报错

我想要达到的结果

能够像教程一样实现路径规划

img

  • 写回答

22条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-24 21:50
    关注
    获得0.90元问题酬金

    引自免费微信小程序:皆我百晓生

    针对您遇到的ROS小车路径规划实现不了的问题,以及终端中出现的警告信息,我将为您提供一系列可能的解决方案。根据您的描述,您已经排除了分布式框架和IP地址设置的问题,因为小车可以正常发布里程计数据。接下来,我们将重点探讨与路径规划相关的配置与参数调整。

    1. 调整move_base节点参数

    您提到已尝试调整move_base.launch中的controller_frequencycontroller_patience参数,但仍然收到警告。这些参数确实会影响控制器的性能,但似乎并未完全解决问题。请检查并尝试以下额外参数调整:

    <!-- 在move_base节点的参数部分添加或调整以下参数 -->
    <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
      <!-- ... 其他现有参数 ... -->
    
      <!-- 可能需要降低局部规划器更新频率 -->
      <param name="local_planner_frequency" value="5.0"/> <!-- 建议值为5.0,视硬件性能调整 -->
    
      <!-- 可能需要增加旋转恢复行为的阈值 -->
      <param name="clearing_rotation_threshold" value="0.¾"/> <!-- 建议值为0.5,视具体情况调整 -->
    
      <!-- 可能需要增加旋转恢复行为的最大旋转角度 -->
      <param name="max_rotational_vel" value="0.5"/> <!-- 建议值为0.5,视具体机器人调整 -->
    
      <!-- ... 其他现有参数 ... -->
    </node>
    

    2. 检查传感器数据更新频率

    警告信息表明地图更新循环错过了期望的1Hz速率,这可能是由于传感器数据(如激光雷达)更新过慢导致的。请确保您的传感器数据发布频率足够高,且无明显延迟。可以在rviz中查看LaserScan数据更新情况,确保其流畅且无间断。

    3. 调整costmap_2d参数

    警告中还涉及到了清除成本地图以解救被困机器人的情况,这可能与成本地图参数设置有关。请检查并尝试调整costmap_common_params.yaml或相关配置文件中的以下参数:

    # 可能需要降低静态层更新频率
    static_map_update_frequency: 2.0  # 建议值为2.0,视具体需求调整
    
    # 可能需要增加观测缓冲区大小
    obstacle_layer:
      observation_persistence: 0.5  # 建议值为0.5,视具体环境调整
    
    # 可能需要降低 inflation_layer 更新频率
    inflation_layer:
      update_frequency: 2.0  # 建议值为2.0,视具体需求调整
    

    4. 检查rotate_recovery行为配置

    警告显示rotate_recovery行为启动且无法原地旋转,可能存在碰撞风险。请检查rotate_recovery插件的相关参数,确保其在遇到障碍时能有效执行避障策略。通常位于rotate_recovery.xml或其他相关配置文件中:

    <!-- 可能需要增大允许的最大旋转角度 -->
    <param name="max_rot_theta" value="3.14" />
    
    <!-- 可能需要减小最小旋转步长 -->
    <param name="min_rotational_vel" value="0.1" />
    

    5. 确保机器人模型、地图与实际环境匹配

    确保您使用的机器人模型尺寸、质量属性与实际小车相符,地图准确反映了真实环境,且已正确加载到move_base节点中。在rviz中观察小车模型是否能顺利通过规划路径,以及地图上是否存在未被正确识别或标记的障碍物。

    6. 优化系统资源分配

    如果上述调整仍无法解决问题,可能是由于系统资源不足导致。检查树莓派的CPU、内存使用情况,确保为ROS节点预留足够的计算资源。可以考虑关闭不必要的后台进程,或调整move_base节点的CPU亲和性以利用多核优势。

    综上所述,逐一排查并按照建议调整上述参数,应有助于解决您的ROS小车路径规划问题。在进行参数调整后,记得重启move_base节点及相关依赖服务,观察终端输出及rviz中路径规划效果的变化。如有任何特定参数调整后产生显著改善或新问题,请及时反馈以便进一步分析。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c