1.solidwork 模型導出為URDF文件
V-REP(CoppeliaSim)可以導入obj、dxf、ply、stl、dae、URDF文件,這里介紹導入URDF文件。
在此之間需要獲得URDF文件,URDF文件可以編寫而成,通過在ROS下運行檢驗,也可以把三維模型導出。
在***solidwork軟件中導出URDF文件需要通過URDF插件***,插件下載地址為http://wiki.ros.org/sw_urdf_exporter,下載之后,直接進行安裝,完成之后需要在solidwork的插件管理器中打開。
完成上述之后,打開需要轉換的模型。點擊,工具—>file---->Export as URDF。
點擊之后出現如下圖,包含導出文件存儲位置、inertial(慣性)、visual(視覺)、collision(碰撞)。 內含對應的坐標系設置。 對於這類小零件,三個坐標系可以重合。VREP導入URDF文件時不能出現中文路徑,所以導出URDF文件時最好不要出現中文。然后,點擊完成即可。
2.VREP導入URDF文件
打開vrep,然后找到插件(plugins),點擊urdf import ,然后點擊import,找到文件路徑點擊導入。
導入效果如下,vrep已經根據urdf文件讀取了關節樹。
使用urdf文件建立模型,比使用stl文件在vrep中導入模型更加簡單、方便。
3.編寫Lua程序控制機器人
vrep中的腳本有兩種類型,一類為主腳本(the main script)和子腳本(child scripts),主腳本只有一個,且必須有,該腳本用於驅動場景,由於其的重要性,該部分代碼不允許用戶更改。子腳本則可以擁有多個,用來操作關節。在關節樹的頂點處,創建腳本。
添加以下代碼可以實現一些簡單的功能。程序包含一個函數sysCall_threadmain(),該函數可用於運行主要代碼。
代碼分成三部分,第一部分為獲取各關節句柄(handles),通過sim.getObjectHandle獲得,變量為關節名。第二部分設置一些RML vectors。第三部則通過函數sim.rmlMoveToJointPositions驅動機械臂運動。
-- RPR arm code
function sysCall_threadmain()
--get Joint handles
X_jointHandles=sim.getObjectHandle('X_Joint')
Z_jointHandles=sim.getObjectHandle('Z_Joint')
Y_jointHandles=sim.getObjectHandle('Y_Joint')
jointHandles={X_jointHandles,Z_jointHandles,Y_jointHandles}
--modelbase
modelBase=sim.getObjectHandle('RPR')
modelBaseName=sim.getObjectName(modelBase)
-- Set-up some of the RML vectors:
vel=540
accel=180
jerk=250
currentVel={0,0,0} -- speed
currentAccel={0,0,0}
maxVel={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}
maxJerk={jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180}
targetVel={0,0,0}
for i=0,6,1 do
sim.wait(1)
targetPos1={-40000*math.pi/180,0,0}
sim.rmlMoveToJointPositions(jointHandles,-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,targetPos1,targetVel)
targetPos3={0,0,0}
sim.rmlMoveToJointPositions(jointHandles,-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,targetPos3,targetVel)
sim.wait(100)
end
end
VREP的函數詳細資料可通過雙擊選中函數,點擊右鍵找到對應的API文件。