This assignment explores simulating, controlling, and planning for a mobile robot with several joints.
Part 1: Create a simulation of a planar Segway-like robot with a rider. It should have a wheel, and an inverted pendulum which is the rider. You need to choose a mass and moment of inertia for the wheel, and a mass, height, and moment of inertia (with respect to the wheel axis) for the inverted pendulum (roughly human-like parameters are good). Come up with the dynamic equations. Whizzy graphics will make this more fun. Your simulation can be 2D, or you can do a 3D simulation to incorporate turning later.
Part 2: Design a manual control system that allows your robot to balance the rider while standing still and while moving at a variety of velocities.
Part 3: Use LQR design methods to design a controller that also does Part 2.
Part 4: Create a dynamic planner for this robot that moves from standing still at point A to standing still at point B with a) minimum time, b) minimum motor torque (so we can have the smallest motors possible), c) minimum stimulation of the rider's vestibular system (to avoid motion sickness). You need to figure out how to make these criteria well formulated, and what limits performance.
***BONUS***: Create a dynamic planner for this robot that swings up the rider from the stable hanging down position to the unstable upright position. Assume the rider is a rigid body and is strapped in tightly.
***DOUBLE BONUS***: What changes in the swingup if the rider can bend (and generate torques) at the hip? At the knees? Swing the arms?
A broader perspective: This is like the cart-pole problem frequently used as an example in machine learning. It is also like balancing a fully actuated two joint pendulum/robot arm. Much of the interest in inverted pendulum balancing has to do with balancing a rocket (say a Saturn V) on top of the engines.
You can use any type of computer/OS/language you want. You can work in groups or alone.