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

    Moveit运动规划 笛卡尔路径规划 TF problem

    已定时 已固定 已锁定 已移动 已解决
    机械臂运动规划
    moveit 运动规划
    2
    10
    1.3k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小小禅师小
      小小禅师
      最后由 编辑

      ros版本是melodic
      我按照教学视频设置好了moveit setup assistant的base link 和 tip link以及编写了一个python程序让机械臂末端走直线
      结果运行的时候报错TF Problem: "base_link" passed to lookupTransform argument target_frame does not exist.
      以及
      Got a callback on a goalHandle that we're not tracking. This is an internal SimpleActionClient/ActionClient bug. This could also be a GoalID collision
      请教大佬具体是哪里没有设置好
      urdf模型是店家自己提供的!
      python代码如下(未注释)
      #!/usr/bin/env python

      * coding: utf-8 *

      from base64 import standard_b64decode
      import rospy, sys
      import moveit_commander
      from moveit_commander import MoveGroupCommander
      from geometry_msgs.msg import Pose
      from copy import deepcopy

      class MoveItcartesianDemo:
      def init(self):
      moveit_commander.roscpp_initialize(sys.argv)
      rospy.init_node('moveit_cartesian_demo',anonymous=True)
      cartesian = rospy.get_param('~cartesian',True)
      arm = MoveGroupCommander('arm')
      arm.allow_replanning(True)
      arm.set_pose_reference_frame('base_link')
      arm.set_goal_position_tolerance(0.01)
      arm.set_goal_orientation_tolerance(0.1)
      end_effector_link = arm.get_end_effector_link()
      arm.set_named_target('work')
      arm.go()
      start_pose = arm.get_current_pose(end_effector_link).pose
      waypoints = []
      if cartesian:
      waypoints.append(start_pose)
      wpose = deepcopy(start_pose)
      wpose.position.x -= 0.03
      wpose.position.y -= 0.03
      if cartesian:
      waypoints.append(deepcopy(wpose))
      else:
      arm.set_pose_target(wpose)
      arm.go()
      rospy.sleep(1)
      wpose.position.y += 0.05
      if cartesian:
      waypoints.append(deepcopy(wpose))
      else:
      arm.set_pose_target(wpose)
      arm.go()
      rospy.sleep(1)
      if cartesian:
      waypoints.append(deepcopy(start_pose))
      else:
      arm.set_pose_target(start_pose)
      arm.go()
      rospy.sleep(1)
      if cartesian:
      fraction = 0.0
      maxtries = 100
      attempts = 0
      arm.set_start_state_to_current_state()
      while fraction < 1.0 and attempts <maxtries:
      (plan,fraction) = arm.compute_cartesian_path (waypoints,0.01,0,True)
      attempts += 1
      if attempts % 10 == 0:
      rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
      if fraction == 1.0:
      rospy.loginfo("Path computed successfully. Moving the arm.")
      arm.execute(plan)
      rospy.loginfo("Path execution complete")
      else:
      rospy.loginfo("Path planning failed with only " + str(fraction) + " success after " + str(maxtries) + " attempts.")
      arm.set_named_target('home')
      arm.go()
      rospy.sleep(1)
      moveit_commander.roscpp_shutdown()
      moveit_commander.os._exit(0)

      if name == "main":
      try:
      MoveItcartesianDemo()
      except rospy.ROSInterruptException:
      pass
      附上截图
      20220621171413.png 20220621171457.png

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

        @小小禅师 在 Moveit运动规划 笛卡尔路径规划 TF problem 中说:

        TF Problem: "base_link" passed to lookupTransform argument target_frame does not exist

        看这个错误先检查下tf先,用tf工具看一下tf树。

        另外记得修改下代码格式哦

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

        小小禅师小 1 条回复 最后回复 回复 引用 0
        • 小小禅师小
          小小禅师 @小鱼
          最后由 编辑

          @小鱼 查了一下我的tf树,是单向传递的,没有断和闭环

          0eb3742a-3618-44e8-af99-96fc623d8b43-20220621202109.png

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

            @小小禅师 好像没有看到报错的base_linkp哦

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

            小小禅师小 1 条回复 最后回复 回复 引用 0
            • 小小禅师小
              小小禅师 @小鱼
              最后由 编辑

              @小鱼 所以可能是啥原因呢,崩溃中QAQ

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

                @小小禅师 在 Moveit运动规划 笛卡尔路径规划 TF problem 中说:

                我按照教学视频设置好了moveit setup assistant的base link 和 tip link

                所以这个设置base_link是干嘛用的

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

                小小禅师小 1 条回复 最后回复 回复 引用 0
                • 小小禅师小
                  小小禅师 @小鱼
                  最后由 编辑

                  @小鱼 设置planning groups的时候教程里面说要选择一个kinematic solver,之后点add kin. chain设置base link和tip link

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

                    @小小禅师 可能是他的机械臂底座叫base_link,你的应该是没有的,可能要换一个

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

                    小小禅师小 1 条回复 最后回复 回复 引用 0
                    • 小小禅师小
                      小小禅师 @小鱼
                      最后由 编辑

                      @小鱼 解决了,我没注意这个机械臂是arm_base,不是base_link,谢谢了

                      小鱼小 1 条回复 最后回复 回复 引用 0
                      • 小小禅师小 小小禅师 将这个主题标记为已解决,在
                      • 小鱼小
                        小鱼 技术大佬 @小小禅师
                        最后由 编辑

                        @小小禅师 Ok,代码记得用代码块包裹下哦~

                        @小鱼 在 提问前必看!一定要看!必须看一下! 中说:

                        不要截图,要复制粘贴,一定要代码块包裹

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

                        1 条回复 最后回复 回复 引用 0
                        • 小鱼小 小鱼 从 中的 综合问题 移动了该主题
                        • 第一个帖子
                          最后一个帖子
                        皖ICP备16016415号-7
                        Powered by NodeBB | 鱼香ROS