To showcase the performance of a line of servomotors, a parallel platform was recently built to control the motion of a ping-pong ball in realtime. Complementing the synchronized servo actuation are visual feedback and realtime kinematic computation.
Charan Bhamra · Mechatronics engineer | Monolithic Power Systems

A new three-axis parallel platform demonstrates the performance advantages of a certain line of servomotors with dynamic balancing, swirling, and bouncing of an unwieldy ping-pong ball. These motors (using onboard drivers, angle sensors, and CANopen support) enable high-resolution motion, realtime response, and tight multi-axis synchronization. More specifically, the platform addresses and manages visual-feedback latency, synchronization across all axes, and realtime inverse kinematics and proportional-integral-derivative (PID) control on embedded hardware.
In short, the system demonstrates how visual data can inform multi-axis coordination and track motion accuracy in realtime — capabilities useful in real-world applications such as delta 3D printers, pick-and-place machines, medical robotics, and other industrial equipment needing precision motion control.

One motor drives each limb of the platform in CANopen cyclic synchronous position (CSP) mode for tight coordination and jitter-free motion. A camera above captures ball position at a moderate frame rate of 40 frames per second. Output visual data is processed in realtime via OpenCV computer vision on a Raspberry Pi 5 device — yielding actual ball location. The information is then fed to a Cortex M4 microcontroller unit (MCU) via serial peripheral interface (SPI) communication.
The embedded controller acts as the motors’ initiator controller, so it’s responsible for the platform’s core control loop and kinematic model for the. Core control is built around a PID-based algorithm that converts position error into a precise platform tilt angle. First, the kinematic model translates platform tilt-angle information into position targets for the three servomotors. Then the motors enter CSP mode via CANopen to receive position setpoints. This ensures synchronized and deterministic motion across all three axes to stabilize the platform during fast-changing inputs.

Visual tracking and image processing for feedback
The platform’s system architecture separates computational roles between the microcontroller and Raspberry Pi 5 device. The MCU handles inverse kinematics. Meanwhile, the Raspberry Pi handles visual feedback — running a lightweight Python script with OpenCV to process video frames from a top-mounted USB camera at 40 fps. Gaussian blur is applied using OpenCV to the frames and converted to hue, saturation, and value (HSV) color space.
To help tracking, the ping-pong ball sports an orange color mask. Then contour filtering helps identify the ball’s boundaries. Center coordinates are extracted from the smallest circle that completely encloses the largest contours. These coordinates indicate ball position in the XY plane.
Z position is determined by the ball’s apparent diameter. More specifically, as the ping-pong ball gets closer to the camera, its detected diameter in pixel units becomes larger. This pixel information is translated into a real-world Z-position in millimeters.
The Raspberry Pi also connects to a local display via HDMI for live rendering of the camera feed with postprocessed ball tracking frames. The position and height data of the ball is sent to the MCU via the SPI.
Kinematic model calculations
Using the inverse kinematic approach, the motor crank angle is computed to reach the target platform tilt angle and Z translation. Global positions of the fixed-base joints and local positions of the moving platform joints distributed on a circle of a given radius is:
Rotation matrices define how the platform moves in 3D space. Rotation of a point around the X-axis by angle θ_x is:
Rotation of a point around the Y-axis by angle θ_y is:
Rotation of a point around the Z-axis by angle θ_z is:
The combined rotation matrix (the rotation of the platform’s axes to the base’s axes) is:
Actual positions of each platform joint in global coordinates is:
Once global platform joint positions are determined, the needed length of each limb is:
The length of each limb is the straight-line distance between the base joint and the transformed platform joint. Based on the needed length of each limb, the motor crank angle with given lengths of the crank arm and the connecting rod is:
3D and 2D views illustrate how these equations define the platform orientation and indicate the needed crank angle.

