v4.0.0
·
141 commits
to main
since this release
Python SDK for NOVA API v2 Release Notes & Migration Guide v4.0.0 (2025-12-11)
With this release we start using v2 APIs NOVA platform from Python SDK.
MotionSettings
position_zone_radiusis deprecated and replaced byblending_radiusmin_blending_velocityis deprecated and replaced byblending_auto
Collision Free Motion Planning
- New parameter
algorithmadded. RRT is used as default. Checknova.actions.motions.collision_freefor more information. - When using collision free planning with a target pose, inverse kinematics are used to find which joint positions will be used to reach that pose. This ensures the shortest norm distance, see nova/cell/motion_group.py._find_shortest_distance, but can cause unwanted movements in the robot. In upcoming releases, this automatic behavior will be replaced by an API similar to:
https://portal.wandelbots.io/docs/api/v1/ui/#/operations/calculateInverseKinematic. - NOVA API V2 supports layer collisions and this is now supported by the SDK. The SDK deep copies the motion group setup while planning. Since collision scenes can be big, this can cause unexpected memory consumption. Please leave feedback with customersuccess@wandelbots.com if you'd like us to optimize the memory usage.
Module restructuring
- Moved
motion_group.py,controller.py,io.pyandmovement_controllers.pyto/cellmodule - Streamlined
nova.apiAPI access by using onlyv2_pydanticof the autogenerated API client
Pose
Make Pose handle None and api.models.Pose in the constructor:
Pose(position=(1, 2, 3), orientation=None)>Pose(api.models.Pose(position=None, orientation=api.models.RotationVector([4, 5, 6])))Pose(position=None, orientation=(4, 5, 6))>Pose(position=Vector3d(x=0.0, y=0.0, z=0.0), orientation=Vector3d(x=4.0, y=5.0, z=6.0))Pose(None)>Pose(position=Vector3d(x=0.0, y=0.0, z=0.0), orientation=Vector3d(x=0.0, y=0.0, z=0.0))
Motion Group
- Added forward kinematics
compare_collision_scenes,validate_collision_scenes,combine_trajectoriesmoved to utils- Added
get_model - Added
get_setup - Added
get_mounting - Added
get_safety_collision_setup - Added
get_default_collision_link_chain - Added
tcp_offset movement_controllerinterface has changed as per NOVA API.- If the robot is not at the start point of the trajectory, you will get an error and the movement will not happen. If you don't explicitly provide a start position, current joint configuration will be used as starting point.
Others
Novaclass now exposes an ApiGateway with a field namedapi.Internal_api_clientwill be removed in a future release
Breaking Changes
combine_trajectoryis removed from root__init__.py- The protocol prefix is now required for setting NOVA_API or NATS_BROKER env variables e.g.
- NOVA_API:
172.31.12.98->http://172.31.12.98
- NOVA_API:
- Changed
Pose.to_api_posetoPose.to_api_model - Changed MotionGroup
.motion_group_idto.id - Changed Controller
.controller_idto.id - Upgraded minimum Python version to 3.11
- Removed nova.nats package.
Novaclass exposes a library integration from nova.nats field. - Removed Auth0 package and related environment variables
- Logger changes:
- Removed
LOGGER_NAMEenvironment variable. Top level logger is named “nova”. Each python sub-module logs to its own logger. - Removed deprecated
nova.core.loggermodule
- Removed
- NovaConfig:
- Makes host in NovaConfig required
- Remove deprecated username and password environment variables
- Host and NOVA_API parameter requires explicit schema, http or https
- When no motion settings are provided, default motion settings with max velocity set to 50 and all else not set are used
Cell.natsreturn nats library instance instead of NatsClient- Removed
nova/core/env_handler - ApiGateway now accepts NovaConfig as constuctor parameter
- Fixed typo in
extentionsmodule and renamed it toextensions - Removed
Controller.cell_id - Response type of the
motion_groupfunctions,stream_execute,stream_plan_and_execute, changes fromAsyncIterabletoAsyncGenerator
Detailed Changes: v3.6.7...v4.0.0