Changelog
4.0.0
2026-10-05
API
Added path failure diagnostics. Enable
Motion::PathRequest::diagnoseFailuresto get extra diagnostics when aMotion::Planner::pathcall fails.Added
Motion::ReplaceableToolandMotion::ToolGeometry.Motion::Planner::setReplaceableToolnow takes aMotion::ReplaceableTool, replacing the previous overload that took the tool meshes directly.Replaced
GoalswithMotion::ConfigurationGoals, holding the newMotion::ConfigurationGoal. It is now constructed implicitly from a list of configurations or of goals, replacingfromConfigurations. The goals are now read withMotion::ConfigurationGoals::goals, replacingjointConfigurations.Motion::Planner::computeInverseKinematicsnow takesMotion::PoseGoals, holding the newMotion::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::Meshcan no longer be modified after it is created. RemovedtransformInPlaceandbottomCenterTransformInPlace, useMotion::Mesh::transformandMotion::Mesh::bottomCenterTransforminstead, which return a copy. ReplacedsetColorwithMotion::Mesh::withColor, which returns a copy.
C++
Motion::Meshcan now be copied.
Python
The
zivid_pythonmotionwheel 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
Generationand aRuntimesection.Moved the escape directions of each region of interest to
Runtime/RegionsOfInterest, matched toGeneration/Workspace/RegionsOfInterestbyId.Changing a field under
Runtimeno longer requires the cell data to be generated again.Added the
Generation/ConstrainedMovementsection, configuring how the robot tool is oriented during movements.SelfCollisionCheckLinksunderGeneration/AttachmentsandGeneration/AdaptivePartnow numbers the links from 1. Add one to each link in an existing file.Loading the cell fails when
SelfCollisionCheckLinkslists a link twice or a link the robot does not have.Renamed
StaticEnvironmentSafetyDistanceandDynamicEnvironmentSafetyDistancetoRuntime/PreferredMinClearance/StaticEnvironmentandRuntime/PreferredMinClearance/DynamicEnvironment. The planner keeps this clearance when it can, but does not guarantee it.
General
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.
Fixed several bugs.
3.2.0
2026-09-01
API
Added
Motion::Visualizer::setRobotConfigurationto set the robot configuration the Visualizer displays.Motion::packageApiLognow 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.zipwhich left the log out.
UserConfiguration.yml
Added
RobotBrand, the manufacturer of the robot.
General
Various performance improvements.
Bug fixes
Motion::Planner::pathreports 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-08-12
API
Added
Motion::Pose::fromXyzRpyto construct a pose from a translation and roll, pitch and yaw angles.Added
Motion::Pose::composeto compose two poses.Added an experimental
Motion::Experimental::loadMeshfunction to read a mesh from a file on disk.
C++
Added stream operators for
Motion::Tcp,Motion::WaypointandMotion::Planner.
Python
The
zivid_pythonmotionwheel now covers all supported Python versions, replacing the one wheel per Python version distributed previously.The
zivid_pythonmotionwheel now declares its dependency on NumPy.
RuntimeConfiguration.yml
Added
Performance/FreeCpuThreads, which overrides the number of CPU threads Zivid Motion leaves free for the user when sizing its thread pool. This number was previously fixed to 2.
General
Installing a cell package now creates the Motion resources directory when it does not already exist.
Packaging a cell now includes the source URDF and mesh files also when packing without generated data.
Fixed several bugs.
3.0.0
2026-07-02
API
Motion::Pose,Motion::Configuration,Motion::PathandMotion::Triangleare now concrete types, replacing the previous typedefs.Removed the
PointXYZandVectorXYZtypedefs, useMotion::Vector3finstead.Renamed
TransformedBoxtoMotion::BottomCenteredTransformedBox, and itsbottomCenteredTransformmember totransform.Motion::Planner::computeInverseKinematicsnow takes a list of poses and returnsGoals, instead of a single pose returning an optional configuration.Replaced
PathRequest.goalConfigurationswithMotion::PathRequest::goals, using the newGoalstype.Motion::Profileis now lowercase (Testing/Production->testing/production).Added a new
Motion::Meshclass, constructed fromMotion::Trianglesor from shapes (Motion::Mesh::createBox,Motion::Mesh::createCylinder,Motion::Mesh::createSphere).Added
Motion::Mesh::transformandMotion::Mesh::transformInPlace.Added
Motion::Mesh::bottomCenterTransformandMotion::Mesh::bottomCenterTransformInPlace.Added an experimental
Motion::Experimental::mergefunction to merge multiple meshes into one.
Motion::Planner::setCarriedObjectandMotion::Planner::setReplaceableToolnow acceptMotion::Meshas their argument(s). All other overloads have been removed.Motion::Planner::setObstaclesnow accepts a list ofMotion::Meshas its argument. The previous overloads acceptingMotion::Triangleswere removed.Added
Motion::Planner::replayApiLogto restore the planner state and replay a previously exported API log.Added the
Motion::PoseandMotion::Matrix4x4classes, with conversions between them.Added the
Goalstype andGoals::fromConfigurations.
C++
Motion::Applicationnow verifies that the header and library versions match.
Python
Obstacle.PointCloud,Obstacle.ColorsandTrianglescan be constructed directly from a numpy array, providing a more performant interface for large point clouds and triangle meshes.BlendRadiusandColorRGBAare now exposed as classes.Importing the
zividmotionwheel now warns when its version does not match the installed C++ library.
Bug fixes
Motion::Planner::pathreturns an error result when all goal configurations are invalid.
Python
Fixed the
PathRequestconstructor argument order so positional construction works.
2.0.0
2026-03-31
API
Initial public release of the Zivid Motion API.