summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/motor
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/motor')
-rw-r--r--2005/i/robert/src/motor/motor.cc32
-rw-r--r--2005/i/robert/src/motor/motor.hh3
2 files changed, 12 insertions, 23 deletions
diff --git a/2005/i/robert/src/motor/motor.cc b/2005/i/robert/src/motor/motor.cc
index 3b48104..896c7f4 100644
--- a/2005/i/robert/src/motor/motor.cc
+++ b/2005/i/robert/src/motor/motor.cc
@@ -26,9 +26,11 @@
#include "motor.hh"
/// Constructeur
-Motor::Motor (const Config & config) // XXX Voir si besoin de config
+Motor::Motor (const Config & config)
:asserv_(config, *this), idle_(true)
{
+ pStatPosition = config.get<int>("motor.pStatPosition");
+ pStatMotor = config.get<int>("motor.pStatMotor");
}
/// Initialise les moteurs
@@ -39,37 +41,31 @@ void Motor::init (void)
// On stop le moteur
stop();
// on règle le rafraichissement des positions
- asserv_.statPosition(1); /// XXX Le temps combien et réglé ou??
- asserv_.statMotor(1);
- // on remet les position à 0 XXX à 0?
+ asserv_.statPosition(pStatPosition);
+ asserv_.statMotor(pStatMotor);
+ // on remet les position à 0 XXX à 0? dns ai en dur
posX_ = posY_ = posA_ = 0;
- // on regarde si les moteurs sont idle
- while (!idle()) {} // XXX humhum?
}
// Arrête les moteurs
void Motor::stop(void)
{
- asserv_.setSpeed(0,0);
- // XXX Peut-on lui dire d'oublier une commande?
- while(!idle()){} ///XXX vaut mieux appeler la commande ou la var?
+ asserv_.setSpeed();
+ while(!idle()){} ///XXX
}
double Motor::getX(void)
{
- sync(); // XXX attendre true??
return posX_;
}
double Motor::getY(void)
{
- sync();
return posY_;
}
double Motor::getA(void)
{
- sync();
return posA_;
}
@@ -87,25 +83,21 @@ void Motor::setSpeed(double v)
{
asserv_.setSpeed(v,v); /// XXX sur ca?
idle_ = false;
- sync(); // XXX avant ou après?
}
bool Motor::idle(void)
{
- sync();
return idle_;
}
void Motor::linearMove(double d)
{
- sync();
asserv_.linearMove(d);
idle_ = false;
}
-void Motor::rotation(double newA) //Est-ce un nouveau angle asb ou rel??
+void Motor::rotation(double newA)
{
- sync();
asserv_.angularMove(newA);
idle_ = false;
}
@@ -117,7 +109,6 @@ bool Motor::sync(void)
void Motor::receiveCounter (double lMotor, double rMotor)
{
- /// XXX que faire
}
void Motor::receivePosX (double xPos)
@@ -146,29 +137,24 @@ void Motor::receiveSpeedStat (int leftError, int leftInt, int rightError,
void Motor::receivePwm (double leftPwm, double rightPwm)
{
- // XXX que faire??
}
void Motor::receiveTiming (int motorTimer4,
int motorTimer3, int motorTimer2,
int motorTimer1, int motorTimer0)
{
- // XXX Que faire???
}
void Motor::receiveInPort (int port)
{
- // XXX Que faire?
}
void Motor::receiveSharp (int sharp1, int sharp2, int sharp3)
{
- // XXX Que faire?
}
void Motor::receiveTazState(int state, int subState)
{
- // XXX Que faire?
}
void Motor::done (void)
diff --git a/2005/i/robert/src/motor/motor.hh b/2005/i/robert/src/motor/motor.hh
index f81af49..e617980 100644
--- a/2005/i/robert/src/motor/motor.hh
+++ b/2005/i/robert/src/motor/motor.hh
@@ -41,6 +41,9 @@ class Motor : public Asserv::Receiver
double speed_;
/// Etat des commandes
bool idle_;
+ /// Paramètre de conf
+ int pStatPosition;
+ int pStatMotor;
public:
/// Constructeur