From 4fa1434052dd603cec70f0edfeeca8f47905fbfe Mon Sep 17 00:00:00 2001 From: haller Date: Mon, 2 May 2005 19:02:10 +0000 Subject: Ajout des paramètres d'asserv eSat et dSample Ajout d'une vietesse linéaire et rotation --- 2005/i/robert/src/asserv/asserv.cc | 49 +++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 14 deletions(-) (limited to '2005/i/robert/src/asserv/asserv.cc') diff --git a/2005/i/robert/src/asserv/asserv.cc b/2005/i/robert/src/asserv/asserv.cc index fea281a..3288ac6 100644 --- a/2005/i/robert/src/asserv/asserv.cc +++ b/2005/i/robert/src/asserv/asserv.cc @@ -50,18 +50,20 @@ void Asserv::reset(void) setKp(kp_); setKi(ki_); setKd(kd_); + setESat(eSat_); setSpeedIntMax(speedIntMax_); + setDSample(dSample_); setAccel(accel_); - setMaxSpeed(maxSpeed_); + setMaxSpeed(maxSLin_, maxSRot_); setUseTazFSM(useTazFSM_); - //setInvPwm(leftInvPwm_, rightInvPwm_); - //statCounter(pCounter_); - //statPosition(pPosition_); - //statMotor(pMotor_); - //statPwm(pPwm_); - //statTiming(pTiming_); - //statInPort(pStatInPort_); - //statSharp(pStatInPort_); + setInvPwm(leftInvPwm_, rightInvPwm_); + statCounter(pCounter_); + statPosition(pPosition_); + statMotor(pMotor_); + statPwm(pPwm_); + statTiming(pTiming_); + statInPort(pStatInPort_); + statSharp(pStatInPort_); } /// Essaie de purger la liste d'émission et indique si elle est vide. @@ -281,12 +283,25 @@ void Asserv::setKd(double Kd) proto_.send('p',"bw", 'd', static_cast(Kd * 256)); } +void Asserv::setESat(int eSat) +{ + eSat_ = eSat; + // Envoie à l'AVR + proto_.send('p', "bw", 'E', eSat); +} + void Asserv::setSpeedIntMax(int maxInt) { speedIntMax_ = maxInt; proto_.send('p', "bW", 'I', maxInt); } +void Asserv::setDSample (int dSample) +{ + dSample_ = dSample; + proto_.send('p', "bb", 's', dSample); +} + void Asserv::setAccel(int accel) { accel_ = accel_; @@ -301,13 +316,16 @@ double Asserv::getAccel(void) return mmPpas_ / (sPperiod_ * sPperiod_) / accel_; // XXX Vérifier ca } -void Asserv::setMaxSpeed(int maxSpeed) +/// Règle les vitesses maximum(lineaire et rotation) +void Asserv::setMaxSpeed(int maxSLin, int maxSRot) { - maxSpeed_ = maxSpeed; + maxSLin_ = maxSLin; + maxSRot_ = maxSRot; // Conversion mm->ppp - int p = mms2ppp(maxSpeed); + int p = mms2ppp(maxSLin); + int r = radTo256(maxSRot); // Envoie à l'AVR - proto_.send('p',"bb", 'm', p); + proto_.send('p',"bbb", 'm', p, r); } void Asserv::setUseTazFSM(bool use) @@ -413,8 +431,11 @@ void Asserv::loadConfig(const Config & config) kp_ = config.get("asserv.kp"); ki_ = config.get("asserv.ki"); kd_ = config.get("asserv.kd"); + eSat_ = config.get("asserv.eSat"); speedIntMax_ = config.get("asserv.speedIntMax"); - maxSpeed_ = config.get("asserv.maxSpeed"); + dSample_ = config.get("asserv.dSample"); + maxSLin_ = config.get("asserv.maxSLin"); + maxSRot_ = config.get("asserv.maxSRot"); useTazFSM_ = config.get("asserv.useTazFSM"); mmPpas_ = config.get("asserv.mmPpas"); sPperiod_ = config.get("asserv.sPperiod"); -- cgit v1.2.3