浏览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相关推荐

  1. MongoDB 教程七: MongoDB和PHP结合开发

    视频:MongoDB 教程七: MongoDB和PHP结合开发 Linux上安装 MongoDB PHP扩展 在终端上安装 你可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动 ...

  2. ASP.NET 5系列教程(七)完结篇-解读代码

     在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]&quo ...

  3. MVC5+EF6 入门完整教程七

    原文:MVC5+EF6 入门完整教程七 本篇我们针对表格显示添加一些新功能. 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序.过滤.分页. 文章提纲 理论基础/前置准 ...

  4. c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc

    我的C语学习笔记- C语言教程(七) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...

  5. 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解

    原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...

  6. 静态时序分析简明教程(七)]端口延迟

    端口延迟 一.写在前面 1.1 快速导航链接· 二.端口延迟 2.1 输入有效 2.2 输出有效 2.3 set_input_delay 2.3.1 -clock clock_name 2.3.2 - ...

  7. java 新浪股票接口api_[Java教程]【API】新浪天气接口 Beta

    [Java教程][API]新浪天气接口 Beta 0 2016-01-25 02:00:04 新浪天氣接口那是公認的好,可是百度之後發現很簡陋,所以自己寫了工具類,此處幫忙測試下其中的天氣接口,看有哪 ...

  8. 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.安 ...

  9. 黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block

    黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block 原文:黄聪:Microsoft Ent ...

最新文章

  1. Yolov3网络架构分析
  2. 漫画算法:什么是一致性哈希?
  3. Machine Learning week 3 quiz : Logistic Regression
  4. FOSS历史回顾:三代开源人的故事
  5. java四神兽_SpringCloud五大神兽之Eureka
  6. 2015《大数据》读者意见征集活动——幸运读者名单
  7. 面试官系统精讲Java源码及大厂真题 - 37 ThreadPoolExecutor 源码解析
  8. CodeSmith Professional 5与VS2010有冲突
  9. JDI考虑让日本国内部分工厂停工 因苹果公司需求低迷
  10. 全栈出征,京东技术基石如何为“618”大促护航?
  11. ISA server 的备份与还原
  12. 2012-11-26 → 2012-12-02 周总结:项目又有新需求了,很兴奋
  13. 用外挂只为“吃鸡”成功?为什么不试试正当手段!
  14. PDF文档加密签名处理
  15. 渝粤题库 陕西师范大学 《教育社会学》作业
  16. 前端打印复选框的打勾时问题求教
  17. TCP/IP协议栈扫盲班
  18. 基因编辑最新研究进展(2022年3月)
  19. java 将数据生成word文档,并实现打勾选择框
  20. SAP BASIS经验书

热门文章

  1. python 金融分析投资_Python金融数据分析全景图
  2. 【附源码】计算机毕业设计SSM小学英语学习系统
  3. python任务队列框架_超简便Python任务队列:huey
  4. 巧用CSS3之进击的青豆
  5. 2021-2027全球与中国核心网电信设备市场现状及未来发展趋势
  6. 菜鸟的学习之路----Springboot项目配置Swagger--maven方式
  7. 2023年天津美术学院油画(表现)考研上岸前辈备考经验
  8. 10分钟掌握Google搜索引擎关键用法
  9. 宝塔linux面板源码,用宝塔搭建自己的源码程序
  10. 微信多开的方案(win11)