Kinetica Collision-Free Path Planner
Robot + start/goal + obstacles → collision-free joint path, timed within velocity/accel limits.
Try an example: 6-axis arm swings around a wall in front of it · Gantry over two walls (direct move would collide) · Goal inside a closed fixture: no path (reported honestly)
How it works
Plans a collision-free motion for a serial robot between two configurations (or to a TCP pose through IK) around box, sphere, capsule and cylinder obstacles and the robot itself. A seeded RRT-Connect search in joint space finds a path, shortcut smoothing removes detours, corners are rounded within a deviation bound, and a time-optimal parameterisation keeps every joint inside its velocity and acceleration limits. Returns the via points, the timed trajectory, CSV/JSON exports, clearance and singularity warnings — or says honestly that no path was found.
- Search: RRT-Connect (Kuffner & LaValle 2000) grows one tree from the start and one from the goal; every iteration draws a seeded pseudo-random configuration (mulberry32), extends one tree by at most 8% of the joint ranges towards it and greedily connects the other tree. Distances are measured with every joint scaled by its range. If the straight joint move is free, no search is run.
- Collision checks: each configuration is tested with the same capsule/box distances as the collision-check tool (static base excluded, adjacent links and links touching at home ignored), after a bounding-sphere pre-test. Every edge is sampled at 1° per revolute and 2 mm per prismatic joint; motion between samples is not checked, so the safety margin should cover what can happen within one sample step.
- Smoothing: seeded random shortcuts between two points on the path (kept only when the straight segment is free), then a greedy pass that connects each via point to the farthest directly reachable one.
- Corners are rounded with circular blends in scaled joint space whose deviation from the checked polyline is at most the blend deviation (Kunz & Stilman 2012); each blend arc is collision-checked and halved up to six times, otherwise the robot stops at that via point.
- Timing: on a grid of about 1000 points along the path (plus one per degree of turning in blends) the limits |q′ᵢ·ṡ| ≤ vᵢ and |q′ᵢ·s̈ + q″ᵢ·ṡ²| ≤ aᵢ are linear in (s̈, ṡ²) and are enforced at both ends of every grid interval; a backward pass computes the controllable velocities and a forward pass takes the largest admissible acceleration (TOPP-RA, Pham & Pham 2018). Samples are evaluated analytically; if discretisation lets one exceed a limit, the whole motion is slowed uniformly (reported as time scale), so every sample respects every limit. Rest-to-rest.
- Verification: every output sample is re-checked with the reference collision checker for contact (clearance ≥ 0, reported as minimum clearance; a dip below the margin between checked configurations is reported as a warning), and manipulability (σmin/σmax) is scanned for near-singular stretches.
Kinematic simulation for planning and teaching, not robot control. The path is collision-free only against the simplified capsule/box envelope at the checked resolution; it is not a certified safety function. Verify every motion on the real controller with reduced speed and the cell safety system active.
Sources
- RRT-Connect: An efficient approach to single-query path planning (ICRA 2000) (J. J. Kuffner, S. M. LaValle — IEEE)
- Time-Optimal Trajectory Generation for Path Following with Bounded Acceleration and Velocity (RSS 2012) (T. Kunz, M. Stilman — Robotics: Science and Systems)
- A New Approach to Time-Optimal Path Parameterization Based on Reachability Analysis (IEEE T-RO 2018) (H. Pham, Q.-C. Pham — IEEE)
- Real-Time Collision Detection (closest points between segments, OBB tests) (C. Ericson — Morgan Kaufmann 2005)
Part of Kinetica
-
Kinetica Robot motion studio
Simulate robot arms in your browser: kinematics, trajectories, collisions, program export.
Related tools
- Kinetica Collision Check – Robot pose + obstacles → collisions, minimum clearance and self-collision between links.
- Kinetica Trajectory Planner – Waypoints (PTP, LIN, CIRC) + limits → timed joint samples, cycle time and peak velocities.
- Kinetica Workspace Reachability Map – Robot + plane → sampled 2-D reachability map coloured by manipulability, with collisions.
How to use Kinetica Collision-Free Path Planner
Find a collision-free joint path for a robot arm around boxes, spheres and columns, timed within every joint's velocity and acceleration limit.
What it is for
The straight joint move from start to goal would swing the robot through a wall, a fence or a machine? This tool searches a way around. It takes a robot (library, DH table, URDF, Kinetica JSON or a whole project), a start pose, a goal (joint values, or a TCP pose that it solves by inverse kinematics) and the obstacles, and returns a path with a few via points plus a timed trajectory that keeps every joint inside its velocity and acceleration limits.
It is a simulation: capsule-and-box geometry, checks every 1° (revolute) or 2 mm (prismatic), no dynamics. Use it to explore layouts and rough cycle times, not to drive a real arm.
Worked example
Around a wall. KX6-1400 from [−60, 30, 20, 0, 40, 0] to [60, 30, 20, 0, 40, 0], a box "Wall" centred at (800, 0, 600) mm, size 400 × 200 × 1200, margin 5 mm:
Collision-free path with 3 via points, 1.497 s within the joint limits (minimum clearance 5.7 mm).
The search needed 194 iterations. Smoothing cut the raw tree path from 20 vertices to 5 and its length from 1.45 to 0.68 (in joint ranges). A1 and A2 use 100 % of their acceleration limit, A1 84 % and A2 88 % of their velocity limit, so the timing really is limit-bound. Without the wall the direct move is free and takes 1.159 s.
Slower settings. Velocity and acceleration at 50 % give the same path in 2.158 s. Setting the corner blend deviation to 0 also takes 2.158 s, because the arm stops at each of the three via points.
Gantry over two walls. Gantry G3 from (100, 400, −400) to (1100, 400, −400) mm with two 400 mm high walls and a 30 mm margin: 2 via points, the Z axis lifts to about −200, 2.739 s, minimum clearance 30.73 mm (z_ram ↔ Wall B).
No way in. The planar arm's goal [90, 0] sits inside a three-sided fixture. After 400 iterations the tool answers "No collision-free path was found in 400 iterations"; the goal tree never grew beyond 2 nodes.
How to read the result
- Callout: found or not, iterations and via points. Start or goal in collision is reported with the offending pair.
- Duration: the time-optimal rest-to-rest time along the smoothed path.
- Minimum clearance: the smallest gap over every output sample, re-checked independently. A small dip below the margin between checked configurations is reported as a warning.
- Path vertices: start, via points and goal in degrees or mm. These are the waypoints you would teach.
- Peak table: how much of each joint's limit is used. Values near 100 % show the limiting joints.
- Downloads: CSV and JSON of the timed trajectory, with accelerations.
Tips and common mistakes
- Choose the margin to cover what one check step can hide, plus model error: 5–20 mm for small arms, more near fast wrists.
- The same seed always gives the same path. Try two or three seeds and keep the shortest duration.
- A goal pose can have several IK solutions; the first collision-free one closest to the start is used. Give joint values if you need a particular arm configuration.
- Warnings about singularities mean a wrist or elbow passes a stretched pose; the joints stay within limits, but the TCP slows down.
- In the Kinetica app, Insert via points into the program adds the via points as PTP waypoints. PTP moves follow the same straight joint segments, so the re-planned program stays collision-free.
FAQ
Does "no path found" mean none exists?
No. RRT-Connect is probabilistically complete: with more iterations it finds a path if one exists, but a budget can run out. Raise the iterations, change the seed or reduce the margin.
Why does the path look odd, with wrist rotations?
The search is random and only shortened afterwards, so the path is valid but not the shortest possible.
Is the timing what my controller will do?
Roughly. It respects velocity and acceleration limits only; real controllers add jerk limits, dynamics and look-ahead.
Can I use a whole Kinetica project?
Yes. Paste the .kinetica.json into the project field; its robot and obstacles are used, and an empty start takes the project's current pose.
Guide last updated:
For scripts and AI agents
- JSON API:
POST https://kineticapathplanner.usefulweb.site/api/v1/calculate(same calculation as this page) - Interface description: OpenAPI 3.1 · AI guide: llms.txt
- MCP server (Streamable HTTP):
https://kineticapathplanner.usefulweb.site/mcp· tool namekinetica_path_planner
Example request
curl -s -X POST https://kineticapathplanner.usefulweb.site/api/v1/calculate \
-H 'content-type: application/json' \
-d '{"robot":"kx6-1400","start":"-60, 30, 20, 0, 40, 0","goal":"j: 60, 30, 20, 0, 40, 0","obstacles":[{"name":"Wall","shape":"box","x":800,"y":0,"z":600,"sx":400,"sy":200,"sz":1200}],"margin":5}'