Salut, voici l'énoncé de mon problème :
Comme vous pouvez le voir sur ma capture de graphique que j'ai réalisé en Python, je souhaite calculer le diamètre de l'obstacle qui vient pousser les portes de longueur données. L'espace entre les gonds des deux portes est donné aussi. Je n'arrive que à obtenir un résultat de
d=longueur_entre_gonds-(cos(alpha)*longueur_porte + cos(beta)*longueur_porte
Le problème est que ce résultat est approximatif car il ne fonctionne que quand alpha=beta (obstacle centré) et que les portes sont diamétralement opposées à l'obstacle. Comment faire ?
Merci d'avance !
Je ne suis pas certain de bien comprendre ta question. Tu veux calculer le demi-grand axe de l'ellipse rouge, c'est ça ?
Peux-tu préciser qui sont alpha et beta et qui sont les gonds ?
Je crois comprendre que les gonds sont les points O et P ci dessous
L'expression changera selon que beta est l'angle qu' j'ai dessiné (qui est aussi l'angle entre BP et la verticale, ainsi que l'angle de SB avec le trait jaune) ou que beta est l'angle entre BP et l'horizontale. Et il y a aussi des histoires d'orientation desdits angles 
bonjour,
J'ai beaucoup de questions à pour te poser, ne serait-ce que pour comprendre ton problème.
Peut-être que je suis complétement "à côté de la plaque"
Tu parles d'un obstacle Ob qui pousse les portes. Quelle est la nature de la forme de cet obstacle ? Une ellipse comme le dit Ulmière ou n'importe quoi d'autre ?
tu parles de diamètre, s'agit-il de max(MN) ,
les longueurs des 2 battants de la porte sont-ils de même longueur?
Se déplace-t-il? Car dans ta figure, il n'a pas fini son déplacement
Cet obstacle garde t-il toujours la même orientation ? car sinon en effectuant une rotation cela peut changer les données
Et dans ce cas se déplace t'il selon la perpendiculaire au seuil des 2 battants avec (MN)//(OP)?
Salut,
Merci beaucoup pour vos réponses.
Il est vrai que je n'ai pas bien précisé le contexte du problème.
Les obstacles qui "poussent" les portes sont de forme circulaire, j'aurais trop de mal à généraliser une formule avec des obstacles de toutes formes.
Les gonds des portes sont en O et en P en effet et la longueur OP est fixée. Les portes sont de même longueur mais mon objectif est d'optimiser la longueur des portes également.
alpha est l'angle POA et beta est l'angle OPB.
L'obstacle se déplace dans le sens y croissant mais ne bouge pas en x.
En gros ce que je veux c'est déduire le diamètre de l'obstacle en fonction des angles des portes.
Que pensez-vous donc de tout cela ?
Mais même ainsi, le besoin n'est toujours pas clair.
Tu as un 'poussoir' de forme circulaire. Tu as 2 portes, de longueur L1 et L2.
Est-ce que L1+L2 = OP ?
Et notre poussoir, si son diamètre est petit, il va permettre de pousser les 2 portes un petit peu, et très vite, une des 2 portes ne va plus s'appuyer sur ce poussoir. Mais si le poussoir est plus gros, pareil. Simplement, le point de décrochage arrivera un peu plus tard.
bonjour,
Au vu du premier dessin, les portes n'ont pas même longueur, et la somme dépasse largement la longueur OP.
Pas clair du tout.
salut
tout le pb du graphique est que le repère n'est pas orthonormé ...
il serait plus pertinent d'utiliser le logiciel geogebra pour faire une "vraie" figure ...
En réfléchissant à ta question, je croix comprendre que tu veux déterminer la position limite du disque obstacle qui fera que l'un des battants se refermera quand l'obstacle continuera à monter.
Faisons l'l'hypothèse que les battants sont de même longueur L=OP/2
Si c'est cela la dimension du disque est à prendre en compte.
Exemple 1: Si le diamètre 2R du disque est inférieur au battant gauche et si le disque se déplace verticalement en restant tangent à la perpendiculaire en P à (OP) alors l'angle de droit restera égal à et l'angle de gauche restera nul puis l'angle de droite amorcera une décroissance et il décrochera vers 0 quand le centre I du disque sera aligné avec le battant [PS] de droite. l'angle de droite est donc une fonction de l'ordonnée y de I (fonction constante , puis décroissante, puis nulle).
Exemple 2: j'utilise les lettres de la figure de Ulmiere , je note (x,y) les coordonnées de I dans le repère donné par Ulmiere. Le disque est de rayon R quelconque je suppose sans perdre en généralité que x>OP/2
Considérons les quarts de cercle de centres respectifs O et P et de rayon OP/2, soit le disque de rayon R, de centre I(x,y) imaginons ce cercle dont l'ordonnée croît. Tant que ce cercle rencontre les deux quarts de cercle précédents, les deux battants forment avec (OP) des angles non nuls, avec l'hypothèse x>OP/2, le battant gauche décrochera en premier après le point limite où (OA) est aligné avec I, puis le battant droit décrochera après le point limite où (PB) est aligné avec I.
Ta question est-elle donc la détermination des 2 points limites et donc les coordonnées de I qui leur correspondent?
ou bien quelle est l'ordonnée y de I pour que la somme des mesures des angles AOP et SPO soit maximale ?
Sans une formulation plus précise de ton problème, on ne peut te répondre.
Une dernière remarque importante: Dans la figure que tu nous as proposée (AB)//OP pourquoi ? ce n'est qu'une position intermédiaire OA n'est pas au point de décrochage
On a 2 portes ... mais on s'en moque. On a en fait un problème, avec la porte de gauche, avec certaines données numériques. Et on a rebelote le même problème, avec la porte de droite, avec d'autres valeurs.
Je vais reclarifier le sujet.
Je bosse sur une conception de porte pour un système de sécurité d'un robot. Ces portes sont destinées, quand elles
détectent un obstacle trop grand qui passe, arrêter le robot.
On a donc une longueur entre gond prédéfinie (800cm), les portes sont de même longueur mais cette longueur n'est pas encore
définie et à définir.
Le robot avance en ligne droite donc l'obstacle (supposé un cercle ici) pousse les portes en y croissant mais x fixe. Mais l'obstacle
peut très bien débarquer à x=10cm comme à x=750cm. Il n'arrive jamais tout le temps centré entre les portes.
Deux capteurs angulaires sont placés sur les gonds des portes pour calculer l'angle de l'ouverture de chaque porte.
Mon but est de calculer la taille de l'obstacle arrivant afin d'arrêter le robot si ce diamètre d'obstacle est trop grand.
Veuillez-me dire si ce n'est pas clair.
import numpy as np
from __future__ import print_function
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
import matplotlib.pyplot as plt
longueur_entre_porte=80
longueur_porte=60
def schema_graphique(a,b,x1,y1,r):
x = np.linspace(0, 1.0, 80)
y = np.linspace(0, 1.0, 80)
circle1 = plt.Circle((x1, y1), r, color='r')
x1, y1 = [0,longueur_porte*np.cos(np.radians(a))], [0,longueur_porte*np.sin(np.radians(a))]
x2, y2 = [longueur_entre_porte,longueur_entre_porte-longueur_porte*(np.cos(np.radians(b)))], [0,longueur_porte*np.sin(np.radians(b))]
plt.plot(x1, y1, x2, y2, marker = 'o')
fig = plt.gcf()
ax = fig.gca()
plt.xlim([0,80])
plt.ylim([0,80])
ax.add_artist(circle1)
taille_obstacle=80-(longueur_porte*np.cos(np.radians(a))+longueur_porte*np.cos(np.radians(b)))
print(taille_obstacle)
plt.show()
interact(schema_graphique, a=widgets.IntSlider(min=0, max=90, step=1, value=0),b=widgets.IntSlider(min=0, max=90, step=1, value=0),x1=widgets.IntSlider(min=0, max=80, step=1, value=0),y1=widgets.IntSlider(min=0, max=80, step=1, value=0),r=widgets.IntSlider(min=0, max=30, step=1, value=0));
bonjour,
La robotique reste pour moi un mystère pour ce qui est de la détection mais
étant donnée la manière dont tu reposes le problème, je ne vois plus trop la difficulté mathématique.
L'obstacle arrive sur la ligne de gonds, j'imagine que sa largeur 2R et sa position x1,x2 abscisses des extrémités gauche et droite sur la ligne de gonds et sa largeur 2R=x2-x1 sont détectables alors la porte de gauche doit s'ouvrir d'un angle tel que
et la porte droite de même si x2>OP/2 doit s'ouvrir d'un angle
tel que
il est clair aussi que pour que l'obstacle ait son diamètre sur la ligne des gonds, les portes doivent s'ouvrir un peu, ou alors il faudrait que les détecteurs soient placés en avant de la ligne des gonds.
Sur ce, je te laisse, bon courage pour ton projet
Bonjour,
Ce que tu peux contrôler, c'est le diamètre de la projection de l'objet sur l'axe des gonds, c.-à-d. la distance entre les deux droites "verticales" (sur le schéma) qui encadrent l'objet.
Ceci, à condition d'avoir à ta disposition le max des angles a et le max des angles b depuis le début du passage.

Merci pour vos réponses. L'idée de sauvegarder à chaque fois l'angle max parait pertinente. Sinon pour le reste la simple trigo en calculant la projection de l'objet c'est ce que j'avais déjà fait. Je souhaitais savoir si il y avait un calcul plus compliqué pour avoir une valeur tout le temps vrai, mais ça sous entend placer des capteurs tactiles sur les portes et ce n'est pas envisageable. Merci pour tout !
Je n'ai toujours pas totalement compris le besoin...
Tu as le robot, qui pousse les portes. Tu veux qu'à un moment, les portes se bloquent, parce que sinon, le robot pourrait sortir.
Pour savoir quand fermer les portes, tu as un capteur sur chaque porte, qui te renvoie l'angle (respectivement POA et OPB).
Et quand l'angle est trop grand, le capteur envoie un signal, pour bloquer la porte.
C'est bien ça ?
Est-ce que ces 2 capteurs 'communiquent entre eux' ?
Si ils ne communiquent pas, il manque des choses.
Un angle POA de 70° ou 80°, ça n'a rien d'alertant si le robot avance tout près du point A. Alors que c'est la porte ouverte à toutes les fuites si le robot avance vers le milieu de la figure ou proche de B.
Donc un angle POA de 70°, c'est normal, pas urgence à bloquer la porte, si l'angle OPB est encore très petit.
Mais si les 2 capteurs ne communiquent pas ... Un angle de 70° ou 80°, c'est sûr qu'il y a urgence à bloquer la porte.
Ce que je comprends, c'est que le dispositif à portes de saloon est fixé sur le devant du robot et se déplace donc avec le robot, tandis que les obstacles sont fixes. Quand les portes de saloon détectent un gros obstacle, le robot s'arrête avant de rentrer dedans.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :