Q
Dependencies: SRF05 ros_lib_kinetic TinyGPSPlus
Diff: PROJ515.hpp
- Revision:
- 9:2d9a0c9e5456
- Parent:
- 8:49306a01c52a
- Child:
- 10:7d954fba5e7a
diff -r 49306a01c52a -r 2d9a0c9e5456 PROJ515.hpp --- a/PROJ515.hpp Tue May 07 15:57:01 2019 +0000 +++ b/PROJ515.hpp Wed May 08 10:29:11 2019 +0000 @@ -5,8 +5,11 @@ /* Libraries */ #include "mbed.h" // Mbed RTOS #include "SRF05.h" // SRF05 ultrasound sensor custom libary +#include "TinyGPSPlus.h" // GPS Module Library #include "ros.h" // ROS Library #include "sensor_msgs/Range.h" // ROS Sensor Messages component +#include "sensor_msgs/NavSatFix.h" // ROS Sensor Messages component + /* Definitions */ #define LEDS_OFF 0x00 // LED bus all off @@ -30,18 +33,31 @@ #define USP_CB4T PE_2 // Curb ultrasound 4 Trigger #define USP_CB4E PG_14 // Curb ultrasound 4 Echo -#define FOV 1.396 // Ultrasound sensor field of view +#define GPS_TX PD_5 // GPS Transmit Pin +#define GPS_RX PD_6 // GPS Recieve Pin + +#define FOV 1.396 // Ultrasound sensor field of view #define MIN_RANGE 0.2 // Ultrasound sensor min range #define MAX_RANGE 2.5 // Ultrasound sensor max range #define CLIFF_TRH 0.1 // Robot cliff treshold #define CLIFF_ZRO 0 // Cliff not existent #define EXCL_ZONE 0.255 // Robot footprint exclusion zone +#define ULTRASOUND 0x00 // Ultrasound -#define ROS_Baud 460800 // ROS Baud Rate -#define frameID "ultrasound_range" // ROS frame ID +#define UNAGUMENTED 0x00 // Unagumented +#define GPS_CONSTELL 0x01 // GPS constellation +#define UNNWN 0x00 // Unknown covariance +#define CVX 0x01 // Covariance value for X from the datasheet +#define CVY 0x01 // Covariance value for X from the datasheet +#define CVZ 0x01 // Covariance value for X from the datasheet +#define CVO 0x00 // Covariance value for zero components -#define ULTRASOUND 0x00 // Ultrasound -#define PRINT_DATA 0x01 // Thread communication event to print data +#define ROS_Baud 460800 // ROS Baud Rate +#define GPS_Baud 9600 // GPS Baud Rate +//#define frameID_u "ultrasound_range"// ROS frame ID +#define frameID_g "gps_odom" // ROS frame ID + +//#define PRINT_DATA 0x01 // Thread communication event to print data /* Namespaces */ using namespace std; // Make all std symbols visible @@ -62,6 +78,9 @@ extern float wPeriod; // Wait period(ms) for ROS publisher +extern char gps_c; // GPS stream character - Defined in PROJ515.cpp +extern int sats_n; // GPS satelite number - Defined in PROJ515.cpp + /* GPIO */ DigitalIn bttn(USER_BUTTON); // Onboard blue user button BusOut leds(LED1, LED2, LED3); // Onboard LEDs bus @@ -78,19 +97,25 @@ SRF05 USS_CB3(USP_CB3T, USP_CB3E); // Ultrasound sensor cliff 3 SRF05 USS_CB4(USP_CB4T, USP_CB4E); // Ultrasound sensor cliff 4 +// Instance for GPS +TinyGPSPlus gpsModule; // Instance of GPS class +Serial gpsSer(GPS_TX, GPS_RX); // Instance of Serial class to gps + // Instance for ROS node and messages NodeHandle nh; // Instance for ROS Node Handler -Range ultrasound_msg_cf1; // Instance for ROS NavSatFix message 1 -Range ultrasound_msg_cf2; // Instance for ROS NavSatFix message 2 -Range ultrasound_msg_cf3; // Instance for ROS NavSatFix message 3 -Range ultrasound_msg_cf4; // Instance for ROS NavSatFix message 4 -Range ultrasound_msg_cb1; // Instance for ROS NavSatFix message 5 -Range ultrasound_msg_cb2; // Instance for ROS NavSatFix message 6 -Range ultrasound_msg_cb3; // Instance for ROS NavSatFix message 7 -Range ultrasound_msg_cb4; // Instance for ROS NavSatFix message 8 +Range ultrasound_msg_cf1; // Instance for ROS Range message 1 +Range ultrasound_msg_cf2; // Instance for ROS Range message 2 +Range ultrasound_msg_cf3; // Instance for ROS Range message 3 +Range ultrasound_msg_cf4; // Instance for ROS Range message 4 +Range ultrasound_msg_cb1; // Instance for ROS Range message 5 +Range ultrasound_msg_cb2; // Instance for ROS Range message 6 +Range ultrasound_msg_cb3; // Instance for ROS Range message 7 +Range ultrasound_msg_cb4; // Instance for ROS Range message 8 -// Instance for ROS publishers (Range message for cliff and curb sensors) +NavSatFix gps_odom_msg; // Instance for ROS NavSatFix message + +// Instance for ROS publishers Publisher ultrasound_pub_cf1("ultrasound/cf1", &ultrasound_msg_cf1); Publisher ultrasound_pub_cf2("ultrasound/cf2", &ultrasound_msg_cf2); Publisher ultrasound_pub_cf3("ultrasound/cf3", &ultrasound_msg_cf3); @@ -100,6 +125,8 @@ Publisher ultrasound_pub_cb3("ultrasound/cb3", &ultrasound_msg_cb3); Publisher ultrasound_pub_cb4("ultrasound/cb4", &ultrasound_msg_cb4); +Publisher gps_odom_pub("gps_odom", &gps_odom_msg); + /* Threads and Signals */ //Thread myThread (osPriorityNormal); //EventFlags myEventFlag;