你好,
我最近获得了RoboDK的许可证,我想用键盘控制一个KUKA手臂。我正在使用提供的样品
但是这个机器人对键盘没有反应。如果我给“key”一个特定的值,然后运行程序,机器人就会抽搐。但它总是回到起始位置。我用的是KUKA-LBR-iiwa-14-R820。这是代码的问题吗?我也试过用其他机器人,但都有同样的经历。
我从python API文档中尝试了这个示例。我还是遇到了同样的问题。机器人只是抽搐而已。
我最近获得了RoboDK的许可证,我想用键盘控制一个KUKA手臂。我正在使用提供的样品
代码:
这个宏允许使用键盘移动机器人
注意:这只适用于控制台模式,您必须单独运行PY文件
#
关于RoboDK API的更多信息:
# //m.sinclairbody.com/doc/en/RoboDK-API.html
输入help("robolink")或help("robodk")获取更多信息
从robolink导入* # API与RoboDK通信
从robodk导入* #基本矩阵操作
RDK = Robolink()
#箭头键程序示例
#找个机器人
机器人= RDK。项目(ITEM_TYPE_ROBOT”)
如果不是robot.Valid():
车站里没有机器人。先加载机器人,然后运行这个程序。”)
暂停(5)
raise Exception(“站中没有机器人!”)
print('Using robot: %s' % robot. name ())
print(“使用箭头(左,右,上,下),Q和A键移动机器人”)
print('注意:这只适用于控制台模式,您必须单独运行PY文件')
#定义移动增量
Move_speed = 10
进口msvcrt
而真正的:
关键字= word (msvcrt.getch())
Move_direction = [0,0,0]
打印(关键)
如果key == 75:
print('左箭头(Y-)')
Move_direction = [0,-1,0]
if键== 77:
print('右箭头(Y+)')
Move_direction = [0,1,0]
if键== 72:
print('箭头向上(X-)')
Move_direction = [-1,0,0]
Elif键== 80:
print('箭头向下(X+)')
Move_direction = [1,0,0]
Elif key == chr(113):
print (Q (Z +))
Move_direction = [0,0,10]
if键== 97:
打印(“(Z)”)
Move_direction = [0,0,-1]
#确保指定了移动方向
如果norm(move_direction) <= 0:
继续
#根据移动速度计算以mm为单位的移动
Xyz_move = mult3(move_direction, move_speed)
#拿机器人关节
robot_joint = robot. joint ()
#从关节中获取机器人位置(计算正运动学)
robot_position = robot.SolveFK(robot_joint)
#获取机器人配置(机器人关节状态)
robot_config = robot.JointsConfig(robot_joint)
#计算新的机器人位置
New_robot_position = transl(xyz_move)*robot_position
#计算新的机器人关节
new_robot_joint = robot.SolveIK(new_robot_position)
如果len(new_robot_joints.tolist()) < 6:
没有机器人解决方案!!新位置太远、够不着或太接近奇点”)。
继续
计算新关节的机器人结构
new_robot_config = robot.JointsConfig(new_robot_joint)
如果robot_config[0] != new_robot_config[0]或robot_config[1] != new_robot_config[1]或robot_config[2] != new_robot_config[2]:
打印(“警告! !机器人配置改变了!!这会导致意想不到的动作!”)
打印(robot_config)
打印(new_robot_config)
移动机器人关节到新的位置
robot.MoveJ (new_robot_joints)
# robot.MoveL (new_robot_joints)
我从python API文档中尝试了这个示例。我还是遇到了同样的问题。机器人只是抽搐而已。
代码:
从robolink导入* #导入robolink库
RDK = Robolink() # connect to RoboDK API(如果RoboDK尚未启动,则启动)
机器人= RDK。Item(", ITEM_TYPE_ROBOT) #取回机器人
X_move = 2
Y_move = 3
Z_move = -1
#获取当前机器人关节
robot_joint = robot. joint ()
#从关节中获取机器人位置(计算正运动学)
robot_position = robot.SolveFK(robot_joint)
#获取机器人配置(机器人关节状态)
robot_config = robot.JointsConfig(robot_joint)
#计算新的机器人位置
New_robot_position = transl([x_move,y_move,z_move])*robot_position
#计算新的机器人关节
new_robot_joint = robot.SolveIK(new_robot_position)
如果len(new_robot_joints.tolist()) < 6:
没有机器人解决方案!!新位置太远、够不着或太接近奇点”)。
继续
计算新关节的机器人结构
new_robot_config = robot.JointsConfig(new_robot_joint)
如果robot_config[0] != new_robot_config[0]或robot_config[1] != new_robot_config[1]或robot_config[2] != new_robot_config[2]:
打印(“警告!机器人配置改变:这可能会导致意外的运动!”)
打印(robot_config)
打印(new_robot_config)
#移动机器人到新的位置
robot.MoveJ (new_robot_joints)
# robot.MoveL (new_robot_joints)