Ride Robot Project

This project started with a simple question: how do you model the motion of a ride robot in a way that is accurate enough to study, but still practical to build and validate in a semester? I focused on the KUKA KR500 R2830 as a stand-in for ride-style KUKA RoboCoaster systems, derived the forward and inverse kinematics, checked the math against RoboDK, and wrapped everything into an interactive motion-planning app.

The full paper is more mathematical than this page, but the core story is straightforward. I simplified the larger ride platform into a fixed-base 6-DOF arm, solved the pose relationships analytically, verified the results at machine precision, and used those same solvers to drive waypoint-based MoveJ and MoveL planning.

6 revolute joints in the fixed-base model
8 closed-form IK branches in the non-singular case
18 IK verification cases tested in MATLAB
2 planning modes, MoveJ and MoveL

Theme Park Context

The project was motivated by amusement ride robotics, especially systems that use large KUKA arms to move riders through tightly controlled motion profiles. Real ride installations can include a mobile base, proprietary hardware, and platform-specific geometry, so I reduced the problem to the robot arm itself. That made it possible to derive the kinematics cleanly while still keeping the work tied to a believable ride-robot use case.

Why the KR500 R2830?

The dedicated RoboCoaster variants do not expose much public geometry, so I used the KR500 R2830 as a close proxy. It is large, industrially realistic, and most importantly it has a spherical wrist, which makes a closed-form inverse kinematics solution possible.

What was simplified?

The real ride architecture can include the rider carriage, a platform, and sometimes a mobile lower structure. In this project, the arm was treated as a stationary serial manipulator so the FK, IK, and planning logic could be isolated and validated first.

Robot Model

The paper defines the robot as a 6-DOF serial manipulator with a base frame {0}, tool frame {6}, and intermediate frames assigned using the modified Denavit-Hartenberg convention. The pose map is written as a homogeneous transform from the base to the tool frame:

0T6(q) = [ R06(q)   p06(q) ;  0T   1 ]
In plain terms, the matrix stores both the end-effector orientation and its position in the base frame.

To match the reference convention, the effective joint angles were offset and signed before building the transforms:

θ1 = -q1,  θ2 = q2,  θ3 = q3 - π/2,  θ4 = -q4,  θ5 = q5,  θ6 = π - q6
This sign convention is what keeps the MATLAB model aligned with the RoboDK robot.
Joint ai (mm) αi (rad) di (mm) θ offset
10010450
2500-π/200
3130000-π/2
4-55-π/210250
50+π/200
60-π/2290

Forward Kinematics

The forward-kinematics chain is the backbone of the whole project. Each link transform is built from the modified DH parameters, and the final pose is obtained by multiplying the six consecutive transforms:

0T6(q) = 0T1 1T2 2T3 3T4 4T5 5T6
Once that chain is expanded, the pose can be evaluated directly for any joint vector q.

One of the helpful shorthand terms in the paper is the scalar B, which collects the radial reach of the first three joints:

B = 500 + 1300 cos(q2) + 1025 cos(q2 + q3) - 55 sin(q2 + q3)
p06 = p04 + 290 [ R13   R23   R33 ]T
That expression makes the geometry easier to read: the arm builds a frame-4 position first, then the wrist offset extends to the end effector.

Rather than stop at symbolic work, I checked the implementation against RoboDK. The representative configurations below match to numerical precision, which gave confidence that the frame assignment and sign conventions were correct.

To quantify the agreement, the paper compares both position and orientation residuals:

ep = || pMAT - pRDK ||2
eR = cos-1 ( ( tr( RMATT RRDK ) - 1 ) / 2 )
Using RoboDK as the reference, the paper reports translational errors around 10-13 mm and angular errors around 10-6 deg for the shown cases.

The full MATLAB export used for the FK spot checks is shown below. It includes the joint inputs and the resulting homogeneous transforms for the representative cases highlighted in the paper.

Analytical Inverse Kinematics

