This program is for an autonomous robot for the competition at the Hochschule Luzern. http://cruisingcrepe.wordpress.com/ We are one of the 32 teams. http://cruisingcrepe.wordpress.com/ The postition control is based on this Documentation: Control of Wheeled Mobile Robots: An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. For more information see here: http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf

Dependencies:   mbed

Fork of autonomous Robot Android by Christian Burri

Committer:
chrigelburri
Date:
Thu Feb 07 17:43:19 2013 +0000
Revision:
0:31f7be68e52d
Child:
1:6cd533a712c6
first steps

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chrigelburri 0:31f7be68e52d 1 /*
chrigelburri 0:31f7be68e52d 2 * main.cpp
chrigelburri 0:31f7be68e52d 3 * Copyright (c) 2012, Pren Team1 HSLU T&A
chrigelburri 0:31f7be68e52d 4 * All rights reserved.
chrigelburri 0:31f7be68e52d 5 */
chrigelburri 0:31f7be68e52d 6
chrigelburri 0:31f7be68e52d 7 ///////////////////////////////////////////////////////////////////////////////////////////////////////
chrigelburri 0:31f7be68e52d 8 // INCLUDES
chrigelburri 0:31f7be68e52d 9 ///////////////////////////////////////////////////////////////////////////////////////////////////////
chrigelburri 0:31f7be68e52d 10 #include "mbed.h"
chrigelburri 0:31f7be68e52d 11 #include "math.h"
chrigelburri 0:31f7be68e52d 12 #include "defines.h"
chrigelburri 0:31f7be68e52d 13 #include "State.h"
chrigelburri 0:31f7be68e52d 14 #include "HMC5883L.h"
chrigelburri 0:31f7be68e52d 15 #include "HMC6352.h"
chrigelburri 0:31f7be68e52d 16 #include "RobotControl.h"
chrigelburri 0:31f7be68e52d 17 #include "Ping.h"
chrigelburri 0:31f7be68e52d 18 #include "PowerControl/EthernetPowerControl.h"
chrigelburri 0:31f7be68e52d 19 #include "Android.h"
chrigelburri 0:31f7be68e52d 20
chrigelburri 0:31f7be68e52d 21
chrigelburri 0:31f7be68e52d 22 // LiPo Batterie
chrigelburri 0:31f7be68e52d 23 AnalogIn battery(p15); // Battery check
chrigelburri 0:31f7be68e52d 24
chrigelburri 0:31f7be68e52d 25 // compass
chrigelburri 0:31f7be68e52d 26 //HMC5883L compass(p9, p10, PERIOD_COMPASS); // sda, sdl (I2C)
chrigelburri 0:31f7be68e52d 27 HMC6352 compass(p9, p10, PERIOD_COMPASS); // sda, sdl (I2C)
chrigelburri 0:31f7be68e52d 28
chrigelburri 0:31f7be68e52d 29
chrigelburri 0:31f7be68e52d 30 // ultrasonic sensor
chrigelburri 0:31f7be68e52d 31 //Ping ultrasonic(p30);
chrigelburri 0:31f7be68e52d 32
chrigelburri 0:31f7be68e52d 33 //Hallsensor
chrigelburri 0:31f7be68e52d 34 //hall1, hall2, hall3
chrigelburri 0:31f7be68e52d 35 Hallsensor hallLeft(p18, p17, p16);
chrigelburri 0:31f7be68e52d 36 //hall1, hall2, hall3
chrigelburri 0:31f7be68e52d 37 Hallsensor hallRight(p27, p28, p29);
chrigelburri 0:31f7be68e52d 38
chrigelburri 0:31f7be68e52d 39 // Motors
chrigelburri 0:31f7be68e52d 40 //enb, ready, pwm, actualSpeed, Hallsensor object
chrigelburri 0:31f7be68e52d 41 MaxonESCON leftMotor(p26, p25, p24, p19, &hallLeft);
chrigelburri 0:31f7be68e52d 42 //enb, ready, pwm, actualSpeed, Hallsensor object
chrigelburri 0:31f7be68e52d 43 MaxonESCON rightMotor(p23, p22, p21, p20, &hallRight);
chrigelburri 0:31f7be68e52d 44
chrigelburri 0:31f7be68e52d 45 // Robot Control
chrigelburri 0:31f7be68e52d 46 RobotControl robotControl (&leftMotor, &rightMotor, &compass, PERIOD_ROBOTCONTROL);
chrigelburri 0:31f7be68e52d 47
chrigelburri 0:31f7be68e52d 48 // Logging & State
chrigelburri 0:31f7be68e52d 49 state_t s; // stuct state
chrigelburri 0:31f7be68e52d 50 State state(&s, &robotControl, &leftMotor, &rightMotor, &compass, &battery, PERIOD_STATE);
chrigelburri 0:31f7be68e52d 51
chrigelburri 0:31f7be68e52d 52 // Communication
chrigelburri 0:31f7be68e52d 53
chrigelburri 0:31f7be68e52d 54 //Android android(&s, &robotControl, &leftMotor, &rightMotor, PERIOD_ANDROID);
chrigelburri 0:31f7be68e52d 55
chrigelburri 0:31f7be68e52d 56 // PC USB communications
chrigelburri 0:31f7be68e52d 57 Serial pc(USBTX, USBRX);
chrigelburri 0:31f7be68e52d 58
chrigelburri 0:31f7be68e52d 59 DigitalOut myled(LED1);
chrigelburri 0:31f7be68e52d 60
chrigelburri 0:31f7be68e52d 61 float magout[3] = {0};
chrigelburri 0:31f7be68e52d 62
chrigelburri 0:31f7be68e52d 63 // LiPo Batterie
chrigelburri 0:31f7be68e52d 64 float batterie_voltage;
chrigelburri 0:31f7be68e52d 65
chrigelburri 0:31f7be68e52d 66 int main()
chrigelburri 0:31f7be68e52d 67 {
chrigelburri 0:31f7be68e52d 68
chrigelburri 0:31f7be68e52d 69 /** Normal mbed power level for this setup is around 690mW
chrigelburri 0:31f7be68e52d 70 * assuming 5V used on Vin pin
chrigelburri 0:31f7be68e52d 71 * If you don't need networking...
chrigelburri 0:31f7be68e52d 72 * Power down Ethernet interface - saves around 175mW
chrigelburri 0:31f7be68e52d 73 * Also need to unplug network cable - just a cable sucks power
chrigelburri 0:31f7be68e52d 74 */
chrigelburri 0:31f7be68e52d 75 PHY_PowerDown();
chrigelburri 0:31f7be68e52d 76
chrigelburri 0:31f7be68e52d 77 robotControl.start();
chrigelburri 0:31f7be68e52d 78 compass.setOpMode(HMC6352_CONTINUOUS, 1, 20);
chrigelburri 0:31f7be68e52d 79 compass.start();
chrigelburri 0:31f7be68e52d 80
chrigelburri 0:31f7be68e52d 81 robotControl.setEnable(false);
chrigelburri 0:31f7be68e52d 82 wait(1);
chrigelburri 0:31f7be68e52d 83 robotControl.setEnable(true);
chrigelburri 0:31f7be68e52d 84 wait(1);
chrigelburri 0:31f7be68e52d 85
chrigelburri 0:31f7be68e52d 86
chrigelburri 0:31f7be68e52d 87 }