[机器人仿真]WEBOTS中创建轮腿机器人模型-并联闭环机构的创建和使用

想着做个轮腿的机器人玩玩,但是如果光用PID做算法,对于轮子加腿的结构似乎效果并不好,为了实现轮腿本身能够飞坡在一定高度下能够跳跃,我想着上个仿真模型来调试和学习LQR算法

机器人仿真的软件似乎挺多,我查到比较常用的有ROS套件的一个,还有就是webots

本着界面简单,开源(还有校园网方便下载)的缘故,选用了webots

不得不说,webots界面还算友好,就是这三维窗口用的我是真难受,和常用的建模软件solidworks操作方式不能说是完全一样吧,也可以说是完全相反,滚轮的灵敏度也是大的离谱

不过毕竟这玩意本职是控制系统仿真,三维嘛,能用就行。

webots网上教程挺多,b站上讲的也还算详尽,所以本文只会粗略的描述一下串联杆件的创建过程

串联杆件机身主体建模
首先左上角 文件-NEW-新建webots项目目录

找一个好找的文件位置,写好项目名字一直下一步直到创建完成

项目名称

点击完成,出现个黑窗口

按照网上教程点击添加,加上光照,地面,风景啥的

话说这木地板看起来挺不错的

创建ROBOTS对象,在ROBOTS的children下创建solid对象

solid的children下添加Shape

添加apperence和geometry性质,选择geometry选择BOX

这样我们就得到了只因身

修改geometry里面的参数,可以修改其大小

apperence则可以修改其颜色等外观

有了机身,就可以在上面创建杆件,一般是直接在solid下创建hingejoint,再去hinge joint下创建新的solid,也可以先创建一个位置坐标转换Pose,再去pose下创建joint,这样看起来会更格式化一些。

hingejoint使用方法可以参考官方文档webots/docs/reference/hingejoint.md at released · cyberbotics/webots · GitHub

joint下套joint,这样一个个套娃,最后得到这个

板凳(bushi)

把joint放在joint里,就可以用铰链接起来

但是两个已经有的solid,如何用同一个(至少看起来是)joint铰接起来呢?

并联杆件闭环-Solid referfence
这个问题困扰了我足足三天,直到中秋的假期消耗完才找出方法来

找到的教程要么是不付费没得看,要么是草草说两句如同某些防自学教材

直到两个小时前,我终于开悟了,当场找出了办法,也就写了这篇blog

首先,我们修改hingejoint的position参数,让四根杆件都旋转到合适的位置

然后,在左边右边其中一个杆件下,创建一个hingejoint

我们按照平常创建小车的方式,创建一个位置合适的轮子,记得给shape进行命名(改name属性,比如“车轮”)

然后,在需要并起来的右边杆件下,创建一个Pose

改参数,使得pose的位置为杆件的底端

复制上面创建的轮子hingejoint,直接粘贴到下方这个pose的children下

修改复制后新出现的轮子的位置,尽量和原来的重合

然后将复制来的hingejoint的endpoint(复制过来的轮子solid)删除,然后新建 Solidreference

打开Solidreference,添加..,添加上面命名的shape,如“轮子”

这样你就拥有了一个如何鬼畜都不分离的轮子(