Compare commits
2 commits
dd538d7185
...
718a551d72
| Author | SHA1 | Date | |
|---|---|---|---|
| 718a551d72 | |||
| f4373cdc59 |
2 changed files with 25 additions and 2 deletions
|
|
@ -42,20 +42,37 @@ void Robot::SetDestination(const Pose& dest)
|
||||||
robotState = ROBOT_DRIVE_TO_POINT;
|
robotState = ROBOT_DRIVE_TO_POINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float Robot::SquareDistance(void) {
|
||||||
|
return pow((destPose.x - currPose.x),2) + pow((destPose.y-currPose.y),2);
|
||||||
|
}
|
||||||
|
|
||||||
bool Robot::CheckReachedDestination(void)
|
bool Robot::CheckReachedDestination(void)
|
||||||
{
|
{
|
||||||
bool retVal = false;
|
|
||||||
/**
|
/**
|
||||||
* TODO: Add code to check if you've reached destination here.
|
* TODO: Add code to check if you've reached destination here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return retVal;
|
float rad_error = abs(destPose.theta - currPose.theta);
|
||||||
|
|
||||||
|
return SquareDistance() < TARGET_SQ_DIST && rad_error < TARGET_RAD_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Robot::DriveToPoint(void)
|
void Robot::DriveToPoint(void)
|
||||||
{
|
{
|
||||||
if(robotState == ROBOT_DRIVE_TO_POINT)
|
if(robotState == ROBOT_DRIVE_TO_POINT)
|
||||||
{
|
{
|
||||||
|
float target_heading;
|
||||||
|
|
||||||
|
if (SquareDistance() < TARGET_SQ_DIST) {
|
||||||
|
target_heading = destPose.theta;
|
||||||
|
} else {
|
||||||
|
target_heading = atan2(destPose.x - currPose.x, destPose.y - currPose.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
float heading_err = destPose.theta - target_heading;
|
||||||
|
float forward_effort = cos(heading_err);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Add your IK algorithm here.
|
* TODO: Add your IK algorithm here.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
#include "chassis.h"
|
#include "chassis.h"
|
||||||
|
|
||||||
|
const float TARGET_SQ_DIST = pow(3.0, 2); // distance from setpoint that is ok (cm)
|
||||||
|
const float TARGET_RAD_ERR = 0.25; // angle from setpoint that is ok (rad)
|
||||||
|
|
||||||
class Robot
|
class Robot
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -49,4 +52,7 @@ protected:
|
||||||
void CalibDrive(void);
|
void CalibDrive(void);
|
||||||
bool CheckReachedDestination(void);
|
bool CheckReachedDestination(void);
|
||||||
void HandleDestination(void);
|
void HandleDestination(void);
|
||||||
|
|
||||||
|
// Square distance between current and target pose
|
||||||
|
float SquareDistance(void);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue