Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using tubes as operators in IBEX #479

Open
SimonRohou opened this issue Nov 23, 2020 · 1 comment
Open

Using tubes as operators in IBEX #479

SimonRohou opened this issue Nov 23, 2020 · 1 comment

Comments

@SimonRohou
Copy link
Member

Bonjour la IBEX Team,

Voici le besoin :

  • on a un tube : [a](·).
  • on cherche à créer un contracteur FwdBwd (sur une boîte) dont la contrainte s'exprime en fonction de la fonction/trajectoire a(·) représentée par le tube [a](·). Par exemple, une contrainte du type sin(a(x))=y.
  • ici, a(·) est vue comme un opérateur, on ne cherche donc pas à contracter son domaine [a](·) (la contraction de tubes étant une autre question, laissée à Tubex).

Le tube est donc plus simplement un tableau de données, une fonction d'inclusion définie par morceaux.
C'est en fait une situation qu'on rencontre couramment en robotique avec des données issues de capteurs.

Problèmes à identifier :

  • les dépendances entre IBEX et Tubex (seule dépendance souhaitée : Tubex dépend d'IBEX)
  • un tube devient un opérateur > des objets symboliques peuvent être créés avec > il faut anticiper leur dérivation, simplification formelle, arithmétique intérieure, etc.
@SimonRohou
Copy link
Member Author

Une première piste sans rien toucher à IBEX (et donc sans altérer sa propre cohérence).

Est-il possible de :

  • hériter de ibex::Function pour en faire un objet TubeFunction
  • utiliser ce TubeFunction dans une composition de fonctions, sans passer par le parseur par chaînes de caractères ?

Par exemple :

Tube tube_a(tdomain, dt, ....); // create a Tube
TubeFunction a(tube_a); // create a function from the Tube object
Variable x(2);
Function f(x, sin(a(x[0])) - x[1]); // create the function sin(a(x))-y

Si oui, que faudrait-il surcharger de la classe Function pour permettre au CtcFwdBwd de fonctionner ?
C'est à dire : où implémenter la partie forward consistant à évaluer le tube, et celle du bwd consistant à l'inverser ? (deux fonctionnalités déjà implémentées dans Tubex)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant