probleme pour algorithme
#1
Posté 04 mai 2012 - 08:58
je bosse actuellement sur mon robot en vb mais je but sur un probleme
je vais commencer par vous exposer le probleme :
bot.PNG 7,95 Ko 36 téléchargement(s)
on peut voir le robot en orange et la cible en bleu turquoise
la distance est mesurer entre les centre de chaque cercle
le robot peut tourner sur 360 degres (de 0 a 359)
ma question :
comment determiner le sens ou il doit tourner, avec le moin de mouvement possible ?
Exemple: quand mon robot est a par exemple a 10° et que la cible ce trouvent a 359°, l'ecart entre les 2 angle est de 11° (facile pour un humain! ) mais je n'arrive pas a le transcrire en code
Si l'un d'entre vous a une idées?
PS: je ne demande pas a ce que vous ecriviez le code mais juste me donner le principe de raisonnement !
par avance merci
#2
Posté 04 mai 2012 - 09:09
Salut aTous
je bosse actuellement sur mon robot en vb mais je but sur un probleme
je vais commencer par vous exposer le probleme :
bot.PNG 7,95 Ko 36 téléchargement(s)
on peut voir le robot en orange et la cible en bleu turquoise
la distance est mesurer entre les centre de chaque cercle
le robot peut tourner sur 360 degres (de 0 a 359)
ma question :
comment determiner le sens ou il doit tourner, avec le moin de mouvement possible ?
Exemple: quand mon robot est a par exemple a 10° et que la cible ce trouvent a 359°, l'ecart entre les 2 angle est de 11° (facile pour un humain! ) mais je n'arrive pas a le transcrire en code
Si l'un d'entre vous a une idées?
PS: je ne demande pas a ce que vous ecriviez le code mais juste me donner le principe de raisonnement !
par avance merci
choisis un sens de rotation positif :
pose X ton angle actuel compris entre 0 et 359 degres
Y l'angle que tu veux atteindre entre 0 et 359°
fais le calcul en valeur valeur absolue de (Y - X ) et de (Y -( X+360 ) )
Si le premier est plus petit que le second alors tu regarde le signe de ton expression Y-X et tu tourne dans le sens positif pour un signe positif et dans les sens négatif si le signe est positif
Si les second est le plus petit tu fais les ordre contraire ....
En espérant avoir été claire ...
Mike
EDIT je crois que j'ai commis une petite erreur en oubliant un cas je vérifie et reposterais pour confirmer ou modifier si besoin ^^
En tout cas le principe rester la même ^^
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#3
Posté 04 mai 2012 - 10:05
Ma proposition finale est donc :
Tu calcule valeur absolu de ( Y - X )
si c'est inférieur à 180 ° tu regarde le signe de Y-X et tu tourne dans le sens de même signe
Si c'est supérieur à 180° tu tourne dans le sens de signe opposé au signe de Y -X
Plus simple et plus efficace
j'espère avoir été clair
Mike
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#4
Posté 04 mai 2012 - 10:37
choisis un sens de rotation positif :
pose X ton angle actuel compris entre 0 et 359 degres
Y l'angle que tu veux atteindre entre 0 et 359°
fais le calcul en valeur valeur absolue de (Y - X ) et de (Y -( X+360 ) )
Si le premier est plus petit que le second alors tu regarde le signe de ton expression Y-X et tu tourne dans le sens positif pour un signe positif et dans les sens négatif si le signe est positif
Si les second est le plus petit tu fais les ordre contraire ....
En espérant avoir été claire ...
Mike
EDIT je crois que j'ai commis une petite erreur en oubliant un cas je vérifie et reposterais pour confirmer ou modifier si besoin ^^
En tout cas le principe rester la même ^^
merci pour ce conseil
a peut de chose pret c'est ce que j'ai fait et ça marche !
Dim deltaRoBot As Integer = angle du robot Dim deltaCible As Integer = angle vissé Dim ecart1 As Integer = 0 Dim ecart2 As Integer = 0 ecart1 = (deltaCible - deltaRoBot) ecart2 = (deltaCible - (deltaRoBot + 360)) If Math.Abs(ecart1) < Math.Abs(ecart2) Then If ecart1 > 0 Then droite(ecart1) ElseIf ecart1 < 0 Then gauche(Math.Abs(ecart1)) End If ElseIf Math.Abs(ecart1) > Math.Abs(ecart2) Then If ecart2 > 0 Then droite(ecart2) ElseIf ecart2 < 0 Then gauche(Math.Abs(ecart2)) End If ElseIf Math.Abs(ecart1) = Math.Abs(ecart2) Then gauche(Math.Abs(ecart2)) End If
#5
Posté 04 mai 2012 - 10:54
merci pour ce conseil
a peut de chose pret c'est ce que j'ai fait et ça marche !
Tu es sur que ça marche?
Si tu prend deltarobot=355° et deltacible=1°
tu as abs(ecart1)<abs(ecart2)
et comme deltacible-déltarobot < 0 tu vas tourner à gauche
si tu prend deltarobot = 1° et deltacible = 355°
tu as abs(ecart2)<abs(ecart1) et comme ecart2 = 355 -361 <0 tu vas à gauche aussi ...
ça ne te dérange pas ?
Après je me suis peut être trompé en lisant ton code ^^
Je te rappel avoir fait une petite erreur dans ma première réponse ^^ la seconde est bien meilleure
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#6
Posté 04 mai 2012 - 11:35
choisis un sens de rotation positif :
pose X ton angle actuel compris entre 0 et 359 degres
Y l'angle que tu veux atteindre entre 0 et 359°
fais le calcul en valeur valeur absolue de (Y - X ) et de (Y -( X+360 ) )
Si le premier est plus petit que le second alors tu regarde le signe de ton expression Y-X et tu tourne dans le sens positif pour un signe positif et dans les sens négatif si le signe est positif
Si les second est le plus petit tu fais les ordre contraire ....
En espérant avoir été claire ...
Mike
EDIT je crois que j'ai commis une petite erreur en oubliant un cas je vérifie et reposterais pour confirmer ou modifier si besoin ^^
En tout cas le principe rester la même ^^
je mets en ligne l'exe du fichier generer :
http://dl.free.fr/gxK0W766P
ce n'ai qu'un debut !
<br><br>edit je vient de voir ton message<br><br> franchement c'a marche plutot bien enfin pour moi <br><br>noter qu'il faut dotnet 4.0 pour l'exe <br><br>
#7
Posté 04 mai 2012 - 12:09
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#8
Posté 04 mai 2012 - 12:15
Tu es sur que ça marche?
Si tu prend deltarobot=355° et deltacible=1°
tu as abs(ecart1)<abs(ecart2)
et comme deltacible-déltarobot < 0 tu vas tourner à gauche
si tu prend deltarobot = 1° et deltacible = 355°
tu as abs(ecart2)<abs(ecart1) et comme ecart2 = 355 -361 <0 tu vas à gauche aussi ...
ça ne te dérange pas ?
Après je me suis peut être trompé en lisant ton code ^^
Je te rappel avoir fait une petite erreur dans ma première réponse ^^ la seconde est bien meilleure
a ben oui ok je vien de piger t'a 2emem formule
j'ai rectifier
Sub visercible() Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction)) Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser)) Dim ecart1 As Integer = 0 ecart1 = (deltaCible - deltaRoBot) If Math.Abs(ecart1) < 180 Then If ecart1 > 0 Then droite(ecart1) ElseIf ecart1 < 0 Then gauche(Math.Abs(ecart1)) End If ElseIf Math.Abs(ecart1) >= 180 Then If ecart1 > 0 Then droite(ecart1) ElseIf ecart1 < 0 Then gauche(Math.Abs(ecart1)) End If End If End Sub
#9
Posté 04 mai 2012 - 01:14
a ben oui ok je vien de piger t'a 2emem formule
j'ai rectifierSub visercible() Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction)) Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser)) Dim ecart1 As Integer = 0 ecart1 = (deltaCible - deltaRoBot) If Math.Abs(ecart1) < 180 Then If ecart1 > 0 Then droite(ecart1) ElseIf ecart1 < 0 Then gauche(Math.Abs(ecart1)) End If ElseIf Math.Abs(ecart1) >= 180 Then If ecart1 > 0 Then droite(ecart1) ElseIf ecart1 < 0 Then gauche(Math.Abs(ecart1)) End If End If End Sub
hum il me semble que là encore ça ne marchera pas : il faut inverser les ordres dans un des deux cas ... essaye de faire un dessin avec plusieurs situation avec ton algorithme il me semble que c'est pas bon ... selon moi la bonne solution est :
Sub visercible()
Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction))
Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser))
Dim ecart1 As Integer = 0
ecart1 = (deltaCible - deltaRoBot)
If Math.Abs(ecart1) < 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
ElseIf Math.Abs(ecart1) >= 180 Then
If ecart1 < 0 Then
droite(ecart1)
ElseIf ecart1 > 0 Then
gauche(Math.Abs(ecart1))
End If
End If
End Sub[/code]
ou bien
Sub visercible()
Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction))
Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser))
Dim ecart1 As Integer = 0
ecart1 = (deltaCible - deltaRoBot)
If Math.Abs(ecart1) < 180 Then
If ecart1 < 0 Then
droite(ecart1)
ElseIf ecart1 > 0 Then
gauche(Math.Abs(ecart1))
End If
ElseIf Math.Abs(ecart1) >= 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
End If
End Sub[/code]
dans un cas il prendra toujours le chemin le plus long dans l'autre le chemin le plus court ... tout dépend du sens que tu as considéré "positif "
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#10
Posté 04 mai 2012 - 01:36
hum il me semble que là encore ça ne marchera pas : il faut inverser les ordres dans un des deux cas ... essaye de faire un dessin avec plusieurs situation avec ton algorithme il me semble que c'est pas bon ... selon moi la bonne solution est :
Sub visercible()
Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction))
Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser))
Dim ecart1 As Integer = 0
ecart1 = (deltaCible - deltaRoBot)
If Math.Abs(ecart1) < 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
ElseIf Math.Abs(ecart1) >= 180 Then
If ecart1 < 0 Then
droite(ecart1)
ElseIf ecart1 > 0 Then
gauche(Math.Abs(ecart1))
End If
End If
End Sub[/code]
ou bien
Sub visercible()
Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction))
Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser))
Dim ecart1 As Integer = 0
ecart1 = (deltaCible - deltaRoBot)
If Math.Abs(ecart1) < 180 Then
If ecart1 < 0 Then
droite(ecart1)
ElseIf ecart1 > 0 Then
gauche(Math.Abs(ecart1))
End If
ElseIf Math.Abs(ecart1) >= 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
End If
End Sub[/code]
dans un cas il prendra toujours le chemin le plus long dans l'autre le chemin le plus court ... tout dépend du sens que tu as considéré "positif "
je ne comprend pas ton dernier message
as tu aissayer mon exe ?
Elle marche bien !(pourtant avec la 1ere Formule)
je laisse un 2eme lien avec la solution N°2
#11
Posté 04 mai 2012 - 01:53
je ne comprend pas ton dernier message
as tu aissayer mon exe ?
Elle marche bien !(pourtant avec la 1ere Formule)
je laisse un 2eme lien avec la solution N°2
je n'arrive pas à télécharger tes fichiers ... ton lien me renvoit directement ici " http://dl.free.fr/getfile.pl " et ça marche pas...
Donc non je n'ai pas télécharger ton exe mais je lit le code écrit et ma "logique" et l'expérience me montre que ton programme ne marche pas comme il me semble que tu le voudrais.
fais un dessin ... à la main des différents cas et regarde si ton programme t'indique le bon sens de rotatation. Moi j'en ai fais et à moins de me tromper sur l'interprétation de ton second programme qui selon moi ne traduit pas exatement ce que je t'ai dit dans mon second message, ton programme se trompe dans certaine configurations. reprend l'exemple que je t'ai donné !
Mais avant toute chose dis moi quel est le sens posititf ? sens horaire ou sens anti horaire ?
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#12
Posté 04 mai 2012 - 02:27
bon j'ai commenter le codeBon il y avait bien une petite erreur dans ce que je proposais ^^
Ma proposition finale est donc :
Tu calcule valeur absolu de ( Y - X )
si c'est inférieur à 180 ° tu regarde le signe de Y-X et tu tourne dans le sens de même signe
Si c'est supérieur à 180° tu tourne dans le sens de signe opposé au signe de Y -X
Plus simple et plus efficace
j'espère avoir été clair
Mike
et j'ai fini par comprendre!
merci
Sub visercible()
'je
recupereles angles
Dim
deltaRoBot As Integer = Math.Abs(Polaire(centre,
direction))
Dim
deltaCible As Integer = Math.Abs(Polaire(centre,
coordonnéeViser))
Dim
ecart1 As Integer = (deltaCible - deltaRoBot) ' je declare ma
variable "(y-X)
If Math.Abs(ecart1) < 180 Then 'si la valeur absolue de (Y-X) est
inferrieur a 180°
If ecart1 > 0 Then 'si (Y-X) est possitif ( en dessus de
0!)
droite(ecart1)
'je tourne a droite avec
l'ecrat trouver
ElseIf ecart1 < 0 Then 'si (Y-X) est negatif ( en dessous de
0!)
gauche(Math.Abs(ecart1)) 'je tourne a
gauche
End If
ElseIf Math.Abs(ecart1) >= 180 Then 'si la valeur absolue de (Y-X) est
superieur a 180°
If ecart1 < 0 Then 'si (Y-X) est negatif ( en dessous de
0!)
droite(ecart1) 'je tourne a droite avec l'ecrat
trouveR
ElseIf ecart1 > 0 Then 'si (Y-X) est possitif ( en dessus de
0!)
gauche(Math.Abs(ecart1)) 'je tourne a
gauch
End If
End If
End Sub
#13
Posté 04 mai 2012 - 02:33
bon j'ai commenter le code
et j'ai fini par comprendre!
merci
desoler pour ma lourdeur et ma precédante mise en page
#14
Posté 04 mai 2012 - 03:15
( c'est bon ton code marche comme tu le voulais ? )
Je suis ravi d'avoir pu t'aider Et puis je suis curieux de voir ton robot et ton programme en fonctionnement tu nous poste des vidéo ?
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#15
Posté 04 mai 2012 - 05:52
là en lisant ton code ça traduit ce que je t'ai dit en prenant " tourner à droite" comme sens positif => sens horaire = sens positif
( c'est bon ton code marche comme tu le voulais ? )
Je suis ravi d'avoir pu t'aider Et puis je suis curieux de voir ton robot et ton programme en fonctionnement tu nous poste des vidéo ?
je fini le chassi ( tourret de cable reseau en plastique) et je posterais juste apres !
le code fonctionne bien mais juste su le robot virtuel maintenant je bosse sur la com avec l'arduino
A+
#16
Posté 04 mai 2012 - 05:55
je n'arrive pas à télécharger tes fichiers ... ton lien me renvoit directement ici " http://dl.free.fr/getfile.pl " et ça marche pas...
Donc non je n'ai pas télécharger ton exe mais je lit le code écrit et ma "logique" et l'expérience me montre que ton programme ne marche pas comme il me semble que tu le voudrais.
fais un dessin ... à la main des différents cas et regarde si ton programme t'indique le bon sens de rotatation. Moi j'en ai fais et à moins de me tromper sur l'interprétation de ton second programme qui selon moi ne traduit pas exatement ce que je t'ai dit dans mon second message, ton programme se trompe dans certaine configurations. reprend l'exemple que je t'ai donné !
Mais avant toute chose dis moi quel est le sens posititf ? sens horaire ou sens anti horaire ?
il faut visualiser le film pour telecharger
#17
Posté 04 mai 2012 - 06:41
Il calcul l'angle a effectuer en prennant en compte, l'angle de départ et la position x, y de départ, et la position d'arrivée.
Il marche parfaitement (utilisé a la coupe Eurobot l'année derniere et re utilisé cette année), par contre je pense qu'il n'est pas du tout optimisé ^^
// Compute the angle to do to go to (x, y) double angle_coord(struct robot *my_robot, double x1, double y1) { double angletodo = 0; if ((x1 < my_robot->pos_X) && (y1 < my_robot->pos_Y)) { angletodo = -PI / 2 - atan(fabs((x1 - my_robot->pos_X) / (y1 - my_robot->pos_Y))); } else if ((x1 > my_robot->pos_X) && (y1 < my_robot->pos_Y)) { angletodo = -atan(fabs((y1 - my_robot->pos_Y) / (x1 - my_robot->pos_X))); } else if ((x1 > my_robot->pos_X) && (y1 > my_robot->pos_Y)) { angletodo = atan(fabs((y1 - my_robot->pos_Y) / (x1 - my_robot->pos_X))); } else if ((x1 < my_robot->pos_X) && (y1 > my_robot->pos_Y)) { angletodo = PI / 2 + atan(fabs((x1 - my_robot->pos_X) / (y1 - my_robot->pos_Y))); } else if ((x1 < my_robot->pos_X) && (y1 == my_robot->pos_Y)) { // angletodo = -PI; } else if ((x1 > my_robot->pos_X) && (y1 == my_robot->pos_Y)) { // angletodo = 0; } else if ((x1 == my_robot->pos_X) && (y1 < my_robot->pos_Y)) { // angletodo = -PI / 2; } else if ((x1 == my_robot->pos_X) && (y1 > my_robot->pos_Y)) { // angletodo = PI / 2; } else angletodo = 0; angletodo = angletodo - my_robot->theta; if (angletodo > PI) angletodo = angletodo - 2 * PI; if (angletodo < -PI) angletodo = 2 * PI + angletodo; return angletodo; }
Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.
#18
Posté 04 mai 2012 - 06:49
au passage on te l'optimise ou ... PI ? ( PI :pas intéressé ^^ )Salut, j'ai écris ce code pour mon robot qui tourne sous arduino.
Il calcul l'angle a effectuer en prennant en compte, l'angle de départ et la position x, y de départ, et la position d'arrivée.
Il marche parfaitement (utilisé a la coupe Eurobot l'année derniere et re utilisé cette année), par contre je pense qu'il n'est pas du tout optimisé ^^// Compute the angle to do to go to (x, y) double angle_coord(struct robot *my_robot, double x1, double y1) { double angletodo = 0; if ((x1 < my_robot->pos_X) && (y1 < my_robot->pos_Y)) { angletodo = -PI / 2 - atan(fabs((x1 - my_robot->pos_X) / (y1 - my_robot->pos_Y))); } else if ((x1 > my_robot->pos_X) && (y1 < my_robot->pos_Y)) { angletodo = -atan(fabs((y1 - my_robot->pos_Y) / (x1 - my_robot->pos_X))); } else if ((x1 > my_robot->pos_X) && (y1 > my_robot->pos_Y)) { angletodo = atan(fabs((y1 - my_robot->pos_Y) / (x1 - my_robot->pos_X))); } else if ((x1 < my_robot->pos_X) && (y1 > my_robot->pos_Y)) { angletodo = PI / 2 + atan(fabs((x1 - my_robot->pos_X) / (y1 - my_robot->pos_Y))); } else if ((x1 < my_robot->pos_X) && (y1 == my_robot->pos_Y)) { // angletodo = -PI; } else if ((x1 > my_robot->pos_X) && (y1 == my_robot->pos_Y)) { // angletodo = 0; } else if ((x1 == my_robot->pos_X) && (y1 < my_robot->pos_Y)) { // angletodo = -PI / 2; } else if ((x1 == my_robot->pos_X) && (y1 > my_robot->pos_Y)) { // angletodo = PI / 2; } else angletodo = 0; angletodo = angletodo - my_robot->theta; if (angletodo > PI) angletodo = angletodo - 2 * PI; if (angletodo < -PI) angletodo = 2 * PI + angletodo; return angletodo; }
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#19
Posté 04 mai 2012 - 06:51
au passage on te l'optimise ou ... PI ? ( PI :pas intéressé ^^ )
Comme vous voulez, moi j'ai juste donné ça pour aider ^^ (au cas ou sa solution ne marche pas dans tous les cas)
Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.
#20
Posté 04 mai 2012 - 07:14
Comme vous voulez, moi j'ai juste donné ça pour aider ^^ (au cas ou sa solution ne marche pas dans tous les cas)
je te remerci Jbot et je souligne le faite que ce code a deja fait ces preves !"de mes yeux vue.... a travers la toile^^
les calcul seront fait directement par le pc qui seras embarquer sur le robot. mon arduino ne servira qua envoyer les ordre a au controleur moteur
ps : apres avoir lu ce code un certain mal de tete ma pris !
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users