【机器人仿真Webots教程】-Webots安装

Webots是一个开源的3D机器人仿真软件,支持多种操作系统和编程语言。文章详细介绍了Webots的安装步骤,包括系统要求和显卡驱动验证,并阐述了world文件、Controller和SupervisorController在仿真的作用。此外,提到了Webots适用于移动机器人、多智能体和适应性行为等多种研究场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

Webots安装

1. Webots简介

webots是一个开源3D移动机器人仿真框架。其为Cyberbotics公司旗下研发开源框架,为机器人的建模、编程和仿真提供了完整的开发环境。Webots内核基于开源动力学引擎ODE和OpenGL,可以在Windows、Linux和macOS上运行,并且支持多种编程语言(C/C++,Python,Java,MATLAB)。

Webots的主要功能是机器人的建模、控制与仿真,用于开发、测试和验证机器人算法。其内核基于ODE引擎,动力学仿真效果较为真实。

Webots支持多种不同类型的机器人仿真,如工业机械臂,轮式机器人,足式机器人,履带式机器人,汽车,无人机,水下机器人,航天器等。Webots支持多种虚拟传感器,如相机,雷达,力传感器,位置传感器,陀螺仪,惯性单元,GPS等。Webots还支持多种复杂环境的模拟,如室内,室外,崎岖路面,空中环境,水下环境等。

Webots场景采用OpenGL渲染,画面展示效果很棒。Webots可将仿真过程导出为动画或交互式HTML用于展示。

官方链接:Cyberbotics: Robotics simulation with Webots

Webots应用举例

  • 移动机器人原型(学术研究、自动化工业、玩具工业等等)
  • 机器人运动学研究(四足、腿式、人形等等)
  • 多智能体研究(集群、协同等等)
  • 适应性行为研究(遗传算法、神经网络等等)
  • 教学机器人(机器人课程)

2. Webots安装

2.1 系统要求

需求项最低要求
内存2G
主频2GHz
NVIDIA or AMD OpenGLV3.3
显存512MB

对于Linux系统只推荐NVIDIA系列。

典型适配系统:

  • Linux系列
    支持近期x86-64架构的Linux系统,例如Ubuntu20.04LTS,早于20.04之前的Ubuntu不支持。
  • Windows系列
    Windows10、Windows11
  • Mac系列
    macOS 11 “Big Sur” and 12 “Monterey”

在早期版本系列运行Webots可能会出现不兼容的问题。

2.2 验证显卡驱动

Ubuntu参考

Ubuntu20.04、22.04安装nvidia显卡驱动_ubuntu install xianka qudong_xianrenli38的博客-CSDN博客

Windows参考

windows10安装NVIDIA显卡驱动+cuda10.0教程

2.3 安装

注意:安装版安装之后,核心的模块功能均能使用,但是第三方工具(如Java、Python、MatLab)需要对指定项目进行运行和编译。

Deabin系列

wget -qO- https://cyberbotics.com/Cyberbotics.asc | sudo apt-key add -
sudo apt-add-repository 'deb https://cyberbotics.com/debian/ binary-amd64/'
sudo apt-get update
sudo apt-get install webots

Windows系列

官网下载安装

在这里插入图片描述

3. Webots仿真

一个Webots仿真由以下部分组成:

  • 一个world文件(.wbt),world文件定义了一个或多个环境中的机器人,.wbt文件有时也取决于额外的原型文件(PROTO,文件后缀为.proto)和一些纹理配置组成。
  • 机器人控制程序(C/C++/JAVA/PYTHON/MATLAB)
  • 可选物理插件约束webots的物理行为

3.1 world文件

其包含每个对象位置、方向、几何、外观的描述,包含物理属性,world按照层次结构构建组织对象包含其他对象(VRML97),例如一个wbt文件包含一个机器人,机器人有两个轮子、一个距离传感器和一个包含摄像头的关节,这些都保存再.wbt文件中,其不包含控制代码,.wbt文件中仅指定每个机器人的控制器名,.wbt文件放置再worlds的子目录中。

3.2 Controller文件

一个controller控制器是指定机器人的电脑程序,支持C,C++,Java,Python或者MatLab编写,仿真开启,webots启动指定的控制器,每一个作为独立的进程,并且每个独立的进程都和仿真环境中的机器人联系起来,请注意,多个机器人可以使用相同的控制器代码,但是将为每个机器人启动不同的进程。

不同的语言会有不同的编译过程和过程文件,解释器语言没有执行文件,所有控制器的源文件和二进制文件都存放在controller文件夹中,每个机器人的控制器文件夹都作为controllers的子目录存放。

3.3 Supervisor Controller

