1
Fork 0

Compare commits

...

2 commits

Author SHA1 Message Date
718a551d72
calculate heading error 2026-02-04 14:57:41 -05:00
f4373cdc59
impl CheckReachedDestination 2026-02-04 14:50:41 -05:00
2 changed files with 25 additions and 2 deletions

View file

@ -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.
*/ */

View file

@ -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);
}; };