Saturday, June 25, 2011

Arena Setup Complete

Finally the arena is functional. The complete feedback system is working:
  • cameras gett a birdview image of the arena;
  • each robot carry a marker which are tracked on the arena image;
  • the position and orientation measured with ARToolkit are fed into a Kalman Filter;
  • the filtered position and velocity of the robots are published to other programs;
  • a path following program compute velocity and steer corrections to keep a robot over a path with a controled velocity;
  • these commands are sent via a xbee to the robots;
  • each robot carry an arduino fio that command two motors (steer and throttle).



Thursday, February 10, 2011

Improvements

Before advancing in Kalman developments, as incorporating the control input signals, I wanted to cleanup the code, make the tracking more robust and improve power efficiency of the robots (after I fully discharged a LiPo battery =/ ).
I am using a white background now over the floor, that results in a better tracking and also keep my robots clean, besides having quite good friction. The tracking code now uses two modes for identifying a robot, one for new robots and other that gives a more steady response after one robot has been identified.
Now I will go into the codes of the robots themselves to make them more power effient, entering in stand by mode if no messages are being sent.
Next steps are to model the response of the vehicle to speed input commands and use them into the Kalman filter, for optimal tracking.

Friday, February 4, 2011

ARToolKit and Kalman

ARToolKit is working just fine.
I am able to easily track multiple markers, along the whole image. There is some amount of flickering still, probably due to the small markers and low resolution. I plan to lay out a white arena, so the marker would not need to have a white border, and therefore the marker could be larger.
I am also implementing the Kalman filter using OpenCV (Motion Analysis and Object Tracking — opencv v2.1 documentation). So far I created three filters: one for x, one for y and one for x and y. The filter is not having so great results, so I will try now to use the control input in the filter (as I know what commands are being sent for each car), besides using car specific kinematic equations: A simple unicycle

Tuesday, January 25, 2011

Back to ARToolkit

After several weeks experimenting with the ARToolkitPlus (ARTK+), I gave up. I was having serious troubles in experimenting with it, and the tracking functionality had worse results than the standard ARToolkit (ARTK).
I already cleaned my code, and managed to successfuly track two markers at the same time, with a larger area than the ARTK+

Thursday, January 20, 2011

New robots 2

Just finished building 5 robots. One of them has some problems with the differential and therefore the traction does not work very well. I kept one car so I could use its parts as spare, to overcome problems as the one found in the differential. I also tested the capability of the xbee coordinator to send messages to several end nodes, and that is just fine. There is a small delay that can be noticed (the robots are not perfectly synchronized), but that may be related either to the messages queue or to the hardware differences.
Soon I will post a video of the full construction of a robot.

Thursday, January 13, 2011

New robots

I am creating the new robots, after the prototype had good results. I was afraid I could not use the l293e driver with the lower voltage (3.3V) arduino fio, as the specs of that IC states that the minimum logic supply is 4.5V. Nevertheless I was able make them work with a 3.3V logic and a motor supply from lipo batteries rated at 3.7V.
Now I am creating the motor driver shields for the arduino and after that I will modify the car chassis to integrate with the electronics.

Wednesday, January 5, 2011

ARToolKit Plus Integration

The integration is advancing. There is already a module inside the lar toolkit that uses the ARTK+ features based on an imaged transmitted by other module. I also managed to track several different patterns in the same image with the same code.
I still have some issues to address before ARTK+ be completely integrated:
- maximum track area: how many cameras, resolution, distortion, etc.
- extract usefull information from the transformation matrix given by the ARTK+ (units for example)

Sunday, December 19, 2010

multiple xbee tests

This is to test the system capability to distribute messages to several robots using only one coordinator. Each "robot" is only an arduino fio board, with a xbee modem, and at the computer side, there is a module (program) for each "robot". These modules send a message each 100 ms, and at the robot side the boards blink a led to signal the message was received.
Although the tests had good results, its hard to assess if no delay is present on the messages. If one robot is turned off, that affect the others. Only three destination modems were used in this test, and there is a difference between a modem that was previously used in other tests and the other two modems that were just recently put in use.
Further investigation must focus in why a modem shut down affect the others and what is the difference in the configuration of the two "new" modems and the "old" one.

Saturday, December 18, 2010

ARToolKit Plus

After several tests with the ARToolkit, I found it to be somewhat limited regarding the flexibility of changing the code. So I decided to try the ARToolKitPlus:, which is written in C++, it is very flexible in configuring my setup and it is still maintened.
Today I performed the calibration to the wide angle lens I am using, and managed to track markers up to a distance of 700 mm from the camera, in an area of approximately 1200 x 1200. It is a very loose setup, so further tests are required. However the results are very promising, as I believe this distance is being limited only by the camera resolution (640x480) which can be increased if I use other cameras.
This toolkit is already integrated in the LARToolkit!

Thursday, December 9, 2010

To do

  • Robots: test new arduinos with new car chassis, must find an h-bridge that is specified for 3.3V, although the l293 that is currently being used at the prototype might work (although it specifies a minimum low logic of 4.5V).
  • Arena: integrate the ARToolkit into the LAR Toolik, test maximum camera height, resolution, and minimum markers size.
  • Xbee: test messaging with one coordinator and several endnodes.
  • Tests: integrate RVO2 Library - Reciprocal Collision Avoidance for Real-Time Multi-Agent Simulation into LAR Toolkit!

Tuesday, December 7, 2010

Related research: Hybrid Reciprocal Velocity Obstacles

Quick reminders

- ARToolKit: just made some tests with this increadible toolkit. I am going to use this to track the robots position and orientation on the arena. Still have to validate this approach, testing camera height, field of view, robustness, integration with the lar toolkit.
- test several xbee messaging: just remembering that I turned off the acknowledge request that was part of a transmit message, this was causing the lag when messages were being sent to a xbee modem that was turned off.

Thursday, November 25, 2010

problem with multiple xbee modems II

The problem persisted even if I did not checked in my software the response.
However, once I turn on the "second" modem things work out just fine. The "second" modem was the one to whom once messages started being sent interfered with the normal working of the modem at the robot. Why??
I am not sure, but at least the problem is narrowed to the Xbee modems, maybe a configuration that can be set via XCTU...
More on that later...

problem with multiple xbee modems

I am currently going through some major problems. So far tests were just fine when using only one coordinator an one destination modem (both router and endnode). However when I tried to use a setup with 3 modems (coordinator + router + endnode) I am experiencing serious lags in communication, for example the gamepad commands take very long to arrive the destination.
In this tests, there is a program that sends messages at a rate of 2Hz, destinated to a modem that is not turned on. (this may be one of the problems, I remember now that once I powered that other modem, things were fine, or am I mistaken?).
Anyway, I am trying to figure out now where is the bottleneck in this setup. I may be in the way I am handling messages at the computer, it may be hardware limitations (xbee buffer, serial channel speed, wireless comm speed...).

robot base validation videos

these three videos show initial tests and final results in constructing a robot based on a rc car chassis. the first video shows the command of the steering angle using an arduino that is receiving commands from the keyboard of a laptop:


the second video shows the robot being remotely commanded by a gamepad via a xbee modem:


the third video is a test of the robot actually moving on the laboratory floor, commanded by a gamepad:

New arduino fio

This is a picture of the new arduino board to be used in this project. It is very small, has an integrated Xbee socket and a LiPo charger. The new power source (LiPo 1000mAh) is also in that picture.

Here is a comparison between the duemilanove and the fio boards: