更新日志

4.0.0

2026-10-05

API

  • Added path failure diagnostics. Enable Motion::PathRequest::diagnoseFailures to get extra diagnostics when a Motion::Planner::path call fails.

  • Added Motion::ReplaceableTool and Motion::ToolGeometry. Motion::Planner::setReplaceableTool now takes a Motion::ReplaceableTool, replacing the previous overload that took the tool meshes directly.

  • Replaced Goals with Motion::ConfigurationGoals, holding the new Motion::ConfigurationGoal. It is now constructed implicitly from a list of configurations or of goals, replacing fromConfigurations. The goals are now read with Motion::ConfigurationGoals::goals, replacing jointConfigurations.

  • Motion::Planner::computeInverseKinematics now takes Motion::PoseGoals, holding the new Motion::PoseGoal, instead of a list of poses. A list of poses still converts implicitly, but in C++ a braced list of poses now needs an extra pair of braces.

  • Motion::Mesh can no longer be modified after it is created. Removed transformInPlace and bottomCenterTransformInPlace, use Motion::Mesh::transform and Motion::Mesh::bottomCenterTransform instead, which return a copy. Replaced setColor with Motion::Mesh::withColor, which returns a copy.

C++

  • Motion::Mesh can now be copied.

Python

  • The zivid_pythonmotion wheel now also supports Python 3.12.

  • Python 3.10 reaches end of life in October 2026. Support for Python 3.10 is deprecated in this release and may be removed in a future release.

UserConfiguration.yml

  • The fields are now grouped into a Generation and a Runtime section.

  • Moved the escape directions of each region of interest to Runtime/RegionsOfInterest, matched to Generation/Workspace/RegionsOfInterest by Id.

  • Changing a field under Runtime no longer requires the cell data to be generated again.

  • Added the Generation/ConstrainedMovement section, configuring how the robot tool is oriented during movements.

  • SelfCollisionCheckLinks under Generation/Attachments and Generation/AdaptivePart now numbers the links from 1. Add one to each link in an existing file.

  • Loading the cell fails when SelfCollisionCheckLinks lists a link twice or a link the robot does not have.

  • Renamed StaticEnvironmentSafetyDistance and DynamicEnvironmentSafetyDistance to Runtime/PreferredMinClearance/StaticEnvironment and Runtime/PreferredMinClearance/DynamicEnvironment. The planner keeps this clearance when it can, but does not guarantee it.

总体

  • Zivid Motion now requires an NVIDIA driver with support for CUDA 12.0, which is driver version 525.60.13 or newer.

  • Faster planner calls, planner startup and cell data generation, and lower memory use.

  • 修复了若干错误。

3.2.0

2026-09-01

API

  • Added Motion::Visualizer::setRobotConfiguration to set the robot configuration the Visualizer displays.

  • Motion::packageApiLog now includes the API log itself in the archive it creates, so the archive is all Zivid needs to reproduce a logged session. The archive is created next to the log as <name>.zip, replacing the previous <name>-resources.zip which left the log out.

UserConfiguration.yml

  • Added RobotBrand, the manufacturer of the robot.

总体

  • Various performance improvements.

错误修复

  • Motion::Planner::path reports that the path is blocked, rather than that the goal is blocked, when the goal can be reached but no path leads to it.

  • An exported API log now replays with the obstacles it recorded.

  • Fixed several minor bugs.

3.1.0

2026年8月12日

API

  • 新增 Motion::Pose::fromXyzRpy,用于通过平移量和横滚、俯仰、偏航角构造位姿。

  • 新增 Motion::Pose::compose,用于合成两个位姿。

  • 新增实验性函数 Motion::Experimental::loadMesh,用于从磁盘文件读取网格。

C++

  • 为 Motion::Tcp、Motion::Waypoint 和 Motion::Planner 新增了流操作符。

Python

  • zivid_pythonmotion wheel 包现在支持所有受支持的 Python 版本,取代了此前按每个 Python 版本分别分发的方式。

  • zivid_pythonmotion wheel 包现在声明了对 NumPy 的依赖。

RuntimeConfiguration.yml

  • 新增 Performance/FreeCpuThreads,用于覆盖 Zivid Motion 在调整线程池大小时为用户保留的 CPU 线程数。此数值此前固定为 2。

总体

  • 安装机器人单元软件包时,如果 Motion 资源目录尚不存在,现在会自动创建该目录。

  • 打包机器人单元时,即使在不打包生成数据的情况下,现在也会包含源 URDF 和网格文件。

  • 修复了若干错误。

3.0.0

2026年7月2日

API

  • Motion::Pose、Motion::Configuration、Motion::Path 和 Motion::Triangle 现在是具体类型,取代了此前的类型别名(typedef)。

  • 移除了 PointXYZ 和 VectorXYZ 类型别名,请改用 Motion::Vector3f。

  • 将 TransformedBox 重命名为 Motion::BottomCenteredTransformedBox,并将其 bottomCenteredTransform 成员重命名为 transform。

  • Motion::Planner::computeInverseKinematics now takes a list of poses and returns Goals, instead of a single pose returning an optional configuration.

  • Replaced PathRequest.goalConfigurations with Motion::PathRequest::goals, using the new Goals type.

  • Motion::Profile 现在使用小写形式(Testing/Production -> testing/production)。

  • 新增了 Motion::Mesh 类,可由 Motion::Triangles 或形状构造(Motion::Mesh::createBox、Motion::Mesh::createCylinder、Motion::Mesh::createSphere)。

    • 新增了 Motion::Mesh::transform 和 Motion::Mesh::transformInPlace。

    • 新增了 Motion::Mesh::bottomCenterTransform 和 Motion::Mesh::bottomCenterTransformInPlace。

    • 新增了实验性函数 Motion::Experimental::merge,用于将多个网格合并为一个。

  • Motion::Planner::setCarriedObject 和 Motion::Planner::setReplaceableTool 现在接受 Motion::Mesh 作为参数。其他所有重载均已移除。

  • Motion::Planner::setObstacles 现在接受 Motion::Mesh 的列表作为参数。此前接受 Motion::Triangles 的重载已被移除。

  • 新增 Motion::Planner::replayApiLog,用于恢复规划器状态并回放此前导出的 API 日志。

  • 新增了 Motion::Pose 和 Motion::Matrix4x4 类,并支持二者之间的相互转换。

  • Added the Goals type and Goals::fromConfigurations.

C++

  • Motion::Application 现在会验证头文件版本与库版本是否一致。

Python

  • Obstacle.PointCloud、Obstacle.Colors 和 Triangles 现在可以直接由 numpy 数组构造,为大型点云和三角网格提供了性能更高的接口。

  • BlendRadius 和 ColorRGBA 现在以类的形式对外提供。

  • 导入 zividmotion wheel 包时,如果其版本与已安装的 C++ 库版本不一致,现在会发出警告。

错误修复

  • 当所有目标配置均无效时,Motion::Planner::path 会返回错误结果。

Python

  • 修复了 PathRequest 构造函数的参数顺序问题,使按位置构造能够正常工作。

2.0.0

2026年3月31日

API

  • Zivid Motion API 的首次公开发布。