% sail control function from "Modeling, control and state-estimation for an % autonomous sailboat", John Melin function sail_angle = sail_control(input) delta_sail_min = pi/32; delta_sail_max = pi/5.2; % true wind characteristics from input a_true = input(1); % speed psi_true = input(2); % direction in n-frame velocity = input(3); heading = input(4); wind_apparent = [a_true*cos(psi_true - velocity) - heading; a_true*sin(psi_true - velocity)]; psi_apparent = atan2(wind_apparent(2),wind_apparent(1)); sail_angle = -sign(psi_apparent)*(((delta_sail_min - delta_sail_max)/pi)*abs(psi_apparent) + delta_sail_max); end