--高效传送带模型脚本
function sysCall_init() config={}-- Modify following to customize your conveyor:-----------------------------------------------config.size={1,0.2,0.1} --长宽高config.col1={0.2,0.2,0.2}--传送带颜色config.col2={0.5,0.5,0.5}--实体颜色config.initPos=0--初始位置0config.initVel=0.1--初始速度0.1config.accel=1.5--初始加速度1.5------------------------------------------------- To command the conveyor externally or from another script, simply do:---- sim.writeCustomDataBlock(conveyorHandle,'CONVMOV',sim.packTable({vel=0.1})) -- vel. ctrl---- or:---- sim.writeCustomDataBlock(conveyorHandle,'CONVMOV',sim.packTable({pos=0.1})) -- pos. ctrl---- Its current position can be read with:-- local data=sim.readCustomDataBlock(model,'CONVMOV')---- if data then--     local currentPos=data.currentPos-- endmodel=sim.getObjectHandle(sim.handle_self)--传送带 模型句柄visible1=sim.getObjectHandle('efficientConveyor_visible1')--可见模型1句柄visible2=sim.getObjectHandle('efficientConveyor_visible2')--可见模型2句柄forwarder=sim.getObjectHandle('efficientConveyor_forwarder')--前进句柄sim.setShapeColor(visible1,'',sim.colorcomponent_ambient_diffuse,config.col1)--设置颜色sim.setShapeColor(visible2,'',sim.colorcomponent_ambient_diffuse,config.col2)--设置颜色 sim.setShapeBB(visible1,config.size)--设置形状sim.setShapeBB(visible2,{config.size[1]+0.005,config.size[2]+0.005,config.size[3]})--设置形状 x,y方向稍微大些sim.setShapeBB(forwarder,config.size)--设置形状大小sim.setObjectPosition(visible1,model,{0,0,-config.size[3]/2})--设置模型位置sim.setObjectPosition(visible2,model,{0,0,-config.size[3]/2-0.0025})--稍微靠下sim.setObjectPosition(forwarder,model,{0,0,-config.size[3]/2})--模型位置pos=config.initPos--初始位置prevPos=pos--记录上一位置targetVel=config.initVel--目标速度:初始速度 vel=0--上一速度accel=config.accel--加速度sim.writeCustomDataBlock(model,'CONVMOV',sim.packTable({currentPos=pos}))--设置传送带位置
endfunction sysCall_afterSimulation()pos=config.initPos --仿真结束后,设置位置prevPos=pos--更新上一位置targetVel=config.initVel--设置为初始速度vel=0--更新上一速度accel=config.accel--设置为初始加速度sim.writeCustomDataBlock(model,'CONVMOV',sim.packTable({currentPos=pos}))--设置传送带回到初始位置
endfunction sysCall_actuation() local dat=sim.readCustomDataBlock(model,'CONVMOV')--读取传送带数据local offif dat thendat=sim.unpackTable(dat)if dat.offset thenoff=dat.offset--所需传送带的偏置量endif dat.vel thentargetVel=dat.vel--传送带速度endif dat.accel thenaccel=dat.accel--传送带加速度endendlocal velErr=targetVel-vel--计算速度调节量local velErrAbs=math.abs(velErr)local velErrSign=velErrAbs>1e-4 and velErr/velErrAbs or 1--移动方向if velErrAbs>1e-6 thenvel=vel+math.min(velErrAbs,accel*velErrSign*sim.getSimulationTimeStep())--更新速度endif off or vel~=0 then--偏置且速度非零if off thenpos=off--设置传送带位置为偏置量else--无设置偏置量时通过计算得到位置pos=pos+vel*sim.getSimulationTimeStep()--计算传送带位置endsetPos(pos)--更新传送带位置endif not dat then--数据为空dat={}enddat.currentPos=pos--记录传送带当前位置sim.writeCustomDataBlock(model,'CONVMOV',sim.packTable(dat))--写入数据块 传送带数据
endfunction setPos(p)    -- Here we "fake" the transportation pads with a single static rectangle that we dynamically reset-- at each simulation pass (while not forgetting to set its initial velocity vector) :-- 在这里,我们使用我们动态重置的单个静态矩形“伪造”运输垫-- 在每次模拟过程中(同时不要忘记设置其初始速度矢量):local relativeLinearVelocity={(p-prevPos)/sim.getSimulationTimeStep(),0,0}--沿着x方向相对线速度prevPos=pos--记录初始位置 -- Reset the dynamic rectangle from the simulation (it will be removed and added again)--从模拟中重置动态矩形(它将被删除并再次添加)sim.resetDynamicObject(forwarder)-- Compute the absolute velocity vector:计算绝对速度向量:local m=sim.getObjectMatrix(forwarder,-1)--获取前移矩形的位姿矩阵,并把位置设置为0m[4]=0 -- Make sure the translation component is discardedm[8]=0 -- Make sure the translation component is discardedm[12]=0 -- Make sure the translation component is discardedlocal absoluteLinearVelocity=sim.multiplyVector(m,relativeLinearVelocity)--绝对速度:  由相对线性速度变换到 前移矩形坐标系下。-- Now set the initial velocity of the dynamic rectangle:现在设置动态矩形的初始速度:sim.setObjectFloatParam(forwarder,sim.shapefloatparam_init_velocity_x,absoluteLinearVelocity[1])sim.setObjectFloatParam(forwarder,sim.shapefloatparam_init_velocity_y,absoluteLinearVelocity[2])sim.setObjectFloatParam(forwarder,sim.shapefloatparam_init_velocity_z,absoluteLinearVelocity[3])
end

