You may have seen the Boston Dynamics' robot called Handle. Your goal is to design a controller for a toy version of this robot cartooned below. The robot consists of a wheel rolling on the floor, a link attached to the wheel, and another link attached to the first link. There is a total of two motors: one between the wheel and the first link (moment \(\tau_0\)) and another one between the first and second link (moment \(\tau_2\)). Furthermore, there is a torsion spring between the first and second link. The zero position of the torsion spring—the position for which the spring does not generate any moment—is \(\theta_2=20\,[\mathrm{deg}]\); hence, the most energetically beneficial position for balancing the robot in the upward facing position is not the position where both links are in-line.


Cartoon of the Handle-like robot

The state-space model of the robot is attached in handleLikeRobot_ode.m in the form of a Matlab function. The state vector consists of the angles (depicted above) and their time-derivatives (\(\mathbf{x}=[\theta_0, \dot{\theta}_0,  \theta_1, \dot{\theta}_1, \theta_2, \dot{\theta}_2]\)), and the control signal consists of the moments generated by the motors (\(\mathbf{u}=[\tau_0, \tau_2]\)). The angles are in radians and the moments in Nm. Assume that the control signals are limited to the interval (-20, 20) [Nm]. Furthermore, you are provided with a function visu() animating a robot’s state trajectory and also with a script ode_test.m that simulates the robot’s dynamics for some random initial conditions.

Your task is to design a controller that moves the robot as quickly as possible five meters forward while the robot must remain in the upward facing position during the whole transition. In other words, the robot starts stabilized in the upward position, the transition is initiated, and at the end of the transition, the robot ends up being five meters apart from the initial position again stabilized in the upward-facing position. The distance is measured by the traveled distance of the center of the wheel. The radius of the wheel is 0.075 m. Even though you you will not need them, the other physical parameters are listed in the visu() function. The only requirement here is that the transition must not take more than five seconds and that the controller must be verified in simulations on the non-linear model provided in handleLikeRobot_ode.m. You can see a simulation of a possible solution to this task.

Example of a solution.

It's up to you what approach you choose to solve this task. You can linearize the model, design a stabilizing LQR, and slowly change the reference to move the robot forward. Or you can use trajectory optimization and trajectory tracking. Or you can design an NMPC conroller (manually or by MPC toolbox in Matlab).

Submission

You have to submit a short report and all scripts, functions, and Simulink models you used. The report has to contain a short description of the task and a description of your solution. You should discuss the performance of your controller with the aid of figures showing the simulated responses. The simulations must be reproducible by the other uploaded files.


Attached files:
Last modified: Wednesday, 17 February 2021, 12:34 AM