前言: 非常高兴能作为古月居的签约作者,以后将推出更有价值的文章,以供参考。 由于最近要参与一个等效为机械臂的项目,肯定需要做仿真,在加上好友青云同样想要学习机器人仿真软件,特此推出这个简单的教程,基于的环境是Webots-2020a。另外,在很早之前,自己也推出了一个舵轮底盘的教程,但是相对于机械臂来说,结构稍显简单。这次为构建一个三自由度机械臂作为参考案例。最终效果图如下
首先,在webots中建立一个工程,点击上方Wizards,新建工程为mii_hand。
然后,在建立环境,为hand.wbt, 一路确认。
然后,在左边列表栏,鼠标右击,Add new,展开Base nodes, 添加一个Robot节点。
添加后,左侧展开Robot节点,找到children,children很重要,后面不同组件的关系都是依据在children 下并行连接还是串行连接。这里我们需要给这个机器人添加一个主体形状,右击children, 点击Add New,找到Base node添加一个Shape, 需要配置他的几何形状(需要右击geometry, 然后Add New,在Base node下面)和外观(需要右击material, 然后Add New,在Base node下面),具体的配置如下,这是一个黄色的圆柱体。
有了具体形状,那么我们肯定还需要配置他的物理效果。首先需要为它添加碰撞边界,首先需要重新命名所建立的Shape, 点击Shape后在下方找到DEF,修改为BODY。然后在Robot节点下面找到boundingObject,右击添加,找到USE,具体如图所示,可以找到BODY(Shape)。然后,找到physics Physics,直接添加物理属性。这里如果不做修改,默认质量按 体积*密度。关键点如下图。
完成上述后,最后一览效果如下。此时,运行仿真,圆柱体就会立在地面上。
接下来添加机器人关节,需要为机器人添加铰链(HineJoint),在BODY shape 下面,右击添加Base node 下面中的 HingeJoint。
首先为铰链添加一个实体(Solid),先展开HingeJoint,同样上面的操作,添加Solid。
同样之前的操作,添加形状为 Cyliner,然后配置他的大小,颜色等。
配置大小,位姿,形状如下橙黄色圆柱体所示
接下来配置电机实体的碰撞编辑和物理效果,与之前的BODY操作一致。
接下来配置,铰链的位置信息,如下。其中,主要是axis 和 anchor ,分别的表述意思为轴朝向和轴坐标位置,仔细观察前面的实体左边,你会发现和圆柱实体中心重合,这符合旋转电机特点。
接下来为铰链添加设备,这里添加电机,当然还可以添加位置传感器,一般的电机API中可以返回位置信息,所以可以选择不用在添加。
接下来配置电机具体参数,其中有很多属性,这里只配置最大速度和最大扭矩,其他保持默认,该假设电机为理想的模型。
此时点击上方运行,可以发现铰链关节随主体一起运动(我这里对机器人添加干扰力,使其翻倒)。
接下来,需要给铰链添加延伸的肢体,相似的,在铰链关节下Solid的children下添加Solid,此时肢体的父坐标系就是电机的Solid。
由于,第一个肢体是一个L形的形状,需要两个长方体Shape拼接而成,此处,需要用到Group和Transform,前者可以理解为将多个Shape组合为一个对象,后者则是对对象的一个位移和旋转变换。 同样的流程,在肢体Solid下面添加Group
然后添加 Transform
在 Transform 下添加 Shape,配置形状,大小,及纹理参数。
同样的操作,配置第二个肢体第二部分
此时,需要配置肢体的碰撞边界时,只需要重新定义Group就可以,然后添加物理效果,具体配置如下图
然后,则需要配置下一个关节单元。在上面配置的肢体下面的children下面添加HingJoint,与上面同样的流程,电机属性一致,不相同的参数部分有以下所示,
那么,同理,如果要进行下一段肢体的配置,则在 Motor2 下的Solid 下的children下,添加肢体的Solid即可。具体配置与上述同理,具体参数如下
然后,就可以配置第三个电机单元和下一段肢体。配置流程,同上述的过程,配置的效果如下
然后,运行仿真(我这里对机器人添加干扰力,使其翻倒),可以看到
初步总结: 配置的核心思想就是,一个实体或者组件,在父节点的children下就意味着,该实体或者组件坐标系从属父节点的坐标系。对于串级的机械臂,配置可以是K级坐标系在上K-1级坐标系下,这是一种比较容易理解的方法。当然,不只有这一种配置方法。 接下来,建立一个简单的控制器(python),驱动电机单元。点击上面的Wizards,点击New Robot Controller,一路next,
我是使用 VSCode打开可以看到,
这一步很关键,需要将Robot下面的控制器修改为我们新建的控制器,展开Robot,找到controller,具体如下,
紧接着,编写控制器内容。这里我们简单调用那三个电机,跑到一个固定位置下。
最终运行的效果如下所示,可以见到机器人把手举了起来。
总结: Webots构建机器人简易模型是非常容易的,建模方法不只有这一种。这个过程在给与一个简单的例子,方便大家理解。如果熟悉了整个流程,那么就可以很容易去构架其他的串级关节的机器人,比如构建一个四足机器人。
最后,如果有什么疑问,欢迎大家留言。