Cells, controllers, and motion groups
When working with Wandelbots NOVA, you interact with a three-level hierarchy: Cells, controllers, and motion groups.
Cells
A cell represents the robot workspace in NOVA. It’s the top-level container for all robots and equipment in your automation setup. Within a cell, you have one or more controllers that interface with robot hardware, and each controller manages one or more motion groups.
Controllers
A controller is the driver software that communicates with robot controller hardware. It manages networking, safety protocols, and motion control for connected motion groups. It handles manufacturer-specific protocols and provides a unification and abstraction of the controller interfaces.
To simplify things, you can think of the controller layer as the “robot controller” in traditional robotics terms.
Your first interaction with the controller layer on Wandelbots NOVA is when you add a new controller to a Wandelbots NOVA cell. This is also where you’ll name the controller, e.g., “ur5e-bob”. If you connect a physical controller, you’ll also provide connection details. More on how to connect physical controllers to Wandelbots NOVA here.
Relationship to motion groups
One controller can manage multiple motion groups in a 1:N relationship.
Example configurations are:
- Single-arm robot: 1 controller → 1 motion group, 1 robotic arm
- Dual-arm robot: 1 controller → 2 motion groups, 2 robotic arms
- Robot + external axis: 1 controller → 2 motion groups, 1 robotic arm + 1 external axis
Motion operations target motion groups, not controllers. You plan trajectories for, read state from, and execute movements on motion groups.
Multi-motion group coordination like synchronized movements is not supported in planning and execution.
Motion groups
Wandelbots NOVA supports two motion group types: robotic arms and external axes. In common terms, this is often referred to as a “robot”.
Motion groups can be a 6-axis robot arm, dual-arm collaborative robots (2 motion groups, 1 controller), or combinations of robot arms with external axes like rotary tables or linear tracks.
Each motion group has a numeric ID assigned by the controller, usually starting at 0.
Referring to motion groups
Motion groups are referred to using the format: motion_group_id@controller_name, e.g., 0@ur5e-bob refers to motion group ID 0 on the controller ur5e-bob.
This identifier appears throughout the API, e.g., in GET /api/v2/cells/{cell}/controllers/ur5e-bob/motion-groups/0/state.