Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE SISTEMAS Y AUTOMÁTICA
1.- Composición de dos poses. Implementa una función que realice la composición de dos
poses, es decir que dadas 𝑝1 = [𝑥1 𝑦1 𝜃1 ]𝑇 y 𝑝2 = [𝑥2 𝑦2 𝜃2 ]𝑇 , devuelva el resultado de la
operación 𝑝1 ⊕ 𝑝2 , definido como:
𝑥1 + 𝑥2 𝑐𝑜𝑠𝜃1 − 𝑦2 𝑠𝑖𝑛𝜃1
𝑝1 ⊕ 𝑝2 = (𝑦1 + 𝑥2 𝑠𝑖𝑛𝜃1 + 𝑦2 𝑐𝑜𝑠𝜃1 )
𝜃1 + 𝜃2
function p=pose_comp(p1,p2)
%This function computes the composition of two poses, p1,p2 of dimension 3x1
%p is the resultant pose
end
2.- Modelo de Odometría. Diseña un programa que iterativamente comande un robot para
seguir una trayectoria en forma de cuadrado de lado 10 metros. Para ello necesitarás hacer
uso de la composición de poses para calcular en cada iteración 𝑥𝑡 = 𝑥𝑡−1 ⊕ 𝑢𝑡 , siendo 𝑢𝑡 =
(Δ𝑥 Δy Δ𝜃)𝑇 . Considera que en cada paso el robot puede avanzar 1 metro o girar 90⁰.
Puedes utilizar el siguiente snippet como guía.
clear all;
close all;
k=1;
%%length of the simulation
%num_steps=.........
DEPARTAMENTO DE INGENIERÍA
DE SISTEMAS Y AUTOMÁTICA
while (k<num_steps)
%%Add here the control action to follow a rectangle in terms of increments of x,y,theta
%u(1)=.....
%u(2)=....
%u(3)=....
%%updating pose:
%% Here the pose of the robot "x" should be updated with the control action
%%.............
%%Drawing
r=drawrobot(x,'b');
plot(x(1),x(2),'r.');
end
4.- Añadiendo ruido. Modifica el ejercicio 2 para que la acción de control se vea afectada
2
𝜎Δ𝑥 0 0
2
por ruido. Para ello considera que Σ𝑢𝑡 = [ 0 𝜎Δy 0 ]. Dibuja la trayectoria del robot
2
0 0 𝜎Δθ
2 2 2
con y sin ruido y comprueba cómo varía para diferentes valores de 𝜎Δ𝑥 , 𝜎Δy y 𝜎Δθ .
clear all;
close all;
k=1;
DEPARTAMENTO DE INGENIERÍA
DE SISTEMAS Y AUTOMÁTICA
while (k<num_steps)
%%Add here the control action to follow a rectangle in terms of increments of x,y,theta
%u(1)=.....
%u(2)=....
%u(3)=....
%%updating pose:
%% Here the pose of the robot "x" should be updated with the control action...
%%.............
%compose the true pose of the robot with the noisy control action
%xtrue=.....
%%Drawing
r=drawrobot(x,'b');
plot(x(1),x(2),'r.');
plot(xtrue(1),xtrue(2),'k.');
end
5.- Usando partículas. Vamos a estimar la posición del robot en base a partículas, samples
de poses probables en las que se puede encontrar el vehículo. Para ello repite el ejercicio
2, mostrando la posición sin ruido (odometría) del robot junto a #particles posibles
posiciones en base a otras tantas acciones de control ruidosas. Considera #particles=100.
ˆ2 2 sample(1 2 d )
2
2
2
xt xt 1 dˆ cos( t 1 ˆ1 )
y y dˆ sin( ˆ )
t t 1 t 1 1
t t 1 ˆ1 ˆ2