Cleanup examples

Signed-off-by: Jacob Perron <jacobmperron@gmail.com>
This commit is contained in:
Jacob Perron 2019-09-02 12:26:09 -07:00 committed by Jacob Perron
parent eaeea24a21
commit dff0308b1b
8 changed files with 69 additions and 153 deletions

View file

@ -47,10 +47,10 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) if (robot.connect(port, baud))
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
else { else {
std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl; std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl;
@ -58,17 +58,15 @@ int main(int argc, char** argv) {
} }
// Switch to Full mode // Switch to Full mode
robot->setMode(create::MODE_FULL); robot.setMode(create::MODE_FULL);
std::cout << std::endl << "Press center 'Clean' button to disconnect and end program" << std::endl;
// Get battery capacity (max charge) // Get battery capacity (max charge)
const float battery_capacity = robot->getBatteryCapacity(); const float battery_capacity = robot.getBatteryCapacity();
float battery_charge = 0.0f; float battery_charge = 0.0f;
while (!robot->isCleanButtonPressed()) { while (true) {
// Get battery charge // Get battery charge
battery_charge = robot->getBatteryCharge(); battery_charge = robot.getBatteryCharge();
// Print battery percentage // Print battery percentage
std::cout << "\rBattery level: " << (battery_charge / battery_capacity) * 100.0 << "%"; std::cout << "\rBattery level: " << (battery_charge / battery_capacity) * 100.0 << "%";
@ -76,14 +74,5 @@ int main(int argc, char** argv) {
usleep(100000); // 10 Hz usleep(100000); // 10 Hz
} }
std::cout << std::endl;
// Call disconnect to avoid leaving robot in Full mode
robot->disconnect();
// Clean up
delete robot;
std::cout << "Bye!" << std::endl;
return 0; return 0;
} }

View file

@ -47,10 +47,10 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) if (robot.connect(port, baud))
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
else { else {
std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl; std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl;
@ -58,37 +58,35 @@ int main(int argc, char** argv) {
} }
// Switch to Full mode // Switch to Full mode
robot->setMode(create::MODE_FULL); robot.setMode(create::MODE_FULL);
std::cout << std::endl << "Press center 'Clean' button to disconnect and end program" << std::endl;
uint16_t light_signals[6]; uint16_t light_signals[6];
bool light_bumpers[6]; bool light_bumpers[6];
bool contact_bumpers[2]; bool contact_bumpers[2];
while (!robot->isCleanButtonPressed()) { while (true) {
// Get light sensor data (only available for Create 2 or later robots) // Get light sensor data (only available for Create 2 or later robots)
if (model == create::RobotModel::CREATE_2) { if (model == create::RobotModel::CREATE_2) {
// Get raw light signal values // Get raw light signal values
light_signals[0] = robot->getLightSignalLeft(); light_signals[0] = robot.getLightSignalLeft();
light_signals[1] = robot->getLightSignalFrontLeft(); light_signals[1] = robot.getLightSignalFrontLeft();
light_signals[2] = robot->getLightSignalCenterLeft(); light_signals[2] = robot.getLightSignalCenterLeft();
light_signals[3] = robot->getLightSignalCenterRight(); light_signals[3] = robot.getLightSignalCenterRight();
light_signals[4] = robot->getLightSignalFrontRight(); light_signals[4] = robot.getLightSignalFrontRight();
light_signals[5] = robot->getLightSignalRight(); light_signals[5] = robot.getLightSignalRight();
// Get obstacle data from light sensors (true/false) // Get obstacle data from light sensors (true/false)
light_bumpers[0] = robot->isLightBumperLeft(); light_bumpers[0] = robot.isLightBumperLeft();
light_bumpers[1] = robot->isLightBumperFrontLeft(); light_bumpers[1] = robot.isLightBumperFrontLeft();
light_bumpers[2] = robot->isLightBumperCenterLeft(); light_bumpers[2] = robot.isLightBumperCenterLeft();
light_bumpers[3] = robot->isLightBumperCenterRight(); light_bumpers[3] = robot.isLightBumperCenterRight();
light_bumpers[4] = robot->isLightBumperFrontRight(); light_bumpers[4] = robot.isLightBumperFrontRight();
light_bumpers[5] = robot->isLightBumperRight(); light_bumpers[5] = robot.isLightBumperRight();
} }
// Get state of bumpers // Get state of bumpers
contact_bumpers[0] = robot->isLeftBumper(); contact_bumpers[0] = robot.isLeftBumper();
contact_bumpers[1] = robot->isRightBumper(); contact_bumpers[1] = robot.isRightBumper();
// Print signals from left to right // Print signals from left to right
std::cout << "[ " << light_signals[0] << " , " std::cout << "[ " << light_signals[0] << " , "
@ -113,14 +111,5 @@ int main(int argc, char** argv) {
usleep(100000); // 10 Hz usleep(100000); // 10 Hz
} }
std::cout << std::endl;
// Call disconnect to avoid leaving robot in Full mode
robot->disconnect();
// Clean up
delete robot;
std::cout << "Bye!" << std::endl;
return 0; return 0;
} }

