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
Fork of autonomous Robot Android by
main.cpp@0:31f7be68e52d, 2013-02-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |