機械臂9---V-REP(CoppeliaSim)機器人仿真


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文件。
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM