The project was broken into 3 distinct subproblems: sensing, planning,
and control. Sensing had to create reasonable state estimates of all
robots with respect to the goal position, planning had to generate a
valid trajectory from the starting point to the goal, and control had
to track the trajectory point-by-point.
To make state estimation as accurate as possible, we utilize an external
camera with AR tags to determine position and orientation of each robot.
Although this provides a direct measurement of the state, it limits the
workspace of the system to the camera's field-of-view and is prone to
high-frequency noise as the robots move further away from the camera.
Planning had to take into consideration the system model when generating
a path. The primary requirement was that the derivative of trajectory had
to be continuous. This would enable nonholonomic systems to track the
trajectory without instantaneous rotational or horizontal motion. An
algorithm
presented by Professor Alessandro De Luca from the Sapienza University
of Rome was utilized for its simplicity and flexibility.
Control had to drive the system to the next state while maintaining its
rigid body structure. To achieve this, we designed a hierarchical structure
that consists of a single global controller and multiple local controllers.
The global controller would generate control signals for the global robot
which would then be fed as an input to the local controllers. The local
controllers utilize this to determine a feedforward signal that is used
in conjunction with a proportional controller to derive the control signals
for each robot.
The major tradeoff in the design was maintaining the rigid body structure
at the controls level rather than the planning level. Although this allows
the system to maintain its structure very accurately, it limits the robot
configurations such that the global robot can still be described by a
unicycle-model. The alternative would be to generate a path for the global
robot and then translate it for each local robot. This would permit arbitrary
robot configurations at the cost of a less reliable rigid body structure.