In the first two parts of this series, we built an omni-directional wheel. We saved it as a reusable library block. For this robot, we need three of them. Placing the three wheels on the chassis is mostly a mechanical step. After that, things get a little more interesting. We now have to think about how the robot touches the physical world. This is where the geometry connections we ignored earlier finally come into play. In this part, we will assemble the chassis with the three wheels, route the geometry ports out of the robot subsystem, and parameterize the model so it is easy to tweak. We will save the ground-plane interaction and the first rolling simulation for Part 4.
Hooking up the wheels to the chassis
Before we dive into the blocks, let us recap the flow. We already have a reusable wheel subsystem from Part 2. Now we build the chassis, place three wheels on it, wire up their inputs and outputs, and wrap the whole thing into a reusable robot subsystem.

For the main chassis, we use a low-height cylinder. We want the three wheels equally spaced, which puts them 120 degrees apart. To keep the top-level model clean, we group the chassis body and the three axles into one subsystem called MainBody. MainBody exposes the chassis reference frame R and three frame ports — Axle 1, Axle 2, and Axle 3. Each wheel attaches to one of these ports.
At the top level, we add three copies of the wheel from the library. We name them Wheel_1, Wheel_2, and Wheel_3. Between each Axle port and the R port of its wheel, we add a Rigid Transform — Axle1_to_omni1, Axle2_to_omni2, and Axle3_to_omni3. These line up the axle frame with the wheel’s reference frame. We do not need a joint here. The revolute joint that lets the wheel spin already lives inside the wheel library block from Part 2. The transform only takes care of the geometry.

Positioning the axles (inside MainBody)
Each axle sits on the side wall of the chassis cylinder. Its long axis points radially outward, so the wheel rolls tangent to the chassis. To place each axle, we insert a Rigid Transform between the chassis reference frame and the axle solid. This transform does two things. It translates the axle outward by the chassis radius. It also rotates the frame so the axle points along the radial direction.
The first axle uses a zero-degree rotation about the chassis +Z-axis. The second and third rotate by 120° and 240°. The outward translation is the same for all three — it is just the chassis radius. This is the nice part about the cylindrical symmetry. Three transforms, identical except for one angle, and the geometry falls into place.

Wiring the torque inputs and velocity outputs
In the earlier step, we exposed two signal ports from every wheel subsystem. One is a Torque input for the motor command. The other is a w output for the wheel’s angular velocity. We connect an Inport to each torque input and name them MotorInput1, MotorInput2, and MotorInput3. We connect an Outport to each w output and name them w1, w2, and w3. These six ports become the control interface for the motor controller system. We will build that controller in a later part.
Aggregating the geometry ports
Now, you will remember those geometry ports we vaguely talked about in the previous article. These are the geom ports connected by dotted lines and they carry the convex-hull geometry we will use for ground contact. For convenience, we will bundle all the geom ports together and connect them to a single outport that represents the geometry of the entire assembly.
Wrap-up
Now, we have our complete robot assembly wired up. In the next article, we will ground this assembly (literally!!) to a surface plane and hook up the motor controllers. We are almost there! A snack will usually do you good at this point.
I'd like to hear what you have to say!