科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载Webots 6 是机器人仿真器 Webots 从 5.x 走向现代架构的关键转折版本系列2008 年末至 2012 年初它完成了控制器 C API 的wb_前缀统一重构、渲染系统向 OGRE 3D 的整体迁移、ODE 物理引擎的重大升级并引入了 Gyro、Compass、Capsule、Plane、Damping 等一批沿用至今的核心节点。本文以官方 changelog 为主线结合当前仓库中依然存活的源码与示例系统梳理这一时期的版本脉络、破坏性变更与遗留资产帮助你理解 Webots 现代 API 与节点体系的来源并掌握升级迁移时的兼容性要点。一、版本脉络总览从 6.0.0 到 6.4.4Webots 6 系列跨越约三年半共发布了 28 个正式与预发布版本。官方 changelog 记录了每个版本的发布日期与 Subversion 修订号如下表所示版本发布日期修订号核心看点6.0.beta12008-11-142318C APIwb_前缀重构、OGRE 渲染迁移、Gyro/Compass 新节点6.0.beta22008-11-212421Supervisor MF_NODE 导入、备份文件机制6.0.02008-12-152632正式发布URBI 暂时禁用、Motion Editor 完善6.0.12009-01-142722Java 1.5 兼容、跨编译支持6.1.02009-02-282904Display 设备、MATLAB 控制器支持、NaoV3R6.1.12009-03-132983MATLAB 跨平台、shininess 修复6.1.22009-04-163202Enki 插件源码、HTTP 代理、中文翻译更新6.1.32009-05-253352Python 2.6、多 jar 支持、URBI 1.5 恢复6.1.42009-06-053388e-puck 交叉编译修复、Robotstadium 规则更新6.1.52009-06-173425Python 2.6 修复、Mac OS X 10.4 兼容6.2.beta12009-11-194280传感器确定性随机数、far plane 移除、force-3d 触觉6.2.beta22009-11-304341gcc-4.2、.作用域操作符6.2.beta32009-12-174453Lidar 示例、全向相机、CameraZoom6.2.02009-12-224468稳定性修复6.2.12010-01-214551SpotLight 节点、Restore Layout、自主车示例6.2.22010-03-184691设备数上限 65535、pixelSize 浮点化6.2.32010-05-184819PROTO 纹理路径规则、GPS resolution 默认值6.2.42010-06-174967Ogre 1.7.1、wxWidgets 2.8.11、URBI 2.06.3.beta12010-09-035507ODE-0.11.1、ElevationGrid 地形、Capsule/Plane6.3.02010-09-145549POSIX 返回值统一、quit 退出状态6.3.12010-10-205670wb_supervisor_node_get_position/orientation6.3.22010-12-095890physicsDisable 自动休眠、ROS 示例、HTML 文档6.3.32011-01-176135iRobot Create、Ogre 1.7.2、SFNode PROTO 字段6.3.42011-02-256445Nao 手部电机、全局许可证服务器6.4.02011-05-317009DARwIn-OP/youBot/Puma 560/Boomer 3050 模型、Damping 节点6.4.12011-09-017471Kinect 与 both 相机模式、Pioneer 3AT、免费版功能扩展6.4.22011-12-098033Hokuyo 系列、碰撞可视化、交互式施矩6.4.32012-01-108315Python 2.7、Mac Lion 支持、e-puck 视场调整6.4.42012-04-048839Nao V4/V3.3 新 PROTO、naoqisim、移除 5.x 兼容函数当前仓库的 docs/reference/changelog.md 版本索引中仍保留着 Webots 6 的独立档案页作为 Webots 5 与 Webots 7 之间的历史承载体。这一版本系列的定位是架构现代化API 命名体系、渲染管线、物理引擎三大底层全部在这一时期完成换血为后续 R2018 起的年度版本节奏奠定了代码基础。二、6.0 里程碑控制器 API 的wb_前缀全面重构Webots 6.0.beta1 对控制器 API 做了一次牵一发动全身的命名规范统一这是理解现代 Webots 控制器代码风格的关键历史节点函数名所有函数统一增加wb_前缀例如robot_get_device()变为wb_robot_get_device()类型名统一增加Wb前缀例如DeviceTag变为WbDeviceTag、NodeRef变为WbNodeRef常量统一增加WB_前缀例如SERVO_INFINITY变为WB_SERVO_INFINITY头文件包含路径从device/robot.h调整为webots/robot.h即今天的include/controller/c/webots/目录布局生命周期函数robot_live()、robot_run()、robot_die()被废弃替换为wb_robot_init()与wb_robot_cleanup()。这一重构的成果至今仍完整存活于仓库的 include/controller/c/webots/robot.h 中例如其中同时保留了wb_robot_init()与面向 MSVC 的wb_robot_init_msvc()定义后者通过setvbuf关闭 stdout/stderr 缓冲后内部调用前者。配套的 src/controller/c 目录下的 55 个.c文件即是以这套wb_前缀 API 为骨架实现的控制器运行时。同期进行的其他 API 调整还包括Java API以 SWIG 生成的面向对象 API 取代旧的扁平式Controller.java接口C 与 Python API 也修改了类继承层次数据类型所有浮点参数与返回值从float提升为doublelookupTable 规则第二列由unsigned short int改为double所有使用 lookupTable 的传感器DistanceSensor、LightSensor、TouchSensor 等的*_get_value()函数同步返回 double空表[]不再插值直接返回原始读数函数重命名与清理emitter_send_packet()更名为wb_emitter_send()彻底移除servo_motor_off()、servo_get_feedback()、emitter_get_buffer()、receiver_get_buffer()、receiver_get_buffer_size()等久已废弃的函数节点重命名CustomRobot节点更名为Robot旧.wbt文件打开时会被自动静默升级。到 6.4.4官方进一步移除所有 Webots 5 兼容函数即所有不以wb_前缀开头的旧函数名全部删除同时移除了 Aibo 的mtn_*()系列。如果你仍在使用 Webots 5 风格的控制器代码升级到 6.4.x 时必须全面迁移到wb_前缀命名。三、渲染系统迁移OGRE 3D 接管图形管线6.2.beta1 开始Webots 将渲染系统整体迁移至 OGRE 3DObject-Oriented Graphics Rendering Engine并在后续版本中持续迭代1.6.5 → 1.7.1 → 1.7.2。这一迁移带来了一批至今可感知的渲染行为变化光照模型ambient、diffuse、specular 三个分量可以独立表现更贴合 VRML97 规范纹理能力Cone、Cylinder、Sphere 三种图元首次支持贴图Cone 新增subdivision字段TextureTransform 在一切可贴图图元上生效远裁剪面移动到无穷远因此从 Viewpoint 与 Camera 节点中移除了far字段并删除wb_camera_get_far()函数Range-finder 相机性能大幅提升新增maxRange字段与对应的wb_camera_get_max_range()函数wb_range_image_get_value()被废弃替换为返回线性深度而非对数刻度的wb_range_image_get_depth()相机渲染窗口Camera 节点默认以主 3D 视图内的小型紫框窗口形式呈现。在渲染优化的同时6.2.beta1 还引入了几项底层确定性改进Webots 随机数生成器与传感器噪声lookupTable变得可复现此前只有物理噪声是确定性的传感器/执行器仿真全部改为双精度浮点运算新增.wbt/.vrml文件加载时的节点结构语义校验。四、新节点批量落地从 Gyro 到 DampingWebots 6 期间新增的节点中相当一部分至今仍是现代 Webots 场景的标配并可在当前仓库的节点源码与参考文档中直接找到6.0.beta1 引入Gyro测量绕三个正交轴的角速度实现代码见 src/webots/nodes/WbGyro.cppCompass数字罗盘仿真见 src/webots/nodes/WbCompass.cpp。6.2.1 / 6.2.beta3 引入SpotLight聚光灯节点见 src/webots/nodes/WbSpotLight.cppCameraZoom与修复后的wb_camera_set_fov()配套的相机变焦节点。6.3.beta1 引入Capsule胶囊体可用作图形图元或碰撞检测原语见 src/webots/nodes/WbCapsule.cpp并在 docs/reference/node-chart.md 的节点继承图中归属Geometry分支Plane无限平面可用于地板、斜坡、无限墙壁等场景同样兼具图形与碰撞原语双重身份见 docs/reference/node-chart.mdElevationGrid 地形化height字段可直接指定高程数据ElevationGrid 可作为碰撞检测原语用于 boundingObject并在 Guided Tour 中新增了uneven_terrain.wbt演示。6.4.0 引入Damping对任意 Solid 的线速度与角速度进行阻尼是替代手动施加空气阻力的标准做法参考文档见 docs/reference/damping.md实现见 src/webots/nodes/WbDamping.cpp。6.3.3 的 PROTO 能力扩展PROTO 字段首次支持SFNode类型意味着physics、boundingObject、geometry、material、appearance、color等节点字段都可以作为 PROTO 参数对外暴露这为后续大量参数化机器人 PROTO 的出现铺平了道路。五、传感器与视觉系统Kinect、both 模式与激光雷达相机与测距传感器是 6.x 时期迭代最密集的功能域之一both 模式相机与 Kinect6.4.1新增一种称为both的相机类型可同时获取彩色图像与深度数据这正是为模拟 Microsoft Kinect 而设计新增 Microsoft Kinect 设备模型相机 fast 模式与噪声模式性能均有改善gaussianNoise字段被拆分为colorNoise与depthNoise两个字段官方明确标注gaussianNoise 自 6.4.1 起废弃。这一字段演化至今仍保留在现代 docs/reference/camera.md 的说明中两种噪声同时启用时先应用噪声掩码再叠加高斯噪声噪声概念还被推广到 range-finder 相机。Kinect 模型在仓库中依然存在projects/devices/microsoft/protos/Kinect.proto它属于微软设备库包含文档与贴图资源印证了 6.4.1 时代用both相机模拟深度摄像头的设计思路。现代参考手册 docs/reference/lidar.md 也明确说明 RangeFinder 节点正是用于模拟深度相机例如 Kinect。激光雷达Lidar6.2.beta3新增基于多个子相机球面投影渲染的全向相机新增 Lidar 设备示例模型为 Sick LMS2916.2.2修复子相机角落附近返回值错误的问题6.4.2新增 Hokuyo URG-04LX、URG-04LX-UG01、UTM-30LX 三个设备模型及配套示例。TouchSensor6.2.beta1新增force-3d类型可计算并返回施加在传感器上的三维力向量。其他传感器修复与调整6.2.3 将 GPS 节点resolution字段默认值从 0.001 改为 0消除部分仿真噪声来源6.1.x 期间修复了 DistanceSensor 的射线-圆柱碰撞检测并修复了wb_servo_get_motor_force_feedback()在质心而非关节轴处计算力矩的错误。六、物理引擎ODE 升级、自动休眠与接触属性改革**ODE-0.11.16.3.beta1**是这一时期物理引擎最大的一次升级带来了IndexedFaceSettrimesh 对 trimesh碰撞检测改进Cylinder 与其他图元碰撞检测的接触点更稳定新增 Cylinder-IndexedFaceSettrimesh碰撞检测惯量矩阵改进IndexedFaceSet 作为 boundingObject 时自动计算惯量矩阵不再需要手动指定手动指定的Physics.inertiaMatrix从 9 个值精简为 6 个值对称矩阵移除Physics.orientation字段。接触属性规范调整6.4.0coulombFriction、bounce、bounceVelocity、forceDependentSlip等 contactProperties 字段的指定方式被修改用户在升级旧世界文件时需要核对这组字段的写法。物理自动休眠6.3.2 起新增自动移除空闲 Solid 的物理计算机制即WorldInfo的physicsDisable*字段族。该机制在现代参考文档 docs/reference/worldinfo.md 中依然完整保留包括physicsDisableTime默认 1 秒范围 [0, inf)空闲 Solid 自动从物理计算中移除前的仿真时间physicsDisableLinearThreshold默认 0.01 m/s判定空闲的线速度阈值physicsDisableAngularThreshold默认 0.01 rad/s判定空闲的角速度阈值。6.4.4 还为这一特性增加了可视化被禁用物理的 Solid 其 boundingObject 会以蓝色着色显示便于用户直观确认休眠状态。碰撞检测的可视化在 6.4.2 也有加强发生碰撞时 boundingObject 颜色会变化以示警且 6.4.0 起接触面只绘制轮廓线而非整个接触面填充。交互式调试6.4.2新增按住 CtrlAlt 键并用鼠标左键拖拽即可对 Solid 节点交互式施加力矩的功能极大方便了物理调参。力控语义修复6.4.2 / 6.4.4wb_servo_set_force()用于力控时此前maxForce只对正向力/力矩生效现已修复6.4.4 进一步恢复rotationalServo 上wb_servo_set_force()施加力矩的原始方向兼容性回溯需注意。七、Supervisor 与控制器 API 扩展Webots 6 时期 Supervisor API 从有限的辅助函数膨胀为能读写场景树任意字段的完整工具集6.0.beta1新增一整套用于读写场景树任意字段值的 Supervisor 函数集合即现代wb_supervisor_field_get/set_*家族的原型6.0.beta2新增wb_supervisor_field_import_mf_node允许 Supervisor 向MF_NODE字段导入节点6.3.1新增wb_supervisor_node_get_position()与wb_supervisor_node_get_orientation()可直接获取节点的全局位置与姿态——这两个函数在现代 include/controller/c/webots/supervisor.h 中依然存在同时wb_supervisor_node_get_name()更名为wb_supervisor_node_get_type_name()6.3.0wb_supervisor_simulation_quit()新增参数以指定 Webots 的退出状态码与 POSIX 标准统一返回值一起落地6.4.2wb_supervisor_node_get_field()开始支持 PROTO 字段wb_supervisor_node_get_from_def()也修复了对 PROTO 节点内字段的访问。控制器侧还有几项影响深远的变化6.1.0 引入Display 设备在仿真中模拟一块可由控制器绘制文字图形的屏幕是现代机器人 GUI 的雏形6.2.2 将每台机器人可挂载的设备数上限从 255 提升到65535WbDeviceTag 类型定义随之改变6.2.1 修复了距离传感器射线误触发 bumper 触觉传感器的问题。八、机器人模型库从 Nao 到 youBot、DARwIn-OPWebots 6 是机器人模型生态爆发的时期绝大多数模型在当前仓库中仍可找到对应目录Nao 人形机器人Aldebaran6.1.0新增 NaoV3 RoboCup EditionNaoV3R.proto支持双目相机6.3.4新增带手部与腕部电机LWristYaw、LHand、RWristYaw、RHand的 NaoV3H.proto6.4.4新增Nao_H21_V40、Nao_H25_V40、Nao_H21_V33、Nao_H25_V33四个 PROTO与 Aldebaran 最新文档对齐同时新增naoqisim控制器用于对接 NaoQi如 Choregraphe与 Webots并删除被其取代的naoqi_for_webots控制器。当前仓库 projects/robots/softbank/nao/protos/Nao.proto 中仍保留着version字段的版本分派逻辑V4/V5分别映射到不同的手部 PROTO可以看作是当年 V3.3/V4.0 多版本 PROTO 机制的延续projects/robots/softbank/nao/worlds 下的nao_robocup.wbt等世界文件则延续了 6.x 时代的 RoboCup 仿真传统。DARwIn-OPRobotis6.4.0 新增模型6.4.1 补充了基于 DARwIn-OP 步态生成器的控制器并在真实机器人上完成舵机标定6.4.4 继续完善标定。仓库保留 projects/robots/robotis/darwin-op/worlds/walk.wbt 等世界文件。KUKA youBot6.4.0 新增模型6.4.1 加入基于非均匀摩擦的新车轮模型大幅提升仿真速度、小型逆运动学模块与汉诺塔竞赛原型。仓库保留 projects/robots/kuka/youbot/worlds/youbot.wbt 及 12 个网格 PROTO。Pioneer 系列6.4.1新增 Pioneer 3DX 与 Pioneer 3AT 模型配套 SICK 激光雷达与 Microsoft Kinect。仓库中 projects/robots/adept/pioneer3/protos/Pioneer3at.proto 与pioneer3at.wbt世界文件延续至今。其他模型6.3.3 新增 iRobot Create 及其虚拟墙projects/robots/irobot/create/worlds/create.wbt6.4.0 新增 Boomer 3050 拖拉机与 Puma 560 机械臂模型6.4.1 将 DARwIn-OP、youBot、Nao、Pioneer 3AT 纳入 Guided Tour 导览。示例世界6.2.4 新增三全向轮机器人示例omni_wheels.wbt现代仓库位于 projects/samples/howto/omni_wheels/worlds/omni_wheels.wbt6.4.2 新增被动动力学行走器示例现代仓库位于 projects/samples/howto/passive_dynamic_walker6.0.beta1 新增展示线性 Servo 与物理插件的stewart_platform.wbt现代仓库位于 projects/samples/howto/parallel_robot_step 同族。九、多语言控制器MATLAB、Python 与工具链演进MATLAB6.1.0 起实验性全部控制器 API含 Supervisor 函数支持 MATLAB 语言示例位于webots/projects/packages/matlab当时仅以 Matlab 7.7Windows Vista / Mac OS X Leopard验证后续 6.1.1 补齐 Linux 32/64 位支持6.1.2 修复了 MATLAB 语法错误在 Webots 控制台的跳转显示。现代仓库在 projects/languages/matlab 保留了 MATLAB 示例世界Python6.2.3 升级至 Python 2.7废弃 2.66.1.5 修复 Python 2.6 在三大平台的兼容问题6.1.2 新增 Nao 的 Python 控制器示例nao_python.pyJava6.0.1 以 Java 1.5 编译控制器库以兼容 1.5 及更高版本6.1.3 支持 Makefile 的 CLASSPATH 携带多个 jar 文件URBI6.0.0 因兼容性问题暂时禁用6.1.3 恢复 URBI 1.56.2.4 内置 URBI 2.0 引擎与示例6.3.1 升级至 2.36.4.0 更新至 2.7.1编译工具链Windows 内置 gcc 由 4.4.0 逐步升级至 4.5.2wxWidgets 由 2.8.9 迭代至 2.8.116.2.beta1 起新增--minimize、--mode、--version命令行选项并覆盖三大平台替代有问题的--batch。十、跨平台兼容与工程化改进平台支持矩阵的变化6.3.beta1 起 Mac 版 libController.dylib 加入x86_64架构支持 64 位控制器与 64 位 Matlab/Java/Python 互操作同时彻底放弃 PowerPC 支持官方明确警告勿在 PowerPC Mac 上安装6.4.3 新增 Mac OS X Lion10.7支持、继续支持 Snow Leopard10.6、放弃 Leopard10.56.2.beta1 增加 Windows 7 兼容修复控制台 printf 重定向与编译按钮冻结6.1.5 恢复 Mac OS X 10.4 兼容。许可证与分发6.3.4 提供全局许可证服务器配置beta6.4.4 在许可证警告被关闭时不再弹出试用版对话框6.1.2 在 Webots 偏好设置中加入 HTTP 代理支持用于试用许可证与 dongle 同步。文件与工程规范6.2.4 起 Webots 不再允许修改安装目录内的任何文件而是自动建议将项目复制到安全位置6.2.4 将projects/packages更名为projects/languages即现代 projects/languages 目录的由来并将projects/default/*迁移到resources/*——官方特别警告所有控制器与插件 Makefile 中的对应路径需要同步修改一行6.2.3 规定 .proto 文件中 ImageTexture 的url字段以 .proto 文件所在位置为基准此前以 .wbt 文件为准需要把 .proto 引用的贴图从worlds目录移到protos目录6.2.2 将 Camera 与 Display 节点的pixelSize字段类型从 SFInt32 改为 SFFloat6.3.2 修复了接触属性配置中Physics.bounce被误用于Physics.bounceVelocity的错误6.2.beta1 移除了 Camera 节点中无用的display字段并移除 Solid及其派生节点的author与constructor字段以简化场景树。十一、从 Webots 5 升级到 6 的迁移清单综合全系列 changelog 中的破坏性变更警告可整理出以下升级要点API 命名函数、类型、常量、头文件全部迁移到wb_/Wb/WB_/webots/前缀体系6.0.beta16.4.4 起旧 5.x 函数彻底删除Servo 力控语义servo_set_force()与servo_set_motor_force()职能分离5.4.0 起6.x 期间修正了 maxForce 方向与 rotational Servo 力矩方向问题字段调整gaussianNoise拆分为colorNoise/depthNoise6.4.1Physics.inertiaMatrix从 9 值变 6 值6.3.beta1Physics.orientation移除6.3.beta1pixelSize类型变化6.2.2GPSresolution默认值变化6.2.3路径规则.proto 纹理基准路径与resources/、languages/目录重命名需要同步更新 Makefile 与 PROTO 资源6.2.3/6.2.4平台PowerPC Mac 不再支持6.3.beta1确认目标平台在支持矩阵内contactProperties6.4.0 修改了coulombFriction、bounce、bounceVelocity、forceDependentSlip的指定方式。结语Webots 6 系列是一次彻底而谨慎的底层重构wb_前缀 API、OGRE 渲染、ODE 0.11 物理、physicsDisable*自动休眠、ElevationGrid 地形碰撞、both相机与 Kinect 生态、大批机器人 PROTO——这些在 2008-2012 年间确立的架构决策绝大多数以几乎不变的形态延续到了今天的 Webots。阅读 docs/reference/changelog-6.md 这份档案再对照当前仓库中仍存活的 src/webots/nodes、include/controller/c/webots 与 projects/robots 目录可以清晰地看到今天你在场景树里拖入的一个 Capsule、调用的一行wb_supervisor_node_get_position()其源头都可以追溯到这一时期的某个版本条目。对于需要维护老项目、理解现代 API 由来或研究 Webots 架构演进的开发者这份版本档案就是最直接的考古地图。赞分享科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载相关推荐Mitsuba3渲染引擎版本更新与技术演进解析Mitsuba3渲染引擎版本更新与技术演进解析 前言Mitsuba3的技术定位 Mitsuba3作为一款面向科研的现代渲染框架其设计理念与商业渲染器有着本质图形学Moveable 0.29–0.53 版本演进全解析从事件 API 到渲染引擎的迭代脉络Moveable 0.29–0.53 版本演进全解析从事件 API 到渲染引擎的迭代脉络 本篇指南以 packages/moveable/CHANGELOG.前端UI组件Matter.js 版本演进全解析从 CHANGELOG 看 2D 物理引擎十年技术变迁0.5 → 0.20Matter.js 版本演进全解析从 CHANGELOG 看 2D 物理引擎十年技术变迁0.5 → 0.20 本篇技术指南以仓库根目录的 CHANGELO物理引擎游戏开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考