View file

@ -47,10 +47,10 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) { if (robot.connect(port, baud)) {
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
} }
else { else {
@ -59,16 +59,14 @@ int main(int argc, char** argv) {
} }
// Switch to Full mode // Switch to Full mode
robot->setMode(create::MODE_FULL); robot.setMode(create::MODE_FULL);
std::cout << std::endl << "Press center 'Clean' button to disconnect and end program" << std::endl; while (true) {
while (!robot->isCleanButtonPressed()) {
// Get cliff status // Get cliff status
const bool cliff_left = robot->isCliffLeft(); const bool cliff_left = robot.isCliffLeft();
const bool cliff_front_left = robot->isCliffFrontLeft(); const bool cliff_front_left = robot.isCliffFrontLeft();
const bool cliff_front_right = robot->isCliffFrontRight(); const bool cliff_front_right = robot.isCliffFrontRight();
const bool cliff_right = robot->isCliffRight(); const bool cliff_right = robot.isCliffRight();
// Print status // Print status
std::cout << "\rCliffs (left to right): [ " << std::cout << "\rCliffs (left to right): [ " <<
@ -84,13 +82,5 @@ int main(int argc, char** argv) {
usleep(10000); // 10 Hz usleep(10000); // 10 Hz
} }
std::cout << std::endl;
// Call disconnect to avoid leaving robot in Full mode
robot->disconnect();
// Clean up
delete robot;
return 0; return 0;
} }

View file

@ -48,10 +48,10 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) if (robot.connect(port, baud))
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
else { else {
std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl; std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl;
@ -59,19 +59,17 @@ int main(int argc, char** argv) {
} }
// Switch to Full mode // Switch to Full mode
robot->setMode(create::MODE_FULL); robot.setMode(create::MODE_FULL);
std::cout << std::endl << "Press center 'Clean' button to disconnect and end program" << std::endl;
// There's a delay between switching modes and when the robot will accept drive commands // There's a delay between switching modes and when the robot will accept drive commands
usleep(100000); usleep(100000);
// Command robot to drive a radius of 0.15 metres at 0.2 m/s // Command robot to drive a radius of 0.15 metres at 0.2 m/s
robot->driveRadius(0.2, 0.15); robot.driveRadius(0.2, 0.15);
while (!robot->isCleanButtonPressed()) { while (true) {
// Get robot odometry and print // Get robot odometry and print
const create::Pose pose = robot->getPose(); const create::Pose pose = robot.getPose();
std::cout << std::fixed << std::setprecision(2) << "\rOdometry (x, y, yaw): (" std::cout << std::fixed << std::setprecision(2) << "\rOdometry (x, y, yaw): ("
<< pose.x << ", " << pose.y << ", " << pose.yaw << ") "; << pose.x << ", " << pose.y << ", " << pose.yaw << ") ";
@ -79,15 +77,5 @@ int main(int argc, char** argv) {
usleep(10000); // 10 Hz usleep(10000); // 10 Hz
} }
std::cout << std::endl;
// Call disconnect to avoid leaving robot in Full mode
// Also, this consequently stops the robot from moving
robot->disconnect();
// Clean up
delete robot;
std::cout << "Bye!" << std::endl;
return 0; return 0;
} }

