* Rename 'isIRDetect*' functions to 'isLightBumper*'

* Documentation / code cleanup
* Add function 'driveRadius'
* Add function 'isVirtualWall'
This commit is contained in:
jacobperron 2016-03-28 19:17:35 -07:00
parent cdc6927e76
commit 75dd293bfd
5 changed files with 157 additions and 84 deletions

View file

@ -90,8 +90,12 @@ namespace create {
Create(RobotModel = CREATE_2);
/* Attempts to establish serial connection to Create.
* \param port of your computer that is connected to Create.
* \param baud rate to communicate with Create. Typically,
* 115200 for Create 2 and 57600 for Create 1.
* \param model type of robot.
*/
Create(const std::string& port, const int& baud, RobotModel = CREATE_2);
Create(const std::string& port, const int& baud, RobotModel model = CREATE_2);
~Create();
@ -107,26 +111,21 @@ namespace create {
*/
void disconnect();
/* Resets as if you have removed the battery.
* Changes mode to MODE_PASSIVE.
*/
// TODO
//void reset();
// TODO
//void setBaud(int baudcode);
/* Change Create mode.
* \param mode to put Create in.
* \return true if successful, false otherwise
*/
bool setMode(const create::CreateMode& mode);
/* Starts a cleaning mode.
* Changes mode to MODE_PASSIVE.
* \return true if successful, false otherwise
*/
bool clean(const create::CleanMode& mode = CLEAN_DEFAULT);
/* Starts the docking behaviour.
* Changes mode to MODE_PASSIVE.
* \return true if successful, false otherwise
*/
bool dock() const;
@ -134,42 +133,49 @@ namespace create {
* \param day in range [0, 6]
* \param hour in range [0, 23]
* \param min in range [0, 59]
* \return true if successful, false otherwise
*/
bool setDate(const create::DayOfWeek& day, const uint8_t& hour, const uint8_t& min) const;
/* Set the average wheel velocity and turning radius of Create.
* \param vel is in m/s
* \param velocity is in m/s bounded between [-0.5, 0.5]
* \param radius in meters.
* Special cases: drive straight = CREATE_2_STRAIGHT_RADIUS,
* turn in place counter-clockwise = CREATE_2_IN_PLACE_RADIUS,
* turn in place clockwise = -CREATE_2_IN_PLACE_RADIUS
* \return true if successful, false otherwise
*/
//void driveRadius(const float& vel, const float& radius) const;
bool driveRadius(const float& velocity, const float& radius) const;
/* Set the velocities for the left and right wheels (m/s).
/* Set the velocities for the left and right wheels.
* \param leftWheel velocity in m/s.
* \param rightWheel veloctiy in m/s.
* \return true if successful, false otherwise
*/
bool driveWheels(const float& leftWheel, const float& rightWheel) const;
/* Set the PWM for each wheel.
*/
// TODO
//void drivePWM(const int16_t& leftWheel, const int16_t& rightWheel) const;
/* Set the forward and angular velocity of Create.
* \param xVel in m/s
* \param angularVel in rads/s
* \return true if successful, false otherwise
*/
bool drive(const float& xVel, const float& angularVel) const;
/* Set the power to the side brush motor.
* \param power is in the range [-1, 1]
* \return true if successful, false otherwise
*/
bool setSideMotor(const float& power);
/* Set the power to the main brush motor.
* \param power is in the range [-1, 1]
* \return true if successful, false otherwise
*/
bool setMainMotor(const float& power);
/* Set the power to the vacuum motor.
* \param power is in the range [0, 1]
* \return true if successful, false otherwise
*/
bool setVacuumMotor(const float& power);
@ -177,49 +183,65 @@ namespace create {
* \param mainPower in the range [-1, 1]
* \param sidePower in the range [-1, 1]
* \param vacuumPower in the range [0, 1]
* \return true if successful, false otherwise
*/
bool setAllMotors(const float& mainPower, const float& sidePower, const float& vacuumPower);
/* Set the blue "debris" LED on/off.
* \param enable
* \return true if successful, false otherwise
*/
bool enableDebrisLED(const bool& enable);
/* Set the green "spot" LED on/off.
* \param enable
* \return true if successful, false otherwise
*/
bool enableSpotLED(const bool& enable);
/* Set the green "dock" LED on/off.
* \param enable
* \return true if successful, false otherwise
*/
bool enableDockLED(const bool& enable);
/* Set the orange "check Create" LED on/off.
* \param enable
* \return true if successful, false otherwise
*/
bool enableCheckRobotLED(const bool& enable);
/* Set the center power LED.
* \param power in range [0, 255] where 0 = green and 255 = red
* \param intensity in range [0, 255]
* \return true if successful, false otherwise
*/
bool setPowerLED(const uint8_t& power, const uint8_t& intensity = 255);
// TODO
//void setScheduleLED(...);
/* Set the four 7-segment display digits from left to right.
* \param segments to enable (true) or disable (false).
* The size of segments should be less than 29.
* The ordering of segments is left to right, top to bottom for each digit:
*
* 0 7 14 21
* || || || ||
* 1 |___| 2 8 |___| 9 15 |___| 16 22 |___| 23
* | 3 | | 10| | 17| | 24|
* 4 |___| 5 11|___| 12 18 |___| 19 25 |___| 26
* 6 13 20 27
*
* \return true if successful, false otherwise
*/
// TODO
//void setDigits(uint8_t digit1, uint8_t digit2,
// uint8_t digit3, uint8_t digit4);
// TODO
// pushButton(...);
//TODO (https://github.com/AutonomyLab/libcreate/issues/7)
//bool setDigits(const std::vector<bool>& segments) const;
/* Set the four 7-segment display digits from left to right with ASCII codes.
* Any code out side the accepted ascii ranges results in blank display.
* \param digit1 is left most digit with ascii range [32, 126]
* \param digit2 is second to left digit with ascii range [32, 126]
* \param digit3 is second to right digit with ascii range [32, 126]
* \param digit4 is right most digit with ascii range [32, 126]
* \param digit1 is left most digit with ascii range [32, 126]
* \param digit2 is second to left digit with ascii range [32, 126]
* \param digit3 is second to right digit with ascii range [32, 126]
* \param digit4 is right most digit with ascii range [32, 126]
* \return true if successful, false otherwise
*/
bool setDigitsASCII(const uint8_t& digit1, const uint8_t& digit2,
const uint8_t& digit3, const uint8_t& digit4) const;
@ -231,6 +253,7 @@ namespace create {
* \param notes is a sequence of notes. Each note is in the range [31, 127].
* Anything outside this range is considered a rest note.
* \param durations for each note in fractions of a second from the range [0, 4)
* \return true if successful, false otherwise
*/
bool defineSong(const uint8_t& songNumber,
const uint8_t& songLength,
@ -239,12 +262,11 @@ namespace create {
/* Play a previously created song.
* This command will not work if a song was not already defined with the specified song number.
* \param songNumber is one of four stored songs in the range [0, 4]
* \return true if successful, false otherwise
*/
bool playSong(const uint8_t& songNumber) const;
// TODO
//void registerCallback(...);
/* True if a left or right wheeldrop is detected.
*/
bool isWheeldrop() const;
@ -265,12 +287,19 @@ namespace create {
*/
bool isCliff() const;
//TODO
//bool isVirtualWall() const;
/* True if there is a virtual wall signal is being received.
*/
bool isVirtualWall() const;
//TODO
//TODO (https://github.com/AutonomyLab/libcreate/issues/8)
//bool isWheelOvercurrent() const;
//TODO (https://github.com/AutonomyLab/libcreate/issues/8)
//bool isMainBrushOvercurrent() const;
//TODO (https://github.com/AutonomyLab/libcreate/issues/8)
//bool isSideBrushOvercurrent() const;
/* Get level of the dirt detect sensor.
* \return value in range [0, 255]
*/
@ -292,13 +321,36 @@ namespace create {
*/
uint8_t getIRRight() const;
/* Get state of 'clean' button ('play' button on Create 1).
*/
bool isCleanButtonPressed() const;
/* Not supported by any firmware!
*/
bool isClockButtonPressed() const;
/* Not supported by any firmware!
*/
bool isScheduleButtonPressed() const;
/* Get state of 'day' button.
*/
bool isDayButtonPressed() const;
/* Get state of 'hour' button.
*/
bool isHourButtonPressed() const;
/* Get state of 'min' button.
*/
bool isMinButtonPressed() const;
/* Get state of 'dock' button ('advance' button on Create 1).
*/
bool isDockButtonPressed() const;
/* Get state of 'spot' button.
*/
bool isSpotButtonPressed() const;
/* Get battery voltage.
@ -307,7 +359,7 @@ namespace create {
uint16_t getVoltage() const;
/* Get current flowing in/out of battery.
* A positive current implies Create is charging.
* A positive current implies Create is charging.
* \return value in milliamps
*/
int16_t getCurrent() const;
@ -327,21 +379,39 @@ namespace create {
*/
uint16_t getBatteryCapacity() const;
bool isIRDetectLeft() const;
bool isIRDetectFrontLeft() const;
bool isIRDetectCenterLeft() const;
bool isIRDetectRight() const;
bool isIRDetectFrontRight() const;
bool isIRDetectCenterRight() const;
/* Return true if farthest left light sensor detects an obstacle, false otherwise.
*/
bool isLightBumperLeft() const;
uint16_t getDistLeft() const;
uint16_t getDistFrontLeft() const;
uint16_t getDistCenterLeft() const;
uint16_t getDistRight() const;
uint16_t getDistFrontRight() const;
uint16_t getDistCenterRight() const;
/* Return true if front left light sensor detects an obstacle, false otherwise.
*/
bool isLightBumperFrontLeft() const;
/* Return true if Create is moving forward.
/* Return true if center left light sensor detects an obstacle, false otherwise.
*/
bool isLightBumperCenterLeft() const;
/* Return true if farthest right light sensor detects an obstacle, false otherwise.
*/
bool isLightBumperRight() const;
/* Return true if front right light sensor detects an obstacle, false otherwise.
*/
bool isLightBumperFrontRight() const;
/* Return true if center right light sensor detects an obstacle, false otherwise.
*/
bool isLightBumperCenterRight() const;
//TODO (https://github.com/AutonomyLab/libcreate/issues/3)
//uint16_t getDistLeft() const;
//uint16_t getDistFrontLeft() const;
//uint16_t getDistCenterLeft() const;
//uint16_t getDistRight() const;
//uint16_t getDistFrontRight() const;
//uint16_t getDistCenterRight() const;
/* Return true if Create is moving forward, false otherwise.
*/
bool isMovingForward() const;
@ -353,7 +423,7 @@ namespace create {
*/
create::CreateMode getMode() const;
/* Get the estimated position of Create based on it's wheel encoders.
/* Get the estimated position of Create based on wheel encoders.
*/
const create::Pose& getPose() const;

View file

@ -46,6 +46,9 @@ namespace create {
static const uint32_t CREATE_2_MAX_ENCODER_TICKS = 65535;
static const float CREATE_2_WHEEL_DIAMETER = 0.078;
static const float CREATE_2_MAX_VEL = 0.5;
static const float CREATE_2_MAX_RADIUS = 2.0;
static const float CREATE_2_STRAIGHT_RADIUS = 32.768;
static const float CREATE_2_IN_PLACE_RADUIS = 0.001;
static const float PI = 3.14159;
static const float TWO_PI = 6.28318;
static const float EPS = 0.0001;