summaryrefslogtreecommitdiff
path: root/2005/i/robert
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert')
-rw-r--r--2005/i/robert/src/motor/motor.cc49
-rw-r--r--2005/i/robert/src/motor/motor.hh2
-rw-r--r--2005/i/robert/src/motor/test_motor.cc5
3 files changed, 34 insertions, 22 deletions
diff --git a/2005/i/robert/src/motor/motor.cc b/2005/i/robert/src/motor/motor.cc
index d963342..9cf55f8 100644
--- a/2005/i/robert/src/motor/motor.cc
+++ b/2005/i/robert/src/motor/motor.cc
@@ -51,7 +51,7 @@ void Motor::init (void)
// on règle le rafraichissement des positions
asserv_.statPosition(pStatPosition_);
asserv_.statMotor(pStatMotor_);
- log_ ("initialisation") << "Etat" << "Terminée";
+ //log_ ("initialisation") << "Etat" << "Terminée";
}
// Arrête les moteurs
@@ -107,7 +107,7 @@ void Motor::goTo(double x, double y, double a)
void Motor::recalage(void)
{
asserv_.fuckTheWall(-3); // XXX Mettre l'arg en conf
- log_ ("recalage") << "Vitesse" << "-3";
+ //log_ ("recalage") << "Vitesse" << "-3";
idle_ = false;
}
@@ -119,14 +119,14 @@ bool Motor::idle(void)
void Motor::linearMove(double d)
{
asserv_.linearMove(d);
- log_ ("linearMove") << "Valeur" << d;
+ //log_ ("linearMove") << "Valeur" << d;
idle_ = false;
}
void Motor::rotation(double newA)
{
asserv_.angularMove(newA);
- log_ ("rotation") << "Valeur" << newA;
+ //log_ ("rotation") << "Valeur" << newA;
idle_ = false;
}
@@ -135,6 +135,11 @@ void Motor::setMaxSpeed(int maxLspeed, int maxRspeed)
asserv_.setMaxSpeed(maxLspeed, maxRspeed);
}
+void Motor::setAccel(int accel)
+{
+ asserv_.setAccel(accel);
+}
+
int Motor::getMaxLSpeed(void)
{
return asserv_.getMaxLSpeed();
@@ -142,42 +147,42 @@ int Motor::getMaxLSpeed(void)
bool Motor::sync(void)
{
- log_("sync") << "Entré dans sync" << "";
+ //log_("sync") << "Entré dans sync" << "";
// On regarde si toutes les commandes ont été envoyées et aquittées
if (asserv_.sync())
{
- log_("sync") << "Toutes les commandes ont été envoyés et aquitté" << "";
+ //log_("sync") << "Toutes les commandes ont été envoyés et aquitté" << "";
if(doneDone_) // Si on a reçu des F depuis le dernier sync
{
- log_("sync") << "On a des F" << "";
+ //log_("sync") << "On a des F" << "";
if(!f0Sended_) // Si on avait pas envoyé de f0
{
- log_("sync") << "On envoie le F0" << "";
+ //log_("sync") << "On envoie le F0" << "";
asserv_.finishAck();
f0Sended_ = true;
}
else // Si l'AVR vient d'aquitter le F0
{
- log_("sync") << "On a déjà envoyé le F0, on s'en fout" << "";
+ //log_("sync") << "On a déjà envoyé le F0, on s'en fout" << "";
doneDone_ = false;
}
}
else // Si on a pas reçu de F
{
- log_("sync") << "On a pas reçu de F" << "";
+ //log_("sync") << "On a pas reçu de F" << "";
if(f0Sended_) // On peut envoyer une nouvelle commande
{
- log_("sync") << "Pret pour un nouveau travail" << "";
+ //log_("sync") << "Pret pour un nouveau travail" << "";
if(fOrdre_.empty()) //Si la pile est vide
{
- log_("sync") << "On repasse en Idle" << "";
+ //log_("sync") << "On repasse en Idle" << "";
idle_ = true; // Les moteurs sont idle
}
else
{
- log_("sync") << "Prochaine commande de la pile" << "";
+ //log_("sync") << "Prochaine commande de la pile" << "";
if(fOrdre_.front().ordre_) // Linear Move
linearMove(fOrdre_.front().arg_);
else
@@ -186,8 +191,8 @@ bool Motor::sync(void)
}
f0Sended_ = false;
}
- else
- log_("sync") << "Le Robot est en activité/pause, on y touche pas" << "";
+ // else
+ //log_("sync") << "Le Robot est en activité/pause, on y touche pas" << "";
}
return true;
}
@@ -208,35 +213,35 @@ int Motor::getFd(void)
bool Motor::jackState(void)
{
pinUpdated_ = false;
- asserv_.statInPort(1); /// XXX La période est défini comment?? (en dur, et c'est 8 période d'asserv)
+/* asserv_.statInPort(8); /// XXX La période est défini comment?? (en dur, et c'est 8 période d'asserv)
while(!pinUpdated_)
{
sync();
}
+ /// On fait fermer sa gueule à l'AVR sur l'epineux sujet du port d'entrée
+ asserv_.statInPort(); */
int temp = pinState_ & 0x0040; // XXX Ouais à tester
if(temp == 0x0040) // si le jack est retiré
return true;
else
return false;
- /// On fait fermer sa gueule à l'AVR sur l'epineux sujet du port d'entrée
- asserv_.statInPort();
}
bool Motor::colorState (void)
{
pinUpdated_ = false;
- asserv_.statInPort(1); /// XXX La période est défini comment?? (en dur, et c'est 8 période d'asserv)
+/* asserv_.statInPort(1); /// XXX La période est défini comment?? (en dur, et c'est 8 période d'asserv)
while(!pinUpdated_)
{
sync();
- }
+ } */
int temp = pinState_ & 0x0002; // XXX Ouais à tester
if(temp == 0x0002) // si le jack est retiré
return true;
else
return false;
/// On fait fermer sa gueule à l'AVR sur l'epineux sujet du port d'entrée
- asserv_.statInPort();
+ //asserv_.statInPort();
}
void Motor::receiveCounter (double lMotor, double rMotor)
@@ -289,6 +294,6 @@ void Motor::receiveTazState(int state, int subState)
void Motor::done (void)
{
- log_("done") << "Passage dans done" << "";
+ //log_("done") << "Passage dans done" << "";
doneDone_ = true;
}
diff --git a/2005/i/robert/src/motor/motor.hh b/2005/i/robert/src/motor/motor.hh
index 27f1894..062957c 100644
--- a/2005/i/robert/src/motor/motor.hh
+++ b/2005/i/robert/src/motor/motor.hh
@@ -93,6 +93,8 @@ class Motor : public Asserv::Receiver
void rotation(double newA);
/// set de la vitesse des moteurs
void setMaxSpeed(int maxLspeed, int maxRspeed);
+ /// set de l'acceleration des moteurs
+ void setAccel(int accel);
/// récupère la vitesse linéaire maximum
int getMaxLSpeed(void);
/// Syncronisation
diff --git a/2005/i/robert/src/motor/test_motor.cc b/2005/i/robert/src/motor/test_motor.cc
index bc44f02..137e355 100644
--- a/2005/i/robert/src/motor/test_motor.cc
+++ b/2005/i/robert/src/motor/test_motor.cc
@@ -107,6 +107,11 @@ main (int argc, char **argv)
case 'C':
std::cout << "Couleur Sélectionné: " << (motor.colorState() ? "Rouge" : "Vert") << std::endl;
break;
+ case 'A':
+ if(++i > argc)
+ throw std::runtime_error("syntax error");
+ motor.setAccel(strtol(argv[0], 0, 10));
+ break;
case 'L':
while(!motor.idle())
{