#include "ros/ros.h"
#include <stdio.h>
#include "corobot_srvs/SetOdom.h"
#include "corobot_msgs/PosMsg.h"
#include "corobot_msgs/PowerMsg.h"
#include "corobot_msgs/IrMsg.h"
#include "corobot_msgs/BumperMsg.h"
#include "corobot_msgs/GripperMsg.h"
#include "corobot_msgs/phidget_info.h"
#include "corobot_msgs/spatial.h"
#include "corobot_msgs/RangeSensor.h"
#include "sensor_msgs/Imu.h"
#include <phidget21.h>
#include <tf/transform_datatypes.h>
#include <diagnostic_updater/diagnostic_updater.h>
#include <diagnostic_updater/publisher.h>
Go to the source code of this file.
Defines | |
#define | GRAVITY 9.81 |
Functions | |
void | AnglesDriftCorrection (float AccelerationVector[3]) |
void | AnglesMatrixUpdate (float gyroscopeVector[3], int gyroscopeTimestamp) |
void | AnglesNormalize () |
int | AttachHandler (CPhidgetHandle IFK, void *userptr) |
double | constrain (double value, double min, double max) |
int | DetachHandler (CPhidgetHandle IFK, void *userptr) |
void | detectGravity (double gravity[3], float acceleration[3]) |
void | encoderAttach (const int which) |
function that handles registering the an encoder has been attached | |
int | ErrorHandler (CPhidgetHandle IFK, void *userptr, int ErrorCode, const char *unknown) |
int | InputChangeHandler (CPhidgetInterfaceKitHandle IFK, void *usrptr, int Index, int State) |
callback that will run if an input changes. Index - Index of the input that generated the event, State - boolean (0 or 1) representing the input state (on or off) | |
int | interfacekit_simple () |
static float | irVoltageToDistance (float volts) |
Description: Convert a voltage from the Phidgets 8/8/8 board into a distance, for the Infrared sensors return 25.4 meters as a distance if the value is out of range otherwise returns a valid distance in meters. | |
bool | isEqual (double vector1[3], double vector2[3]) |
int | LeftEncoderAttach (CPhidgetHandle phid, void *userPtr) |
callback invoked automatically when the left encoder is detected | |
int | main (int argc, char *argv[]) |
void | matrixMultiply (double MatrixOut[3][3], double MatrixIn1[3][3], double MatrixIn2[3][3]) |
int | OutputChangeHandler (CPhidgetInterfaceKitHandle IFK, void *usrptr, int Index, int State) |
void | phidget_encoder_diagnostic (diagnostic_updater::DiagnosticStatusWrapper &stat) |
void | phidget_ik_diagnostic (diagnostic_updater::DiagnosticStatusWrapper &stat) |
void | phidget_spatial_diagnostic (diagnostic_updater::DiagnosticStatusWrapper &stat) |
int | publish_data () |
Publish the data on their corresponding topics. | |
int | RightEncoderAttach (CPhidgetHandle phid, void *userPtr) |
callback invoked automatically when the right encoder is detected | |
int | sendSonarResult () |
Function that will manage the sonars and acquire their data this function is called every around 50ms. | |
int | SensorChangeHandler (CPhidgetInterfaceKitHandle IFK, void *usrptr, int Index, int Value) |
bool | SetOdom (corobot_srvs::SetOdom::Request &req, corobot_srvs::SetOdom::Response &res) |
set a value to the odometers | |
static double | sonarVoltageToMeters (int value) |
int | SpatialDataHandler (CPhidgetSpatialHandle spatial, void *userptr, CPhidgetSpatial_SpatialEventDataHandle *data, int count) |
double | ToRad (double value) |
void | vectorAddition (double vectorOut[3], double vectorIn1[3], double vectorIn2[3]) |
void | vectorCrossProduct (double vectorOut[3], double vectorIn1[3], double vectorIn2[3]) |
double | vectorDotProduct (double vector1[3], double vector2[3]) |
void | vectorScale (double vectorOut[3], double vectorIn[3], double scale2) |
Variables | |
float | acc [3] = {0,0,0} |
int | analog_inputs_value [8] = {0,0,0,0,0,0,0,0} |
float | ang [3] = {0,0,0} |
int | batteryPort = 0 |
ros::Publisher | bumper_pub |
int | bwOutput = -1 |
double | dCMMatrix [3][3] |
char | digital_inputs_value = 0 |
int | encoderError = 0 |
bool | encoders_inverted |
int | firstSonarInput = -1 |
double | gravity [3] |
double | gravityEpsilon = 0.07 |
ros::Publisher | gripper_pub |
int | gripperPort = 3 |
double | gyroscopeVectorCorrected [3] |
CPhidgetInterfaceKitHandle | ifKit = 0 |
ros::Publisher | imu_pub |
double | integratorVector [3] |
int | interfaceKitError = 0 |
int | irBackPort = 2 |
ros::Publisher | irData_pub |
int | irFrontPort = 1 |
double | kiRollpitch = 0.000010 |
double | kpRollpitch = 0.015 |
double | lastGravityVectorDetected [3] = {0,0,0} |
int | lastSonarInput = -1 |
bool | m_encoder1Seen = false |
bool | m_encoder2Seen = false |
bool | m_encodersGood = false |
CPhidgetEncoderHandle | m_leftEncoder |
int | m_leftEncoderNumber |
bool | m_rearBumperPresent = false |
CPhidgetEncoderHandle | m_rightEncoder |
int | m_rightEncoderNumber |
bool | m_validAnalogs = false |
bool | m_validDigitals = false |
float | mag [3] = {0,0,0} |
bool | motors_inverted |
bool | phidget888_connected |
bool | phidget_encoder_connected |
double | pitchOffset |
ros::Publisher | posdata_pub |
ros::Publisher | powerdata_pub |
double | proportionalVector [3] |
double | rollOffset |
ros::Publisher | sonar_pub |
bool | sonarsPresent = false |
CPhidgetSpatialHandle | spatial = 0 |
bool | spatial_good = false |
ros::Publisher | spatial_pub |
int | spatialError = 0 |
int | strobeOutput = -1 |
int | timestampPreviousCall |
int | validAccelerationVectorsNecessaryToDetectGravity = 10 |
int | validGravityCounter = 0 |
#define GRAVITY 9.81 |
Definition at line 24 of file corobot_phidget.cpp.
void AnglesDriftCorrection | ( | float | AccelerationVector[3] | ) |
Definition at line 676 of file corobot_phidget.cpp.
void AnglesMatrixUpdate | ( | float | gyroscopeVector[3], |
int | gyroscopeTimestamp | ||
) |
Definition at line 549 of file corobot_phidget.cpp.
void AnglesNormalize | ( | ) |
Definition at line 606 of file corobot_phidget.cpp.
int AttachHandler | ( | CPhidgetHandle | IFK, |
void * | userptr | ||
) |
Definition at line 99 of file corobot_phidget.cpp.
double constrain | ( | double | value, |
double | min, | ||
double | max | ||
) |
Definition at line 530 of file corobot_phidget.cpp.
int DetachHandler | ( | CPhidgetHandle | IFK, |
void * | userptr | ||
) |
Definition at line 112 of file corobot_phidget.cpp.
void detectGravity | ( | double | gravity[3], |
float | acceleration[3] | ||
) |
Definition at line 726 of file corobot_phidget.cpp.
void encoderAttach | ( | const int | which | ) |
function that handles registering the an encoder has been attached
which | indicates which encoder was seen (1 or 2) |
Definition at line 132 of file corobot_phidget.cpp.
int ErrorHandler | ( | CPhidgetHandle | IFK, |
void * | userptr, | ||
int | ErrorCode, | ||
const char * | unknown | ||
) |
Definition at line 125 of file corobot_phidget.cpp.
int InputChangeHandler | ( | CPhidgetInterfaceKitHandle | IFK, |
void * | usrptr, | ||
int | Index, | ||
int | State | ||
) |
callback that will run if an input changes. Index - Index of the input that generated the event, State - boolean (0 or 1) representing the input state (on or off)
Definition at line 434 of file corobot_phidget.cpp.
int interfacekit_simple | ( | ) |
Definition at line 830 of file corobot_phidget.cpp.
static float irVoltageToDistance | ( | float | volts | ) | [static] |
Description: Convert a voltage from the Phidgets 8/8/8 board into a distance, for the Infrared sensors return 25.4 meters as a distance if the value is out of range otherwise returns a valid distance in meters.
Definition at line 227 of file corobot_phidget.cpp.
bool isEqual | ( | double | vector1[3], |
double | vector2[3] | ||
) |
Definition at line 540 of file corobot_phidget.cpp.
int LeftEncoderAttach | ( | CPhidgetHandle | phid, |
void * | userPtr | ||
) |
callback invoked automatically when the left encoder is detected
Definition at line 215 of file corobot_phidget.cpp.
int main | ( | int | argc, |
char * | argv[] | ||
) |
Definition at line 962 of file corobot_phidget.cpp.
void matrixMultiply | ( | double | MatrixOut[3][3], |
double | MatrixIn1[3][3], | ||
double | MatrixIn2[3][3] | ||
) |
Definition at line 495 of file corobot_phidget.cpp.
int OutputChangeHandler | ( | CPhidgetInterfaceKitHandle | IFK, |
void * | usrptr, | ||
int | Index, | ||
int | State | ||
) |
Definition at line 449 of file corobot_phidget.cpp.
void phidget_encoder_diagnostic | ( | diagnostic_updater::DiagnosticStatusWrapper & | stat | ) |
Function that will report the status of the hardware to the diagnostic topic
Definition at line 942 of file corobot_phidget.cpp.
void phidget_ik_diagnostic | ( | diagnostic_updater::DiagnosticStatusWrapper & | stat | ) |
Function that will report the status of the hardware to the diagnostic topic
Definition at line 914 of file corobot_phidget.cpp.
void phidget_spatial_diagnostic | ( | diagnostic_updater::DiagnosticStatusWrapper & | stat | ) |
Function that will report the status of the hardware to the diagnostic topic
Definition at line 928 of file corobot_phidget.cpp.
int publish_data | ( | ) |
Publish the data on their corresponding topics.
Definition at line 260 of file corobot_phidget.cpp.
int RightEncoderAttach | ( | CPhidgetHandle | phid, |
void * | userPtr | ||
) |
callback invoked automatically when the right encoder is detected
Definition at line 206 of file corobot_phidget.cpp.
int sendSonarResult | ( | ) |
Function that will manage the sonars and acquire their data this function is called every around 50ms.
Definition at line 411 of file corobot_phidget.cpp.
int SensorChangeHandler | ( | CPhidgetInterfaceKitHandle | IFK, |
void * | usrptr, | ||
int | Index, | ||
int | Value | ||
) |
Definition at line 457 of file corobot_phidget.cpp.
bool SetOdom | ( | corobot_srvs::SetOdom::Request & | req, |
corobot_srvs::SetOdom::Response & | res | ||
) |
set a value to the odometers
Definition at line 84 of file corobot_phidget.cpp.
static double sonarVoltageToMeters | ( | int | value | ) | [static] |
Voltage to distance function that is used for the sonar sensors
value | value from 0 to 1000 representing a voltage value from 0 to vcc (5V) |
Definition at line 246 of file corobot_phidget.cpp.
int SpatialDataHandler | ( | CPhidgetSpatialHandle | spatial, |
void * | userptr, | ||
CPhidgetSpatial_SpatialEventDataHandle * | data, | ||
int | count | ||
) |
Definition at line 755 of file corobot_phidget.cpp.
double ToRad | ( | double | value | ) |
Definition at line 513 of file corobot_phidget.cpp.
void vectorAddition | ( | double | vectorOut[3], |
double | vectorIn1[3], | ||
double | vectorIn2[3] | ||
) |
Definition at line 487 of file corobot_phidget.cpp.
void vectorCrossProduct | ( | double | vectorOut[3], |
double | vectorIn1[3], | ||
double | vectorIn2[3] | ||
) |
Definition at line 480 of file corobot_phidget.cpp.
double vectorDotProduct | ( | double | vector1[3], |
double | vector2[3] | ||
) |
Definition at line 518 of file corobot_phidget.cpp.
void vectorScale | ( | double | vectorOut[3], |
double | vectorIn[3], | ||
double | scale2 | ||
) |
Definition at line 470 of file corobot_phidget.cpp.
float acc[3] = {0,0,0} |
Definition at line 33 of file corobot_phidget.cpp.
int analog_inputs_value[8] = {0,0,0,0,0,0,0,0} |
Definition at line 31 of file corobot_phidget.cpp.
float ang[3] = {0,0,0} |
Definition at line 34 of file corobot_phidget.cpp.
int batteryPort = 0 |
Definition at line 54 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
int bwOutput = -1 |
Definition at line 50 of file corobot_phidget.cpp.
double dCMMatrix[3][3] |
Definition at line 67 of file corobot_phidget.cpp.
char digital_inputs_value = 0 |
Definition at line 32 of file corobot_phidget.cpp.
int encoderError = 0 |
Definition at line 62 of file corobot_phidget.cpp.
bool encoders_inverted |
Definition at line 60 of file corobot_phidget.cpp.
int firstSonarInput = -1 |
Definition at line 53 of file corobot_phidget.cpp.
double gravity[3] |
Definition at line 71 of file corobot_phidget.cpp.
double gravityEpsilon = 0.07 |
Definition at line 77 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
int gripperPort = 3 |
Definition at line 57 of file corobot_phidget.cpp.
double gyroscopeVectorCorrected[3] |
Definition at line 74 of file corobot_phidget.cpp.
CPhidgetInterfaceKitHandle ifKit = 0 |
Definition at line 28 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
double integratorVector[3] |
Definition at line 73 of file corobot_phidget.cpp.
int interfaceKitError = 0 |
Definition at line 62 of file corobot_phidget.cpp.
int irBackPort = 2 |
Definition at line 56 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
int irFrontPort = 1 |
Definition at line 55 of file corobot_phidget.cpp.
double kiRollpitch = 0.000010 |
Definition at line 76 of file corobot_phidget.cpp.
double kpRollpitch = 0.015 |
Definition at line 75 of file corobot_phidget.cpp.
double lastGravityVectorDetected[3] = {0,0,0} |
Definition at line 80 of file corobot_phidget.cpp.
int lastSonarInput = -1 |
Definition at line 52 of file corobot_phidget.cpp.
bool m_encoder1Seen = false |
Definition at line 37 of file corobot_phidget.cpp.
bool m_encoder2Seen = false |
Definition at line 37 of file corobot_phidget.cpp.
bool m_encodersGood = false |
Definition at line 37 of file corobot_phidget.cpp.
CPhidgetEncoderHandle m_leftEncoder |
Definition at line 27 of file corobot_phidget.cpp.
Definition at line 39 of file corobot_phidget.cpp.
bool m_rearBumperPresent = false |
Definition at line 41 of file corobot_phidget.cpp.
CPhidgetEncoderHandle m_rightEncoder |
Definition at line 26 of file corobot_phidget.cpp.
Definition at line 39 of file corobot_phidget.cpp.
bool m_validAnalogs = false |
Definition at line 38 of file corobot_phidget.cpp.
bool m_validDigitals = false |
Definition at line 38 of file corobot_phidget.cpp.
float mag[3] = {0,0,0} |
Definition at line 35 of file corobot_phidget.cpp.
bool motors_inverted |
Definition at line 59 of file corobot_phidget.cpp.
bool phidget888_connected |
Definition at line 44 of file corobot_phidget.cpp.
Definition at line 44 of file corobot_phidget.cpp.
double pitchOffset |
Definition at line 69 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
double proportionalVector[3] |
Definition at line 72 of file corobot_phidget.cpp.
double rollOffset |
Definition at line 70 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
bool sonarsPresent = false |
Definition at line 42 of file corobot_phidget.cpp.
CPhidgetSpatialHandle spatial = 0 |
Definition at line 29 of file corobot_phidget.cpp.
bool spatial_good = false |
Definition at line 46 of file corobot_phidget.cpp.
Definition at line 48 of file corobot_phidget.cpp.
int spatialError = 0 |
Definition at line 62 of file corobot_phidget.cpp.
int strobeOutput = -1 |
Definition at line 51 of file corobot_phidget.cpp.
Definition at line 68 of file corobot_phidget.cpp.
Definition at line 79 of file corobot_phidget.cpp.
int validGravityCounter = 0 |
Definition at line 78 of file corobot_phidget.cpp.