summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/qdai/test_robot.cc
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/qdai/test_robot.cc')
-rw-r--r--2004/i/nono/src/qdai/test_robot.cc79
1 files changed, 74 insertions, 5 deletions
diff --git a/2004/i/nono/src/qdai/test_robot.cc b/2004/i/nono/src/qdai/test_robot.cc
index f2b1de5..e9041b0 100644
--- a/2004/i/nono/src/qdai/test_robot.cc
+++ b/2004/i/nono/src/qdai/test_robot.cc
@@ -23,15 +23,19 @@
//
// }}}
#include "date/date.h"
+#include "io/analog_servo_pp.h"
+#include "io/analog_cmd.h"
#include "io/gpio_asserv.h"
#include "io/gpio_concat.h"
#include "io/gpio_servo_pp.h"
-#include "io/io_cmd.h"
+#include "io/gpio_cmd.h"
+#include "io/gpio_param.h"
#include "io/servo.h"
#include "io/servo_cmd.h"
#include "motor/asserv.h"
#include "motor/motor_cmd.h"
#include "motor/motor.h"
+#include "motor/movement_reposition.h"
#include <iostream>
#include <unistd.h>
@@ -43,7 +47,10 @@ syntax (void)
{
std::cout <<
"test_robot - teste tout le robot.\n"
- << motorHelp << ioHelp << servoHelp <<
+ << motorHelp << gpioHelp << servoHelp << analogHelp <<
+ " p <s> <gpil> <gpir> <anal> <anar>\n"
+ " Mouvement de repositionnement.\n"
+ " T Démarre la tempo de fin de match.\n"
" <timeout> attend (ms)\n"
" ? cet ecran d'aide" << std::endl;
}
@@ -55,13 +62,16 @@ main (int argc, char **argv)
{
Motor m;
GpioServoPp gspp;
+ AnalogServoPp ana (gspp);
GpioAsserv ga (m.getAsserv ());
GpioConcat gc (ga, gspp, ga.getNbIo ());
+ GpioParam gp (gc);
int i = 1;
while (i < argc)
{
- if (!ioCmd (argc, argv, i, gc)
+ if (!gpioCmd (argc, argv, i, gp)
&& !servoCmd (argc, argv, i, gspp)
+ && !analogCmd (argc, argv, i, ana)
&& !motorCmd (argc, argv, i, m))
{
switch (argv[i][0])
@@ -69,6 +79,59 @@ main (int argc, char **argv)
case '?':
syntax ();
return 0;
+ case 'p':
+ {
+ i++;
+ double s;
+ if (i >= argc) break;
+ s = atof (argv[i++]);
+ int gpil, gpir;
+ if (i >= argc) break;
+ gpil = gp.getByName (argv[i++]);
+ if (i >= argc) break;
+ gpir = gp.getByName (argv[i++]);
+ int anal, anar;
+ if (i >= argc) break;
+ anal = ana.getByName (argv[i++]);
+ if (i >= argc) break;
+ anar = ana.getByName (argv[i++]);
+ std::cout << "test: reposition " << s << ' ' << gpil
+ << ' ' << gpir << ' ' << anal << ' ' << anar <<
+ std::endl;
+ /// HACK
+ Movement *mov = new MovementReposition (s, gp, gpil,
+ gpir, ana,
+ anal, anar);
+ m.addMovement (mov);
+ }
+ break;
+ case 'T':
+ i++;
+ Date::getInstance ().startRound ();
+ break;
+ case 'P':
+ {
+ i++;
+ double a;
+ char c;
+ if (i >= argc) break;
+ c = argv[i++][0];
+ if (i >= argc) break;
+ a = atof (argv[i++]);
+ switch (c)
+ {
+ case 'x':
+ m.getTracker ().adjustX (a);
+ break;
+ case 'y':
+ m.getTracker ().adjustY (a);
+ break;
+ case 'a':
+ m.getTracker ().adjustAngle (a);
+ break;
+ }
+ }
+ break;
default:
int s;
s = atoi (argv[i++]);
@@ -83,13 +146,19 @@ main (int argc, char **argv)
while (Date::getInstance ().start () < start + s)
{
m.ok ();
+ gspp.update ();
Date::wait (50);
}
break;
}
}
- m.waitEnd ();
- gspp.update ();
+ while (!m.end ())
+ {
+ m.waitOk ();
+ gspp.update ();
+ if (Date::getInstance ().round () > 90000)
+ return 0;
+ }
}
return 0;
}