Génération de trajectoires en forme de de tentacule (clothoide) sous matlab

a marqué ce sujet comme résolu.

Bonjour, je suis à la recherche d’une aide, je voulais généré des trajectoires en forme de clothoide sous matlab c’est orienté véhicule autonome. Le souci est que j’ai réussi à créée une clothoide mais dès que je mets la boucle, il y a un seul qui prend la forme de la clothoide et les autres sont presque des droites de 45°. Merci pour les propositions.

Salut,

Ce qu'@elegance souligne en remarquable inadéquation avec son pseudonyme est que nous manquons d’information pour pouvoir te venir en aide. Sans ton code matlab on ne peut pas deviner où se trouve le problème.

Merci donc de nous fournir plus d’informations pour que l’on puisse te venir en aide ! :)

+3 -5

La question de Johson restait sans réponse. Personne n’osait lui dire que sa question était mal posée. Je suis repassé quelques heures plus tard, toujours rien.

Si personne ne veut aider Johson, si parmi les piliers de ce site, personne ne veut lui dire que sa question est mal posée, je vais le faire… avec humour/provocation.

Il faut réveiller cette question avant qu’elle ne disparaisse ; il faut quand même que si Johon repasse par ici, quelqu’un lui dise que sa question est mal posée, il faut lui montrer que ce site vit.

24 heures plus tard, Johson n’est pas réapparu, il n’a pas donné plus d’informations. Il est parti vexé ? Ou il a déjà oublié qu’il a posté cette question ici ?

Vous aviez raison je m’excuse voila le code

clc; close all; clear all;
dt = 0.01;
t = -2:dt:2;
len = length(t);
x = zeros(1, 100);
y = zeros(1, 100);

s1 = @ (t)cos(t.^2);
s2 = @ (t)sin(t.^2);

for n = 2:len
    x(n) = x(n-1)+ integral( s1, t(n-1), t(n))*dt;
    y(n) = y(n-1)+ integral( s2, t(n-1), t(n))*dt;
    plot(x,y)   
end
+0 -0

Salut,

Je me suis permis de mettre en forme ton message en virant des lignes blanches et en indiquant qu’il s’agit de code avec les triples backquotes (clique sur "Éditer" en haut à gauche de ton message pour voir comment j’ai fait).

Bref, ta méthode d’intégration est extrêmement curieuse et couteuse. Il existe un built-in qui fait ce que tu veux très simplement, il s’agit de cumtrapz. Le code devient

clc; close all; clear all;

dt = 0.01;
t = -2:dt:2;

s1 = cos(t.^2);
s2 = sin(t.^2);

x = cumtrapz(t, s1);
y = cumtrapz(t, s2);

plot(x,y)
pause()  % necessaire chez moi pour voir le plot

À part ça, ça ne nous explique pas vraiment ton problème… Avec le code que tu fournis ou ma version simplifiée on obtient un clothoïde comme attendu, mais ça ne reproduit pas ton problème de "les autres sont presque des droites de 45°". Merci de fournir un code qui reproduit cet effet. :)

+0 -0

Génération de trajectoire par approche par tentacule

la 4eme page de votre droite c’est ce que je veux obténir au final, j’avais commencé d’abord à tracer des clothoides puis faire la boucle. C’est le but

Johson

OK, merci pour l’énoncé. Mais du coup qu’est-ce qui te bloque ? Quel code as tu écrit et quel est le problème avec ce que tu obtiens ? On n’écrira pas le code à ta place, par contre on peut t’aider à le corriger ou l’améliorer.

+0 -0

Mon problème c’est du moment que j’ai obtenue une clothoide, en faisant la boucle quand je fais le hold on pour voire le tracé, j’ai une seule clothoide et tous les autres sont presque des droites avec le 1er code que je vous ais fournis avant que vous n’apportiez votre amélioration avec la méthode cumtrapz et non pas la methode integral .

Ben… Ce que tu vois en faisant ça sont les étapes de ton intégration conduisant à la dernière courbe. Le seul plot qui a du sens est le dernier.

+1 -0

ressaye celui ci s’il te plait parceque j’ai pas compris ta réponse.

clc; close all; clear all;

dt = 0.05;

t = 0:dt:2;

len = length(t);

x = zeros(1, len);

y = zeros(1, len);

s1 = @ (t)cos(t.^2);

s2 = @ (t)sin(t.^2);

for n = 2:len

x(n) = x(n-1)+ integral( s1, t(n-1), t(n))*dt;

y(n) = y(n-1)+ integral( s2, t(n-1), t(n))*dt;

plot(x,y,'b'), hold on
  

end

Au début de ton code tu crées tes deux tableaux x et y remplis de zéros. Bien. Ensuite dans ta boucle tu calcules les éléments de x et y les uns après les autres. Mais le seul état qui a du sens mathématiquement est ce que contient x et y à la fin de ta boucle. Tous les états intermédiaires que tu plottes représentent ce qui passe lors de l’intégration numérique, mais les valeurs contenues (en l’occurrence plein de zéros sur les termes pas encore calculés) ne veulent rien dire.

+0 -0

Mais en regardant les différentes valeurs de x et y dans la boucle ce ne sont pas des zéros, les valeurs sont différentes de zéro.

Les n premières valeurs sont différentes de zéro, les suivantes sont égales à zéros parce que pas encore calculées, c’est ça qui crée un graphe bizarre.

Aviez vous une suggestion à me faire s’il vous plait.

Oui, ne plot que l’état final (et utilise cumtrapz accessoirement…). L’instruction plot(x,y) n’a rien à faire dans la boucle.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte