Saturday, 6 October 2007

NXT Programming - Pre race


Date: 03.10.2007
Duration of activity: 4 hours
List of participants: Alessandro, Daniela, Samuele

Goal of the day: Speed up our robot.

We fixed up some minor issues, and we made some tests on the work from the previous session: the line following we ended up with was satisfying, but it was too slow.


Every algorithm we designed for our robot, since we started this course, stopped to behave how it should, when pushed to higher speed. We tried to figure out why, but some behaviors still remain a mystery.
Since the goal of this session was to speed up the robot, we decided to design and test our algorithm without starting with low speeds, but directly pushed to the maximum speed.

We made some decisions, like to turn without slowing down, after having lost the line, and hope to get back on it later. We increased motor speeds, and only decided the radius of the rotations when turning, and not the robot speed, which should be always to the max.
To bad that every change that we made just made the robot less precise, as you can see from this sadly funny video:

As it wasn't enough, while pushing the robot to its limits, it left us, smashing itself on a wall.

We then decided to change our approach to the problem.
We thought, and still are convinced, that the main problem is making the robot turn around some arbitrary axis, making it describe an arc, and assuming it rotates instantly around the center of sensors axis.


A proposal came up: never making the robot turn while moving, but only rotating at regular intervals, in order to avoid the arc problem.
A such algorithm should then make the robot go straight, sample for a certain amount of time, and try to figure out the angle of which to turn, after the sampling phase.
In that graph we represented (while not playing, on the lower part of the board) the sensor readings in function of time, and tried to imagine how can a sampling phase be interpreted, and how you can rotate the robot of a certain angle.


After those graphs, an implementation followed. Useless to say it didn't work. Too complicated, sensors too inaccurate, too much particular cases (you're already on the line, you approach the line but don't go after it, you don't see the line at all, you see two lines...).

We were about to try moving the sensors, to put them on the same axis of the wheels, to make them rotate together, but it was too late.

And another idea was around already: to put sensors in a Y shape , to make them see forward, when a turn approaches, and using the two sensors behind the robot to be sure you are aligned to the line.

Anyway, everything was delayed to the next day.
Goals reached: none.
Ideas left to try: some

No comments: