Merge pull request #11 from AutonomyLab/devel
Add API to get light sensor signals
This commit is contained in:
commit
5054407719
5 changed files with 173 additions and 14 deletions
|
@ -22,13 +22,17 @@ target_link_libraries(create
|
||||||
|
|
||||||
## Declare example executables
|
## Declare example executables
|
||||||
add_executable(create_demo examples/create_demo.cpp)
|
add_executable(create_demo examples/create_demo.cpp)
|
||||||
|
add_executable(bumper_example examples/bumper_example.cpp)
|
||||||
|
|
||||||
## Specify libraries to link a library or executable target against
|
## Specify libraries to link a library or executable target against
|
||||||
target_link_libraries(create_demo
|
target_link_libraries(create_demo
|
||||||
${Boost_LIBRARIES}
|
${Boost_LIBRARIES}
|
||||||
create
|
create
|
||||||
)
|
)
|
||||||
|
target_link_libraries(bumper_example
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
create
|
||||||
|
)
|
||||||
## Install
|
## Install
|
||||||
install(TARGETS create DESTINATION lib)
|
install(TARGETS create DESTINATION lib)
|
||||||
install(FILES
|
install(FILES
|
||||||
|
|
73
examples/bumper_example.cpp
Normal file
73
examples/bumper_example.cpp
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
#include "create/create.h"
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
std::string port = "/dev/ttyUSB0";
|
||||||
|
int baud = 115200;
|
||||||
|
create::RobotModel model = create::CREATE_2;
|
||||||
|
|
||||||
|
create::Create* robot = new create::Create(model);
|
||||||
|
|
||||||
|
// Attempt to connect to Create
|
||||||
|
if (robot->connect(port, baud))
|
||||||
|
std::cout << "Successfully connected to Create" << std::endl;
|
||||||
|
else {
|
||||||
|
std::cout << "Failed to connect to Create on port " << port.c_str() << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
robot->setMode(create::MODE_FULL);
|
||||||
|
|
||||||
|
uint16_t signals[6];
|
||||||
|
bool contact_bumpers[2];
|
||||||
|
bool light_bumpers[6];
|
||||||
|
|
||||||
|
// Stop program when clean button is pressed
|
||||||
|
while (!robot->isCleanButtonPressed()) {
|
||||||
|
signals[0] = robot->getLightSignalLeft();
|
||||||
|
signals[1] = robot->getLightSignalFrontLeft();
|
||||||
|
signals[2] = robot->getLightSignalCenterLeft();
|
||||||
|
signals[3] = robot->getLightSignalCenterRight();
|
||||||
|
signals[4] = robot->getLightSignalFrontRight();
|
||||||
|
signals[5] = robot->getLightSignalRight();
|
||||||
|
|
||||||
|
contact_bumpers[0] = robot->isLeftBumper();
|
||||||
|
contact_bumpers[1] = robot->isRightBumper();
|
||||||
|
|
||||||
|
light_bumpers[0] = robot->isLightBumperLeft();
|
||||||
|
light_bumpers[1] = robot->isLightBumperFrontLeft();
|
||||||
|
light_bumpers[2] = robot->isLightBumperCenterLeft();
|
||||||
|
light_bumpers[3] = robot->isLightBumperCenterRight();
|
||||||
|
light_bumpers[4] = robot->isLightBumperFrontRight();
|
||||||
|
light_bumpers[5] = robot->isLightBumperRight();
|
||||||
|
|
||||||
|
// print signals from left to right
|
||||||
|
std::cout << "[ " << signals[0] << " , "
|
||||||
|
<< signals[1] << " , "
|
||||||
|
<< signals[2] << " , "
|
||||||
|
<< signals[3] << " , "
|
||||||
|
<< signals[4] << " , "
|
||||||
|
<< signals[5]
|
||||||
|
<< " ]" << std::endl;
|
||||||
|
std::cout << "[ " << light_bumpers[0] << " , "
|
||||||
|
<< light_bumpers[1] << " , "
|
||||||
|
<< light_bumpers[2] << " , "
|
||||||
|
<< light_bumpers[3] << " , "
|
||||||
|
<< light_bumpers[4] << " , "
|
||||||
|
<< light_bumpers[5]
|
||||||
|
<< " ]" << std::endl;
|
||||||
|
std::cout << "[ " << contact_bumpers[0] << " , "
|
||||||
|
<< contact_bumpers[1]
|
||||||
|
<< " ]" << std::endl;
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
usleep(1000 * 100); //10hz
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "Stopping Create" << std::endl;
|
||||||
|
|
||||||
|
// Disconnect from robot
|
||||||
|
robot->disconnect();
|
||||||
|
delete robot;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -403,13 +403,35 @@ namespace create {
|
||||||
*/
|
*/
|
||||||
bool isLightBumperCenterRight() const;
|
bool isLightBumperCenterRight() const;
|
||||||
|
|
||||||
//TODO (https://github.com/AutonomyLab/libcreate/issues/3)
|
/* Return the signal strength from the left light sensor.
|
||||||
//uint16_t getDistLeft() const;
|
* \return value in range [0, 4095]
|
||||||
//uint16_t getDistFrontLeft() const;
|
*/
|
||||||
//uint16_t getDistCenterLeft() const;
|
uint16_t getLightSignalLeft() const;
|
||||||
//uint16_t getDistRight() const;
|
|
||||||
//uint16_t getDistFrontRight() const;
|
/* Return the signal strength from the front-left light sensor.
|
||||||
//uint16_t getDistCenterRight() const;
|
* \return value in range [0, 4095]
|
||||||
|
*/
|
||||||
|
uint16_t getLightSignalFrontLeft() const;
|
||||||
|
|
||||||
|
/* Return the signal strength from the center-left light sensor.
|
||||||
|
* \return value in range [0, 4095]
|
||||||
|
*/
|
||||||
|
uint16_t getLightSignalCenterLeft() const;
|
||||||
|
|
||||||
|
/* Return the signal strength from the right light sensor.
|
||||||
|
* \return value in range [0, 4095]
|
||||||
|
*/
|
||||||
|
uint16_t getLightSignalRight() const;
|
||||||
|
|
||||||
|
/* Return the signal strength from the front-right light sensor.
|
||||||
|
* \return value in range [0, 4095]
|
||||||
|
*/
|
||||||
|
uint16_t getLightSignalFrontRight() const;
|
||||||
|
|
||||||
|
/* Return the signal strength from the center-right light sensor.
|
||||||
|
* \return value in range [0, 4095]
|
||||||
|
*/
|
||||||
|
uint16_t getLightSignalCenterRight() const;
|
||||||
|
|
||||||
/* Return true if Create is moving forward, false otherwise.
|
/* Return true if Create is moving forward, false otherwise.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -677,6 +677,66 @@ namespace create {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t Create::getLightSignalLeft() const {
|
||||||
|
if (data->isValidPacketID(ID_LIGHT_LEFT)) {
|
||||||
|
return GET_DATA(ID_LIGHT_LEFT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CERR("[create::Create] ", "Light sensors not supported!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t Create::getLightSignalFrontLeft() const {
|
||||||
|
if (data->isValidPacketID(ID_LIGHT_FRONT_LEFT)) {
|
||||||
|
return GET_DATA(ID_LIGHT_FRONT_LEFT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CERR("[create::Create] ", "Light sensors not supported!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t Create::getLightSignalCenterLeft() const {
|
||||||
|
if (data->isValidPacketID(ID_LIGHT_CENTER_LEFT)) {
|
||||||
|
return GET_DATA(ID_LIGHT_CENTER_LEFT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CERR("[create::Create] ", "Light sensors not supported!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t Create::getLightSignalRight() const {
|
||||||
|
if (data->isValidPacketID(ID_LIGHT_RIGHT)) {
|
||||||
|
return GET_DATA(ID_LIGHT_RIGHT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CERR("[create::Create] ", "Light sensors not supported!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t Create::getLightSignalFrontRight() const {
|
||||||
|
if (data->isValidPacketID(ID_LIGHT_FRONT_RIGHT)) {
|
||||||
|
return GET_DATA(ID_LIGHT_FRONT_RIGHT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CERR("[create::Create] ", "Light sensors not supported!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t Create::getLightSignalCenterRight() const {
|
||||||
|
if (data->isValidPacketID(ID_LIGHT_CENTER_RIGHT)) {
|
||||||
|
return GET_DATA(ID_LIGHT_CENTER_RIGHT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CERR("[create::Create] ", "Light sensors not supported!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool Create::isMovingForward() const {
|
bool Create::isMovingForward() const {
|
||||||
if (data->isValidPacketID(ID_STASIS)) {
|
if (data->isValidPacketID(ID_STASIS)) {
|
||||||
return GET_DATA(ID_STASIS) == 1;
|
return GET_DATA(ID_STASIS) == 1;
|
||||||
|
|
12
src/data.cpp
12
src/data.cpp
|
@ -53,12 +53,12 @@ namespace create {
|
||||||
ADD_PACKET(ID_LEFT_ENC, 2, "enc_counts_left");
|
ADD_PACKET(ID_LEFT_ENC, 2, "enc_counts_left");
|
||||||
ADD_PACKET(ID_RIGHT_ENC, 2, "enc_counts_right");
|
ADD_PACKET(ID_RIGHT_ENC, 2, "enc_counts_right");
|
||||||
ADD_PACKET(ID_LIGHT, 1, "light_bumper");
|
ADD_PACKET(ID_LIGHT, 1, "light_bumper");
|
||||||
//ADD_PACKET(ID_LIGHT_LEFT, 2, "light_bumper_left");
|
ADD_PACKET(ID_LIGHT_LEFT, 2, "light_bumper_left");
|
||||||
//ADD_PACKET(ID_LIGHT_FRONT_LEFT, 2, "light_bumper_front_left");
|
ADD_PACKET(ID_LIGHT_FRONT_LEFT, 2, "light_bumper_front_left");
|
||||||
//ADD_PACKET(ID_LIGHT_CENTER_LEFT, 2, "light_bumper_center_left");
|
ADD_PACKET(ID_LIGHT_CENTER_LEFT, 2, "light_bumper_center_left");
|
||||||
//ADD_PACKET(ID_LIGHT_CENTER_RIGHT, 2, "light_bumper_center_right");
|
ADD_PACKET(ID_LIGHT_CENTER_RIGHT, 2, "light_bumper_center_right");
|
||||||
//ADD_PACKET(ID_LIGHT_FRONT_RIGHT, 2, "light_bumper_front_right");
|
ADD_PACKET(ID_LIGHT_FRONT_RIGHT, 2, "light_bumper_front_right");
|
||||||
//ADD_PACKET(ID_LIGHT_RIGHT, 2, "light_bumper_right");
|
ADD_PACKET(ID_LIGHT_RIGHT, 2, "light_bumper_right");
|
||||||
ADD_PACKET(ID_IR_LEFT, 1, "ir_opcode_left");
|
ADD_PACKET(ID_IR_LEFT, 1, "ir_opcode_left");
|
||||||
ADD_PACKET(ID_IR_RIGHT, 1, "ir_opcode_right");
|
ADD_PACKET(ID_IR_RIGHT, 1, "ir_opcode_right");
|
||||||
//ADD_PACKET(ID_LEFT_MOTOR_CURRENT, 2, "left_motor_current");
|
//ADD_PACKET(ID_LEFT_MOTOR_CURRENT, 2, "left_motor_current");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue