summaryrefslogtreecommitdiff
path: root/i/marvin/src/asserv
diff options
context:
space:
mode:
authorschodet2006-05-22 21:20:24 +0000
committerschodet2006-05-22 21:20:24 +0000
commit7d808f18089edd6763a630d5bc40695698c81566 (patch)
treed728ae763b1427211d97945203256824721b91c1 /i/marvin/src/asserv
parent063f5ffafc9aa8eb90efa0cc3aaeaac69777d69c (diff)
Ajout de la classe Motor et modification du test Asserv.
Diffstat (limited to 'i/marvin/src/asserv')
-rw-r--r--i/marvin/src/asserv/asserv.cc7
-rw-r--r--i/marvin/src/asserv/asserv.hh2
-rw-r--r--i/marvin/src/asserv/test_asserv.cc28
3 files changed, 35 insertions, 2 deletions
diff --git a/i/marvin/src/asserv/asserv.cc b/i/marvin/src/asserv/asserv.cc
index f5321fc..5726dbf 100644
--- a/i/marvin/src/asserv/asserv.cc
+++ b/i/marvin/src/asserv/asserv.cc
@@ -129,6 +129,13 @@ Asserv::speedTo (double t, double a, int seq)
proto_.send ('s', "ddb", mmToStep (t), mmToStep (a), seq);
}
+/// Speed controlled angle consign offset.
+void
+Asserv::speedAngle (double a, int seq)
+{
+ proto_.send ('s', "ddb", 0, radToStep (a), seq);
+}
+
/// Find a hole.
void
Asserv::findHole (int seq)
diff --git a/i/marvin/src/asserv/asserv.hh b/i/marvin/src/asserv/asserv.hh
index 5f59084..0d9f5a2 100644
--- a/i/marvin/src/asserv/asserv.hh
+++ b/i/marvin/src/asserv/asserv.hh
@@ -80,6 +80,8 @@ class Asserv : public Proto::Receiver
void speed (int t, int a);
/// Speed controlled position consign offset.
void speedTo (double t, double a, int seq);
+ /// Speed controlled angle consign offset.
+ void speedAngle (double a, int seq);
/// Find a hole.
void findHole (int seq);
/// Acknoledge.
diff --git a/i/marvin/src/asserv/test_asserv.cc b/i/marvin/src/asserv/test_asserv.cc
index 4742e5d..557add2 100644
--- a/i/marvin/src/asserv/test_asserv.cc
+++ b/i/marvin/src/asserv/test_asserv.cc
@@ -24,6 +24,7 @@
// }}}
#include "asserv.hh"
#include "tester/tester.hh"
+#include "timer/timer.hh"
#include <iostream>
#include <exception>
@@ -54,6 +55,13 @@ class TestAsserv : public Tester, public Asserv::Receiver
ok_ = false;
asserv_.speedTo (t, a, seq_);
}
+ /// Speed controlled angle consign offset, handle seq.
+ void speedAngle (double a)
+ {
+ nextSeq ();
+ ok_ = false;
+ asserv_.speedAngle (a, seq_);
+ }
/// Find a hole, handle seq.
void findHole (void)
{
@@ -61,18 +69,30 @@ class TestAsserv : public Tester, public Asserv::Receiver
ok_ = false;
asserv_.findHole (seq_);
}
+ /// Wait.
+ void wait (int ms)
+ {
+ int t, stop;
+ t = Timer::getProgramTime ();
+ stop = t + ms;
+ while (t < stop)
+ {
+ asserv_.wait (stop - t);
+ t = Timer::getProgramTime ();
+ }
+ }
/// Called after each command called.
void postcall (void)
{
while (!asserv_.wait () || !ok_)
- std::cout << "hop" << std::endl;
+ ;
}
/// Executed before checking/running commands. Good place to add command
/// to the interpreter.
void preRun (void)
{
Interpreter &i = getInterpreter ();
- i.add ("wait", Interpreter::memFunc (asserv_, &Asserv::wait),
+ i.add ("wait", Interpreter::memFunc (*this, &TestAsserv::wait),
"wait MS\nwait for a delay in millisecond");
i.add ("reset", Interpreter::memFunc (asserv_, &Asserv::reset),
"reset\nreset the asserv board");
@@ -88,6 +108,10 @@ class TestAsserv : public Tester, public Asserv::Receiver
i.add ("speedTo", Interpreter::memFunc (*this, &TestAsserv::speedTo),
"speedTo THETA(mm) ANGLE(mm)\n"
"speed consign limited in distance");
+ i.add ("speedAngle",
+ Interpreter::memFunc (*this, &TestAsserv::speedAngle),
+ "speedAngle ANGLE(rad)\n"
+ "speed consign limited in angle");
i.add ("findHole", Interpreter::memFunc (*this, &TestAsserv::findHole),
"findHole\nfind a hole");
i.add ("setPos", Interpreter::memFunc (asserv_, &Asserv::setPos),