Froggy
[Update 17/06/2012 - Adding Wiring scheme]
Hi there for this first project !
It have been a long time I wanted to do such robotic project, and now I got time, (some) money and motivation, so let's go !
The first robot I'm gonna but is a differential wheeled robot that is navigating around and learn to avoid obstacles. The main idea behind this robot is to get more familiar in manipulating electronics and doing a real world implementation of Braitenberg's principles, described in his book Vehicles : Experiments in Synthetic Psychology.
Braitenberg's idea is that very simple connections between sensors and actuators can lead to various behaviours. Let's consider two sensors (let and right) that provide a single 8-bits coded value (from 0 to 255) as high as close is an obstacle, and two motors (left and right also, a.k.a differential propulsion), that are driven in speed.
If Left Sensor is linked positively to Left Motor and the same for right, this robot will behave as an obstacle avoidance bot, as seeing an obstacle on a side speeds up the motor on the same side and make the robot turn to the other side.
This makes the basic obstacle avoidance of Froggy. But the "wrong" point is that Froggy needs to hit obstacles to change direction. Not really good as even if Froggy is strong, it oculd damage itself. But Froggy also have an UltraSonic Sensor, and he will learn how to avoid obstacle before hitting them.
The idea is that Froggy learns from experience. The more it hits, the more it increases the connection between US and Motors to turn. The main drawback of the current system is that if Hits come as often on one side than the other, Froggy will learn to run to walls instead of avoiding them.
Here is the theoretical wiring scheme. Motor driver is currently replaced by leds to check the signal.
More Pics and videos are coming soon ;) !
Navigate via ultrasound and avoid obstacles
- Actuators / output devices: Gear DC motors
- Control method: autonomous, based on Braitenberg's principle.
- CPU: Arduino UNO Rev 3
- Programming language: Arduino C/C++
- Sensors / input devices: SRF05 Ultra Sound (not yet)
- Target environment: indoor flat surfaces