The inverse-kinematics result is the part of the project that made the motion-planning app practical. Because the KR500 uses a spherical wrist, the IK can be split into two stages:

Position stage

Solve q1, q2, q3 from the wrist-center location. This reduces the first half of the robot to a planar geometric problem with shoulder and elbow branches.

Orientation stage

Solve q4, q5, q6 from the reduced wrist rotation. This is where the flipped wrist branches appear, unless the robot is near a wrist singularity.

The wrist center is found by backing out the final flange offset from the tool pose:

pwc = p06 - d66,  d6 = 290 mm
(S, E, W) ∈ {a, b} × {+, -} × {1, 2}
That branch product gives up to eight non-singular solutions: two shoulder choices, two elbow choices, and two wrist choices.

The paper also enforced joint-limit filtering after each candidate solution. The limits used in the model were:

Joint Allowed range (deg) Role in the solution search
q1[-185, 185]Shoulder branch filtering
q2[-130, 20]Upper-arm reach filtering
q3[-100, 144]Elbow branch filtering
q4[-350, 350]Wrist rotation wrapping
q5[-120, 120]Singularity-sensitive wrist tilt
q6[-350, 350]Tool-roll wrapping

IK Verification and Branch Behavior

I verified the analytical IK with a round-trip check:

0T6,test = FK(qtest),  { q(k) } = IK(0T6,test),  FK(q(k)) ≈ 0T6,test
In other words, generate a pose from FK, solve it with IK, then push every returned branch back through FK and make sure the pose comes back.

The three representative results from the paper are summarized below.

Case Test pose q (deg) Returned solutions Worst reported error
Home [0, -90, 90, 0, 0, 0] 3 10-13 mm, 10-6 deg
Moderate pose [30, -20, 40, 10, -30, 60] 4 10-12 mm, 10-6 deg
Full-branch case [0, -129, 20, 0, 10, 0] 8 10-12 mm, 10-6 deg

The complete MATLAB summary covered 18 test cases. Every case recovered the target pose to numerical precision, and the original configuration was recovered up to angle wrapping and joint-limit conventions.

Interactive Motion-Planning App

Once the FK and IK were working reliably, I integrated them into a lightweight planning app. The interface accepts two waypoints as either joint angles or Cartesian poses, solves the necessary IK, and animates the resulting motion while plotting the joint histories.

The app supports two motion styles:

MoveJ

Interpolate directly in joint space. This is usually the more straightforward option and is good for quickly checking feasibility and branch continuity.

σ(τ) = 3τ2 - 2τ3
qk = q0 + σ(τk) ( qf - q0 )

MoveL

Keep the tool position on a straight Cartesian path while interpolating orientation smoothly with matrix log and exponential operators.

pk = p0 + σ(τk) ( pf - p0 )
Rk = R0 exp( σ(τk) log( R0T Rf ) )

When multiple IK branches exist at a sample, the planner keeps the motion continuous by selecting the feasible branch closest to the previous one:

qk = arg minq ∈ Sk || wrapπ( q - qk-1 ) ||W
That continuity rule prevents abrupt jumps between otherwise valid branches and lets the animation stay visually smooth.

Outcome and Next Steps

This project gave me a full end-to-end view of ride robot modeling: define a believable robot proxy, derive the kinematics, verify them against a simulator, and then use those same tools inside a planning interface. The final result is not just a set of equations on paper, it is a working workflow for evaluating pose reachability, branch selection, and motion feasibility.

The main future directions from the paper and presentation are:

  1. Build a more robust simulation package around the same FK/IK core.
  2. Find or create a usable URDF for the KR500 geometry.
  3. Bring the mobile lower ride platform back into the model.
  4. Build a scaled physical version with 3D-printed hardware.

If you want the full derivations, detailed validation screenshots, or the app source, the paper and repository linked above are the best places to go deeper.

Explore Next

AMCC-AAC: Autonomous Magnetized Cryo-Couplers with Active Alignment Control for Propellant Transfer

Other Projects