The MCU runs a PID-based control system that continuously adjusts the tilt and Z translation of the platform to control the ball’s motion in realtime. Depending on the mode (balancing, circular swirling, or bouncing), the independent PID controller for each mode computes the target platform orientation and translation, which is then converted to absolute motor positions via inverse kinematics. The platform orientation and translation for each mode is described below:
Balancing: The target ball location is fixed at the center of the platform, and the PID controller minimizes the positional error by adjusting θ_x and θ_y accordingly.
Circular swirling: The target trajectory is set by the two-dimensional array containing predefined time-varying reference points forming a circle of 100mm radius in the XY plane.
Bouncing: The target height is set in mm units, and the target location is the center of the platform. To initiate bouncing, the system enters an oscillation phase, where the platform undergoes rapid vertical movement to impart enough energy to lift the ball off the surface. This phase is designed to gradually increase the ball’s mechanical energy. Once a predefined energy threshold is reached (indicating that the ball is bouncing consistently) the controller transitions to bouncing mode. In this mode, the controller applies minimal synchronized vertical motion to sustain the bounce. The goal is to maintain the ball’s height with optimal energy efficiency rather than driving the ball higher.
The ball’s total energy can be estimated using both kinetic and potential energy components, and the ball’s velocity can be computed using the difference between the current and previous ball height over the timestep.
Inside the platform’s servomotor
The motors used in this demonstration platform have built-in servo drivers (to efficiently provide power to the motor windings) and an embedded motion controller runs a nested control loop, regulating current, velocity, and position in realtime. The onboard CAN transceiver enables direct integration of the CANopen network, while a dedicated power management solution ensures stable internal voltages for safe operation. By integrating all critical components — including the sensor, driver, controller, communication, and power into a single device — the servomotors in this platform eliminate the need for external boards and controllers. That in turn dramatically simplifies wiring and system architecture for a plug-and-play solution.

Synchronized motion with cyclic synchronous position (CSP) mode
Synchronized motion is a precision actuation method supported by the CANopen. While other CANopen modes such as cyclic synchronous velocity (CSV) mode and cyclic synchronous torque (CST) mode are suited for velocity and torque-driven applications, CSP mode is suitable for deterministic position-based multi-axis control.
In CSP mode, the MCU sends precise position setpoints to each motor at a fixed and deterministic update rate. To ensure continuity and smoothness between updates, each motor internally performs linear interpolation between consecutive setpoints. The motor controllers don’t generate their own trajectories; instead, they rely on the initiator to continuously feed updated position targets.

From a communication perspective, CSP mode requires the initiator to send process data object (PDO) messages containing absolute target positions. The PDO can be mapped, configured, and stored to the motor’s non-volatile memory. So, the motor shaft can follow a seamless trajectory even though position targets are sampled at discrete intervals. The calculated crank angle values from inverse kinematics are converted into CSP position targets and broadcasted synchronously across the CAN bus. That way, the system maintains highly coordinated and jitter-free motion across the three limbs.
Sequence of parallel-platform operation
The system begins by executing a torque-based homing routine on the servomotors to reference each motor’s initial position. During this process, all three limbs retract inward at a controlled speed until they reach their mechanical hard stops, ensuring a repeatable zero position. Once homing is complete, the platform automatically rises to a predefined mid-height along the Z axis. A green status LED indicates successful initialization — and signals that a user can place a ping-pong ball on the platform.
The manipulator enters its active sequence with balancing mode and then executes a circular swirl mode for 30 seconds, followed by bouncing mode for 30 seconds. The sequence continuously loops as long as the system remains active. Throughout the demo, a 7-in. screen provides visual feedback of the ball’s motion.
Beyond ping pong in real-world designs
Medical robotics implement architectures similar to those of the demonstration to stabilize endoscopic instruments, guide surgical tools, and assist in minimally invasive procedures where fine resolution and jitter-free motion are essential.

In industrial automation, integrated servomotors like those in the demonstration detailed here impart motion to optical alignment stages, pick-and-place heads, and micro-assembly manipulators. Some delta pick-and-place machines and consumer-grade delta 3D printers also use servo-driven parallel kinematic structures.
EZmotion | ezmotion.co






Leave a Reply
You must be logged in to post a comment.