资讯动态

Webots R2021 变更日志详解:R2021a 与 R2021b 的新机器人、新设备与 Supervisor 新 API

发布时间:2026/10/14 1:28:26 来源:尧图企业网站定制
科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载本文基于 Webots 仓库中的官方变更记录 docs/reference/changelog-r2021.md完整梳理 R2021 年度两个版本R2021a 于 2020 年 12 月 15 日发布R2021b 于 2021 年 7 月 16 日发布的全部变更内容新增的实体机器人模型、传感器与 PROTO 对象、Supervisor 新 API、渲染引擎切换、ROS 控制器改进以及大量物理引擎、重置逻辑与 API 的缺陷修复。读完后你可以掌握 R2021 两个版本的完整能力清单并在从旧版本升级到 R2021或排查 R2021 时代引入的行为变化时快速定位到对应功能、源码文件和破坏性变更点。需要说明的是当前仓库主版本已演进到 R2025a见 scripts/packaging/webots_version.txt本文所述 R2021 条目属于历史版本记录但其中引入的大部分文件与 API 至今仍存在于仓库中均可按文中路径直接查证。Webots R2021b2021-07-16 发布新增机器人模型R2021b 引入了 5 款新机器人模型均在当前仓库的 projects/robots/ 目录下可以找到对应工程机器人厂商仓库位置Summit-XL SteelRobotnikprojects/robots/robotnik/summit_xl_steel/MiR100Mobile Industrial Robotsprojects/robots/mir/mir100/FabtinoRECprojects/robots/rec/fabtino/JetBotNVIDIAprojects/robots/nvidia/jetbot/Niryo NedNiryoprojects/robots/niryo/ned/这些模型为后续的移动机器人、教育平台仿真场景提供了开箱即用的实体对应 PR #3121、#3010、#2999、#2951、#2925。新增设备与 PROTO 对象Altimeter高度计由社区贡献的新传感器节点底层实现位于 src/webots/nodes/WbAltimeter.cpp接口文档见 docs/reference/altimeter.md。SickS300 激光雷达新增 SickS300 型号PROTO 位于 projects/devices/sick/protos/SickS300.proto。关节间隙backlash建模 PROTO新增HingeJointWithBacklash扩展 HingeJoint和Hinge2JointWithBacklash扩展 Hinge2Joint用于建模机械传动中的回差效应并附带示例世界。当前仓库中这两个 PROTO 已演进为 JavaScript 模板式Procedural Proto实现可直接查看其字段定义PROTO HingeJointWithBacklash [ field SFNode jointParameters HingeJointParameters {} field SFFloat backlash 0.01 # Defines the gear clearence, [0, inf). field SFFloat gearMass 0.1 # Defines the gear mass, [0, inf). field MFNode device [ ] # {RotationalMotor, PositionSensor, Brake}. ... ]其中backlash表示齿轮间隙取值[0, inf)gearMass表示齿轮质量模板内还包含参数合法性检查例如backlash 0时回退到默认值并报错小于 0.01 时提示在常规时间步下物理引擎可能无法正确建模。文件位置projects/joints/protos/HingeJointWithBacklash.proto、projects/joints/protos/Hinge2JointWithBacklash.proto配套示例世界与控制器见 projects/samples/devices/worlds/hinge_joint_with_backlash.wbt 和 projects/samples/devices/controllers/hinge_joint_with_backlash/。通用齿轮 PROTO新增GearPROTO 及基于碰撞collision-based传动的演示位于 projects/objects/gear/protos/Gear.proto。FIFA 足球 PROTO新增外观精细的FifaSoccerBallPROTOprojects/objects/balls/protos/FifaSoccerBall.proto服务于 Robocup 场景。新增示例Robocup Virtual Humanoid League 2021 环境草稿示例工程见 projects/samples/contests/robocup/OpenAI Gym 与 Webots 集成示例当前仓库位于 projects/samples/howto/openai_gym/含 openai_gym.py 控制器包含 NAO 机器人的简单房间场景。新功能New Features1. 资源 URL 支持http://与https://下载及缓存Background、Camera、ContactProperties、ImageTexture、Mesh 和 Motor 的 URL 字段现在可以直接指向网络资源PR #2591、#2787。2. 安装包瘦身在线资源策略破坏性变更为减小安装包体积图片、网格等资源改为在线加载#2787。原变更记录用加粗标注了这一迁移要求旧世界文件中的本地资源 URL 需要更新为在线资源地址例如原来的textures/carpet.jpg应改为指向 R2021b 仓库中projects/default/worlds/textures/carpet.jpg的完整在线地址。如果你维护 R2021b 时代的世界文件并在新环境中加载这是最常见的纹理/网格缺失原因。3. Supervisor 新 API 簇这一批函数全部可在当前仓库的 C API 头文件 include/controller/c/webots/supervisor.h 中查证void wb_supervisor_node_save_state(WbNodeRef node, const char *state_name); // L104 void wb_supervisor_node_load_state(WbNodeRef node, const char *state_name); // L105 void wb_supervisor_node_set_joint_position(WbNodeRef node, double position, int index); // L106 const char *wb_supervisor_node_export_string(WbNodeRef node); // L129wb_supervisor_node_set_joint_position人工设置主动/被动关节位置#3160wb_supervisor_node_export_string返回可用于重构该节点的字符串#2743wb_supervisor_node_save_state/wb_supervisor_node_load_state支持把世界局部回滚到已保存的状态#2740为多轮强化学习/场景实验提供了按子树保存-恢复的能力。4. 耦合电机coupled motors允许一次性控制多个在逻辑上联动的 Motor#2939典型场景是差速/同步轴驱动车轮。5. Billboard 节点新增 Billboard 节点其子节点会自动平移并旋转以始终面向视点#3023实现位于 src/webots/nodes/WbBillboard.cpp。6. 红外距离传感器红色通道灵敏度DistanceSensor 新增redColorSensitivity字段可调节甚至禁用红外测距时对环境红光成分红色材质、红色光照的响应#3077。底层字段解析可在 src/webots/nodes/WbDistanceSensor.cpp 中看到mRedColorSensitivity findSFDouble(redColorSensitivity);7. 流式查看器与动画的渲染引擎切换为 WREN#2769并新增流式查看器字体支持#2976。8. JavaScript 脚本化 PROTOProcedural Proto Nodes 增加 JavaScript 支持#3087参考 docs/reference/procedural-proto-nodes.md 与 docs/reference/javascript-procedural-proto.md。后文提到的HingeJointWithBacklash正是该机制的产物。增强Enhancements物理与场景行为修改 Robot.selfCollision 的碰撞检测逻辑当关节链中间关节共享同一anchor点时忽略该链#2868允许 Robot 节点放入 Group、Transform、Solid 等 Group 派生节点内部#2732WorldInfo 新增dragForceScale与dragTorqueScale字段用于设置界面中施加力/力矩的量级#3175当前实现见 src/webots/nodes/WbWorldInfo.hppdouble dragForceScale() const { return mDragForceScale-value(); }; double dragTorqueScale() const { return mDragTorqueScale-value(); };HingeJointParameters 暴露stopERP与stopCFM参数控制关节限位使用的局部ERP/CFMwb_supervisor_node_reset_physics支持重置给定节点下所有 Solid 后代的物理状态#2742。Supervisor 性能与能力新增位姿与字段追踪函数提升获取 pose/field 数据的性能#2279新增接触点追踪函数#3162新增 Supervisor 函数用于一次性获取某节点的全部字段#3202新增wb_supervisor_node_get_pose支持获取绝对位姿或相对另一节点坐标系的位姿#2932对应 supervisor.h 中的const double *wb_supervisor_node_get_pose(WbNodeRef node, WbNodeRef from_node);。API 性能显著优化wb_camera_get_image、wb_range_finder_get_range_image、wb_lidar_get_range_image三个高频图像获取函数的性能#3032。通信Emitter 与 Receiver 新增allowedChannels字段限制通道使用#2849。编辑器与可视化场景树 Field Editor 中显示线速度/角速度矢量模量便于监控机器人位移#3209确保任意节点name都显示在场景树中方便导航#3198修复线框渲染受光照影响过大的问题#2806。PROTO 工程化PROTO 文件默认变为static行为移除原标签非静态情况需显式标注nonDeterministic标签#2903。使用staticPROTO 可避免运行时重复再生显著降低 Supervisor 频繁改场景时的开销新增 PROTO 转 Mesh 节点的脚本取代 IndexedFaceSet加快加载、提升可读性与可维护性#2668当前仓库对应脚本为 scripts/proto_splitter/proto2mesh.py官方 PROTO 已批量转换。机器人模型改进RobotisOp2新增回差建模开关#2881并新增用 Hinge2Joint 建模踝/髋/颈的版本#2861通过增大suspensionSpringConstant提升TIAGo稳定性#2876新增干草地背景stadium_dry便于 Robocup 玩家区分球场与背景#2874重做 Mercedes Benz、Lincoln、Citroen、BMW、Range Rover 的车尾灯网格#2615。命令行与导出支持从命令行执行 PROTO 到 URDF 的转换#2885改进 URDF 命名约定#2875--log-performance参数增加加载时间与平均速度系数统计#3002。Robot Window 重构重要破坏性变更webots/utils/default_robot_window.hC 头文件移动到了webots/plugins/robot_window/default.h#2655依赖旧路径的自定义 robot window 插件需要改 include通用 robot window 改进#2655隐藏时跳过更新以免影响仿真性能新增“启用/禁用曲线同时启用/禁用设备”的切换按钮支持按类型批量启用/禁用设备新增“Settings”标签页设置刷新率、禁用所有设备、在非可见标签页下继续记录数据电机滑块位置优化代码拆分为独立库与 JS 文件以便复用使用 WebGL 加速绘图#2854车辆类新增 HTML robot window取代已废弃的 Qt 版 robot window#2602可参考 docs/automobile/robot-window.md。ROS 控制器简化#2822集成ros_control通过--use-ros-control标志启用可直接使用ros_controllers包中的diff_drive_controller与joint_state_controller新增--auto-publish标志启动时自动使能所有设备并创建对应 topic通过--robot-description标志暴露包含机器人 URDF 的robot_descriptionROS 参数。其他动画支持 labels#3019动画播放器现代化重写#2979不再对较新的 Intel/AMD 显卡打印警告#2623外部控制器的检查改为更高频且无时限#2442。缺陷修复Bug FixesR2021b 修复项数量庞大按主题归纳如下括号内为对应 PR/issue 编号。物理与碰撞修复 box-cylinder 碰撞检测不稳定#3105修复 Cylinder 与 Box 非对称摩擦力方向计算错误#3150修复webots_physics_collide回调在 Group 参与碰撞时的返回值处理#2781修复 InertialUnit 在 ENU 坐标系下四元数转欧拉角错误#2768修复外部力/力矩逻辑所选节点缺少 dynamics 时选择最近的动态 Solid 祖先#2635修复 Hinge2Joint 与 BallJoint 电机位置限位执行不正确的问题#2825修复 BallJoint 隐式字段在运行后保存世界文件时未写回的问题#2964。Supervisor API修复对运动学对象调用wb_supervisor_node_add_force导致的崩溃#3036修复 Supervisor 对嵌套多层 PROTO 字段内节点的操作失败#3036修复 MF 字段负位置操作在仿真重置后未翻译为合法索引导致的崩溃#2997修复同一步内先用 API 移动节点再调wb_supervisor_node_reset_physics不生效#2991修复wb_supervisor_field_get_count返回值在 GUI 或其他 Supervisor 修改字段后不更新#2812修复 MATLAB API 中wb_supervisor_node_get_velocity返回 3 个元素而非 6 个#2764。仿真重置Supervisor 的 reset 同步由“步骤后应用”改为“步骤末尾应用”#2720修复嵌套 Transform 重置后立即读取位置不正确#3051修复充电 Robot 电池满时 Charger 能量未重置#2879修复重置后控制器中 Camera 图像不更新#2725修复含 BallJoint 节点如 Stewart Platform仿真重置问题#2593、#3394修复 UI 中 step 按钮禁用时从界面重置仿真的按钮状态#2741。传感器与感知修复 Lidar/RangeFinder射线击中边缘时的测量错误#3230修复 IndexedFaceSet 与距离传感器射线交互导致的错误接触点影响 TexturedBoxes#2610修复 Camera Recognition 对缩放物体的检测#2921、Lens 畸变#2961、#3191修复Lidar.getLayerRangeImagePython/Java错误返回完整图像#2799、点云存在超距点时整体消失的视觉 bug#2666修复 PointSet 子节点更新#2766修复 Hokuyo UTM-30LX 的verticalFieldOfView取值#2972。渲染、界面与文件修复 Material 与 PBRAppearance 完全透明时仍可被相机看到的问题#3436修复 Display 图像内存泄漏#2663与外部窗口不随相机图像更新#2589修复 Pen 墨水在重置时未擦除#2796、inkDensity 1.0时与其他墨迹混合#2804、在 Cylinder 底面无法绘制#2629修复 Lidar.type 字段运行时修改导致崩溃现要求保存并重载世界#2983修复 Node Editor 在深层 PROTO 结构、相对运动学祖先速度选择时的崩溃#3109、#3098修复 PROTO 字段中非法 SFColor 值导致的崩溃改为钳位取值并打印警告#3218修复含模板再生字段的 PROTO 用于Solid.boundingObject时的崩溃与错误再生#3227、#3226修复 MF 字段删除元素引发的无限再生崩溃#3188修复 SolidReference 顶层为 Transform/Group 时的崩溃#3039修复 PointLight 重置错误#3345、Light 节点清理错误#3374修复流式查看器运行中向仿真添加纹理的崩溃#2704修复 X3D 导出中 USE 节点链接 PROTO 公开字段 DEF 节点的问题#2687。平台与环境修复仿真服务器脚本资源泄漏#3412修复 Windows 上切换主题/语言后重启 Webots 的问题#3367修复 Windows 与 Linux 的高 DPI 支持#2631修复 Windows 下路径含 UTF-8 字符时双击打开世界文件失败#2750修复 macOS 上 python 命令路径#3402修复 Python 控制器因 GIL 导致的多线程问题#3104修复 Windows 上使用 Qt 编译默认控制器#2718修复外部控制器未断开即重连、残留临时目录影响启动#3189、#2800修复逐步运行模式下控制台输出晚一步的问题#2741修复 C/Python/Java API 中Robot.getDevice()同名参数返回不同对象的问题#2957修复robot_get_urdf未包含叶子节点#2803修复 Java API 中 Camera Recognition 相关函数不可用/返回值错误#2923、PythonCameraRecognitionObject.get_size返回类型#2923修复 HighwaySign、RandomBuilding不同实例生成相同建筑#2897、PedestrianCrossing黄条显示#2857、youBot 世界麦轮 ContactProperties#3025等 PROTO 问题。ROS 行为变更破坏性原记录加粗标注Camera Recognition Objects 发布的 ROS 消息类型改为单条消息包含全部识别对象#3234/supervisor/node/get_type_name服务的数据类型改为使用webots_ros::node_get_name而非webots_ros::node_get_type_name#3202。清理与依赖更新删除已废弃的DifferentialWheels节点#2749重组 projects/samples/howto/ 目录结构每个演示独立成目录#2639废弃wb_supervisor_node_get_contact_point、wb_supervisor_node_get_contact_point_node、wb_supervisor_node_get_number_of_contact_points改用批量接口wb_supervisor_node_get_contact_points#3162移除在 Webots 中不可用的viewpoint_control基准测试#3192依赖升级macOS 与 Linux 均升级至 Qt 5.15.2#2721、#3089。Webots R2021a2020-12-15 发布新功能New Features新增wb_supervisor_node_get_from_device根据设备名获取节点句柄#2074运行中动态添加的设备现在对 robot 控制器可见#2237——这是 R2021a 对“在线扩展机器人结构”类应用如 Supervisor 在线装配的关键支撑新增wb_connector_is_locked返回 Connector 的isLocked状态#2087WorldInfo 的coordinateSystem字段支持 EUNEast-Up-North坐标系#2228realtime模式下可禁用渲染#2286wb_supervisor_node_get_number_of_contact_points新增参数可统计包含后代节点的接触点数#2228新增wb_supervisor_node_get_contact_point_node获取某接触点对应的节点引用#2228Camera API 新增wb_camera_get_exposure/wb_camera_set_exposure#2363Recognition 节点与 Camera API 新增分割真值segmented ground truth图像生成能力#2199——该功能后来被广泛用于感知算法训练数据生产默认 robot window 的 Camera 标签页可开关 recognition 与 segmentation#2431InertialUnit 新增wb_inertial_unit_get_quaternion以四元数形式返回姿态测量#2424InertialUnit.lookupTable字段被废弃相关函数wb_inertial_unit_get_lookup_table_size/wb_inertial_unit_get_lookup_table被移除#2424新增PlasticFruitBox与MetalStorageBoxPROTO#2427LidargetPointCloud的 Python 方法新增data_type参数可返回bytearray点云表示比旧实现快数倍。增强Enhancements支持 Python 3.9#2318改进BiscuitBoxPROTO 的 Solid.recognitionColors取值#2401完善 Camera 图像格式文档及如何在 Display 中展示 API 获取图像的说明#2443Lidar 与 RangeFinder 在深度超量程时返回无穷大#2509——与 R2021b 的超量程语义保持一致是感知算法处理“无障碍”距离时的关键约定。缺陷修复Bug FixesDisplay 图像像素字节序颠倒修复wb_display_image_new#2452原记录加粗标注Python 端同样受影响TexturedParallelepipedproto 的 cube/compact/flat 纹理映射修复#2364PythonDisplay.imageNew传入 string/bytes 时崩溃#2443Supervisor 同一控制器步内对 MF 字段“先 set 后 insert/remove”的崩溃#2366同一控制器步内 set 后 get 字段值不一致#2375Supervisor 标签颜色在文本未变化时不更新#2357WorldInfo.basicTimeStep 40时录像损坏#2268Supervisor 控制器启动的录像在仿真重置时未取消#2406macOS 下 Keyboard API 的 Ctrl 键处理#2265、BotStudio e-puck 距离传感器条件取反#2391定义了WEBOTS_PID环境变量时外部控制器启动同步 bug#2260运行模式等待外部控制器时 CPU 占用过高#2377robot window 打开时 Lidar/RangeFinder 内存泄漏#2210特定 GPU如 NVIDIA GeForce RTX 系列上 Camera/Lidar/RangeFinder 噪声生成呈固定图案#2215带关节机器人部件上射线设备Camera、DistanceSensor、Radar、Receiver精度#2266及录制动画中部件位置滞后#2266见 docs/guide/web-animation.md修复inverse_kinematics控制器#2211Joint anchor 不等于 Solid 端点平移时导出的 URDF 轴错误#2212仿真重置后 DistanceSensor 可选射线渲染消失#2276特定情形下 cylinder-cylinder 碰撞检测#2282Windows 下从 DOS 控制台启动时含空格参数解析#2330Robot 含 Propeller 时电池传感器错误#1801修改 JointParameters.position时 Motor 目标位置不更新以及关节初始位置非 0 时wb_motor_get_target_position错误#2326部分节点右键菜单Help...项不可用#2327Tractor与TeslaModel3PROTO 缺少supervisor字段#2351红外 DistanceSensor 指向被世界多次使用的纹理时返回值错误#2378性能回退修复#2434修复webots_physics_collide(dGeomID, dGeomID)回调在 boundingObject 为 Group 时不被调用#2505回调函数见 docs/reference/callback-functions.md。清理与破坏性变更Cleanup删除run模式相同行为现在可通过保持渲染开启的fast模式实现#2286——依赖命令行run模式的自动化脚本需要迁移GPS 节点在local坐标系下发布的 ROS 消息类型变更#2368见 docs/reference/gps.md废弃 Python 中所有设备 getter 方法统一改用更接近 C API 的Robot.getDevice方法#2510——这是 R2021a 对 Python 用户影响最大的 API 变更大量教程代码需要改写为robot.getDevice(name)形式修复从关节派生字段运行时导入设备节点后 robot 设备列表不刷新#2482。依赖更新Dependency UpdatesWindows 升级至 Qt 5.15.1#2312停止发布兼容 Ubuntu 16.04 的 Webots 安装包Ubuntu 16.04 用户需自行从源码编译#2473Thymio II Aseba 控制器更新到 Aseba 1.3.3#2518。版本迁移要点小结从 R2020 及更早版本升级到 R2021 时需要优先检查以下破坏性变更资源 URLR2021b世界文件中的本地纹理/网格路径需改为在线资源地址否则加载缺资源Python APIR2021a设备获取方式改为Robot.getDevice(...)旧 getter 方法已废弃运行模式R2021arun模式被删除改用带渲染的fast模式Robot window 插件R2021bC 头文件路径由webots/utils/default_robot_window.h迁移到webots/plugins/robot_window/default.hROS 消息R2021a/R2021bGPS local 坐标系消息类型、Camera Recognition Objects 消息结构、/supervisor/node/get_type_name服务类型均发生变更InertialUnitR2021alookupTable字段及相关函数移除姿态建议改用wb_inertial_unit_get_quaternionDifferentialWheels节点R2021b已删除基于该节点的世界需改用 Motor 直接建模Supervisor 接触点 APIR2021b旧的单点接口废弃统一使用wb_supervisor_node_get_contact_pointsUbuntu 16.04R2021a官方安装包不再覆盖需源码编译。R2021 两个版本合起来完成了 Webots 从“本地资源 Qt 界面组件”向“在线资源 HTML/JS 生态 Procedural Proto”方向的重要过渡其中 Supervisor 状态保存/恢复、耦合电机、分割真值生成等能力为此后的强化学习与感知研究类应用奠定了基础。更多历史脉络可参考 docs/reference/changelog.md 及相邻的 docs/reference/changelog-r2020.md、docs/reference/changelog-r2022.md。赞分享科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载相关推荐如何用AI-Writer轻松创作玄幻和言情小说5个快速入门技巧如何用AI Writer轻松创作玄幻和言情小说5个快速入门技巧 想要体验AI智能写作的魔力吗AI Writer是一个基于RWKV模型的中文预训练生成模型专AI 应用大模型AI 写作NLP本地部署Smithbox解锁FromSoftware游戏无限可能的终极模组工具Smithbox解锁FromSoftware游戏无限可能的终极模组工具 Smithbox 是一款专为FromSoftware系列游戏打造的强大模组制作工具为桌面应用开发工具3D渲染chatgpt-java版本更新日志2025新功能与API变更详解chatgpt java版本更新日志2025新功能与API变更详解 核心功能升级 2025版本新增GPT 5系列模型支持包括 GPT5 和 GPT5_MIN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