Skip to content

v4.0.0

Choose a tag to compare

@pipeline-version-bumper pipeline-version-bumper released this 11 Dec 11:53
· 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_radius is deprecated and replaced by blending_radius
  • min_blending_velocity is deprecated and replaced by blending_auto

Collision Free Motion Planning

  • New parameter algorithm added. RRT is used as default. Check nova.actions.motions.collision_free for 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.py and movement_controllers.py to /cell module
  • Streamlined nova.api API access by using only v2_pydantic of 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_trajectories moved 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_controller interface 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

  • Nova class now exposes an ApiGateway with a field named api. Internal_api_client will be removed in a future release

Breaking Changes

  • combine_trajectory is 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
  • Changed Pose.to_api_pose to Pose.to_api_model
  • Changed MotionGroup .motion_group_id to .id
  • Changed Controller .controller_id to .id
  • Upgraded minimum Python version to 3.11
  • Removed nova.nats package. Nova class exposes a library integration from nova.nats field.
  • Removed Auth0 package and related environment variables
  • Logger changes:
    • Removed LOGGER_NAME environment variable. Top level logger is named “nova”. Each python sub-module logs to its own logger.
    • Removed deprecated nova.core.logger module
  • 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.nats return nats library instance instead of NatsClient
  • Removed nova/core/env_handler
  • ApiGateway now accepts NovaConfig as constuctor parameter
  • Fixed typo in extentions module and renamed it to extensions
  • Removed Controller.cell_id
  • Response type of the motion_group functions, stream_execute, stream_plan_and_execute, changes from AsyncIterable to AsyncGenerator

Detailed Changes: v3.6.7...v4.0.0