Obstacle avoiding vehicle, continue in β3D Laser Range Finderβ series ( project 1, project 2). The basic idea is the same, measuring distance using red laser pointers, CCD analog camera and Arduino UNO. Β Modification was made in geometry. Β Two lasers were set for βfar fieldβ obstacle detection, few meters in front of vehicle on left or right side. Primary mission is to trigger left / right turn before a car get too close to the βcontinuousβ but notΒ necessarily βhighβΒ object, for example, sidewalk stone. Of course, this distance depends on the vehicle speed, and βalertβ should be dispatched in right time βwindowβ, orΒ there would be no space left to making a turn ( proportional speed adaptation is not implemented yet).Β Low height of such road infrastructure is making useless ultrasound based range finder.
Two additional lasers were set in βcrossβ configuration, in order to detect any object that comes dangerously close to the front of vehicle. βNear fieldβ obstacle detection or βhead on collisionβ avoidance. Theirs two beams form reflective βtrip-wiresβ and able to detect as narrow object as leg of a chair or desk, open door frame, anything that at least 1 mm wide. Β One laser, pointed to the left, is also works as sidewalk / wall follow navigation system, keeping this distance constant.
Now couple words on βautopilotβ algorithm. Three main feature of the project:
- wall / sidewalk following;
- βfar fieldβ obstacle avoidance;
- βnear fieldβ head on collision avoidance.
were classified in 3 priority levels: 1 β warning, 2 β major, 3 β critical.
0 β clear level, corresponds to normal Β R/C radio control, or by Β βman / operatorβ Β navigation via Β remote R/C module. Operator is also has βauthorityβ to decline warning class navigator status. But itβs notΒ the case when navigatorβs βautopilotβ subroutine performs class 2 or 3 maneuver, with status βmajorβ and βcriticalβ. When vehicle performs maneuver 2, βleft / rightβ command from R/C remote module are ignored, the same with βforward / backwardβ command in status β3 β criticalβ, making algorithm completely βfool β proofβ.
More video will be posted, Link to Arduino UNO sketch: Visual_Navigator.
Β 5 August 2012.
Iβd like to publish more pictures from βinsideβ, which show interface between arduino and R/C receiver module in the car. Well, not quite arduino, I build a βcloneβ using pre-programmed AtMega328. As you can see, the receiver was left almost intact, what I did, is just identified two on-board H-bridges which supply power toΒ steering control motor and main vehicles motor-driver.
Than, remove 4 resistors in series with controls lines, and routed 8 wires to the arduino ( 4 inputs from R/C receiver and 4 outputs to H-bridges ). Here you are, now arduino could intercept any command coming from R/CΒ transmitter, and based on data from the sensors, make a decision if it makes sense to follow them. Also, βautopilotβ function could βdirectlyβ address two motors in order to execute βobstacle avoidingβ maneuver not askingΒ anyoneβsΒ permission!. Β What more, arduino control a power delivered to motors via software PWM, Β making 7! different speed level available like in real vehicle. Unfortunately, the model I βhackβ doesnβt use proportional steering control, but still PWM power management helpful to save a battery energy, limiting unnecessary current delivered to motor.
[box color=”#985D00″ bg=”#FFF8CB” font=”verdana” fontsize=”14 ” radius=”20 ” border=”#985D12″ float=”right” head=”Major Components in Project” headbg=”#FFEB70″ headcolor=”#985D00″]Arduino UNO[/box]
For more detail: Visual Navigator Making it MOBILE using Arduino