Bonjour à tous, comme je l'avais promis, je vais tenter d'expliquer le logiciel que j'ai programmé pour m'aider dans mon travail. Ce n'est pas un logiciel voué à la vente, juste un outil pour mon équipe et moi même. Comme je le dis souvent, le monde de la robotique est passionnant mais il est difficile à aborder. Les robots sont des machines complexes qui se déplacent dans un monde tridimensionnel.
Devant développer des algos de contrôle pour les robots et connaissant la difficulté que ça entrainait, j'ai décidé d'utiliser un moteur 3D pour représenter le maximum d'informations. Et pour le faire, j'ai choisi Irrlicht car les utilisateurs disaient que c'était facile à manipuler, et maintenant, je peux dire que ça l'était. J'ai également choisi Qt comme librairie pour gérer l'interface graphique, la communication réseau et les threads (cette librairie est merveilleuse).
J'ai reprogrammé deux fois le logiciel à la demande de mes collègues, car nous l'avons intégré dans le tronc commun de nos softs. Notre équipe conçoit essentiellement des robots médicaux mais à la demande des clients, une grosse part de soft s'est intégrée. De plus, nous nous sommes rapidement rendu compte que les démonstrations robotiques qu'on faisait étaient très appréciées lorsqu'on synchronisait notre scène à la 3D, à Irrlicht en définitif.
--> Du coup, est né RoboticsCell.
Rapidement, j'utiliserai le serveur d'un de mes collègues pour mettre des images et un fichier PDF en constante évolution en lien, en espérant que ceci sera suffisamment clair.
---------------------------------------------------/**/------------------------------------------------------
En attendant les liens, un rapide explication de RoboticsCell:
- Permet de construire tout type de robots série poly-articulé.
- D'inclure des robots virtuels dans une scène 3D.
- De faire des calculs robotiques (modèle en position, en vitesse, calibration géométrique).
- D'inclure des capteurs extérieurs dans une scène 3D.
- D'inclure des objets extérieurs 3D.
- Permet de simuler les robots, les capteurs et les objets 3D (grosse partie c++).
- Permet de faire interagir tout le monde ensemble (collisions virtuelles qui remplacent les vrais collisions et inversement...).
- Permet de régler la scène 3D pour la rendre la plus jolie possible (en gros tous les paramètres qu'Irrlicht nous permet d'utiliser + les shader, et ça, ce fut bien difficile,..., j'ai encore des points obscures, d'ailleurs, je suis toujours à la recherche d'un shader anti alliasing, celui d'Irrlicht, je ne vois pas la différence avec ou sans?!? ).
- Permet de se connecter aux "vrais" périphériques pour tester les trajectoires dans le monde réel.
- Système de driver générique pour piloter plusieurs type de robot industriel ou machine, j'ai nommé ça le URC (Universal Robotics Command) en hommage à l'USB. (ça ni parait peut être pas, mais ce système générique fut le plus difficile à coder).
- Permet de générer des trajectoires des éléments mobiles présent dans la scène et de synchroniser le tout...
Et voilà pour l'instant. N'hésitez pas à me questionner.
Salut Gehogor, content d'avoir de tes nouvelles, ton projet est vraiment impressionnant
je peut pas t'aider pour l'aliasing, mais je suis étonné que tu n'est pas trouvé ton bonheur, en principe c'est un peu l'ennemi numéro 1, donc je pensais que ça ce trouvait facilement, j'espère qu'une âme mieux éclairé passera par là
Tu passe par quel procédé pour commander les périphériques *actuels ? as-tu une carte E/S spéciale pour relier les périphériques au pc ?
j'ai pas compris ce que fait exactement l'URC ? il faut dire que j'ai du mal à m'imaginer le tout, c'est assez flou pour le simple mortel que je suis
Tu as fait tout ça sur ton temps libre ?
* je crois que c'est le terme adéquat, vu que c'est le contraire de "virtuel"
Hors ligne
Coucou nico, en effet, il était temps pour moi de poster ce projet. La mini doc explicative est bientôt finie, je vais pouvoir la mettre en ligne.
En ce qui concerne l'antialiasing, j'ai du passer à coté d'un truc simple, je ne sais pas, c'est juste que j'avais cru comprendre que celui d'Irrlicht fonctionnait qu'en plein écran et pas en fenêtre réduite.... Du coup je me suis penché sur les shaders.
Sinon, pour piloter les périphériques (robots ou capteurs) le procédé dépend du produit, si le robot robot se pilote en réseau, on fait du réseau, si un autre est en port série, on fait du port série, bus scan, E/S numériques ou analogiques ... Pas de mlimite ...
---------> Mais bien sur, comme nous ne sommes pas dans le pays de Candy, il y a des conditions. Il faut pouvoir créer un programme c ou c++ qui le pilote et qui compile sous gcc. Après pour gérer la communication entre mon soft et le périphérique, j'ai créé des classes virtuelles bien précises pour structurer les classes c++ spécialisées pour tels ou tels périphériques. Et finalement, c'est ça que j'appelle l'URC en ce qui concerne les robots.
Le temps libre,..., j'ai passé pas mal de soir sur ce forum qui m'a beaucoup aidé les six premiers mois, puis après au boulot car c'était devenu indispensable pour faire nos démonstrations.
La première version que j'ai faite a un an... Nostalgie.
Bises comme dirait ma grand mère.
Dernière modification par Gehogor (09-04-2010 21:56:22)
Hors ligne
Bonjour à tous, j'écris juste ce petit message pour mettre à jour le projet roboticsCell.
En gros, j'ai rajouté la gestion de la physique avec la bibliothèque Newton 2.0. Ça a été un peu dur de comprendre les mécanismes internes mais maintenant c'est fait. Il est possible de faire interagir les robots avec des objets externes dans la réalité tout comme dans le monde virtuel. C'est franchement impressionnant.
La première image montre l'évolution de l'interface. La seconde montre une scène où plusieurs objets de toutes formes sont mis en pagaille afin de s'entrechoquer les uns aux autres. Pour cela, j'ai codé deux types de création de volume 3D dans newton à partir d'Irrlicht. Soit on créé des primitives de type sphère, cube,... Soit on convertit le maillage de l'objet importé dans Irrlicht pour Newton (Il y a pas mal d'exemple sur le net pour ça). Ça fonctionne plutôt bien.
Et voilà. Bonne journée.
ps: J'essayerai bientôt de poster un projet parallèle d'un jeu de billard, toujours pour les robots mais avec Irrlicht et Newton 2.0 pour faire le simulateur, j'ai déjà des résultats intéressant, la gestion physique plus le rendu 3D donnent des possibilités vraiment sympa. Je mets ci-dessous une image:
Hors ligne
J'ai bien envi de tester le jeu de billard on peut jouer à 2 ?
sinon bravo pour ton projet Roboticscell, si t'a l'occasion de faire une vidéo de démonstration ça serait cool.
Hors ligne
Salut nico,
Alors le jeu de billard n'est pas encore prêt pour jouer à deux, sachant qu'il est destiné à être connecté avec un robot, mais bon, je pense quand même faire une version plus aboutie que j'imaginais et plus jouable. Soit, promis, je te donnerai tout ça dès que ce sera prêt.
Sinon pour RoboticsCell, c'est une bonne idée de faire une vidéo, je la ferai pour la nouvelle version (version avec plusieurs design pattern comme les logiciels pro et une interface graphique plus intuitive... d'ailleurs c'est plus facile quand on a déjà une version du soft, on a plus de recule !). Et là, promis je posterai ça aussi sur ce site !
Hors ligne
ok, super. Et j'ai été impréssioné par les screens que ta postés récemment avec l'AA. est-ce que ton collègue t'a expliquer la manip ?
Hors ligne
Ça marche Nico, dès qu'il rentre de vacance, je lui demande de me faire un mini tuto ou explicatif afin d'expliquer les réglages qu'il a utilisé et les opérations faites sur Blender pour faire le light mapping.
En tout cas, je sais que ce qui a fait la différence a été le réglage de la carte graphique avec le fameux antialiasing que je cherchais tant a faire. Cette même option qui ne fonctionne pas sur mon pc maison mais qui fonctionne très bien au boulot. D'ailleurs c'est un mystère, je demande s'il n'y a pas là dessous un problème de compatibilité "OpenGL" / carte graphique / Irrlicht.
Hors ligne
Merci c'est sympa.
Hors ligne
Pages: 1
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 18 invités en ligne Aucun membre connecté RSS Feed |