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 39:309f38d1e49c, committed 2016-04-05
- Comitter:
- IceTeam
- Date:
- Tue Apr 05 15:02:12 2016 +0000
- Parent:
- 37:da3a2c781672
- Child:
- 41:b5a2fbc20beb
- Commit message:
- Petite sauvegarde de batard;
Changed in this revision
--- a/Map/Map.cpp Sat Feb 06 10:11:28 2016 +0000
+++ b/Map/Map.cpp Tue Apr 05 15:02:12 2016 +0000
@@ -68,9 +68,9 @@
obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P13,1750,3000-90,30));// P13
obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P14,1850,3000-90,30));// P14
obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P15,1770,3000-1100,30));// P15*/
- obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P16,700,1000,30));// P16
- obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P15,1100,600,30));// P16
- obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P15,900,800,50));// P16
+ obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P16,700,1000,100));// P16
+ obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P15,1100,600,100));// P16
+ obstacles.push_back(new Obs_circle(ROBOTRADIUS,IDO_P15,1100,1000,100));// P16
}
int Map::getHeight(float x, float y)
--- a/Map/defines.h Sat Feb 06 10:11:28 2016 +0000
+++ b/Map/defines.h Tue Apr 05 15:02:12 2016 +0000
@@ -48,7 +48,7 @@
IDO_DEPOT_P
};
-#define ROBOTRADIUS 190
+#define ROBOTRADIUS 150
#define MAXPOINT 8000
--- a/Odometry/Odometry.cpp Sat Feb 06 10:11:28 2016 +0000
+++ b/Odometry/Odometry.cpp Tue Apr 05 15:02:12 2016 +0000
@@ -193,3 +193,18 @@
while((m_pulses_right != distance_ticks_right)&&(m_pulses_left != distance_ticks_left));
wait(0.4);
}
+
+void Odometry::Forward(float i) {
+ int32_t pos_initiale_right = m_pulses_right, pos_initiale_left = m_pulses_left;
+
+ int32_t distance_ticks_right = (int32_t) i/m_distPerTick_right + pos_initiale_right;
+ int32_t distance_ticks_left = (int32_t) i/m_distPerTick_left + pos_initiale_left;
+
+ roboclaw.SpeedAccelDeccelPositionM1M2(ADR, accel_dista, vitesse_dista, deccel_dista, distance_ticks_right, accel_dista, vitesse_dista, deccel_dista, distance_ticks_left, 1);
+
+ //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)); //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;
+}
\ No newline at end of file
--- a/Odometry/Odometry.h Sat Feb 06 10:11:28 2016 +0000
+++ b/Odometry/Odometry.h Tue Apr 05 15:02:12 2016 +0000
@@ -9,12 +9,16 @@
/* Vitesse d'acceleration d'angle reduite de 8000->4000 */
#define accel_angle 8000
-#define vitesse_angle 16000
+#define vitesse_angle 12000
#define deccel_angle 8000
-#define accel_dista 8000
-#define vitesse_dista 16000
-#define deccel_dista 8000
+#define accel_dista 12000
+#define vitesse_dista 20000
+#define deccel_dista 12000
+
+/* Si le robot parcourt un trop grand angle, il diminuer l'entraxe, sinon l'augmenter */
+#define ENTRAXE 243.8
+
/*
* Author : Benjamin Bertelone, reworked by Simon Emarre
@@ -36,8 +40,12 @@
*/
Odometry(double diameter_right, double diameter_left, double v, uint16_t quadrature, RoboClaw &rc);
+ /** Demande au robot d'effectuer un certain nombre de tour sur lui même */
void TestEntraxe(int i);
+ /** Demande au robot d'effectuer un déplacement sur l'avant. Voir si l'on peut enlever la correction PID */
+ void Forward(float i);
+
/** Les fonctions suivantes permettent de reinitialiser les valeurs de position de l'odometrie.
*/
void setPos(double x, double y, double theta);
--- a/RoboClaw.lib Sat Feb 06 10:11:28 2016 +0000 +++ b/RoboClaw.lib Tue Apr 05 15:02:12 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ARES/code/RoboClaw/#ad00b3431ff5 +https://developer.mbed.org/teams/ARES/code/RoboClaw/#ece8a8cdf4b0
--- a/main.cpp Sat Feb 06 10:11:28 2016 +0000
+++ b/main.cpp Tue Apr 05 15:02:12 2016 +0000
@@ -5,7 +5,6 @@
#define ATTENTE 0
#define GO 1
#define STOP 2
-#define ENTRAXE 248.25
InterruptIn mybutton(USER_BUTTON);
DigitalIn button(USER_BUTTON);
@@ -14,7 +13,7 @@
//Serial pc(USBTX, USBRX);
Serial logger (PA_9, PA_10);
RoboClaw roboclaw(460800, PA_11, PA_12);
-Odometry odo(63.2, 63.3, ENTRAXE, 4096, roboclaw);
+Odometry odo(61.7, 61.8, ENTRAXE, 4096, roboclaw);
int i = 0;
@@ -27,7 +26,9 @@
int main(void)
{
init();
- /*double angle_v = 2*PI/5;
+ /* Code AStar */
+
+ double angle_v = 2*PI/5;
double distance_v = 200.0;
std::vector<SimplePoint> path;
Map map;
@@ -40,7 +41,7 @@
float y=odo.getY();
float the = 0;
- map.AStar(x, y, 1400, 1000, 75);
+ map.AStar(x, y, 1600, 1000, 75);
path = map.path;
for(int i=0; i<path.size();i++) {
@@ -62,37 +63,75 @@
//odo.GotoThet(-PI/2);
wait(2000);
- //odo.GotoXYT(2250,500,0);*/
+ //odo.GotoXYT(2250,500,0);
+
+ //odo.TestEntraxe(5);
+ //odo.Forward(1000);
+
+ /* Code JPO :
+ roboclaw.ForwardM1(ADR, 0);
+ roboclaw.ForwardM2(ADR, 0);
+ int state = 0;
while(1)
{
- while(logger.readable())
- {
+ // while(logger.readable())
+ //{
char c = logger.getc();
if(c=='z')
{
- roboclaw.SpeedAccelM1M2(ADR, accel_angle, speed_angle, accel_angle, speed_angle);
+ if (state != 1) {
+ state = 1;
+ logger.printf("Avant (Z) \r\n");
+ roboclaw.SpeedAccelM1(ADR, accel_angle, vitesse_angle);
+ roboclaw.SpeedAccelM2(ADR, accel_angle, vitesse_angle);
+ }
}
else if(c == 's')
{
- roboclaw.ForwardM1(ADR, 0);
- roboclaw.ForwardM2(ADR, 0);
+ if (state != 2) {
+ state = 2;
+ logger.printf("Stop (S) \r\n");
+ roboclaw.ForwardM1(ADR, 0);
+ roboclaw.ForwardM2(ADR, 0);
+ }
}
else if(c == 'd')
{
- roboclaw.SpeedAccelM1M2(ADR, accel_angle, -speed_angle, accel_angle, speed_angle);
+ if (state != 3) {
+ state = 3;
+ logger.printf("Droite (D) \r\n");
+ roboclaw.SpeedAccelM1(ADR, accel_angle, vitesse_angle);
+ roboclaw.SpeedAccelM2(ADR, accel_angle, -vitesse_angle);
+ }
}
else if(c == 'q')
{
- roboclaw.SpeedAccelM1M2(ADR, accel_angle, speed_angle, accel_angle, -speed_angle);
+ if (state != 4) {
+ state = 4;
+ logger.printf("Gauche (Q)\r\n");
+ roboclaw.SpeedAccelM1(ADR, accel_angle, -vitesse_angle);
+ roboclaw.SpeedAccelM2(ADR, accel_angle, vitesse_angle);
+ }
}
else if(c == 'x')
{
- roboclaw.SpeedAccelM1M2(ADR, accel_angle, -speed_angle, accel_angle, -speed_angle);
+ if (state != 5) {
+ state = 5;
+ roboclaw.SpeedAccelM1M2(ADR, accel_angle, -vitesse_angle, accel_angle, -vitesse_angle);
+ }
}
- }
- roboclaw.ForwardM1(ADR, 0);
- roboclaw.ForwardM2(ADR, 0);
- }
+ else if (c == '\0') { ; }
+ else {
+ if (state != 0) {
+ roboclaw.SpeedAccelM1M2(ADR, accel_angle, 0, accel_angle, 0);
+ state = 0;
+ }
+ }
+ // }
+ // roboclaw.ForwardM1(ADR, 0);
+ // roboclaw.ForwardM2(ADR, 0);
+
+ }*/
}
void init(void)
@@ -108,9 +147,10 @@
while(button);
wait(1);
mybutton.fall(&pressed);
- mybutton.rise(&unpr
- essed);
+ mybutton.rise(&unpressed);
ticker.attach_us(&update_main,dt); // 100 Hz
+
+ logger.printf("End init\n\r");
}
void update_main(void)