监管控制器当supervisor域设定为TRUE的时候生效,它可以执行一些人为干预操作,其也可以被上述任何一种语言编写,不同于有规则的机器人控制器,监管控制器拥有权限操作,包括仿真控制等,例如,将机器人设定到随机点位,或者对仿真进行视频截取等。

4. 启动方式

对于Linux系列,可以直接终端输入webots命令直接启动

对于Windows用户双击桌面图标即可

在这里插入图片描述

选择主题后进入仿真软件。

在这里插入图片描述

对于Windows如果有DOS命令的需求,可以将主程序所在路径添加到环境变量中。

webots命令的用法如下所示:

Usage: webots [options] [worldfile]

Options:

  --help
    Display this help message and exit.

  --version
    Display version information and exit.

  --sysinfo
    Display information about the system and exit.

  --mode=<mode>
    Choose the startup mode, overriding application preferences. The <mode>
    argument must be either pause, realtime or fast.

  --no-rendering
    Disable rendering in the main 3D view.

  --fullscreen
    Start Webots in fullscreen.

  --minimize
    Minimize the Webots window on startup.

  --batch
    Prevent Webots from creating blocking pop-up windows.

  --stdout
    Redirect the stdout of the controllers to the terminal.

  --stderr
    Redirect the stderr of the controllers to the terminal.

  --port
    Change the TCP port used by Webots (default value is 1234).

  --stream[=<mode>]
    Start the Webots streaming server. The <mode> argument should be either
    x3d (default) or mjpeg.

  --extern-urls
    Print on stdout the URL of extern controllers that should be started.

  --heartbeat[=<time>]
    Print a dot (.) on stdout every second or <time> milliseconds if specified.

  --log-performance=<file>[,<steps>]
    Measure the performance of Webots and log it in the file specified in the
    <file> argument. The optional <steps> argument is an integer value that
    specifies how many steps are logged. If the --sysinfo option is used, the
    system information is prepended into the log file.

  convert
    Convert a PROTO file to a URDF, WBO, or WRL file.

Please report any bug to https://cyberbotics.com/bug
### Webots 中的方向控制与传感器使用 在Webots仿真环境中,方向控制和传感器的使用对于机器人导航至关重要。为了实现精确的方向控制,通常会采用多种方法和技术。 #### 方向控制系统 1. **惯性测量单元 (IMU)** IMU 是一种常见的用于检测物体姿态变化的装置,在Webots中可以模拟这种行为。IMU 能够提供加速度计、陀螺仪以及磁力计的数据,从而帮助计算机器人的三维空间位置和朝向[^3]。 2. **全局定位系统 (GPS)** GPS 设备可以在Webots里用来获取绝对地理位置坐标,这对于户外环境下的机器人尤为重要。它能给出经度、纬度及高度信息,辅助完成路径规划任务。 3. **激光测距仪 (LIDAR)** LIDAR 可以发射并接收反射回来的光束来构建周围环境的地图模型。通过分析返回的时间差,可得知障碍物距离,进而调整前进路线以避开碰撞风险。 4. **摄像头视觉处理** 利用内置相机捕捉图像帧,并借助OpenCV库或其他计算机视觉算法解析场景中的特征点。例如,双目立体匹配技术可以从两个不同视角拍摄的照片中推算出目标的空间坐标。 ```python from controller import Robot, Camera, DistanceSensor robot = Robot() timestep = int(robot.getBasicTimeStep()) # 初始化摄像头 camera = robot.getDevice('camera') camera.enable(timestep) while robot.step(timestep) != -1: image = camera.getImage() # 获取当前画面 # 进行图像处理... ``` 5. **超声波/红外线测距器** 安装于车身四周的小型探测头可用于近距离感知前方是否有阻碍物存在。这类简单而有效的手段非常适合室内应用场景下快速响应需求。 6. **罗盘(Compass)** 罗盘可以帮助确定地理北方的位置,这有助于保持航向稳定性和提高地图绘制精度。即使是在复杂多变的城市街道间行驶也能依靠其指引正确方位。 7. **关节角度编码器** 对于具有机械臂结构的服务类机器人来说,读取各节段之间的相对转角是必不可少的功能之一。这样不仅便于执行精细动作操作,而且有利于反馈调节整个系统的稳定性。 8. **轮式里程计** 记录车轮转动圈数及其对应的位移量,以此估算累计行程长度。尽管单独依赖此方式可能存在累积误差问题,但配合其他类型的传感输入则效果更佳。 以上提到的各种硬件设施均能在Webots平台内找到相应的组件支持,开发者可以根据具体项目要求自由组合选用最合适的方案来进行仿真实验研究工作。
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moresweet猫甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值