Webots介绍
- 1 介绍
- 1.1 概述
- 1.2 应用
- 1.3 入门要求
- 1.4 技术支持
- 1.5 仿真步骤
- 世界(webots定义)
- 控制器
- 超级控制器
- 1.6 平台能力
- 三维建模能力
- 物理引擎
- 外设支持
- 2 软件使用
- 启动webots
- 用户界面
- 文件菜单
- 编辑菜单
- 查看菜单
- 模拟菜单
- 构建菜单
- 叠加菜单
- 工具菜单
- 帮助菜单
- 主工具栏
- 3D 窗口
- 场景树
- 控制台
- 首选项
- 3 Webots 应用程序示例
- 演示
- 设备
- 环境
- 几何图形
- 行为
- 渲染
- 4 编程语言设置
- 控制器启动
- C/C++
- ROS
- TCP/IP
- 5 开发环境
- 项目文件层次结构
- 控制器目录
- 6 编程基础
- 7 教程
- 8 机器人
- 9 单板计算机
- 10 执行器
- 11 传感器
- 12 对象
- 参考
1 介绍
1.1 概述
- 授权协议:Apache-2.0
- 开发语言:C/C++ Python JavaScript
- 操作系统:跨平台
Webots是一款由商业变为免费的机器人仿真软件,拥有丰富的学习资源和社区。
Webots 是用于模拟机器人的开放源代码和多平台桌面应用程序。它提供了一个完整的开发环境来对机器人进行建模,编程和仿真。
它被设计用于专业用途,并且广泛用于工业,教育和研究。自 1998 年以来,Cyberbotics Ltd. 一直将 Webots 作为其主要产品。
Webots 提供了一个完整的开发环境来对机器人、车辆和机械系统进行建模、编程和仿真。
Webots是一款专业的移动机器人仿真软件包。它提供了一个快速原型制作环境,允许用户创建具有物理属性(例如质量、关节、摩擦系数等)的 3D 虚拟世界。用户可以添加简单的被动对象或称为移动机器人的主动对象。这些机器人可以有不同的运动方案(轮式机器人、腿式机器人或飞行机器人)。此外,它们可能配备许多传感器和执行器设备,例如距离传感器、驱动轮、相机、电机、触摸传感器、发射器、接收器等。最后,用户可以单独对每个机器人进行编程以表现出所需的行为. Webots包含大量机器人模型和控制器程序示例,帮助用户入门。
Webots 还包含许多与真实移动机器人的接口,因此一旦您的模拟机器人按预期运行,您就可以将其控制程序转移到真实机器人,如 e-puck、DARwIn-OP、Nao 等。可以添加新接口通过相关系统。
1.2 应用
- 移动机器人原型制作(学术研究、汽车行业、航空、吸尘器行业、玩具行业、爱好者等)
- 机器人运动研究(有腿、类人、四足机器人等)
- 多智能体研究(群体智能、协作移动机器人群体等)
- 适应性行为研究(遗传算法、神经网络、人工智能等)。
- 机器人教学(机器人讲座、C/C++/Java/Python编程讲座等)
- 机器人竞赛(例如 Robotstadium 或 Rat’s Life)
1.3 入门要求
要对自己的机器人控制器进行编程,需要具备 C、C++、Java、Python 或 MATLAB 编程语言的基本知识。然而,即使您不懂这些语言,您仍然可以使用称为 BotStudio 的简单图形编程语言对 e-puck 和 Hemisson 机器人进行编程。
如果您不想使用 Webots 中提供的现有机器人模型,而是想创建自己的机器人模型,或在模拟环境中添加特殊对象,则需要 3D 计算机图形学和 VRML97 描述语言的基本知识。这将允许您在 Webots 中创建 3D 模型或从 3D 建模软件导入它们。
1.4 技术支持
- 付费支持:https://www.cyberbotics.com/#services
- stackexchange 的webots 板块:https://robotics.stackexchange.com/questions/tagged/webots
- github 讨论区:https://github.com/cyberbotics/webots/discussions
- Discord 中的 webots 社区
1.5 仿真步骤
1.定义一个或多个机器人及其环境的Webots世界文件 (.wbt)。.wbt 文件有时确实依赖于外部 PROTO 文件 (.proto) 和纹理。
2.上述机器人的一个或多个控制器程序(C/C++/Java/Python/MATLAB)。
3.一个可选的物理插件,可用于修改 Webots 常规物理行为(在 C/C++ 中)。
世界(webots定义)
在 Webots 中,世界是对机器人及其环境属性的 3D 描述。它包含每个对象的描述:位置、方向、几何形状、外观(如颜色或亮度)、物理属性、对象类型等。
世界保存在“.wbt”文件中。“.wbt”文件存储在每个Webots项目的“worlds”子目录中。
控制器
控制器是控制世界文件中指定的机器人的计算机程序。控制器可以用 Webots 支持的任何编程语言编写:C、C++、Java、Python 或 MATLAB。当模拟开始时,Webots 启动指定的控制器,每个控制器作为一个单独的进程,并将控制器进程与模拟的机器人关联起来。请注意,多个机器人可以使用相同的控制器代码,但是将为每个机器人启动不同的进程。
一些编程语言需要编译(C 和 C++),其他语言需要解释(Python 和 MATLAB),还有一些需要编译和解释(Java)。例如,C 和 C++ 控制器被编译为依赖于平台的二进制可执行文件(例如 Windows 下的“.exe”)。Python 和 MATLAB 控制器由相应的运行时系统(必须安装)解释。Java 控制器需要编译为字节代码(“.class”文件或“.jar”),然后由 Java 虚拟机解释。
每个控制器的源文件和二进制文件一起存储在一个控制器目录中。控制器目录放置在每个 Webots 项目的“controllers”子目录中。
超级控制器
Supervisor控制器是字段设置为 的Robot的控制器,它可以执行通常只能由人类操作员执行而不能由真实机器人执行的操作。Supervisor控制器可以用上述任何一种编程语言编写。然而,与常规机器人控制器不同的是,主管控制器将有权访问特权操作。特权操作包括模拟控制,例如,将机器人移动到随机位置,对模拟进行视频捕获等。
1.6 平台能力
三维建模能力
支持常见三维格式文件的导入
(.obj、.fbx、.blender、.stl …)
物理引擎
使用开源引擎 open dynamic engine
外设支持
感知侧的传感器(光电、雷达等)
执行侧的电机
2 软件使用
启动webots
https://www.cyberbotics.com/doc/guide/starting-webots
用户界面
Webots GUI 由四个主要窗口组成:
- 显示并允许您与 3D 模拟交互的3D 窗口
- 作为当前世界分层表示的场景树
- 允许您编辑源代码的文本编辑器
- 显示编译和控制器输出的控制台。
GUI 有八个菜单:File, Edit, View, Simulation, Build, Overlays, Tools和Help。
https://www.cyberbotics.com/doc/guide/the-user-interface
文件菜单
- New
-
- New Project Directory…:创建项目目录,项目目录包含多个子目录,用于存储与特定Webots项目相关的文件,即世界文件、控制器文件、数据文件、插件等。
-
- New World File…:创建一个简单的世界文件,其中可能包含一些可选组件,包括矩形竞技场。
-
- New Robot Controller…:创建一个新的机器人控制器程序。首先系统会提示您在 C、C++、Java、Python 或MATLAB TM控制器之间进行选择。如果您在 Windows 上选择 C 或 C++,Webots 将为您提供创建 Makefile / gcc 项目或 Visual Studio 项目的可能性。然后,Webots 会要求您输入控制器的名称,最后它会在您当前的项目目录中创建所有必要的文件(包括模板源代码文件)。
-
- New Physics Plugin…:创建新的物理插件。Webots 要求您选择编程语言(C 或 C++)以及新物理插件的名称。然后它会在当前项目中创建一个目录、一个模板源代码文件和一个 Makefile。
-
- New PROTO…:创建一个新的 PROTO。Webots 要求您为 PROTO 节点定义名称、应包含的标签(如果有)以及 PROTO 本身将从中继承的基本节点。根据基本节点的选择,Webots 将询问您应该公开其哪些字段(即,从场景树中可见),并相应地创建必要的参数。然后,Webots会建议您在文本编辑器中打开PROTO文件,以便您可以继续编辑它。最后,您将能够在场景树中插入新原型的实例,就像插入任何其他原型一样。
- Open World…:打开并选择要加载的“.wbt”文件。
- Open Recent World:通过从子菜单中显示的列表中选择最近打开的“.wbt”文件来重新打开该文件。
- Open Sample World:打开一个对话框,列出所有可用的示例世界,可以通过在搜索字段中输入文件名或其一部分来搜索要加载的特定“.wbt”文件。
- Save World:使用当前文件名(显示在主窗口顶部的文件名)保存当前世界。
- Save World As…:另存为
- Reload World:重新加载当前世界
- Reset Simulation:可恢复模拟的初始状态。
- New Text File:在文本编辑器中打开一个空文本文件。
- Open Text File…:选择要加载的文本文件(例如“.java”文件)。
- Save Text File:保存当前文本文件。
- Save Text File As…:另存为
- Save All Text Files:
- Revert Text File:从保存的版本重新加载文本文件。
- Print Preview…:打开一个窗口,允许您管理页面布局,以便从文本编辑器打印文件。
- Print…:打印文本编辑器的当前文件。
- Take Screenshot…:截取 Webots 中当前视图的屏幕截图。它会打开一个文件对话框,将当前视图保存为 PNG 或 JPG 图像。
- Make Movie…:创建 MPEG 电影(Linux 和 macOS)或 AVI 电影(Windows)。除了选择电影的分辨率和压缩质量外,还可以通过设置以加速模式或慢动作记录模拟Video acceleration弹出对话框中的值。
- Share…:项目允许您将当前世界导出为交互式 3D 场景(本节中有关此主题的更多信息),或将模拟记录为 3D 动画并将其发布到 HTML5 网页上。对于这两种选项,都可以将结果保存在本地或自动上传到webots.cloud,以便其他人可以轻松共享和查看。如果开始录制动画,则此项更改为Stop HTML5 Animation recording.可用于停止动画录制。您可以在本节中获得有关动画的更多信息。
- Quit:终止当前模拟并关闭 Webots。
编辑菜单
编辑菜单提供了常用的文本编辑功能来操作在文本编辑器中打开的文件,例如复制、粘贴、剪切等。
文本编辑器可以仅作阅读使用,编辑过程可以放在notepad++、vscode等中。
查看菜单
-
Rendering:
-
Follow Object:在固定(静态)视点和跟随移动对象(通常是机器人)的视点之间切换。如果您希望视点跟随某个对象,首先您需要使用鼠标选择该对象,然后根据您想要的以下行为检查子菜单的一项。
-
Restore Viewpoint:将视点的位置和方向恢复到加载或恢复文件时的初始设置。当您在场景中迷路并想要返回原始视点时,此功能非常方便。
-
Move viewpoint to object:将视点移动到所选节点的中心并进行缩放。如果所选项目是字段,则将定位上层父节点。该对象将位于 3D 视图的中心并且完全可见。
-
Align View to Object:移动并旋转视点,使选定节点居中,并将视点对齐到六个对象对齐轴中的任意一个上
-
Change View:移动视点以将其对齐到围绕选定对象的六个世界对齐轴中的任何一个。如果未选择任何对象,视点将以世界原点为中心。
-
Fullscreen:全屏
-
Virtual Reality Headset:使用 HTC Vive 或 Oculus Rift 等虚拟现实耳机来查看模拟
-
Perspective Projection:透视投影(默认),透视模式对应于自然投影:其中物体距离观察者越远,它在图像中出现的越小。
-
Orthographic Projection:正交投影,在正交投影中,距观察者的距离不会影响物体的显示大小。此外,在正交模式下,模型中平行的线会在屏幕上平行绘制,因此这种投影有时在建模阶段很有用。在正交模式下不渲染阴影。
-
Plain Rendering:普通渲染(默认)
-
Wireframe Rendering:线框模式,普通渲染模式下,对象以其几何面、材质、颜色和纹理进行渲染,就像眼睛或相机通常看到的一样。线框渲染模式下,仅渲染可渲染图元的片段。此模式对于调试网格体很有用。如果同时激活线框渲染模式和切换按钮,则仅绘制边界对象(而不是可渲染图元)。View / Optional Rendering / Show All Bounding Objects这可用于调试碰撞检测的问题。
-
Optional Rendering:可选渲染子菜单允许您显示或隐藏补充信息。这些渲染仅在主渲染中显示并隐藏在机器人相机中。它们用于更好地理解模拟的行为:
-
- Show Coordinate System:显示坐标系,在 3D 窗口右下角显示或隐藏全局坐标系,红色、绿色和蓝色箭头分别代表 x、y 和 z 轴。
-
- Show All Bounding Objects:显示所有边界对象允许您显示或隐藏所有边界对象(在每个Solid节点的boundingObject字段中定义)。边界对象由白线表示。这些线在碰撞发生时变为玫瑰色,而在实体空闲时变为蓝色,即它停止并且不与任何其他活动实体相互作用。
-
- Show Contact Points:显示或隐藏碰撞检测引擎生成的接触点。未显示不产生相应接触力的接触点。仅针对使用物理模拟的对象生成接触力(需要物理节点)。
-
- Show Connector Axes:显示连接器轴允许您显示或隐藏连接器轴。旋转对齐用黑色表示,而 y 轴和 z 轴分别用绿色和蓝色表示。
-
- Show Joint Axes:显示关节轴允许您显示或隐藏关节轴。关节轴由黑线表示。
-
- Show RangeFinder Frustums:使用黄色线框显示或隐藏场景中每个测距仪的 OpenGL 剔除视锥体和记录图像。如果测距仪被禁用或第一张图像不可用,则平截头体将以灰色绘制。OpenGL 剔除截锥体是一个截顶金字塔,对应于测距仪的视野。记录的图像显示在平截头体描述的平面上,距离对应于距离设备中心的测距仪的最小范围。有关此概念的更多信息可在 OpenGL 文档中找到。
-
- Show Lidar Rays Paths:显示激光雷达射线路径允许您使用青色线框显示或隐藏场景中每个激光雷达的层(激光射线路径)。如果激光雷达设备已禁用或第一次测量尚不可用,则图层将以灰色绘制。
-
- Show Lidar Point Cloud:显示激光雷达点云允许您显示或隐藏场景中以点云模式启用的每个激光雷达的点云。点云由点本身的位置以及从激光雷达原点到点的光线表示,使用从蓝色(顶层)到红色(底层)的渐变。这种可选渲染的计算成本很高,因此会显着降低模拟速度。请注意,如果点云包含超过 2500 个点,则不会显示从激光雷达原点到该点的光线。
-
- Show Camera Frustums:使用洋红色线框显示或隐藏场景中每个相机的 OpenGL 剔除平截头体和记录的图像。如果相机设备被禁用或第一张图像尚不可用,则视锥体将以灰色绘制。
-
- Show DistanceSensor Rays:显示距离传感器光线允许您显示或隐藏距离传感器设备投射的光线。这些光线被绘制为红线(超出碰撞点时变为绿色)。它们的长度对应于设备的最大范围。如果距离传感器设备被禁用或第一次测量尚不可用,则光线将以灰色绘制。
-
- Show LightSensor Rays:显示光传感器光线允许您显示或隐藏光传感器设备投射的光线。这些光线被绘制为黄线。如果光传感器设备被禁用或第一次测量尚不可用,光线将以灰色绘制。
-
- Show Light Positions:显示或隐藏PointLight和SpotLight灯的位置。 未表示 DirectionalLight节点。PointLight和SpotLight节点由一个被光晕包围的彩色圆圈表示。
-
- Show Pen Painting Rays:显示或隐藏笔设备绘画的光线。如果启用绘画,这些光线将绘制为紫色线,否则绘制为灰色线。
-
- Show Normals:显示或隐藏IndexedFaceSet和Mesh节点的法线。如果未使用 IndexedFaceSet 折痕, creaseAngle法线的颜色为洋红色,否则为黄色。法线表示的长度与WorldInfo lineScale参数成正比。
-
- Show Radar Frustums:显示雷达截锥体允许您显示或隐藏雷达截锥体。如果雷达设备启用,则视锥体绘制为蓝色,否则,如果雷达禁用或第一次测量尚不可用,则视锥体绘制为灰色。雷达截锥表示雷达可以检测到目标的体积。
-
- Show Center Of Mass:显示或隐藏具有非 NULL Physics节点的选定实体的全局质量中心。质心呈现为深蓝色。
-
- Show Center Of Buoyancy:显示浮力中心允许您显示或隐藏具有非 NULL物理节点的选定实体的全局浮力中心。浮力中心呈现为紫色。
-
- Show Support Polygon:显示支撑多边形允许您显示或隐藏具有非 NULL物理节点的选定实体的支撑多边形。通过支撑多边形,我们指的是实体接触点的凸包在包含最低接触点的水平面上的投影。此外,如果后一个平面中的质心投影位于支撑多边形(静态平衡)内,则该投影将呈现为绿色,否则呈现为红色。只能对顶部没有其他实体的实体激活此渲染选项。
-
Scene Interactions:“场景交互”,允许您禁用某些用户与 3D 场景的交互,例如选择或移动对象或移动视点。这些选项可用于通过禁用一些不需要的功能来改善与 3D 场景的交互,或者阻止某些交互,例如在通过网络传输模拟时。
-
- Lock Viewpoint:锁定视点,防止您在 3D 窗口上拖动鼠标或移动鼠标滚轮时更改视点节点的位置和方向。当您不想意外更改视点的位置和方向时,这特别有用。
-
- Disable Selection:禁用选择,阻止您在单击 3D 窗口时更改选定的实体节点。这在建模阶段特别有用,当您想要更改视点而不修改场景树中的可见字段和选定字段时。
-
- Disable 3D View Context Menu:禁用3D 视图上下文菜单,可防止在 3D 窗口上单击鼠标右键时打开节点上下文菜单。但右键单击场景树中的节点仍然可以打开上下文菜单。这在 Web 流传输期间特别有用,其中上下文菜单直接在客户端 Web 界面上打开,不需要在 Webots 服务器实例上打开。
-
- Disable Object Move:禁用对象移动,可防止使用平移和旋转手柄或方法从 3D 窗口移动对象SHIFT + mouse drag/mouse wheel。仍然可以通过更改场景树中的平移和旋转字段来移动对象。这在在线比赛中特别有用,用户应该在不作弊和手动移动物体或机器人的情况下完成任务。
-
- Disable Force and Torque:禁用力和扭矩,可防止从 3D 窗口向对象施加力或扭矩。这在在线比赛中特别有用,用户应该在不作弊和手动移动物体或机器人的情况下完成任务。
-
- Disable Fast Mode:禁用快速模式,可防止在快速模式下运行模拟。此选项在网络流传输的情况下非常有用,可以节省服务器端的计算机电量,并且仅使客户端可以使用停止、步进和实时模式。
模拟菜单
- Pause:暂停菜单项,可暂停模拟。
- Step:单步菜单项,执行模拟的一个基本时间步长。此步骤的持续时间在WorldInfo节点的basicTimeStep字段中定义,并且可以在场景树窗口中调整以满足您的需要。
- Real-time:实时菜单项实时运行模拟,直到被Pause或中断Step。在快速模式下,场景的 3D 显示每n 个基本时间步刷新一次,其中n在WorldInfodisplayRefresh节点的字段中定义。
- Fast:快速菜单项类似于Real-time,只是它以尽可能快的速度运行。
- Rendering:渲染菜单项禁用或启用图形渲染。禁用(黑屏)图形渲染可以实现更快的模拟,因此非常适合 CPU 密集型模拟(遗传算法、视觉、学习等)。
构建菜单
构建菜单提供编译(或交叉编译)控制器代码的功能。
叠加菜单
Overlays菜单提供特定于渲染设备覆盖(Camera 、Display、 Rangefinder)的操作。仅当在 3D 窗口中选择机器人时,此菜单的某些操作才会激活:
- Hide All Camera Overlays:隐藏 3D 视图中的所有相机设备覆盖,独立于Camera Devices子菜单中设置的特定机器人设备选项。
- Hide All RangeFinder Overlays:隐藏 3D 视图中的所有相机设备覆盖,独立于RangeFinder Devices子菜单中设置的特定机器人设备选项。
- Hide All Display Overlays:隐藏 3D 视图中的所有显示设备覆盖,独立于Display Devices子菜单中设置的特定机器人的设备选项。
工具菜单
- 3D View:3D视图菜单项显示或隐藏 3D 窗口,并允许您与 3D 模拟进行交互。
- Scene Tree:场景树菜单项打开一个Scene Tree窗口,您可以在其中编辑虚拟世界。或者,也可以双击主窗口中的某些对象:这会自动打开场景树并选择相应的对象。
- Text Editor:文本编辑器菜单项可打开 Webots 文本编辑器。该编辑器可用于编辑和编译控制器源代码。
- Documentation:文档菜单项显示或隐藏离线 Webots 文档窗口。
- Restore Layout:恢复布局菜单项恢复主窗口面板的出厂布局。
- Clear All Consoles:清除所有控制台菜单项可清除所有打开的控制台的内容。
- New Console:新控制台菜单项打开一个新控制台,默认情况下显示所有日志。
- Edit Physics Plugin: 编辑物理插件菜单项在文本编辑器中打开物理插件的源代码。
- Preferences:首选项项会弹出本节中描述的窗口。
帮助菜单
通过“帮助”菜单可以更轻松地访问文档、支持和一般信息。
- About…:打开显示许可证信息的窗口。
- Webots Guided Tour…:启动了一个通过一系列示例演示 Webots 功能的导览。
- Check for updates…:弹出一个窗口,通知正在使用的 Webots 版本是否是最新版本,并提供下载最新版本的链接(如果需要)。
- OpenGL Information…:提供有关当前 OpenGL 硬件和驱动程序的信息。它可用于诊断渲染问题。
其余的菜单项以 HTML 页面、PDF 文档等形式显示各种信息。
主工具栏
- Hide/Show Scene Tree:显示或隐藏场景树并相应地调整 3D 窗口的大小。
- Add: 添加节点或对象。
3D 窗口
https://www.cyberbotics.com/doc/guide/the-3d-window
场景树
https://www.cyberbotics.com/doc/guide/the-scene-tree
控制台
Webots 控制台显示来自 Webots 的日志(例如打开世界时的解析警告或错误、编译输出、ODE 警告等)和控制器的输出。
https://www.cyberbotics.com/doc/guide/the-console
首选项
https://www.cyberbotics.com/doc/guide/preferences
3 Webots 应用程序示例
Webots 包提供的示例世界可以轻松测试;“.wbt”文件位于“ WEBOTS_HOME/projects ”目录的各个“worlds”目录中,可以使用菜单Open Sample World中的项目直接从Webots打开File。控制器代码位于相应的“controllers”目录中。
演示
在“ WEBOTS_HOME/projects/samples/demos/worlds ”目录中找到相应的“.wbt”文件;
在“ WEBOTS_HOME/projects/samples/demos/controllers ”目录中找到它们的控制器源代码。
anaglyph.wbt(浮雕)
gantry.wbt(龙门)
hexapod.wbt(六足)
moon.wbt(月亮)
soccer.wbt(足球)
stewart_platform.wbt(Stewart 并联机械臂)
设备
世界文件位于“ WEBOTS_HOME/projects/samples/devices/worlds ”目录中;
其控制器位于“ WEBOTS_HOME/projects/samples/devices/controllers ”目录中。
accelerometer.wbt(加速度计)
altimeter.wbt(高度计)
battery.wbt(电池)
brake.wbt(刹车)
bumper.wbt(保险杠)
camera.wbt(相机)
camera_auto_focus.wbt(相机自动对焦)
camera_motion_blur.wbt(相机运动模糊)
camera_noise_mask.wbt(相机降噪)
camera_recognition.wbt(相机识别)
camera_segmentation.wbt(相机分割)
compass.wbt(指南针)
connector.wbt(连接器)
coupled_motors.wbt(耦合电机)
display.wbt(显示)
distance_sensor.wbt(距离传感器)
emitter_receiver.wbt(发射器-接收器)
encoders.wbt(编码器)
force_sensor.wbt(力传感器)
force3d_sensor.wbt(三维力传感器)
gps.wbt(gps)
gps_lat_long.wbt(gps 经纬度)
gyro.wbt(陀螺仪)
hinge_joint_with_backlash.wbt(带隙铰链接头)
hinge_2_joint_with_backlash.wbt(铰2接头带隙)
hokuyo.wbt(北洋)
imu.wbt(imu)
inertial_unit.wbt(惯性单元)
laser_pointer.wbt(光电传感器)
led.wbt(LED)
lidar.wbt(雷达)
light_sensor.wbt(光传暗器)
linear_motor.wbt(线性电机)
motor.wbt(电机)
motor2.wbt(电机2)
motor3.wbt(电机3)
pen.wbt(笔)
position_sensor.wbt(位置传感器)
propeller.wbt(螺旋桨)
radar.wbt(雷达)
range_finder.wbt(测距仪)
receiver_noise.wbt(接收器噪声)
sick.wbt(sick)
sick_point_cloud.wbt(sick 点云)
skin.wbt(使用Skin设备制作人体操纵模型的动画)
speaker.wbt(扬声器)
speaker_text_to_speech.wbt(扬声器_文本到语音)
spherical_camera.wbt(球形相机)
supervisor.wbt(supervisor)
track.wbt(轨道)
环境
Webots 对象是模块化且可参数化的,因此可以从这些示例开始简单地创建其他环境。
这些示例的世界文件位于“ WEBOTS_HOME/projects/sample/environments/ ”目录中。
室外和城市环境位于“ WEBOTS_HOME/projects/vehicles/worlds ”中。
apartment.wbt(公寓)
break_room.wbt(休息室)
complete_apartment.wbt(完整公寓)
factory.wbt(工厂)
hall.wbt(大厅)
kitchen.wbt(厨房)
几何图形
Webots 中可用的几何图元,对应示例的世界文件位于“ WEBOTS_HOME/sample/geometries/worlds ”目录中。
extended_solids.wbt(扩展实体)
extrusion.wbt(挤压)
floating_geometries.wbt(浮动几何体)
geometric_primitives.wbt(几何基元)
high_resolution_indexedfaceset.wbt(高分辨率索引面集)
muscle.wbt(肌肉)
physics_primitives.wbt(物理基元)
polygons.wbt(多边形)
textured_boxes.wbt(纹理框)
textured_proto_shapes.wbt(纹理原型形状)
textured_shapes.wbt(纹理形状)
webots_box.wbt(webots盒子)
行为
复杂行为和/或功能的各种示例。这些示例位于“ WEBOTS_HOME/projects/samples/howto/ ”中。每个示例都有自己的控制器和世界目录。
asymmetric_friction1.wbt(非对称摩擦1)
asymmetric_friction2.wbt(非对称摩擦2)
binocular.wbt(双目)
biped.wbt(双足)
center_of_mass.wbt(质量中心)
console.wbt(控制台)
custom_robot_window_simple.wbt(定制机器人窗口简单)
custom_robot_window.wbt(定制机器人窗口)
cylinder_stack.wbt(气缸堆栈)
force_control.wbt(力控制)
four_wheels.wbt(四轮)
gears.wbt(齿轮)
inverted_pendulum.wbt(倒立摆)
mouse_events.wbt(鼠标事件)
omni_wheels.wbt(全向车轮模型)
openai_gym.wbt(OpenAI Gym)
passive_dynamic_walker.wbt(被动动态步行机器人)
pedal_racer.wbt(踏板赛车)
physics.wbt(物理插件下机器人)
rolling_friction.wbt(滚动摩擦)
rope.wbt(绳索)
sick_terrain_scanning.wbt(sick地形扫描)
spinning_top.wbt(旋转的陀螺)
supervisor_draw_trail.wbt(supervisor绘制轨迹)
texture_change.wbt(纹理变化)
url.wbt(URL形式引用资源)
vision.wbt(视觉)
ziegler_nichols.wbt(电机 PID参数)
渲染
Webots 的高级 3D 渲染功能。此处提供的示例可用作使用高级渲染技术创建您自己的模拟的起点。这些示例的世界文件位于“ WEBOTS_HOME/projects/samples/rendering/worlds ”目录中。
animated_skin.wbt(动画皮肤)
physically_based_rendering.wbt(基于物理渲染)
sponza.wbt()
4 编程语言设置
Webbot 可以执行用编译语言(C/C++、Java)或解释语言(Python、MATLAB)编写的控制器。编译或解释过程需要额外的软件,这些软件通常必须单独安装。仅在Windows平台上使用C/C++时不需要安装单独的C/C++编译器;在此平台上,Webots 附带预安装和预配置的 MinGW C/C++ 编译器副本。对于任何其他语言或平台,必须单独安装软件开发工具。请注意,Webots 使用非常标准的工具,这些工具可能已经存在于标准安装中。否则,本章中的说明将为您提供有关软件开发工具安装的建议。
控制器启动
.wbt 文件包含需要为每个机器人启动的控制器的名称。控制器名称是一个独立于平台和语言的字段;例如,当控制器名称在 .wbt 文件中指定为“xyz_controller”时,这并没有说明控制器的编程语言或平台。这样做是为了确保.wbt文件独立于平台和编程语言。
当 Webots 尝试启动控制器时,它必须首先确定该控制器使用的编程语言。因此,Webots 在项目的控制器目录中查找与控制器名称匹配的子目录。然后,在此控制器目录中,它会查找与控制器名称相匹配的文件。例如,如果控制器的名称是“xyz_controller”,则 Webots 会在“PROJECT_DIRECTORY/controllers/xyz_controller”目录中按指定顺序查找这些文件。
- “xyz_controller[.exe]”(二进制可执行文件)
- “xyz_controller.class”(Java 字节码类)
- “xyz_controller.jar”(Java .jar 文件)
- “xyz_controller.bsg”(Webots/BotStudio 文件)
- “xyz_controller.py”(Python 脚本)
- “xyz_controller.m”(MATLAB 脚本)
C/C++
Windows 版本的 Webots 预装了 MinGW C/C++ 编译器,因此通常无需安装单独的编译器。
Webots 版本中提供了 C++ API 的源代码。您可能有兴趣查看包含头文件的目录(“include/controllers/cpp”)以获得每个类和函数的精确定义,尽管参考指南提供了对公共函数的清晰描述。
ROS
https://www.cyberbotics.com/doc/guide/using-ros
TCP/IP
https://www.cyberbotics.com/doc/guide/interfacing-webots-to-third-party-software-with-tcp-ip
5 开发环境
https://www.cyberbotics.com/doc/guide/development-environments
Webots源代码编辑器是一个多标签文本编辑器,专门用于开发Webots控制器。通常建议使用此编辑器,因为它使编译变得简单。该编辑器具有 Webots 支持的语言(C/C++、Java、Python 和MATLAB TM )的语法突出显示和 Webots C API 的自动完成功能。
项目文件层次结构
项目的根目录至少包含一个名为“worlds”的目录,其中包含一个世界文件。但通常还需要其他几个目录:
- “controllers”:此目录包含当前项目的每个世界文件中可用的控制器。世界文件和这个目录之间的链接是通过机器人节点的控制器字段完成的。有关此目录的更多信息,请参见以下小节。
- “protos”:该目录包含当前项目所有世界文件可用的PROTO文件。
- “plugins”:此目录包含当前项目中可用的插件。世界文件和这个目录之间的链接是通过WordInfo节点的物理场完成的。
- “worlds”:此目录包含世界文件、项目文件(见下文)和纹理(通常位于名为“textures”的子目录中)。
控制器目录
该目录包含控制器。每个控制器都在一个目录中定义。控制器由目录名称引用。这是控制器目录的示例,其中包含一个用 C 语言编写的可以编辑和执行的简单控制器。
controllers/
controllers/simple_controller/
controllers/simple_controller/Makefile
controllers/simple_controller/simple_controller.c
controllers/simple_controller/simple_controller[.exe]
6 编程基础
https://www.cyberbotics.com/doc/guide/programming-fundamentals
7 教程
https://www.cyberbotics.com/doc/guide/tutorials
8 机器人
https://www.cyberbotics.com/doc/guide/robots
Webots 中包含的所有机器人模型都列在这里。用户还可以添加自己的自定义模型。
9 单板计算机
https://www.cyberbotics.com/doc/guide/single-board-computers
NVIDIA Jetson Nano
10 执行器
https://www.cyberbotics.com/doc/guide/actuators
11 传感器
https://www.cyberbotics.com/doc/guide/sensors
12 对象
https://www.cyberbotics.com/doc/guide/objects
参考
1、官网–cyberbotics
2、从零开始的Webots入门教程与实战
3、github–webots
4、Webots教程(根据官网教程)
5、【webots教程】编写你的第一个控制器
6、Webots 舵轮底盘小教程