sra-romi

Dependencies:   BufferedSerial Matrix

Robot.h

Committer:
joaopsousa99
Date:
2021-05-11
Revision:
4:1defb279922a
Parent:
1:dc87724abce8

File content as of revision 4:1defb279922a:

/** @file */
#ifndef ROBOT_H_
#define ROBOT_H_

#include "mbed.h"
#include <cstdint>

extern const int16_t COUNTS_PER_ROTATION;
extern const int16_t WHEEL_DIAMETER;
extern const int16_t WHEEL_DISTANCE;
extern const float MAX_LIN_VEL;
extern const float MIN_LIN_VEL;
extern const float MIN_SET_SPEEDS;
extern const float MAX_SET_SPEEDS;

extern int16_t countsLeft;
extern int16_t countsRight;

extern float poseX;
extern float poseY;
extern float poseTheta;

/** \brief Sets the speed for both motors.
 *
 * \param leftSpeed A number from -300 to 300 representing the speed and
 * direction of the left motor. Values of -300 or less result in full speed
 * reverse, and values of 300 or more result in full speed forward.
 * \param rightSpeed A number from -300 to 300 representing the speed and
 * direction of the right motor. Values of -300 or less result in full speed
 * reverse, and values of 300 or more result in full speed forward. */
void setSpeeds(int16_t leftSpeed, int16_t rightSpeed);

/** \brief Sets the speed for the left motor.
 *
 * \param speed A number from -300 to 300 representing the speed and
 * direction of the left motor.  Values of -300 or less result in full speed
 * reverse, and values of 300 or more result in full speed forward. */
void setLeftSpeed(int16_t speed);

/** \brief Sets the speed for the right motor.
 *
 * \param speed A number from -300 to 300 representing the speed and
 * direction of the right motor. Values of -300 or less result in full speed
 * reverse, and values of 300 or more result in full speed forward. */
void setRightSpeed(int16_t speed);

/*! Returns the number of counts that have been detected from the both
 * encoders.  These counts start at 0.  Positive counts correspond to forward
 * movement of the wheel of the Romi, while negative counts correspond
 * to backwards movement.
 *
 * The count is returned as a signed 16-bit integer.  When the count goes
 * over 32767, it will overflow down to -32768.  When the count goes below
 * -32768, it will overflow up to 32767. */
void getCounts();

/*! This function is just like getCounts() except it also clears the
 *  counts before returning.  If you call this frequently enough, you will
 *  not have to worry about the count overflowing. */
void getCountsAndReset();

void updatePose();

void robotVel2wheelVel(float v, float w, float *wheelSpeeds);

float mapSpeeds(float value);

#endif /* ROBOT_H_ */