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

    rviz中execute不成功,显示报错controller XXX failed with errOr PATH TOLERANCE VIOLATED

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    moveit gazebo execute失败
    2
    2
    323
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1
      1264433432
      最后由 编辑

      背景

      实现rviz与gazebo的联合仿真

      问题描述:

      在rviz中可以plan,execute失败,显示报错controller XXX failed with errOr PATH TOLERANCE VIOLATED。机械臂运行一段时间后停止,达不到目标位置。
      报错: controller 'scaled pos joint trajcontroller' failed with errOr PATH TOLERANCE VIOLATED: shoulder lift joint patherror -0.101387

      具体细节和上下文:

      • 怀疑是控制器的问题,报错中显示scaled pos joint trajcontroller出错。
      • 后续调整控制器,发现有2个文件,控制器scaled pos joint trajcontroller在moveit的config下。
        1a13d701-0588-4303-81c2-38ffb09b6b60-image.png
        另一控制器在gazebo的config文件下,有很多控制器,但不知道与scaled pos joint trajcontroller有什么关联。
        19e7099d-bb24-45dc-a487-440f76d4764b-image.png

      尝试过的解决方法:

      -https://fishros.org.cn/forum/topic/528/机械臂rviz-gazebo联合仿真报错 尝试修改stopped_velocity_tolerance参数值为0;修改控制文件中的goal:
      shoulder_pan_joint: {trajectory: 0.1, goal: 0.0}
      shoulder_lift_joint: {trajectory: 0.1, goal: 0.0}
      elbow_joint: {trajectory: 0.1, goal: 0.0}
      wrist_1_joint: {trajectory: 0.1, goal: 0.0}
      wrist_2_joint: {trajectory: 0.1, goal: 0.0}
      wrist_3_joint: {trajectory: 0.1, goal: 0.0}

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        在解决 PATH TOLERANCE VIOLATED 错误时,通常需要考虑的是路径规划或执行过程中的精度和容差问题。这个错误表明在尝试沿着规划的路径移动时,机械臂的某个关节没有达到预期的位置,超过了设定的路径容差。这里有几个可能的解决步骤和检查点:

        1. 检查关节限制:
          确保所有关节的规划路径都在其物理限制之内。如果规划器尝试将关节移动到其物理限制之外,这可能导致执行失败。

        2. 调整路径容差:
          在 MoveIt 的配置文件(如 *.yaml 或 *.cpp 控制器文件)中,你可以找到与路径容差相关的参数,如 path_tolerance。尝试增加这个值,看看是否可以解决问题。然而,这只是一个临时解决方案,因为过大的容差可能会牺牲精度。

        3. 检查控制器设置:
          你提到在 Gazebo 和 MoveIt 中都有控制器配置。确保这两个控制器之间的配置是一致的,特别是关节名称和参数。此外,检查 Gazebo 中的控制器是否正确地与 MoveIt 规划的轨迹交互。

        4. 检查仿真模型:
          在 Gazebo 中,确保你的机械臂模型没有碰撞或物理约束问题,这些问题可能阻止关节达到预期位置。

        5. 查看日志和调试信息:
          仔细查看 ROS 的日志(使用 roscore 和 rosconsole),特别是与 MoveIt 和 Gazebo 相关的部分。这可能会给出更多关于为什么关节不能达到目标位置的线索。

        6. 调整动力学参数:
          在 Gazebo 中,你可能需要调整机械臂的动力学参数,如摩擦、阻尼等,以确保仿真更接近实际情况。

        7. 使用可视化工具:
          利用 RViz 的可视化功能来观察机械臂在 Gazebo 中的实际运动路径和状态。这可以帮助你识别任何明显的偏差或问题。

        8. 重新规划:
          在 RViz 中尝试重新规划路径,看看是否每次都出现同样的问题。有时候,重新规划可以找到更适合当前环境或机械臂状态的路径。

        9. 检查关节传感器和反馈:
          如果你的机械臂模型在 Gazebo 中包含了关节传感器(如编码器模拟),请确保这些传感器的数据是准确的,并且被控制器正确地使用。

        10. 咨询社区和文档:
          如果上述步骤都不能解决问题,考虑在 ROS 社区论坛(如 ROS Answers 或其他相关论坛)发帖询问,或者查看 MoveIt 和 Gazebo 的官方文档以获取更多帮助。

        通过这些步骤,你应该能够更接近问题的根源,并找到解决 PATH TOLERANCE VIOLATED 错误的方法。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

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