Hardcore, el robot solo necesita 5 segundos para seguir la curva del amor

¡Acostúmbrate a escribir juntos! Este es el día 11 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .


0 Prefacio

En estos años, los robots han comenzado a aprender por sí mismos a "retroceder el coche en el almacén". Este artículo es esencialmente un problema tranquilo para los robots. Este documento aún completa una aplicación de seguimiento de trayectoria basada en el modelo de robot con ruedas diferenciales , para que el robot pueda seguir la trayectoria del amor en el menor tiempo posible .

La animación del efecto de simulación se muestra a continuación. Después de leer este artículo, ¡creo que tú también puedes hacerlo! (Al final del artículo, hay == representaciones reales de la operación del robot ==!)

inserte la descripción de la imagen aquí

1 ¿Qué es el seguimiento de trayectoria?

El seguimiento de la trayectoria toma la estabilidad y la rapidez como núcleo y, en función de las restricciones de diferencia de tiempo (como la velocidad, la aceleración), se planifica el estado de movimiento entre los puntos de la ruta y la planificación de la trayectoria proporciona información sobre el tiempo de planificación de la ruta. En pocas palabras: se trata de controlar el robot para mantener la trayectoria deseada en el menor tiempo posible .

En comparación con el problema de estabilización del problema anterior, el problema de estabilización consiste en diseñar una ley de control para reducir el error a 0 en un tiempo limitado, y la pose actual se estabiliza en la pose de referencia .

Los problemas discutidos en estas dos publicaciones de blog son fáciles y simples en la superficie, pero las aplicaciones detrás de ellos son extremadamente extensas. A menudo se usan en el seguimiento y equilibrio de las competencias de autos inteligentes. También hay bastantes artículos académicos que estudian estos dos problemas Estudiantes interesados ​​Puede continuar aprendiendo más, y pongo los documentos de referencia relevantes al final del artículo.

2 Empezar a programar

2.1 Seleccionar una pista

R = 5.0;
T = 40.0;
w = 2 * pi / T;

ref = @(t) [R*(2*sin(w*t)-sin(2*w*t)), R*(2*cos(w*t)-cos(2*w*t))];
复制代码

imprimirloinserte la descripción de la imagen aquí

2.2 Escribir el algoritmo de seguimiento de trayectoria

function dpdt = wmrTrackOde45Func(t, p, ref)
复制代码

Obtener el estado actual del robot

% robot state
x = p(1);
y = p(2);
theta = p(3);
复制代码

Obtener información de pose de referencia

% reference path
pRef = ref(t);
xRef = pRef(1);
yRef = pRef(2);
vRef = 1;
wRef = 0;
复制代码

obtener el vector de destino

% predict reference path
targetVec = [xRef - x;
             yRef - y]; 
if targetVec(2) > 0
    thetaRef = acos(targetVec(1) / sqrt(targetVec(1)^2 + targetVec(2)^2));
else
    thetaRef = - acos(targetVec(1) / sqrt(targetVec(1)^2 + targetVec(2)^2));
end
复制代码

Configuración de parámetros del controlador

% controller parameters
Kx = 15;
Ky = 25;
Kt = 10;
复制代码

control

% controller
ex = cos(theta) * (xRef - x) + sin(theta) * (yRef - y);
ey = -sin(theta) * (xRef - x) + cos(theta) * (yRef - y);
u  = [ vRef * cos(thetaRef - theta) + Kx * ex;
       wRef + vRef*(Ky * ey + Kt * sin(thetaRef - theta))];

v = u(1);
w = u(2);

dpdt = [v*cos(theta); v*sin(theta); w];
end
复制代码

Luego encapsule esta función como la función llamada de ode45, y deje que Matlab nos ayude a calcular iterativamente.

2.3 Prueba de rendimiento de seguimiento

El verde es la posición inicial del robot y el azul es la trayectoria real del robot.
inserte la descripción de la imagen aquí

Echemos un vistazo a la curva de error nuevamente. Alrededor de 5 s, todos los parámetros siguen la curva esperada. Este efecto se puede observar ajustando los parámetros del controlador para profundizar la comprensión del efecto de control. El controlador en el código anterior está configurado por yo personalmente. , puede ajustar según sea necesario. inserte la descripción de la imagen aquí¿Qué pasa con el efecto en otras pistas? Eche un vistazo al efecto de seguimiento de la trayectoria circular a continuación, incluso si la posición inicial está muy sesgada, no hay problema.inserte la descripción de la imagen aquí

2.4 Hacer animaciones

figure(1)
trackProcess = VideoWriter('video/trackProcess.avi');
open(trackProcess);
movie = moviein(t);

% 画参考轨迹
plot(refPos(:,1),refPos(:,2), "--b", 'LineWidth', 1);
grid on
hold on

% 画初始位置
handler = plotPose(initPos, 0.8, 0.3, 'r', size);

for i=1:length(t)
    delete(handler);
    handler = plotPose(actualPos(i,:));
    plot(actualPos(i,1), actualPos(i,2), 'Marker', '.', 'color', [0,0.5,0]);
    movie(:, i) = getframe;
	writeVideo(trackProcess, movie(:, i));
end
hold off
close(trackProcess);
复制代码

3 Combate de autos reales

Debido a la limitación de 5M, solo se lanzará una parte de la animación y el video completo se puede ver en la cuenta oficial.

inserte la descripción de la imagen aquí

4 Referencias

Los estudiantes que deseen realizar investigaciones relacionadas pueden leer más la siguiente literatura

[1] Yang Shichao. Investigación sobre estabilización de retroalimentación y control de seguimiento de trayectoria de robots móviles con ruedas no holonómicas [D]. Universidad de Chang'an. [2] Kanayama Y, Kimura Y, Miyazaki F, et al. Un método de control de seguimiento estable para un robot móvil autónomo[C]// Conferencia Internacional IEEE sobre Robótica y Automatización IEEE, 1991.


Para obtener más contenido, preste atención a mi canal de IA "AI Technology Club"

Supongo que te gusta

Origin juejin.im/post/7085740390577356813
Recomendado
Clasificación