V-REP教程(七)API function
浏览Regular API function list (by category)
1.文件操作类的 simSaveScene(“a.ttt”)
2.General object handle retrieval 通用对象句柄检索
ex.simGetObjectHandle
MotorHandle_Left=simGetObjectHandle('LeftMotor')
//LeftMotor是在场景中设置的joint名字,后面对它的控制用MotorHandle_Left
simGetIkGroupHandle 获得逆解组的句柄
逆解组的名字通过如下查看:
simGetObjects
对函数进行解释:用于获得同类型的0~所有的对象的句柄,比如控制四个电机,用 Motor=simGetObjects(4,sim_object_joint_type)。
3.General functionality handling 通用功能处理
e.g simulationTime=simGetSimulationTime()+simGetSimulationTimeStep()// result=simHandleGraph(graphHandle,simulationTime)//记录从开始到结束的全部数据
4.Collision detection functionality 碰撞检测功能
simGetCollisionHandle //句柄
simIsHandleValid //判断是否有效
simHandleCollision //处理
simReadCollision //读取
simResetCollision //重置
simCheckCollision //检查是否有碰撞
5.Minimum distance calculation functionality 计算物体间最小距离
和上面类似。
6.IK and geometric constraint solver functionalities 逆解和集合约束求解器函数
eg.
simComputeJacobian 计算雅可比
simGetIkGroupMatrix 得到逆运动学矩阵
table matrix , table_2 matrixSize=simGetIkGroupMatrix(number ikGroupHandle,number options) //matrixSize是矩阵的行列
有必要看一看矩阵输出的实现:
7.Path/Motion planning functionality 轨迹和移动规划
e.g simGetConfigForTipPose
随机搜索与给定的末端执行器位置/空间方向匹配的机械手configuration。
simGenerateIkPath
生成一条路径,将机器人从当前位置驱动到目标dummy的直线上。
table path=simGenerateIkPath(number ikGroupHandle,table jointHandles,number ptCnt,table collisionPairs=nil,table jointOptions=nil)
8.Dynamics functionality 动力学功能
e.g 设置关节力矩number result=simSetJointForce(number objectHandle,number forceOrTorque)
9.Proximity,Vision ,Force 三大传感器
另写文章
10.Joint object functionality 关节对象函数
simSetJointPosition
simGetJointPosition //设置和读取位置
simSetJointTargetPosition
simGetJointTargetPosition //设置和读取目标位置,先设置后读取
simSetJointTargetVelocity
simGetJointTargetVelocity//速度
simSetJointForce//设置关节力
simGetJointMatrix//获得关节的本征变换矩阵
11.………………………………
12.Simulation functionality
simGetSimulationState//获取仿真状态
simGetSimulationTime//获取仿真时间
simGetSimulationTimeStep//获取仿真时间间隔
simGetRealTimeSimulation//是否是实时的仿真
13.Matrix operations & transformations 矩阵操作方面
14.Signals 信号
simSetIntegerSignal//设置整型信号 number result=simSetIntegerSignal(string signalName,number signalValue)
simGetIntegerSignal//获取信号值 number signalValue=simGetIntegerSignal(string signalName)
simClearIntegerSignal//清除
simWaitForSignal//等待一个信号
……
浏览完毕
**实例**UR5
-- This is a threaded script, and is just an example!jointHandles={-1,-1,-1,-1,-1,-1}
for i=1,6,1 dojointHandles[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(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)
simRMLMoveToJointPositions 查表理解该函数
可知:该函数是控制几个关节同时转动,只能在线程脚本中使用。
动作如下:
实例 IRB4600
setIkMode=function()simSetExplicitHandling(ikGroup,0) -- that enables implicit IK handling //设置显式处理ikGroupsimSwitchThread()
endsetFkMode=function()simSetExplicitHandling(ikGroup,1) -- that disables implicit IK handlingsimSwitchThread()simSetObjectParent(ikTarget,ikTip,true)simSetObjectPosition(ikTarget,ikTip,{0,0,0})simSetObjectPosition(ikTarget,ikTip,{0,0,0}) //设置对象位置,第一个参数是要设置的,第二个参数是参考坐标系,第三个是在参考坐标系中的坐标;
endmoveToJointPositions=function(newPos,velF)if not velF then velF=1 endlocal accel=40*math.pi/180local jerk=20*math.pi/180local currentVel={0,0,0,0,0,0}local currentAccel={0,0,0,0,0,0}local maxVel={velF*175*math.pi/180,velF*175*math.pi/180,velF*175*math.pi/180,velF*250*math.pi/180,velF*250*math.pi/180,velF*360*math.pi/180}local maxAccel={accel,accel,accel,accel,accel,accel}local maxJerk={jerk,jerk,jerk,jerk,jerk,jerk}local targetVel={0,0,0,0,0,0,0}simRMLMoveToJointPositions(jointHandles,-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,newPos,targetVel)
endmoveToAuxJointPosition=function(newPos,velF)//AUX是辅助的意思if not velF then velF=1 endlocal vel=40*math.pi/180local accel=10*math.pi/180local jerk=30*math.pi/180local currentVel={0}local currentAccel={0}local maxVel={vel*velF}local maxAccel={accel}local maxJerk={jerk}local targetVel={0}simRMLMoveToJointPositions({auxJoint},-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,{newPos},targetVel)
end
//到达两个位置的函数
threadFunction=function()-- Main loop:while simGetSimulationState()~=sim_simulation_advancing_abouttostop dosetFkMode()moveToJointPositions({90*math.pi/180,-30*math.pi/180,60*math.pi/180,0*math.pi/180,60*math.pi/180,0*math.pi/180})setIkMode()simSetObjectPosition(auxJoint,model,{0,1.5,0})simSetJointPosition(auxJoint,0)simSetObjectParent(ikTarget,auxJoint,true)moveToAuxJointPosition(360*math.pi/180)setFkMode()moveToJointPositions({0*math.pi/180,-30*math.pi/180,60*math.pi/180,0*math.pi/180,60*math.pi/180,0*math.pi/180})setIkMode()simSetObjectPosition(auxJoint,model,{1.5,0,0})simSetJointPosition(auxJoint,0)simSetObjectParent(ikTarget,auxJoint,true)moveToAuxJointPosition(360*math.pi/180)setFkMode()moveToJointPositions({-90*math.pi/180,-30*math.pi/180,60*math.pi/180,0*math.pi/180,60*math.pi/180,0*math.pi/180})setIkMode()simSetObjectPosition(auxJoint,model,{0,-1.5,0})simSetJointPosition(auxJoint,0)simSetObjectParent(ikTarget,auxJoint,true)moveToAuxJointPosition(360*math.pi/180)setFkMode()moveToJointPositions({0*math.pi/180,0*math.pi/180,0*math.pi/180,0*math.pi/180,0*math.pi/180,0*math.pi/180})end
end-- Initialization:
jointHandles={}
for i=1,6,1 dojointHandles[i]=simGetObjectHandle('IRB4600_joint'..i)
end
model=simGetObjectAssociatedWithScript(sim_handle_self)
ikGroup=simGetIkGroupHandle('IRB4600')
ikTip=simGetObjectHandle('IRB4600_IkTip')
ikTarget=simGetObjectHandle('IRB4600_IkTarget')
auxJoint=simGetObjectHandle('IRB4600_auxJoint')
//初始化,并且设置ikGroup
-- Main function:
res,err=xpcall(threadFunction,function(err) return debug.traceback(err) end)//执行线程函数,追踪错误
if not res thensimAddStatusbarMessage('Lua runtime error: '..err)
end//如果发生错误显示……
结果:
解释:
注意看图中的auxjoint,它通过simSetObjectParent(ikTarget,auxJoint,true)函数在仿真过程中成了target的parent,moveToAuxJointPosition(360*math.pi/180)让辅助关节转了360度,此时target也转了360度刚好画出了一个圆。
V-REP教程(七)API function相关推荐
- MongoDB 教程七: MongoDB和PHP结合开发
视频:MongoDB 教程七: MongoDB和PHP结合开发 Linux上安装 MongoDB PHP扩展 在终端上安装 你可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动 ...
- ASP.NET 5系列教程(七)完结篇-解读代码
在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]&quo ...
- MVC5+EF6 入门完整教程七
原文:MVC5+EF6 入门完整教程七 本篇我们针对表格显示添加一些新功能. 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序.过滤.分页. 文章提纲 理论基础/前置准 ...
- c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc
我的C语学习笔记- C语言教程(七) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...
- 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解
原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...
- 静态时序分析简明教程(七)]端口延迟
端口延迟 一.写在前面 1.1 快速导航链接· 二.端口延迟 2.1 输入有效 2.2 输出有效 2.3 set_input_delay 2.3.1 -clock clock_name 2.3.2 - ...
- java 新浪股票接口api_[Java教程]【API】新浪天气接口 Beta
[Java教程][API]新浪天气接口 Beta 0 2016-01-25 02:00:04 新浪天氣接口那是公認的好,可是百度之後發現很簡陋,所以自己寫了工具類,此處幫忙測試下其中的天氣接口,看有哪 ...
- C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)6 -将项目部署到IIS,及常见错误解决方案
C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)6 -将项目部署到IIS,及常见错误解决方案 1.前言 2.安 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block
黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block 原文:黄聪:Microsoft Ent ...
最新文章
- Yolov3网络架构分析
- 漫画算法:什么是一致性哈希?
- Machine Learning week 3 quiz : Logistic Regression
- FOSS历史回顾:三代开源人的故事
- java四神兽_SpringCloud五大神兽之Eureka
- 2015《大数据》读者意见征集活动——幸运读者名单
- 面试官系统精讲Java源码及大厂真题 - 37 ThreadPoolExecutor 源码解析
- CodeSmith Professional 5与VS2010有冲突
- JDI考虑让日本国内部分工厂停工 因苹果公司需求低迷
- 全栈出征,京东技术基石如何为“618”大促护航?
- ISA server 的备份与还原
- 2012-11-26 → 2012-12-02 周总结:项目又有新需求了,很兴奋
- 用外挂只为“吃鸡”成功?为什么不试试正当手段!
- PDF文档加密签名处理
- 渝粤题库 陕西师范大学 《教育社会学》作业
- 前端打印复选框的打勾时问题求教
- TCP/IP协议栈扫盲班
- 基因编辑最新研究进展(2022年3月)
- java 将数据生成word文档,并实现打勾选择框
- SAP BASIS经验书