Webots学习日志:官方教程要点 - dzyBK

时间:2024-03-05 15:36:37

一、前言与在线资料

         与Gazebo相比,Webots的中文入门资料相对较少,且基本上都是从Webots官方入门教程中摘取部分翻译出来的。要想了解Webots的全貌,还得从Webots官方文档出发。

Webots官方文档中,核心文档主要有三份,建议的学习或阅读顺序依次是:

                   (1)入门教程:https://www.cyberbotics.com/doc/guide/index

                   (2)参考手册:https://www.cyberbotics.com/doc/reference/index

                   (3)自动驾驶专题:https://www.cyberbotics.com/doc/automobile/index

         另外,还有两份文档,一份是关于最新动态的(主要是版本更新日志和最新功能介绍),另一份是关于技术问答的。

                   (1)最新动态:https://www.cyberbotics.com/doc/blog/index

                   (2)技术问答:https://www.cyberbotics.com/doc/discord/index

         同时,官方还提供了云端仿真环境,供研究者或兴趣者测试相关算法,并在测试结束后生成排名。

                   (1)云端服务:https://robotbenchmark.net/

 

二、本文目的与离线文档

         第一次学习Webots时就全面阅读了两三遍《入门教程》和《参考手册》,并结合实际操作做了详细的笔记,但所作笔记都是浓缩的要点且某些要点从不同的章节总结而来,也有一些当时认为不重要点没记录。当过了较长一段时间没使用Webots,希望看笔记快速回忆时,发现不能确切地将某些知识点映射到《入门教程》或《参考手册》对应的章节。于是又重新浏览一遍《入门教程》,浏览过程中发现的确很多知识点都是熟悉的或目前不关注的,如果能直接定位到自己期望的知识点,那将节省不少的时间。

         基于以上目的,决定用中文提炼出《入门教程》各个章节的要点,以供后续快速定位参考。同时,对一些我认为较基础或较重要的内容作详细说明。由于我主要的编程语言是C/C++和Python,所以涉及到编程语言相关的知识点,首先聚焦在C/C++,其次是Python,Java&Matlab将忽略。

         不知道是不是墙的原因,国内网打开Webots在线官方文档很慢,甚至很多时候打不开(外网则很顺畅)。然而,其实Webots安装后,官方文档也相应的安装了,位于WEBOTS_HOME/docs下。直接用浏览器打开index.html是不可行的,需要按README.md操作。

         首先,在WEBOTS_HOME/docs打开终端运行python -m http.server 8000。

         然后,在浏览器中输入链接即可。

                   http://localhost:8000/?url=&book=guide

                   http://localhost:8000/?url=&book=reference

                   http://localhost:8000/?url=&book=automobile

                   http://localhost:8000/?url=&book=blog

         或者直接单击MainGUI->Help->Offline document在MainGUI中查看,但不如浏览器中阅读得劲。

 

三、入门教程各章节要点

         本文内容是基于Webots2020-rev2-doc撰写。

前言(Foreword):知道Webots于2018年基于Apache2.0开源。

致谢(Thanks):略

1.直接安装(Installing Webots)

1.1系统要求(System Requirements):主机不要是10年前的就行、系统选Ubuntu长期支持版或Win8.1X64或Win10

1.2显卡要求(Verifying Your Graphics Driver Installation):选NVIDIA或AMD就对啦、安装或更新到最新驱动准没错

1.3如何安装(Installation Procedure)

         官网说了多种方法,我自己总结了两种简单易行的安装方式。

         (1)对于Ubuntu:下载deb包执行apt-get install ./webots_2020b-rev1_amd64.deb,ubunut20.04默认安装到/usr/local/webots。

         (2)对于Windows:下载exe包直接双击安装即可。

1.4关于许可证(Webots license agreement):主体是Apache2.0协议,部分插件是Webots Assets协议,部分社区贡献的插件提供了独立的使用许可证。

1.5用户数据收集(Telemetry):详细注明要收集客户端的哪些数据、可在MainGUI->Tools->Preference相应处禁用。

1.6帮助翻译文档(Translating Webots to Your Own Language):希望你帮助把Webots文档翻译成自己国家的语言,并告诉你如何呈交给Webots官方。

2.编译安装(Building Webots):略

3.基础知识(Getting Started with Webots)

