Webots

Stars

Cyberbotics 维护的开源机器人仿真平台,用于建模、编程和仿真机器人、车辆与机械系统,覆盖三维物理环境、传感器、控制器以及 ROS / ROS 2 工作流。

Robot SimulationROS / ROS 2Desktop · Cloud
ROBOTICS SIMULATION · ROTATION MATH

让两种恒等四元数落到同一个有限结果

q 与 −q 表示同一个旋转;数值转换不能因为标量符号不同,就把合法恒等姿态变成 NaN。

ROTATION EQUIVALENCE
q−q
同一个 SO(3) 姿态
VECTOR NORM GUARD‖(x, y, z)‖ ≈ 0(0, 0, 1, 0)FINITE CANONICAL ROTATION
BEFORENaN · NaN · NaN · 2πAFTER0 · 0 · 1 · 0
崩溃入口

零向量归一化产生 NaN 旋转轴

负单位四元数 `(-1, 0, 0, 0)` 与正单位四元数描述相同的恒等旋转,但旧转换会得到 2π 角度并继续归一化零长度向量,除零后生成 NaN 旋转轴,可能沿场景树或渲染路径触发崩溃。

旋转语义

q 与 −q 在 SO(3) 中完全等价

四元数 q 与 −q 表示同一个三维旋转;当向量部分范数接近零时,不论标量符号如何都应落到恒等旋转。同时,向量部分非零的负标量四元数仍需保留原有轴与旋转角,不能被一概折叠。

退化分支

近零向量直接返回规范恒等旋转

在 `WbRotation::fromQuaternion()` 中只计算一次向量范数;遇到近零向量时直接返回有限的规范恒等轴角 `(0, 0, 1, 0)`,其余输入复用该范数继续正常归一化,并补充变更记录。

上游协作

从贡献修复到 Committer 身份

负单位、近退化与正单位四元数都稳定得到有限结果,非退化负标量输入仍保留预期旋转;完成维护者评审协作后,受 Olivier Michel 邀请加入 Cyberbotics Ltd. 的 Committers 团队。

Webots 官方三维机器人仿真界面
Webots 三维仿真工作区把场景树、机器人传感器、控制器代码与运行日志集中在同一界面中。开发者可以一边观察机器人在虚拟环境中的行为,一边调整控制逻辑、检查设备状态并定位仿真问题。