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

    rviz仿真界面操控仿真机械臂左右移动出现问题

    已定时 已固定 已锁定 已移动
    机械臂运动规划
    moveit rviz 运动规划
    3
    7
    807
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 27189367672
      IS mine
      最后由 编辑

      在moveit中拖动末端执行器仿真机械臂可以进行前后上下移动,但左右移动是总是一卡一卡的,用代码控制仿真机械臂运动可以进行前后上下运动,但是无法左右运动,总是不成功,没有报错。
      以下是启动代码控制机械臂时的信息:
      [ INFO] [1686474824.439508576]: Loading robot model 'physics'...
      [ INFO] [1686474824.443460015]: No root/virtual joint specified in SRDF. Assuming fixed joint
      [ INFO] [1686474825.965323644]: Ready to take commands for planning group arm.
      [INFO] [1686474826.271929]: Path planning failed with only 0.984375 success.
      以下是控制机械臂代码:
      import rospy, sys
      import moveit_commander
      from moveit_commander import MoveGroupCommander
      from geometry_msgs.msg import Pose
      from copy import deepcopy
      from hand import *
      from fk_demo import *
      import os
      import multiprocessing as mp

      def MoveItCartesianDemo(a,b,c):
      # 初始化move_group的API
      moveit_commander.roscpp_initialize(sys.argv)

      # 是否需要使用笛卡尔空间的运动规划
      cartesian = rospy.get_param('~cartesian', True)
                      
      # 初始化需要使用move group控制的机械臂中的arm group
      arm = MoveGroupCommander('arm')
      
      # 当运动规划失败后,允许重新规划
      arm.allow_replanning(True)
      
      # 设置目标位置所使用的参考坐标系
      arm.set_pose_reference_frame('base_link')
              
      # 设置位置(单位:米)和姿态(单位:弧度)的允许误差
      arm.set_goal_position_tolerance(0.1)
      arm.set_goal_orientation_tolerance(0.1)
      
      # 设置允许的最大速度和加速度
      arm.set_max_acceleration_scaling_factor(0.5)
      arm.set_max_velocity_scaling_factor(0.5)
      
      
      # 获取终端link的名称
      end_effector_link = arm.get_end_effector_link()
      
                                              
      # 获取当前位姿数据最为机械臂运动的起始位姿
      start_pose = arm.get_current_pose(end_effector_link).pose
      print(start_pose)
      # 初始化路点列表
      waypoints = []
      
      # 将初始位姿加入路点列表
      if cartesian:
          waypoints.append(start_pose)
          
      # 设置路点数据,并加入路点列表
      wpose = deepcopy(start_pose)
      wpose.position.x -= a
      wpose.position.y -= b  #0.05
      wpose.position.z -= c
      
      
      if cartesian:
          waypoints.append(deepcopy(wpose))
      else:
          arm.set_pose_target(wpose)
          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,   # waypoint poses,路点列表
                                      0.001,        # eef_step,终端步进值
                                      0.0,         # jump_threshold,跳跃阈值
                                      True)        # avoid_collisions,避障规划
              
              # 尝试次数累加
              attempts += 1
              
              # 打印运动规划进程
              if attempts % 10 == 0:
                  rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
                          
          # 如果路径规划成功(覆盖率100%),则开始控制机械臂运动
          if fraction == 1.0:
              arm.execute(plan)
              rospy.loginfo("Path execution complete.")
          # 如果路径规划失败,则打印失败信息
          else:
              rospy.loginfo("Path planning failed with only " + str(fraction) + " success after " + str(maxtries) + " attempts.")  
      
          rospy.sleep(1)
      

      if name == "main":

          # 初始化ROS节点
      rospy.init_node('moveit_cartesian_demo', anonymous=True)
      
      try:
          MoveItCartesianDemo(0.0,-0.0,-0.3)
      
      except rospy.ROSInterruptException:
          pass
      

      注:一旦在倒数第三行代码中的坐标值x填入数值,就无法成功规划

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

        @2718936767 什么样子的机械臂呢


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

        问题一定要描述清楚,终端打印一定复制粘贴,方便回答者检索和引用(你可以在linux系统上打开浏览器进社区)
        基本的Markdown语法一定要学习下,有的小伙伴图片代码一团糟
        提问时一定要提供尽可能多的信息(系统版本,ROS版本,前后操作,终端日志),包括你的目的,比如你其实想装装某个库遇到问题,不要只说这个问题,因为可能有更好的替代方案
        先搜索再提问,很多问题其实都有解决方案,确保你自己对自己的问题有一定了解再提问
        尽量一句话说完,不要把社区当微信聊天一样用,每一个回复都尽量提供更多的的信息。

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

        27189367672 2 条回复 最后回复 回复 引用 0
        • 27189367672
          IS mine @小鱼
          最后由 编辑

          @小鱼 b0531d1f-2ea0-4258-989a-c0bd2103cf8d-图片.png 这个样子的机械臂

          16062561781 1 条回复 最后回复 回复 引用 0
          • 27189367672
            IS mine @小鱼
            最后由 编辑

            @小鱼 [ INFO] [1686737756.276853913]: Loading robot model 'physics'...
            [ INFO] [1686737756.279899433]: No root/virtual joint specified in SRDF. Assuming fixed joint
            [ INFO] [1686737757.966402249]: Ready to take commands for planning group arm.
            position:
            x: 0.0
            y: 0.25093699999999997
            z: 0.325256
            orientation:
            x: 0.0
            y: 0.0
            z: 0.0
            w: 1.0
            [INFO] [1686737758.332796]: Still trying after 10 attempts...
            [INFO] [1686737758.416116]: Still trying after 20 attempts...
            [INFO] [1686737758.499931]: Still trying after 30 attempts...
            [INFO] [1686737758.586014]: Still trying after 40 attempts...
            [INFO] [1686737758.676738]: Still trying after 50 attempts...
            [INFO] [1686737758.767993]: Still trying after 60 attempts...
            [INFO] [1686737758.857273]: Still trying after 70 attempts...
            [INFO] [1686737758.939423]: Still trying after 80 attempts...
            [INFO] [1686737759.024977]: Still trying after 90 attempts...
            [INFO] [1686737759.108495]: Still trying after 100 attempts...
            [INFO] [1686737759.109303]: Path planning failed with only 0.5 success after 100 attempts.
            目前的问题就是控制仿真机械臂云台无法左右旋转,但是机械臂可以前后上下移动

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

              @2718936767 可能是 姿态到不了

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

              27189367672 1 条回复 最后回复 回复 引用 0
              • 27189367672
                IS mine @小鱼
                最后由 编辑

                @小鱼 用代码控制不能左右旋转 ,但是在仿真面板上拖动末端执行器可以旋转。会是代码问题吗?

                1 条回复 最后回复 回复 引用 0
                • 16062561781
                  C @2718936767
                  最后由 编辑

                  @2718936767 你好,请问解决了吗,我的机械臂也是左右不能规划成功,而且每次都是0.5的覆盖率

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