3.1Webots简介(Introduction to Webots)

         介绍什么是Webots、可以用Webots做什么、一个Webots工程的组成、什么是World、什么是Controller、什么是Supervisor Controller,具体可参见官方文档。以下是我认为时间久了容易忘记的点,这些点不一定是核心但得知道。

         (1)Webots提供了许多机器人模型和控制代码,可以帮助使用者快速开始。

         (2)Webots提供了许多与实际机器人(如EPuck、Nao)相同的API,使得控制程序可以无缝应用到真实的机器人。

         (3)Supervisor是属性supervisor为TRUE的Robot。

3.2启动Webots(Starting Webots)

         Ubuntu和Windows直接单击应用图标都能启动,这里不多说明。首重说明以下三点。

         (1)root账户启动问题:我习惯于直接使用root账户,如果是在root账户下使用webots,每次启动需要附加参数--no-sandbox,稍显不便,更关键的是后续与ROS2结合使用Launch启动时,无处输入--no-sandbox参数,导致无法启动。解决方案是在/usr/local/webots相应处添加--no-sandbox参数。具体修改如下:

if command -v primusrun >/dev/null 2>&1; then

  primusrun "$webots_home/bin/webots-bin" "$@" "--no-sandbox" &

else

  "$webots_home/bin/webots-bin" "$@" "--no-sandbox" &

fi

         (2)终端启动命令:webots [options] [worldfile]。以下是常用选项。

                  --fullscreen:全屏启动

                  --minimize:最小窗口启动

                  --mode=pasue/realtime/run/fast

                  --stdout:重定向输出到终端(默认输出到GUI终端)

                  --stderr:重定向错误到终端(默认输出到GUI终端)

         (3)安全启动模式:Webots默认打开上次关闭的World,打开这个World,可能会因为其依赖的OpenGL存在问题一直卡在启动界面,若出现这种问题,可新增环境变量WEBOTS_SAFE_MODE并设为true,此时启动Webots就会打开一个空World。若想每次启动Webots不打开上次关闭的World或想打开一个空的World,也可以这么操作。

3.3主界面介绍(The User Interface):略

3.4三维窗口介绍(The 3D Window)

         介绍如何选择部件及其子部件、如何操作相机、如何操作部件、如何使用叠层窗,总结如下。

         (1)操作相机

                  旋转相机:按下鼠标左键并拖动(若选中对象则以其为旋转中心否则以相机自身为旋转心)

                  平移相机:按下鼠标右键并拖动

                  缩放相机:按下鼠标中键并拖动

                  复合操作:按下鼠标双键并拖动(水平拖动为旋转、垂直拖动为缩放、斜拖动则旋转并缩放)

         (2)操作对象

                  旋转对象:选中对象平移轴并按下鼠标左键拖动

                  平移对象:选中对象旋转轴并按下鼠标左键拖动

                  缩放对象:Ctrl

                  平行地面平移:选中对象并按下Shift和鼠标左键拖动

                  环绕地轴旋转:选中对象并按下Shift和鼠标右键拖动

                  平行地轴平移:选中对象并按下Shift和鼠标中键或左右键拖动

                  作用力到对象:指向作用点并按下Alt和鼠标左键拖动

                  作用转矩到对象:指向作用点并按下Alt和鼠标右键拖动

         (3)叠层窗口

                  共有在类叠窗:相机设备、深度设备、显示设备

                  叠窗可以*缩放尺寸、可以隐藏、双击转换为独立窗口

3.5场景树介绍(The Scene Tree)常用界面、不易遗忘、不强调。

3.6终端介绍(The Console)可并存多个终端、每个终端可绑定指定控制器、每个终端可绑定指定日志类型

3.7首选项介绍(Preferences)

         详见文档或打开软件查看。这里重点阐述两点。

         (1)General选项卡可设置:默认界面语言、默认启动模式(pasue/realtime/run/fast)、默认Python版本

         (2)OpenGL选项卡最佳渲染配置:AmbientOcclusion=Ultra、TextureQuality=High、MaxTextureFiltering=5、DisableShadows=False、DisableAntiAliasing=False。最佳性能配置则配置为相反的值。

3.8引用Webots(Citing Webots):略

3.9外设支持(Computer Peripherals):知道支持游戏手柄和虚拟现实头盔、且有手柄编程接口Joystick,详见文档。