【coppeliasim】高效传送带相关推荐

  1. 硬件测试的思考和改进:有道词典笔的高效测试探索

    作者/ 刘哲; 编辑/ Ryan ; 来源/ 有道技术团队(ID: youdaotech) 引言 当我们提到智能硬件的高效测试时,通常会考虑使用自动化测试的方案,提升产品的测试效率和质量. 由于智能硬 ...

  2. 工厂生产数据实时分析,产品质量高效管控

    背景 在全球掀起的新一轮工业转型浪潮中,智能制造面临巨大发展机遇.未来智能制造业生产方式将朝着智能化方向提升,个性化定制.网络化协同.智能化生产.服务化延伸成为引领制造业高端化的重要模式,个性化.定制 ...

  3. Android传送带动画,抖音定格传送带特效拍摄

    抖音定格传送带特效拍摄是非常有趣的特效软件,用户可以在这上面尝试各种好玩的特效视频拍摄哦,而且这上面还有非常多的拍摄技巧,可以和好友一起在这上面拍摄并分享出去哦,喜欢的伙伴们就可以下载试试的哦. 抖音 ...

  4. 【高效快递分拣设备】走进海格里斯HEGERLS仓储设备—大型物料输送设备皮带输送机

    随着电商订单数量的日益增加,电商物流对分拣环节的要求越来越高,它的自动化和智能化成为必然的发展趋势.伴随着订单的多品类.多批次配送需求的增加,为了提高分拣的效率,自动分拣系统发挥着至关重要的作用.该系 ...

  5. 高效绘图、图像IO以及图层性能

    http://www.cocoachina.com/ios/20150106/10840.html 高效绘图.图像IO以及图层性能 高效绘图 不必要的效率考虑往往是性能问题的万恶之源. --Willi ...

  6. iOS Core Animation Advanced Techniques(七):高效绘图、图像IO以及图层性能

    高效绘图 不必要的效率考虑往往是性能问题的万恶之源. --William Allan Wulf 在第12章『速度的曲率』我们学习如何用Instruments来诊断Core Animation性能问题. ...

  7. linux高效办公环境配置(vim、tmux、bash_profile)

    文章目录 Vim 个人设置(.vimrc) tmux 安装参考 个人配置(.tmux.conf) bash_prifile 个人配置(.bash_profile) shell Vim 个人设置(.vi ...

  8. 受用一生的高效 PyCharm 使用技巧(六)

    http://www.sohu.com/a/329854019_654419 大家好,今天我又来给大家更新 PyCharm 的使用技巧. 从第一篇开始,一直到本篇,一共更新了6篇文章,每篇 5 个小技 ...

  9. 受用一生的高效 PyCharm 使用技巧(四)

    https://blog.csdn.net/pdcfighting/article/details/93269028 大家好,距离最近一篇 PyCharm 使用技巧的文章已经过去一月有余,最近虽然也比 ...

最新文章

  1. 树莓派 raspberry安全关机命令重启命令
  2. ThinkPHP 3.2 中获取所有函数方法名,以及注释,完整可运行
  3. spark-1.5.2集群安装
  4. java如何实现乌龟爬行_乌龟是怎样爬行的
  5. 虚拟局域网软件开源_ZeroTier虚拟局域网免费远程桌面体验--替代TeamViewer
  6. 【ArcGIS风暴】ArcGIS自动生成标识码(BSM)的两种方法案例教程
  7. 35、JAVA_WEB开发基础之过滤器
  8. JPA 2.1实体图–第1部分:命名实体图
  9. 光耦驱动单向可控硅_华越国际一文带路:可控硅触发设计技巧
  10. 江西师范大学2017年C语言考试,2018年江西师范大学程序设计(C语言)考研初试大纲...
  11. django mysql处理_利用Django去操作数据库并完成简易的登录及编辑功能
  12. android 长截图拼接,Android拼接合并图片生成长图
  13. MATLAB中fspecial()函数的用法
  14. Burp Suite CA证书下载及导入教程
  15. 通过common-emai类库发送普通邮件和带有附件的邮件的完整示例
  16. 【揭秘】CSDN博客上,超过百万访问量的Android牛人都是谁?
  17. 航空公司VIP客户查询 (25 分)
  18. mongoDB数据库mong.conf配置文件的问题
  19. java第三方类库Guava开源组件使用
  20. Linux下编译pjproject-2.6并运行例程simple_pjsua

热门文章

  1. OKR还是集权制?750亿美金字节跳动的成长秘密
  2. dlib 面部表情跟踪
  3. 哪些是linux系统版本,linux系统主要有哪些版本
  4. c语言项目研发实训设计,关于软件设计实训心得体会(通用5篇)
  5. python从TXT导入两列数据绘图 直线多点等分坐标可视化
  6. 分数阶傅立叶变换程序汇总(转载)
  7. AD软件出现“Your license is already used on computer “LAPTOP-F99R6OR1“ using product “AltiumDesigner“
  8. PHP使用阿里云(语音合成)实现文字转语音“TTS“
  9. css特效(使用伪元素生成随机颜色爱心)
  10. php怎么插入画笔,ps画笔怎么设置