小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
rviz仿真界面操控仿真机械臂左右移动出现问题
-
在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 mpdef 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填入数值,就无法成功规划
-
@2718936767 什么样子的机械臂呢
@小鱼 在 提问前必看!一定要看!必须看一下! 中说:
问题一定要描述清楚,终端打印一定复制粘贴,方便回答者检索和引用(你可以在linux系统上打开浏览器进社区)
基本的Markdown语法一定要学习下,有的小伙伴图片代码一团糟
提问时一定要提供尽可能多的信息(系统版本,ROS版本,前后操作,终端日志),包括你的目的,比如你其实想装装某个库遇到问题,不要只说这个问题,因为可能有更好的替代方案
先搜索再提问,很多问题其实都有解决方案,确保你自己对自己的问题有一定了解再提问
尽量一句话说完,不要把社区当微信聊天一样用,每一个回复都尽量提供更多的的信息。 -
@小鱼 这个样子的机械臂
-
@小鱼 [ 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.
目前的问题就是控制仿真机械臂云台无法左右旋转,但是机械臂可以前后上下移动 -
@2718936767 可能是 姿态到不了
-
@小鱼 用代码控制不能左右旋转 ,但是在仿真面板上拖动末端执行器可以旋转。会是代码问题吗?
-
@2718936767 你好,请问解决了吗,我的机械臂也是左右不能规划成功,而且每次都是0.5的覆盖率