-
Amira Abdel-Rahman authoredAmira Abdel-Rahman authored
README.md 5.53 KiB
2.47 Bio-Inspired Robotics Final Project
Presentation
Proposal
Simulation
q = [\theta_1 ; \theta_2; x; y]; \\
\dot{q} = [\dot{\theta}_1 ; \dot{\theta}_2; \dot{x}; \dot{y}];
Control
simulation/optimization
All torque control with bezier curves
hardware control
Get Bezier curve path of the leg from simulation/optimization and have an Impedance control (flight stage) and torque control (stance phase)
Optimization
Variables
Two Bezier curves for torques:
ctrl_1=[T_1,T_2,..T_n] \\
ctrl_2=[T_1,T_2,..T_n] \\
n=6 \\
-0.85<T_i<085
Starting Conditions:
ground \ height = -0.164; \\
\theta_1=-36*\pi/180; \\
\theta_2=90*\pi/180;\\
x=y=0\\
\dot{\theta}_1=\dot{\theta}_2= 0\\
\dot{x}=\dot{y}= 0\\
Constraints
x^{end}>=x^{start} \\
q_1^{end}=q_1^{start} \\
q_2^{end}=q_2^{start} \\
y^{end}=y^{start} \\
\dot{q}_1^{end}=\dot{q}_1^{start} \\
\dot{q}_2^{end}=\dot{q}_2^{start} \\
\dot{x}^{end}=\dot{x}^{start} \\
\dot{y}^{end}=\dot{y}^{start} \\
Objective Function
- First objective: maximize height
h'
to push it to go up, got the maxx'
- Then I added to the constraints:
apex \ height = h' \\ x_{end}=x' \\
E/(m*g*d)
Updates and Results
5 December
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.1_phases.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.1_phases.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.8_cntrl.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.19_cntrl.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.1_ks.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.12_ks.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.1_ks_zoom.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.12_ks_zoom.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.1_torques_thetast.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.12_torques_thetast.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.1_torques_with_without.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.12_torques_with_without.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.1_torques_with_without_squared.png)
![](/amiraa/2.47-final-project/-/raw/main/img/5_dec_3/6.12_torques_with_without_squared.png)
2 December
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec/6.16_cntrl.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec/6.17_cntrl.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec_1/6.1_ks.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec_1/6.12_ks.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec_1/6.1_ks_zoom.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec_1/6.12_ks_zoom.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec/6.1_torques_thetast.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec/6.12_torques_thetast.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec/6.1_torques_with_without.png)
![](/amiraa/2.47-final-project/-/raw/main/img/2_dec/6.12_torques_with_without.png)
November 23
- having trouble finding a gait
- Added starting
\dot{q_1}^{start}
,\dot{q_2}^{start}
,\dot{x}^{start}
,\dot{y}^{start}
to the optimization variables - added
q_1^{start}
andq_2^{start}
to the optimization variables - recently added tf as it changed the dynamics
- Moving to casadi instead of fmincon (maybe the derivatives will help)
- lots has to be changed as it does not support branching statements they have discontinuous derivatives, that affect the two functions
discrete_impact_contact
andjoint_limit_constraint
insimulate_leg.m
- first the angle constraints has to be added as constraints
- second the simulation has to be divided into three stages: stance flight and stance again. The tf of each of these stages will be come an optimization variable as well
- lots has to be changed as it does not support branching statements they have discontinuous derivatives, that affect the two functions
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.16_cntrl.png)
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.17_cntrl.png)
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.1_torques_thetast.png)
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.12_torques_thetast.png)
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.1_torques_with_without.png)
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.12_torques_with_without.png)
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.1_ks.png)
![](/amiraa/2.47-final-project/-/raw/main/img/24_nov/6.12_ks.png)
November 12: First Hop
![](/amiraa/2.47-final-project/-/blob/main/./img/6.1_cntrl.png)
![](/amiraa/2.47-final-project/-/blob/main/./img/6.3_cntrl.png)
TODO and Questions
-
script to calculate before and after adding spring
-
Optimize with springs
-
get real physical variables
- angle limits
- masses
- torques limits
- the friction coefficients
-
try other starting conditions
-
is velocity calculation correct?
-
what if it torque not enough
-
for the control should T_1 = T_n (cyclical control?)
-
change bezier to lower dimensions to allow for sudden changes
-
check if angle calculation is correct
-
from last to to first
-
adding springs