想着做个轮腿的机器人玩玩,但是如果光用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,如“轮子”
这样你就拥有了一个如何鬼畜都不分离的轮子(