Webots 舵轮底盘小教程

前言:

       自从webots2019开源后,我也决定去学习这个机器人仿真软件,总体来说非常令人满意。同僚刘福强和我是我们这片率先去自学这个仿真软件的。过程中,有许多艰辛。这个软件的教程在网络上只有这里说的非常详细,但是涉及的版本比较老,且有些地方可以用新的组件去替代。在此为大家介绍一些组件的使用,并去实现一个工程案例,以供后面的学弟们有所依据。这个案例是我和杨浩同学在学习中完成的。

     由于Robocon近年来比赛都趋向于是用舵轮底盘,其可以实现更好的机动性能,在此建立一个仿真项目,可以在物理环境中验证自己的系统和算法。以下为总体实现:

                            

Webots 舵轮底盘小教程

   图中红色部分为旋转电机,绿色为轮毂,蓝色为身体。

创建工程:

点击上方 Wizards -》 new project directory ,定义自己工作目录,命名自己的工程

                                   

Webots 舵轮底盘小教程

 

建立好项目后,首先需要添加地面,右击左边空白地方,点击 Add New ,添加floor,具体如下:

                                    

Webots 舵轮底盘小教程

 

在右栏可修改下面的相关参数,比如flooeSize,单位为m。

接下来最重要的就是添加机器人,右击左边空白地方,点击 Add New ,添加 Robot 如下:

                                

Webots 舵轮底盘小教程

 

参数设定如下:

                                                               

Webots 舵轮底盘小教程

 

translation表示的是平移机器人位置,定义name使我们在设定控制器时有所依据。boundingObject设定碰撞边界这与你的shape和transform有关。physics表示设定物理效果,里面可以设定密度和质量,由于形状固定,所以两者不可以同时设定。controller表示你的主要运行文件是什么,如果C或者C++则是编译好的exe文件,如果是python则是一个主要.py文件。此处以python为例。

首先需要给机器人添加一个身体,右击children属性,Add new,添加一个Shape,

                                                           

Webots 舵轮底盘小教程

 

DEF表示定义工程组件的名字,此处供开发人员辨识关系。可以看出主要定义的就是外观和形状,由于身体是长方体所以右击 geometry Add New在Base nodes中找到 Box,其他形状同理。然后设置参数。外观设置 为 右击 appearance Add New,添加Appearance ,此后双击Material,更改里面的diffuseColor即可。

给身体添加碰撞边界,右击boundingObject,添加在USE中寻找你所定义的Shape或者Transform,OK后你会发现物体边界出现白线。最后添加physics,设置相关质量或者密度参数。

身体定义后,此时需要定义lf_dir_motor(左前转向电机)关节位置。这里可以使用Servo方式,这种方法比较简单,但是但来的问题是没有办法获得角度反馈。此处我们使用HingeJoint组件。

由于和身体是父子坐标关系所以,HingeJoint需要添加在Body的children下面,和body_shape并行,鼠标点击body_shape,右击后Add New ,Base nodes中找到HingeJoint。以下是四个转向电机的构造                                                                                                                                                    

Webots 舵轮底盘小教程

 

以 lf_dir为例,

Webots 舵轮底盘小教程总共有三个参数需要进行设置。jointParameters主要设置铰链轴的方向和位置,其他也有弹簧系数和静摩擦系数等。device可以添加刹车,角度传感器,电机。endPoint这里我们设置相应的杆件或者旋转体,这里使用Solid。在阿龙教程里,他实现封闭连杆机构,自己编写了底层,在新版本里没有必要,这里或许可以给你启发。

                        

Webots 舵轮底盘小教程

 

Webots 舵轮底盘小教程

 

设置左前轮转向机构的铰链轴 在左上方的位置,旋转轴为y轴正向。在device中添加motor,加速度,扭矩,最大速度可以依据需要设定,其自带了PID控制,所以只需要设定相关参数,从左到右为P,I,D,其是位置控制模式。name设置为 lf_dir_motor,这里为程序中寻找控制组件为依据。PositionSensor其实就是角度传感器,也是在程序中调用即可,其可以依据需要添加noise。

在endPoint中添加Solid组件,注意此处的坐标在body上,所以需要进行平移,设置如translation,在children中添加Shape,参数配置过程如Body。同理设置boundingObject和physics。

                                                         

Webots 舵轮底盘小教程

 

左前轮转向机构至此设置完成。此时需要添加左前轮轮毂。有轮毂和转向轮为串级坐标关系,所以接下来的组件需要在转向机构的children下面配置,具体可以参见上图。同理Add New,添加HingeJoint。同理配置相关的驱动参数,即可。这里电机定义为 lf_run_motor。

Webots 舵轮底盘小教程 Webots 舵轮底盘小教程 Webots 舵轮底盘小教程

以上为具体的配置过程,需要注意的是,由于轮毂旋转绕中心轴所以定义jointParamenters axis为Z轴正方向,anchor在旋转机构坐标系Y轴偏下0.07m,同理 lf_run_Solid需要Y轴偏下0.07m,保证旋转中心重合。同时需要调整Cylinder绕X轴旋转90度作为轮子的模式,如lf_run_Solid rotation配置。同理其他添加boundingObject和physics。电机参数依据需要设定,配置过程如之前所述。

以上述流程设置四个舵轮系统就可以完成整个过程。

创建控制器:

点击上方 Wizards -》 New Robot Controller,具体如下:

                                       

Webots 舵轮底盘小教程

 

选择非常多,这里我是用python,其要求环境为python3.7。创建的控制器会自动保存到文件系统的controller下面

                             

Webots 舵轮底盘小教程

 

但是有可能建立的机器人属性 

Webots 舵轮底盘小教程这里会出现void(此为webots文件目录下的一个默认的控制器,里面什么都没有),此时需要你手动select你建立的文件即可。

个人比较喜欢使用VS2019进行编辑,可以建立一个VS 的python项目,主文件和你创建的控制器同名即可,我的是duolun.py。

                                  

Webots 舵轮底盘小教程

 

controller.py 和  vehicle.py 是webots python的库,组件函数可以在里面寻找,非常方便,你可以在webots软件目录下找到,复制粘贴即可。

以上为简单的控制代码实现,底盘原地旋转过程。

最后,总的工程已经放在了我的Github上。

                                                     

Webots 舵轮底盘小教程

如果你觉得对你有很大的帮助,欢迎微信赞助,可以继续我的工作。

                             

Webots 舵轮底盘小教程

Webots 舵轮底盘小教程

来源:JameScottX

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年8月5日
下一篇 2019年8月6日

相关推荐