View file

@ -47,10 +47,10 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) if (robot.connect(port, baud))
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
else { else {
std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl; std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl;
@ -58,9 +58,7 @@ int main(int argc, char** argv) {
} }
// Switch to Full mode // Switch to Full mode
robot->setMode(create::MODE_FULL); robot.setMode(create::MODE_FULL);
std::cout << std::endl << "Press center 'Clean' button to disconnect and end program" << std::endl;
bool enable_check_robot_led = true; bool enable_check_robot_led = true;
bool enable_debris_led = false; bool enable_debris_led = false;
@ -69,18 +67,18 @@ int main(int argc, char** argv) {
uint8_t power_led = 0; uint8_t power_led = 0;
char digit_buffer[5]; char digit_buffer[5];
while (!robot->isCleanButtonPressed()) { while (true) {
// Set LEDs // Set LEDs
robot->enableCheckRobotLED(enable_check_robot_led); robot.enableCheckRobotLED(enable_check_robot_led);
robot->enableDebrisLED(enable_debris_led); robot.enableDebrisLED(enable_debris_led);
robot->enableDockLED(enable_dock_led); robot.enableDockLED(enable_dock_led);
robot->enableSpotLED(enable_spot_led); robot.enableSpotLED(enable_spot_led);
robot->setPowerLED(power_led); robot.setPowerLED(power_led);
// Set 7-segment displays // Set 7-segment displays
const int len = sprintf(digit_buffer, "%d", power_led); const int len = sprintf(digit_buffer, "%d", power_led);
for (int i = len; i < 4; i++) digit_buffer[i] = ' '; for (int i = len; i < 4; i++) digit_buffer[i] = ' ';
robot->setDigitsASCII(digit_buffer[0], digit_buffer[1], digit_buffer[2], digit_buffer[3]); robot.setDigitsASCII(digit_buffer[0], digit_buffer[1], digit_buffer[2], digit_buffer[3]);
// Update LED values // Update LED values
enable_check_robot_led = !enable_check_robot_led; enable_check_robot_led = !enable_check_robot_led;
@ -92,14 +90,5 @@ int main(int argc, char** argv) {
usleep(250000); // 5 Hz usleep(250000); // 5 Hz
} }
std::cout << std::endl;
// Call disconnect to avoid leaving robot in Full mode
robot->disconnect();
// Clean up
delete robot;
std::cout << "Bye!" << std::endl;
return 0; return 0;
} }

View file

@ -47,25 +47,20 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) if (robot.connect(port, baud))
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
else { else {
std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl; std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl;
return 1; return 1;
} }
// Switch to Full mode while (true) {
// robot->setMode(create::MODE_FULL);
std::cout << std::endl << "Press center 'Clean' button to disconnect and end program" << std::endl;
while (!robot->isCleanButtonPressed()) {
// Get serial packet statistics // Get serial packet statistics
const uint64_t total_packets = robot->getTotalPackets(); const uint64_t total_packets = robot.getTotalPackets();
const uint64_t num_corrupt_packets = robot->getNumCorruptPackets(); const uint64_t num_corrupt_packets = robot.getNumCorruptPackets();
// Print packet stats // Print packet stats
std::cout << "\rTotal packets: " << total_packets << " Corrupt packets: " << num_corrupt_packets; std::cout << "\rTotal packets: " << total_packets << " Corrupt packets: " << num_corrupt_packets;
@ -73,14 +68,5 @@ int main(int argc, char** argv) {
usleep(100000); // 10 Hz usleep(100000); // 10 Hz
} }
std::cout << std::endl;
// Call disconnect to avoid leaving robot in Full mode
robot->disconnect();
// Clean up
delete robot;
std::cout << "Bye!" << std::endl;
return 0; return 0;
} }

