你好,
我最近获得了RoboDK的许可证,我想用键盘控制KUKA的手臂。我使用的是提供的样本
但是机器人对键盘的按压没有反应。如果我给'key'一个特定的值,然后运行程序,机器人就会抽搐。但它总是回到开始的位置。我使用的是kaka - lbr -iiwa-14- r820。这是代码的问题吗?我也试过其他机器人,但都有同样的体验。
我尝试了python API文档中的这个例子。我还是有同样的问题。机器人只是抽搐,仅此而已。
我最近获得了RoboDK的许可证,我想用键盘控制KUKA的手臂。我使用的是提供的样本
代码:
#这个宏允许使用键盘移动机器人
#注意:这只适用于控制台模式,你必须单独运行PY文件
#
更多关于RoboDK API的信息:
# //www.w5838.com/doc/en/RoboDK-API.html
输入help("robolink")或help("robodk")查看更多信息
从robolink导入* # API与RoboDK通信
从robodk导入* #基本矩阵操作
RDK = Robolink()
#方向键程序示例
#买个机器人
机器人= RDK。项目(ITEM_TYPE_ROBOT”)
如果不是robot.Valid():
打印(“车站里没有机器人。首先加载一个机器人,然后运行这个程序。”)
暂停(5)
抛出异常(“车站里没有机器人!”)
print('使用机器人:%s' % robot. name ())
打印('使用箭头(左,右,上,下),Q和A键来移动机器人')
打印('注意:这只适用于控制台模式,你必须单独运行PY文件')
#定义移动增量
Move_speed = 10
进口msvcrt
而真正的:
Key = ord(msvcrt.getch())
Move_direction = [0,0,0]
打印(关键)
如果key == 75:
print('箭头向左(Y-)')
Move_direction = [0,-1,0]
Elif键== 77:
print('箭头向右(Y+)')
Move_direction = [0,1,0]
Elif键== 72:
print('箭头向上(X-)')
Move_direction = [-1,0,0]
Elif键== 80:
print('箭头向下(X+)')
Move_direction = [1,0,0]
键== chr(113):
print (Q (Z +))
Move_direction = [0,0,10]
Elif键== 97:
打印(“(Z)”)
Move_direction = [0,0,-1]
#确保指定了移动方向
如果norm(move_direction) <= 0:
继续
#根据移动速度计算以mm为单位的移动
Xyz_move = mult3(move_direction, move_speed)
#得到机器人关节
robot_关节= robot.关节()
#从关节获取机器人位置(计算正运动学)
robot_position = robot.SolveFK(robot_关节)
#获取机器人配置(机器人关节状态)
robot_config = robot.JointsConfig(robot_joint)
#计算新的机器人位置
New_robot_position = transl(xyz_move)*robot_position
#计算新的机器人关节
new_robot_关节= robot.SolveIK(new_robot_position)
如果len(new_robot_关节.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 import导入robolink库
RDK = Robolink() #连接到RoboDK API(如果RoboDK还没有启动就会启动
机器人= RDK。Item(", ITEM_TYPE_ROBOT) #检索机器人
X_move = 2
Y_move = 3
Z_move = -1
#获取当前机器人关节
robot_关节= robot.关节()
#从关节获取机器人位置(计算正运动学)
robot_position = robot.SolveFK(robot_关节)
#获取机器人配置(机器人关节状态)
robot_config = robot.JointsConfig(robot_joint)
#计算新的机器人位置
New_robot_position = transl([x_move,y_move,z_move])*robot_position
#计算新的机器人关节
new_robot_关节= robot.SolveIK(new_robot_position)
如果len(new_robot_关节.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)