webots仿真机器人平台

Webots机器人仿真平台介绍

第一部分:Webots的前世今生

 webots仿真机器人平台

Webots是Cyberbotics公司出品的便携式机器人仿真平台,可运行在windows,Mac和Linux上,内建3D编辑器,可构建3D机器人模型。应用C++或JAVA或者MATLAB编辑机器人程序可模拟机器人的动作。也就是说,它支持多种编程语言,包括C, C++, JAVA, Python, Matlab, VRML97。

    Webots是一个商业产品,最新的版本是7.2.4,目前网上存在的只有6.2.4的破解版,从官网下载的版本刚开始打开的时候是试用版(Free),这个免费版本是个鸡肋,它不允许用户修改机器人的控制器的代码,就是说,你不能写自己的控制器,图1.1可以看出来不同版本的区别。下载之后,从官网注册一个账号之后用注册的账号在软件的Preference中的License注册,可以免费使用30天的PRO版本,或者EDU版本。PRO版本是旗舰版,涵盖了软件所有的功能,所以使用的时候推荐使用PRO版本。

webots仿真机器人平台


图 1.1

    这个软件学起来其实很容易,就是一个仿真平台,并且封装和提供了各种API函数。这个软件的学习资料中文版的很少,几乎没有,我知道的只有一个“Webots使用介绍.pdf”这个中文教程,但是它其实就是官网的第一个教程的翻译而已。官网或者软件本身提供了两个很好的很强大的英文学习资料,并且以pdf格式和html两种形式发布,一个是UserGuide(用户指南),一个是Reference Manual(参考手册)。 我推荐在网页直接看,因为网页的目录做得很好,查找方便,另外,用google浏览器还可以直接网页翻译,遇到不认识的英文词句就可以很快捷地理解他们的意思了。

官网:http://www.cyberbotics.com/

用户指南:http://www.cyberbotics.com/dvd/common/doc/webots/guide/index.html

参考手册:http://www.cyberbotics.com/dvd/common/doc/webots/reference/

学习建议是:照着官网的用户指南学习,主要是学习两个方面,1.Getting Started with Webots,熟悉Weobts平台的界面;2.Tutorials,学习tutorial1-6一步一步地学会写创建机器人,编写控制器代码。在学习指南的过程中,有任何不懂的地方可以迅速查看参考手册的内容,对于每一个节点的数据结构,每一个API函数的功能,参数,使用方法,参考手册都有很详尽的介绍,有时还有例子说明。等到把指南看完,对Webot这个软件的使用也就算入门了。

下面我整理一下暑假看的关于Webots的一些重要的内容,其实这些内容都可以在用户指南和参考手册中找到的。不过我把自己看的时候的心得体会一起写下来,而且是独一无二的中文版介绍,所以还是有很大的参考意义的。

因为暑假看的都是Webots7.2.4Windows版本的,所以下面的内容都是基于Webots7.2.4Windows版本的,Webots每个版本的变化有多大我不知道,我只知道6.2.4破解版版本和7.2.4版本的最大区别就是6.2.4破解版建立一个水平的地面太难了。很多7.2.4版本的程序不能再6.2.4版本运行的原因就是没有一个地面,因为加载不进来,地面这个node两个版本不一样,而我没有找到6.2.4版本的地面要怎么构建,虽然我尝试过。


第二部分:Webots快速上手

 

1.要求,至少会webots支持的语言的其中一种,编程语言主要是用来控制机器人的动作的。

2.界面

如图1.2,除了标准的菜单栏,Webots分为四大板块,左边是场景树(SceneTree),中间是3D窗口,右边是代码编辑区(Texteditor),下边是控制台(Consol)。

场景树的作用是创建和编辑机器人及其周围环境的模型,整个3D仿真环境的每一个物体的属性都可以在场景树中调整,包括物体的长宽高,材质,颜色,相对于世界坐标系的位置,旋转角度。

3D窗口和场景树相辅相成,注意;

鼠标左键是改变观看的视角,右键是改变物体的位置,滑轮可以调整画面的缩放。

SHIFT+鼠标左键是移动物体,SHIFT+鼠标右键是将物体绕旋转轴旋转,SHIFT+鼠标中键是调整物体的高度。如下图:

webots仿真机器人平台




代码编辑区就是编写控制器代码,在场景树中把机器人的controller这个属性改成自己写的控制器文件,就可以在这个编辑区中修改和控制机器人的运动。每次编辑完代码,都要先点击一下保存,然后再点击runthe simulation去运行。

控制台和VS控制台一样,都是显示调试时候的参数还有显示你代码中的输出。

图1.2

3.创建一个简单的应用

点击向导(wizard)->新项目目录(newproject directory),弹出

webots仿真机器人平台

点击next,然后弹出

webots仿真机器人平台

选择一个存放项目文件的目录。

再点击widzard—>new robot controller,先选择编程语言,然后选择控制器的名字,这样,你就在选定的文件夹内新建了一个项目,这个项目有一个你命名的控制器文件,项目的可执行文件时.wbt文件,这个文件相当于vs2010的.sln文件。点击代码编辑区的save,然后点击build。。