View file

@ -47,10 +47,10 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) if (robot.connect(port, baud))
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
else { else {
std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl; std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl;
@ -58,7 +58,7 @@ int main(int argc, char** argv) {
} }
// Switch to Full mode // Switch to Full mode
robot->setMode(create::MODE_FULL); robot.setMode(create::MODE_FULL);
// Useful note defintions // Useful note defintions
const uint8_t G = 55; const uint8_t G = 55;
@ -73,7 +73,7 @@ int main(int argc, char** argv) {
const uint8_t song_len = 9; const uint8_t song_len = 9;
const uint8_t notes[song_len] = { G, G, G, DS, AS, G, DS, AS, G }; const uint8_t notes[song_len] = { G, G, G, DS, AS, G, DS, AS, G };
const float durations[song_len] = { quarter, quarter, quarter, dotted_eigth, sixteenth, quarter, dotted_eigth, sixteenth, half }; const float durations[song_len] = { quarter, quarter, quarter, dotted_eigth, sixteenth, quarter, dotted_eigth, sixteenth, half };
robot->defineSong(0, song_len, notes, durations); robot.defineSong(0, song_len, notes, durations);
// Sleep to provide time for song to register // Sleep to provide time for song to register
usleep(1000000); usleep(1000000);
@ -81,17 +81,13 @@ int main(int argc, char** argv) {
std::cout << "Playing a song!" << std::endl; std::cout << "Playing a song!" << std::endl;
// Request to play the song we just defined // Request to play the song we just defined
robot->playSong(0); robot.playSong(0);
// Expect the song to take about four seconds // Expect the song to take about four seconds
usleep(4500000); usleep(4500000);
// Call disconnect to avoid leaving robot in Full mode // Call disconnect to avoid leaving robot in Full mode
robot->disconnect(); robot.disconnect();
// Clean up
delete robot;
std::cout << "Bye!" << std::endl;
return 0; return 0;
} }

View file

@ -47,10 +47,10 @@ int main(int argc, char** argv) {
} }
// Construct robot object // Construct robot object
create::Create* robot = new create::Create(model); create::Create robot(model);
// Connect to robot // Connect to robot
if (robot->connect(port, baud)) if (robot.connect(port, baud))
std::cout << "Connected to robot" << std::endl; std::cout << "Connected to robot" << std::endl;
else { else {
std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl; std::cout << "Failed to connect to robot on port " << port.c_str() << std::endl;
@ -58,14 +58,12 @@ int main(int argc, char** argv) {
} }
// Switch to Full mode // Switch to Full mode
robot->setMode(create::MODE_FULL); robot.setMode(create::MODE_FULL);
std::cout << std::endl << "Press center 'Clean' button to disconnect and end program" << std::endl; while (true) {
while (!robot->isCleanButtonPressed()) {
// Get wheeldrop status // Get wheeldrop status
const bool wheeldrop_left = robot->isLeftWheeldrop(); const bool wheeldrop_left = robot.isLeftWheeldrop();
const bool wheeldrop_right = robot->isRightWheeldrop(); const bool wheeldrop_right = robot.isRightWheeldrop();
// Print status // Print status
std::cout << "\rWheeldrop status (left and right): [ " << std::cout << "\rWheeldrop status (left and right): [ " <<
@ -76,21 +74,12 @@ int main(int argc, char** argv) {
// If dropped, then make light red // If dropped, then make light red
if (wheeldrop_left || wheeldrop_right) if (wheeldrop_left || wheeldrop_right)
robot->setPowerLED(255); // Red robot.setPowerLED(255); // Red
else else
robot->setPowerLED(0); // Green robot.setPowerLED(0); // Green
usleep(10000); // 10 Hz usleep(10000); // 10 Hz
} }
std::cout << std::endl;
// Call disconnect to avoid leaving robot in Full mode
robot->disconnect();
// Clean up
delete robot;
std::cout << "Bye!" << std::endl;
return 0; return 0;
} }