Xevelabs

To content | To menu | To search

Tag - lidar

Entries feed - Comments feed

Tuesday, April 5 2011

Nearly final sillouette

A lot happened since last post, and things are getting very close to their final shape.

Xachikoma_20110404_1.jpg

Xachikoma_20110404_2.jpg

The robot got some brand new 3D printed motor mount (thanks i.materialise!), all the required electronics in the legs, a second camera and a rotating laser distance sensor (the Neato LDS, from the XV-11 vacuum cleaner robot)!

New 3D printed parts

From front to back row: a part used to lock the ball bearing in place, the lower bearing mount and the motor mount, motor_mounts.jpg

That's what the motor + motor mount + pulley looks like when everything is assembled. This goes inside the aluminum tube. The motor is taken between two layers of 0.25mm aluminum sheet. With this, there is no risk of deformation of the polyamide part, plus it allows for two M2 grub screws (both in the bottom of the part, one close to the front, one close to the back) to secure the motor and reductor in place without blocking the gears. motor_mounted.jpg

The motor mount and the part with the ball bearing are now two distinct elements. With the new motor mount design, it was necessary to split the two, as one is fixed and the other has to be adjusted to have the right belt tension. support_bearing.jpg

My first thoughts when I designed the mechanism was that little to no effort would apply to move the bearing out of its hole, but torsion in the tibia support part quickly showed that it was not the case. This little part keeps the bearing where it is. Here it's demonstrated with an old motor mount. bearing_lock.jpg

Leg Control Board

Each leg is fitted with a Baby Orangutan B-328 that controls the motor, the magnetic encoder, the wheel orientation servo, and talks on the Dynamixel Bus as a real Dynamixel device. Right now, it masquerades as an AX-12+ and can communicate with Roboplus :)

finished_lower_tibias.jpg

In order to have it talking on the Dynamixel bus, I had to apply two important modifications on the B-328 board: change the oscillator to a 16MHz one, and remove the user LED (the red one).

Having a 16MHz oscillator instead of a 20MHz one is needed to join the bus at 1Mbaud. I found the perfect replacement here (Murata CSTCE16M0V53-R0) .

The LED had to go because it's tied to the ATMega328p's UART TX, and caused the idle tension on the line to be as low as 1.8v (using only the inbuilt PD1 pull-up resitor) when it should have been 5v. This does not play nice with the original usb2dynamixel, which often saw 0x00 bytes that were not there. Unsoldering (or... destroying -_-") the led solved the problem.

CMUcam3

Having a second camera might seem overkill, yet it addresses one of the most important sensory question for this year's competition: "what color is the square In front of me?". It also be used for line-following, and identification of the team's color at startup (one less switch to flip myself... yeah I'm lazy like that ;) ).

I will write a simple custom firmware for it, that will probably do segmentation (it's quite easy in HSV with the colors used on the playing field and playing elements), basic line following, and maybe some rough position tracking based on the grid. The observable area varies with body height and rotations, and the lens distortion is quite important in the corners. Fun times ahead to extract meaningful information ^^.

Owing to last year's disappointment with the light conditions during the approval phases (very different light conditions in different parts of the playing field, hard shadows, yellow lights...), I decided to add some powerful white LEDs on the camera to try to have at least a spot of well-lighted ground... cmucam_lights.jpg

Neato LDS

The lidar is mounted upside down, below the body. During normal operation, the sensing plane of the LDS will be around 8 or 9cm above the ground, and it's aim will be to detect obstacles I can't go over (like the opponent :p ). I'm still working on a protective cage around the sensor to avoid any damage to it. I don't want to know if it can support the full robot weight ;). Lidar_mounted.jpg

As always, a lot more pictures are available in the gallery!

Thursday, December 2 2010

Lidar Neato XV-11 (3ème round)

OpenLidarHacked

La prime a finalement été décernée à Hash79, qui a été le premier à avoir à la fois un code fonctionnel et un robot hacké et connecté au PC réunis.

Néanmoins, pour la version la plus complète et à jour, allez voir ici :

Source : https://github.com/Xevel/NXV11

Documentation : https://github.com/Xevel/NXV11/wiki

La raison pour laquelle je n'ai pas gagné, malgré l'antécédence de mes résultats et le travail fourni (l'explication de la majorité des détails importants viennent de mon travail, et le code utilisé est majoritairement le mien, voyez par vous même, pages 3 à 12 du thread... ) tiens principalement au fait que je n'avais pas de robot (il n'est pas distribué en dehors de l'Amérique du Nord, et les vendeurs sur ebays sont des voleurs...).

Impossible par exemple de m'apercevoir en premier que l'ordre et le groupement des données avait été changé dans les versions de production (firmeware 2.4), et que les données fournies par Sparkfun étaient celles d'un modèle de pré-production (firmeware 2.1). C'est à ce moment que Hash a pu faire une remontée fulgurante en découvrant le premier ce nouvel agencement des octets, et emporter le prix ^^

Pas moyen non plus de faire une jolie vidéo avec le robot branché en live sans le robot ;). Pour compenser, j'ai codé un petit sketch sur Arduino qui imprime sur le port série les communications enregistrées sur le robot, appelé LidarSpoofing, mais ça n'a pas suffit à convaincre les juges ;)

Entre l'annonce et ce post, j'ai eu le temps de finir le travail, apportant ce qui semble être le point final au reverse-engineering du protocole de communication en trouvant l'algorithme utilisé pour le checksum.

Au final, ca aura été extrêmement fun et instructif, et aussi cela m'a permis de rencontrer des roboticiens très sympas (les conversations se sont continuées en dehors du thread ;) ).

Il parait aussi que les gens de chez Neato Robotics ont suivi le développement et se sont bien marrés :)

