zoukankan      html  css  js  c++  java
  • 机械臂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文件。
    在这里插入图片描述

  • 相关阅读:
    外部中断实验
    冒泡算法代码
    第5章 嵌入式系统开发与维护知识 5.1
    C语言学习视频,栈,队列,链式栈,链式队列
    USART的配置
    树的一些基本概念
    mysql外键
    数据结构之【队列】
    数据结构之【栈】
    数据结构之【数组】
  • 原文地址:https://www.cnblogs.com/deciduousmap/p/13154241.html
Copyright © 2011-2022 走看看