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
Actuators/MaxonESCON.cpp
- Committer:
- chrigelburri
- Date:
- 2013-03-07
- Revision:
- 3:92ba0254af87
- Parent:
- Actuators/MaxonESCON/MaxonESCON.cpp@ 2:d8e1613dc38b
- Child:
- 6:48eeb41188dd
File content as of revision 3:92ba0254af87:
#include "MaxonESCON.h" using namespace std; MaxonESCON::MaxonESCON( PinName enb, PinName isenb, PinName pwm, PinName actualSpeed, Hallsensor *hall ) : _enb(enb), _isenb(isenb), _pwm(pwm), _actualSpeed(actualSpeed), _hall(hall) { _pwm = 0; // Initial condition of output enables _enb = 0; // Set initial condition of PWM 2kHz period(0.0005); // Set the pulses to zero _pulses = 0; // Set the Pull Up Resistor _isenb.mode(PullUp); } void MaxonESCON::setVelocity(float speed) { speed = speed / ESCON_SET_FACTOR * 60.0f; if(speed > 1 ) { _pwm = 0.9f; } else if(speed < -1) { _pwm = 0.1f; } else { _pwm = 0.4f*speed + 0.5f; } } float MaxonESCON::getActualSpeed(void) { return (_actualSpeed.read()* 2.0f - 1.0f) * ESCON_GET_FACTOR / 60.0f; } void MaxonESCON::period(float period) { _pwm.period(period); } void MaxonESCON::enable(bool enb) { if(enb == false) { _enb = 1; } else { _enb = 0; } } bool MaxonESCON::isEnabled() { if(_isenb.read() == 1) { return true; } else { return false; } } int MaxonESCON::getPulses(void) { _pulses = _hall->getPulses(); return _pulses; } int MaxonESCON::setPulses(int setPos) { _hall->reset(); _pulses = _hall->getPulses(); return _pulses; }