Je termine sur tout ça par un grand merci à gallamine, fondateur de robotbox.net pour avoir lancé la prime, et aux donateurs qui ont fait gonfler cette prime : Matt Trossen, fondateur de Trossen Robotics, RobotNV, et RobotShop.

Et aussi je tiens à citer chenglung, FJ_Sanchez, shimniok, Nammo, DaveC pour leurs contributions (ben oui on a pas été que Hash et moi à jouer).

La suite

 Phase 1 : écrire un driver open-source.
 Phase 2 : ?
 Phase 3 : avoir un robot qui déchire.

Pour passer à la suite, je vais d'abord récupérer un module lidar (c'est déjà en cours ;) ). Ensuite, il faudra s'arranger pour contrôler le moteur, car ce n'est pas fait par le module lui même. Les informations du codeur optique 32CPR sont intercalées avec les données de distance, et c'est donc à la carte hôte de réguler la rotation de la plateforme tournante.

Verra-t-on un simili-Tachikoma avec ce lidar sur la tête à la coupe? J'espère bien ;)

Wednesday, November 24 2010

Lidar Neato XV-11 (2nd round)

J'ai un peu continué à travailler sur le soft pour le lidar du XV-11, mais un crash sur le forum de Trossen Robotics a semble-t-il perdu tout ce qui a été dit d'intéressant dans le thread ! EDIT: c'est réparé

Voila donc un repost de certaines informations et du dernier code en date, permettant (probablement) de visualiser en temps réel la carte de distance renvoyée par le lidar.

Visualisation de la carte de distance

Code : https://github.com/Xevel/NXV11

Tuesday, November 23 2010

Lidar Neato XV-11

Alors voila, le Neato XV-11 est un concurrent du Roomba, robot aspirateur bien connu maintenant. Ce qui est intéressant dans ce nouveau challanger, c'est qu'il possède un LIDAR pour se repérer. "Et alors ?" me direz-vous... et bien il se trouve que ces engins là, ça ne pouvait pas se trouver à des prix à moins de 4 chiffres jusqu'à maintenant, et là il est en bundle dans un robot à $400 (mais pour l'instant dispo uniquement en Amérique du Nord :/ ) !

Une initiative intéressante a été lancée il y a peu : RobotBox a mis une prime sur le hacking du module lidar.

Sparkfun s'y est mit, et ils ont fourni des enregistrements de ce que le module transmet comme infos, au format Saleae Logic, comme mon analyseur logique. J'ai donc décidé de jeter un oeil...

et voila (et c'est moi même personnellement que je l'ai fais en premier :) ):

map2

Plus d'infos techniques sur comment j'ai fait (avc code tout moche) sur le thread consacré à cela chez Trossen Robotics.