Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Timer by
Revision 37:da3a2c781672, committed 2016-02-06
- Comitter:
- sype
- Date:
- Sat Feb 06 10:11:28 2016 +0000
- Parent:
- 36:2d7357a385bc
- Child:
- 39:309f38d1e49c
- Child:
- 40:ca4dd3faffa8
- Commit message:
- Command;
Changed in this revision
--- a/Odometry/Odometry.cpp Sun Jan 31 16:11:32 2016 +0000
+++ b/Odometry/Odometry.cpp Sat Feb 06 10:11:28 2016 +0000
@@ -28,7 +28,7 @@
}
void Odometry::getEnc()
{
- pc.printf("EncM1 : %d\tEncM2 : %d\n\r", roboclaw.ReadEncM1(ADR), roboclaw.ReadEncM2(ADR));
+ logger.printf("EncM1 : %d\tEncM2 : %d\n\r", roboclaw.ReadEncM1(ADR), roboclaw.ReadEncM2(ADR));
}
void Odometry::setX(double x)
@@ -91,7 +91,7 @@
{
double theta_ = atan2(y_goal-y, x_goal-x);
double dist_ = sqrt(carre(x_goal-x)+carre(y_goal-y));
- pc.printf("Dist : %3.2f\tTheta : %3.2f\n\r", dist_, theta_*180/PI);
+ logger.printf("Dist : %3.2f\tTheta : %3.2f\n\r", dist_, theta_*180/PI);
GotoThet(theta_);
GotoDist(dist_);
}
@@ -100,7 +100,7 @@
{
double theta_ = atan2(y_goal-y, x_goal-x);
double dist_ = sqrt(carre(x_goal-x)+carre(y_goal-y));
- pc.printf("Dist : %3.2f\tTheta : %3.2f\n\r", dist_, theta_*180/PI);
+ logger.printf("Dist : %3.2f\tTheta : %3.2f\n\r", dist_, theta_*180/PI);
GotoThet(theta_);
GotoDist(dist_);
GotoThet(theta_goal);
@@ -110,7 +110,7 @@
{
led = 0;
//pos_prog++;
- //pc.printf("Theta : %3.2f\n\r", theta_*180/PI);
+ //logger.printf("Theta : %3.2f\n\r", theta_*180/PI);
//arrived = false;
int32_t distance_ticks_left;
@@ -124,7 +124,7 @@
while(erreur_theta >= PI) erreur_theta -= 2*PI;
while(erreur_theta < -PI) erreur_theta += 2*PI;
- pc.printf("ET : %3.2f\n\r", erreur_theta*180/PI);
+ logger.printf("ET : %3.2f\n\r", erreur_theta*180/PI);
if(erreur_theta < 0) {
distance_ticks_left = (int32_t) pos_initiale_left + (erreur_theta*m_v/2)/m_distPerTick_left;
@@ -134,27 +134,27 @@
distance_ticks_right = (int32_t) pos_initiale_right - (erreur_theta*m_v/2)/m_distPerTick_right;
}
- //pc.printf("TV %3.2f\tTh %3.2f\tET %3.2f\n\r",theta_*180/PI,getTheta()*180/PI,erreur_theta*180/PI);
- //pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", getX(), getY(), getTheta()*180/PI);
- //pc.printf("M1 %6d\tM2 %6d\n\r",distance_ticks_right, distance_ticks_left);
+ //logger.printf("TV %3.2f\tTh %3.2f\tET %3.2f\n\r",theta_*180/PI,getTheta()*180/PI,erreur_theta*180/PI);
+ //logger.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", getX(), getY(), getTheta()*180/PI);
+ //logger.printf("M1 %6d\tM2 %6d\n\r",distance_ticks_right, distance_ticks_left);
roboclaw.SpeedAccelDeccelPositionM1M2(ADR, accel_angle, vitesse_angle, deccel_angle, distance_ticks_right, accel_angle, vitesse_angle, deccel_angle, distance_ticks_left, 1);
- //pc.printf("IniR:%6d\tDistR:%6d\tIniL:%6d\tDistL:%6d\n\r", pos_initiale_right, distance_ticks_right, pos_initiale_left, distance_ticks_left);
+ //logger.printf("IniR:%6d\tDistR:%6d\tIniL:%6d\tDistL:%6d\n\r", pos_initiale_right, distance_ticks_right, pos_initiale_left, distance_ticks_left);
- while((m_pulses_right != distance_ticks_right)&&(m_pulses_left != distance_ticks_left)); //pc.printf("%6d\t%6d\t%6d\t%6d\t%6d\n\r",m_pulses_right - pos_initiale_right, distance_ticks_right, m_pulses_left - pos_initiale_left, distance_ticks_left);
+ while((m_pulses_right != distance_ticks_right)&&(m_pulses_left != distance_ticks_left)); //logger.printf("%6d\t%6d\t%6d\t%6d\t%6d\n\r",m_pulses_right - pos_initiale_right, distance_ticks_right, m_pulses_left - pos_initiale_left, distance_ticks_left);
wait(0.4);
setTheta(theta_);
led = 1;
//arrived = true;
- //pc.printf("arrivey %d\n\r",pos_prog);
+ //logger.printf("arrivey %d\n\r",pos_prog);
}
void Odometry::GotoDist(double distance)
{
led = 0;
//pos_prog++;
- //pc.printf("Dist : %3.2f\n\r", distance);
+ //logger.printf("Dist : %3.2f\n\r", distance);
//arrived = false;
int32_t pos_initiale_right = m_pulses_right, pos_initiale_left = m_pulses_left;
@@ -164,13 +164,13 @@
roboclaw.SpeedAccelDeccelPositionM1M2(ADR, accel_dista, vitesse_dista, deccel_dista, distance_ticks_right, accel_dista, vitesse_dista, deccel_dista, distance_ticks_left, 1);
- //pc.printf("IniR:%6d\tDistR:%6d\tIniL:%6d\tDistL:%6d\n\r", pos_initiale_right, distance_ticks_right, pos_initiale_left, distance_ticks_left);
+ //logger.printf("IniR:%6d\tDistR:%6d\tIniL:%6d\tDistL:%6d\n\r", pos_initiale_right, distance_ticks_right, pos_initiale_left, distance_ticks_left);
- while((m_pulses_right != distance_ticks_right)&&(m_pulses_left != distance_ticks_left)); //pc.printf("PR:%6d\tIR:%6d\tDR:%6d\tPL:%6d\tIL:%6d\tDL:%6d\n\r",m_pulses_right, pos_initiale_right, distance_ticks_right, m_pulses_left, pos_initiale_left, distance_ticks_left);
+ while((m_pulses_right != distance_ticks_right)&&(m_pulses_left != distance_ticks_left)); //logger.printf("PR:%6d\tIR:%6d\tDR:%6d\tPL:%6d\tIL:%6d\tDL:%6d\n\r",m_pulses_right, pos_initiale_right, distance_ticks_right, m_pulses_left, pos_initiale_left, distance_ticks_left);
wait(0.4);
led = 1;
- //pc.printf("arrivey %d\n\r",pos_prog);
- //pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", getX(), getY(), getTheta()*180/PI);
+ //logger.printf("arrivey %d\n\r",pos_prog);
+ //logger.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", getX(), getY(), getTheta()*180/PI);
}
void Odometry::TestEntraxe(int i) {
--- a/Odometry/Odometry.h Sun Jan 31 16:11:32 2016 +0000 +++ b/Odometry/Odometry.h Sat Feb 06 10:11:28 2016 +0000 @@ -20,7 +20,7 @@ * Author : Benjamin Bertelone, reworked by Simon Emarre */ -extern Serial pc; +extern Serial logger; extern DigitalOut led; /** Permet la gestion de l'odometrie du robot **/
--- a/RoboClaw.lib Sun Jan 31 16:11:32 2016 +0000 +++ b/RoboClaw.lib Sat Feb 06 10:11:28 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ARES/code/RoboClaw/#e64524a61cfe +https://developer.mbed.org/teams/ARES/code/RoboClaw/#ad00b3431ff5
--- a/main.cpp Sun Jan 31 16:11:32 2016 +0000
+++ b/main.cpp Sat Feb 06 10:11:28 2016 +0000
@@ -12,10 +12,8 @@
DigitalOut led(LED1);
Ticker ticker;
//Serial pc(USBTX, USBRX);
-Serial pc(PA_9, PA_10);
Serial logger (PA_9, PA_10);
RoboClaw roboclaw(460800, PA_11, PA_12);
-/* Changement entraxe : 252->253 */
Odometry odo(63.2, 63.3, ENTRAXE, 4096, roboclaw);
int i = 0;
@@ -28,12 +26,13 @@
/** Debut du programme */
int main(void)
{
- double angle_v = 2*PI/5;
+ init();
+ /*double angle_v = 2*PI/5;
double distance_v = 200.0;
std::vector<SimplePoint> path;
Map map;
- init();
+
//Construction des obstacles
map.build();
@@ -60,31 +59,57 @@
//odo.GotoThet(PI);
odo.GotoThet(0);
//odo.TestEntraxe(3);
- /*
- odo.GotoXYT(1000, 1000, 0);
- odo.GotoXYT(0, 1000, PI);
- odo.GotoThet(0);*/
//odo.GotoThet(-PI/2);
wait(2000);
- //odo.GotoXYT(2250,500,0);
- while(1);
+ //odo.GotoXYT(2250,500,0);*/
+ while(1)
+ {
+ while(logger.readable())
+ {
+ char c = logger.getc();
+ if(c=='z')
+ {
+ roboclaw.SpeedAccelM1M2(ADR, accel_angle, speed_angle, accel_angle, speed_angle);
+ }
+ else if(c == 's')
+ {
+ roboclaw.ForwardM1(ADR, 0);
+ roboclaw.ForwardM2(ADR, 0);
+ }
+ else if(c == 'd')
+ {
+ roboclaw.SpeedAccelM1M2(ADR, accel_angle, -speed_angle, accel_angle, speed_angle);
+ }
+ else if(c == 'q')
+ {
+ roboclaw.SpeedAccelM1M2(ADR, accel_angle, speed_angle, accel_angle, -speed_angle);
+ }
+ else if(c == 'x')
+ {
+ roboclaw.SpeedAccelM1M2(ADR, accel_angle, -speed_angle, accel_angle, -speed_angle);
+ }
+ }
+ roboclaw.ForwardM1(ADR, 0);
+ roboclaw.ForwardM2(ADR, 0);
+ }
}
void init(void)
{
- pc.baud(9600);
- pc.printf("Hello from main !\n\r");
+ roboclaw.ForwardM1(ADR, 0);
+ roboclaw.ForwardM2(ADR, 0);
+ logger.baud(9600);
+ logger.printf("Hello from main !\n\r");
wait_ms(500);
odo.setPos(0, 1000, 0);
- roboclaw.ForwardM1(ADR, 0);
- roboclaw.ForwardM2(ADR, 0);
-
+
while(button);
wait(1);
mybutton.fall(&pressed);
- mybutton.rise(&unpressed);
+ mybutton.rise(&unpr
+ essed);
ticker.attach_us(&update_main,dt); // 100 Hz
}
