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

文章目录

  • 1.solidwork 模型导出为URDF文件
  • 2.VREP导入URDF文件
  • 3.编写Lua程序控制机器人

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的插件管理器中打开。
机械臂9---V-REP(CoppeliaSim)机器人仿真_第1张图片
机械臂9---V-REP(CoppeliaSim)机器人仿真_第2张图片
完成上述之后,打开需要转换的模型。点击,工具—>file---->Export as URDF。
机械臂9---V-REP(CoppeliaSim)机器人仿真_第3张图片
点击之后出现如下图,包含导出文件存储位置、inertial(惯性)、visual(视觉)、collision(碰撞)。 内含对应的坐标系设置。 对于这类小零件,三个坐标系可以重合。VREP导入URDF文件时不能出现中文路径,所以导出URDF文件时最好不要出现中文。然后,点击完成即可。
机械臂9---V-REP(CoppeliaSim)机器人仿真_第4张图片

2.VREP导入URDF文件

打开vrep,然后找到插件(plugins),点击urdf import ,然后点击import,找到文件路径点击导入。
机械臂9---V-REP(CoppeliaSim)机器人仿真_第5张图片
机械臂9---V-REP(CoppeliaSim)机器人仿真_第6张图片
导入效果如下,vrep已经根据urdf文件读取了关节树。
使用urdf文件建立模型,比使用stl文件在vrep中导入模型更加简单、方便。

机械臂9---V-REP(CoppeliaSim)机器人仿真_第7张图片

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文件。
机械臂9---V-REP(CoppeliaSim)机器人仿真_第8张图片

你可能感兴趣的:(机械臂)