首页 > 代码库 > V-rep学习笔记:Reflexxes Motion Library
V-rep学习笔记:Reflexxes Motion Library
V-REP中集成了运动生成库Reflexxes,这家公司已经被谷歌收购。
随着计算机技术的发展,数控系统已经从最初的由数字逻辑电路构成的硬线数控系统发展到了以计算机为核心的计算机数控(Computer Numerical Control,CNC)系统。相对于硬线数控系统而言,CNC系统的控制功能主要由软件实现,并可处理逻辑电路难以处理的复杂信息,因而具有较高的柔性和更高的性能。
高速加工对CNC的最基本要求:以足够快的速度处理数据、为各进给轴加减速产生无冲击的理论值。高速加工CNC的核心技术是样条实时插补和无冲击的加速器。如果jerk(加加速读/突变)过大,可在短时间内实现加速,但同时会造成机床的振动,从而使所加工表面出现条纹,降低了表面质量。如果加加速过小,可以实现高的表面质量,但很难实现快加速功能。因此,为了保证在高速情况下加工出高质量表面,合理的机床加加速非常重要。
将UR5机器人从模型库拖到新建的场景里中,与其关联的代码里设置了当前关节速度、加速度以及运动过程中的最大速度、加速度、目标速度以及目标位置。然后调用simRMLMoveToJointPositions同时移动UR机器人的6个关节使其按照运动规律达到目标位置。
-- This is a threaded script, and is just an example! jointHandles={-1,-1,-1,-1,-1,-1} for i=1,6,1 do jointHandles[i]=simGetObjectHandle(‘UR5_joint‘..i) end -- Set-up some of the RML vectors: vel=180 accel=40 jerk=80 currentVel={0,0,0,0,0,0,0} currentAccel={0,0,0,0,0,0,0} maxVel={vel*math.pi/180,vel*math.pi/180,vel*math.pi/180,vel*math.pi/180,vel*math.pi/180,vel*math.pi/180} maxAccel={accel*math.pi/180,accel*math.pi/180,accel*math.pi/180,accel*math.pi/180,accel*math.pi/180,accel*math.pi/180} maxJerk={jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180} targetVel={0,0,0,0,0,0} targetPos1={90*math.pi/180,90*math.pi/180,-90*math.pi/180,90*math.pi/180,90*math.pi/180,90*math.pi/180} -- simRMLMoveToJointPositions: Moves (actuates) several joints at the same time using the Reflexxes Motion Library. -- This function can only be called from child scripts running in a thread --[[ number result,table newPos,table newVel,table newAccel,number timeLeft=simRMLMoveToJointPositions(table jointHandles, number flags,table currentVel,table currentAccel,table maxVel, table maxAccel,table maxJerk,table targetPos,table targetVel,table direction) --]] simRMLMoveToJointPositions(jointHandles,-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,targetPos1,targetVel) targetPos2={-90*math.pi/180,45*math.pi/180,90*math.pi/180,135*math.pi/180,90*math.pi/180,90*math.pi/180} simRMLMoveToJointPositions(jointHandles,-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,targetPos2,targetVel) targetPos3={0,0,0,0,0,0} simRMLMoveToJointPositions(jointHandles,-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,targetPos3,targetVel)
添加一个Graph记录基座转动关节的角位移,可以看出确实符合程序中的设置:0°→90°→-90°→0°
参考:
Reflexxes Motion Libraries Manual and Documentation
V-REP: Reflexxes Motion Library Demonstration
V-rep学习笔记:Reflexxes Motion Library