线程评级:
  • 0 (s) - 0平均投票
  • 1
  • 2
  • 3
  • 4
  • 5
出口的六轴机器人关节位置
# 1
你好,

我使用JointsSpeedAccel。py宏观出口六轴机器人关节位置。我想知道的值对应于每个轴出口的位置吗?有极坐标系?
我认为宏观出口在笛卡儿坐标和欧拉角关节位置。

谢谢,
Yohan


附加文件
.rdk (1).rdk中篇小说站(尺寸:416 KB /下载:56)
# 2
你好,

脚本出口的共同价值观的机器人,在度。
您可以修改脚本添加笛卡尔的值。

代码:
#这个脚本生成一个图表的模拟计算关节关节速度和加速度
JointsPlayback #提示:使用脚本。py沿记录关节

从robolink进口* # API与RoboDK沟通
从robodk进口* #基本矩阵运算
从时间进口gmtime strftime时间


#仿真比例:较低的更准确
SimulationSpeed = 0.05 #一个程序,需要5秒的时间,将在模拟SimulationSpeed倍(或慢如果< 1)

#采样时间:多长时间我们想要一个新条目
SampleTime = 0.05

#,从而获得更好的结果:
#选择tools-Options-Motion
#设置最大路径步骤(0.01毫米)
#设置最大路径步骤(度)到0.01


#开始RoboDK API
RDK = Robolink ()

t_ratio = 1 / SimulationSpeed
RDK.setSimulationSpeed (SimulationSpeed)

#问用户选择一个机械臂(机制被忽略)
学监= RDK。ItemUserPick(“选择程序”,ITEM_TYPE_PROGRAM)
如果不是prog.Valid ():
提高异常(机器人不可用)

机器人= prog.getLink (ITEM_TYPE_ROBOT)
.list ndofs = len (robot.Joints () ())

#生成一个文件在同一文件夹,RDK文件
file_path = RDK.getParam (PATH_OPENSTATION) + ' /关节- + prog.Name () + ' . csv '

def joints_changed (j - 1、j2、宽容= 0.0001):
”““返回True,如果关节关节1和2是不同的”“
如果j - 1是没有或j2没有:
还真

j - 1, j2 zip (j - 1, j2):
如果abs (j1-j2) >公差:
还真

返回假

def diff (j - 1, j2, dt,自由度模):
”““返回True,如果关节关节1和2是不同的”“
如果没有或dt j2 < = 0:
返回[0]*自由度

res = []
j - 1, j2 zip (j - 1, j2):
res.append ((j1-j2) / dt)

返回res



#无限循环记录机器人的关节
打印(记录机器人关节文件:+ file_path)
与开放(file_path、“w”)作为支撑材:
joints_header = "、"。加入([“联合”+ str (i + 1)我的范围(ndofs)))
speeds_header = "、"。加入([“速度”+ str (i + 1)我的范围(ndofs)))
accel_header = "、"。加入([“Accel”+ str (i + 1)我的范围(ndofs)))
xyzwpr_header = "、"。加入([“X”、“Y”、“Z”,“W”,“P”,“R”))
fid。写(“时间(s),”+ joints_header +”,时间(s),“+ speeds_header +”,时间(s),“+ accel_header +”,时间(s),“+ xyzwpr_header)
fid.write (“\ n”)
joints_last =没有
speeds_last =没有
t_last =没有
t_start =没有

RDK.Render(真正的)
prog.RunProgram ()
虽然prog.Busy ():
()# # t_now =时间使用t_ratio估计
# t_now =浮动(RDK.Command (“SimulationTime”)) * 0.001

t_now =浮动(RDK.Command (“TrajectoryTime”)) # RoboDK运动模拟的内部时钟
.list关节= robot.Joints () ()
如果joints_changed(关节,joints_last):
如果t_last没有:
t_last = t_now
t_start = t_now

#计算时间
# t_sim = t_ratio * (t_now - t_start) #不需要如果我们使用RoboDK SimulationTime
# t_delta = t_ratio * (t_now - t_last) #不需要如果我们使用RoboDK SimulationTime
t_sim = t_now - t_start
t_delta = t_now - t_last
如果t_delta < SampleTime:
# 5 ms的时间精度好
继续

#计算速度
速度= diff(关节,joints_last、t_delta ndofs)

# Calcualte加速度
accel = diff(速度,speeds_last、t_delta ndofs)

#计算xyz
xyzwpr = pose_2_xyzrpw (robot.Pose ())

打印(“时间+ S: %。3 f s % t_sim)
joints_str = ", " . join (“%。6 f“% x x关节)
speeds_str = ", " . join (“%。6 f“% x x速度)
accels_str = ", " . join (“%。6 f“% x x accel])
xyzwpr_str = ", " . join (“%。6 f“% x x xyzwpr])

time_str = (“%。6 f % t_sim)
fid。写(time_str + joints_str +”、“+ time_str + speeds_str +”、“+ time_str + accels_str +”、“+ time_str + xyzwpr_str)
fid.write (“\ n”)
t_last = t_now
joints_last =关节
speeds_last =速度
#暂停(0.005)


找到有用的信息通过访问我们的关于RoboDK及其特性在线文档看我们的教程YouTube频道
# 3
这个脚本只出口共同的价值观,而不是笛卡尔。

你可以计算你的机器人的笛卡儿的位置使用SolveFK效应。




用户浏览这个线程:
1客人(年代)