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.
Dependencies: RoboClaw StepperMotor mbed
Fork of Robot2016_2-0 by
main.cpp
- Committer:
- sype
- Date:
- 2016-02-06
- Revision:
- 38:da3a2c781672
- Parent:
- 36:2d7357a385bc
- Child:
- 39:309f38d1e49c
- Child:
- 40:ca4dd3faffa8
File content as of revision 38:da3a2c781672:
#include "Odometry/Odometry.h"
#include "Map/Map.h"
#define dt 10000
#define ATTENTE 0
#define GO 1
#define STOP 2
#define ENTRAXE 248.25
InterruptIn mybutton(USER_BUTTON);
DigitalIn button(USER_BUTTON);
DigitalOut led(LED1);
Ticker ticker;
//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);
int i = 0;
void update_main(void);
void init(void);
void pressed(void);
void unpressed(void);
/** Debut du programme */
int main(void)
{
init();
/*double angle_v = 2*PI/5;
double distance_v = 200.0;
std::vector<SimplePoint> path;
Map map;
//Construction des obstacles
map.build();
float x=odo.getX();
float y=odo.getY();
float the = 0;
map.AStar(x, y, 1400, 1000, 75);
path = map.path;
for(int i=0; i<path.size();i++) {
the = (float) atan2((double) (path[i].y - odo.getY()), (double) (path[i].x - odo.getX()));
odo.GotoXYT(path[i].x, path[i].y, the);
}
map.AStar(odo.getX(), odo.getY(), 0, 1000, 75);
path = map.path;
for(int i=0; i<path.size();i++) {
the = (float) atan2((double) (path[i].y - odo.getY()), (double) (path[i].x - odo.getX()));
odo.GotoXYT(path[i].x, path[i].y, the);
}
//odo.GotoThet(PI);
odo.GotoThet(0);
//odo.TestEntraxe(3);
//odo.GotoThet(-PI/2);
wait(2000);
//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)
{
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);
while(button);
wait(1);
mybutton.fall(&pressed);
mybutton.rise(&unpr
essed);
ticker.attach_us(&update_main,dt); // 100 Hz
}
void update_main(void)
{
odo.update_odo();
//pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", odo.getX(), odo.getY(), odo.getTheta()*180/PI);
//if(pc.readable()) if(pc.getc()=='l') led = !led;
}
void pressed(void)
{
if(i==0) {
roboclaw.ForwardM1(ADR, 0);
roboclaw.ForwardM2(ADR, 0);
//pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", odo.getX(), odo.getY(), odo.getTheta()*180/PI);
i++;
}
}
void unpressed(void)
{
if(i==1) {
i--;
}
}
