虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学

相信看这篇博客的人都知道CoppeliaSim是做什么的,因此这里不多赘述。CoppeliaSim从最早的Vrep到现在已经更新了N个版本,从过去Vrep3.x开始使用的我这里小小地吐槽一下这个软件。CoppeliaSim每一个版本都有更新,问题是这些更新有时候不能向前兼容,而且时不时更新地让人不知所措(对于有紧急任务的时候真的很火大啊)。虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第1张图片
以本文所展示地逆运动学来说,CoppeliaSim在4.0.0之后又大变,推翻了过往所有的拖动模块链接之类的构建方式,转而采用直接通过代码来实现逆运动学。

2022年7月19日更新:

胎教版逆运动学教学视频:

https://www.bilibili.com/video/BV1XT411J7SM/?vd_source=664f9df27fdb05305d92c33305d1e122**

2022年7月20日更新

幼儿版逆运动学教学视频

https://www.bilibili.com/video/bv1kS4y177z5?vd_source=664f9df27fdb05305d92c33305d1e122

幼儿版逆运动学文字教学

请务必注意此教学均在CoppeliaSim版本4.3.0EDU版完成,非同版本会有很多不同之处。

现在开始教学,首先在左侧的Model browser中找到robots以及robots下的non-mobile,
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第2张图片

选中之后下面就出现了机械臂。这里我们选择UR5作为示范对象,
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第3张图片

把机器人UR5拖入场景。接着在Model browser中找到
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第4张图片

接着把机器爪RG2也拖入场景中。接着,在Scene hierarchy中把机器爪拖到机器人的connection下面。

然后选中RG2,接着点击上面一行中的图标在这里插入图片描述,就会出现这个物体位置的窗口
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第5张图片
在Position这一页,点击Parent frame,把X-coord.,Y-coord.和Z-coord. 都设为0。
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第6张图片
此刻机器爪已经在机械臂末端,只是角度还不对

所以点击在这里插入图片描述,出现物体的角度窗口
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第7张图片
同样的,在Parent frame中把三项都调成0
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第8张图片
接着再点击Add-Dummy
在这里插入图片描述
添加两个dummy,分别命名tip和target
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第9张图片
和前面一样,把tip与connection同级,把target拖至UR5下面
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第10张图片

然后调整位置,和刚才一样的方法。这里采用的是RG2(RG2的爪子长度大约是20cm,也没有横向的偏移,这个自己理解一下),所以tip的位置可以设为
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第11张图片
tip的角度可以设为
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第12张图片
为了保证仿真开始的时候不会出现太奇怪的行为,target与tip位置和角度的设定可以完全重合。

此刻,机器人已经调整好了。
下面开始写逆运动学代码,点击UR5机器人在这里插入图片描述旁边的脚本图标,就有下面的子脚本
虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第13张图片
把UR5的代码替换成下面的代码,逆运动学就完成了。

function sysCall_init()
    simTip=sim.getObject('./tip')
    simTarget=sim.getObject('./target')
    modelBase=sim.getObject('.')
    ikEnv=simIK.createEnvironment()
    ikGroup=simIK.createIkGroup(ikEnv)
    simIK.setIkGroupCalculation(ikEnv,ikGroup,simIK.method_pseudo_inverse,0,6)
    simIK.addIkElementFromScene(ikEnv,ikGroup,modelBase,simTip,simTarget,simIK.constraint_pose)
end

function sysCall_actuation()
    simIK.applyIkEnvironmentToScene(ikEnv,ikGroup,true)
    if not ikFailedReportHandle then -- We display a IK failure report message
            sim.addLog(sim.verbosity_scriptwarnings,"IK solver failed.")
    end
end

虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学_第14张图片

你可以根据需要修改target dummy的位置和姿态,CoppeliaSim会自动帮你完成逆运动学。

这期只是一个最简单的demo,希望可以帮到正在学CoppeliaSim 的你。

你可能感兴趣的:(强化学习,vrep,强化学习)