接下来导入机器人,为了关联这个机器人和控制器程序,我们需要在导入的机器人的controller这个属性设置为自己写的控制器文件名。点击场景树的Addnew按钮,就可以选择各种各样webots提供的机器人,包括有aibo,create,达尔文,nao等知名的机器人。

导入机器人之后,我们点击3D窗口的runthe simulation 按钮,就开始仿真了,也就是说机器人开始按照控制器代码运动,点击stopthe simulation 就可以结束仿真。

第三部分:Webots深入学习

1. 如何给一个物体添加一个力或者力矩,我们先来看userguide是怎么说的: 

按下ALT+鼠标左键并且拖动鼠标,这样就可以拖动物体了(linux就要同时按下Ctrl+Alt+鼠标左键);对于施加力矩,ALT+鼠标右键并且拖动鼠标。

2.使用什么编程语言?

因为Webots提供的代码都是基于C或C++语言的,所以如果使用C或C++语言的话可以很方便地了解Webots的程序,我学习并使用了Matlab,并把UserGuide中提供的C或C++的代码用Matlab语言替代。其实Matlab的编程和C或C++语言的区别并不是很大,学习一阵时间,就会发现二者的区别很少,完全可以相互替换的。

在Webots中,Matlab编程和c语言编程的一个重要的区别Matlab不需要写c必须写的一个初始化函数:wb_robot_init()和 一个清理函数:wb_robot_cleanup(),从下面C语言的标准初始化程序可以看出。

3.关于ROS

       我对于ROS没有了解,和Webots的关系也是放一边没有研究。

4.如何查找API函数的用法?

下面是一个用C语言实现的“HelloWorld!”程序。

从中可以看到很多Webots的基本规范,包括头文件,webots提供的API函数如wb_robot_step(32)。现在我不明白wb_robot_step(32)这个API的用法,那么赶紧去查用户手册(ReferenceManual),怎么查?

Webots提供的API函数有着很好的命名规范,所以如果你看到wb_robot_这样前缀的API函数,那么这个函数就跟robot有着一定的关系,如果看到wb_motor这样前缀的API函数,那么这个函数就跟motor有着一定的关系,现在,我们在网页打开用户指南,点击Nodesand API Functions,这个地方存放了webots的精华,绝大多数常用的节点和API函数的解释都可以在这里查到,接着点击robots,使用Ctrl+F查找wb_robot_step()这个函数,很快就可以看到:

这么详尽的解释了。

5.如何搭建一个自己的机器人

具体可以看Tutorial6, 或者更难的。


6. 如何控制轮式机器人的行走

轮式机器人都会至少安装有两个舵机,通过控制这两个舵机控制的*的旋转速度和方向,就可以实现前进,后退,向左拐弯,向右拐弯等。比如向左拐弯,可以让左边的*速度变慢,右边的*速度变快,就可以了。

7. 如何控制双足机器人的行走

       Webots控制双足机器人的行走有两种方式:

(1)直接循环读取文件。这些文件存放了每一个时间点的关节角序列,机器人的每一个关节角都确定之后,赋给舵机,机器人自然能够行走。这些文件的关节角序列需要提前测好并写入文件。

(2)自己计算得到。

(3)这个只有NAO机器人拥有,NAO机器人的生产公司提供了一些API函数调用,在Webots中也集成了这些API函数,所以可以直接调用函数来控制机器人行走。(可以参考Webots给的样例程序-关于NAO的)

这个模型图画出来之后,每一层的节点就十分清楚明白了。构建机器人也就十分简单了。还有一点很重要的就是,构建机器人的一些组件时,必要的时候可以先简单地计算一下每一个顶点的相对位置。

webots仿真机器人平台 



8.如何学习 Tutorial?

       只需要好好认真地学习前面6个Tutorial,而且这个教程是循序渐进的,它会手把手地叫你从创建第一个仿真开始,教会你学习如何调用机器人,比如轮型机器人的旋转,双足机器人的行走,同时可以画图,比如绘制机器人双足运动时候的压力变化图。然后如何添加一个物体,修改物体的一些属性,包括颜色,大小,旋转角度,如何给一个物体添加纹理,如何组合物体形成一个新的几何形状,最后Tutorial6 教我们如何自己设计一个和E-PUCK一模一样的四轮机器人,并且设计一个控制器,使得机器人可以靠两个距离传感器来判断前面是否有障碍并避开障碍的算法。

webots仿真机器人平台

9.为什么需要Webots仿真平台?

   机器人大多数都很昂贵,一个良好的仿真平台可以事先检测自己算法的优劣而不会轻易损坏机器人。而且webots也提供了和真实机器人的接口,可以用自己的算法检测实际的机器人。

 

webots仿真机器人平台

上一篇:C#与C/C++的交互


下一篇:JQuery入门指南(2):一些常用的特效