All mbed code for control over dive planes, pump motor, valve motor, BCUs, UART interface, etc.
Dependencies: mbed ESC mbed MODDMA
robotic_fish_6/ROSControl/ROSController.h
- Committer:
- juansal12
- Date:
- 2020-01-14
- Revision:
- 0:c3a329a5b05d
File content as of revision 0:c3a329a5b05d:
/* * ROSController.h * * Author: Joseph DelPreto */ //#define rosControl #ifdef rosControl #ifndef ROSCONTROL_ROSCONTROLLER_H_ #define ROSCONTROL_ROSCONTROLLER_H_ #include "FishController.h" #include "mbed.h" #include <ros.h> #include <std_msgs/Empty.h> #include <fish_msgs/JoystickState.h> // ROS setup // TODO replace this with your topic name #define rosTopicName "to_serial" // Pins and comm #define rosDefaultBaudUSB 115200 #define rosDefaultBaud 115200 #define rosDefaultTX p13 #define rosDefaultRX p14 // note lowBatteryVoltagePin is defined in FishController //#define printStatusROSController // whether to print what's going on (i.e. when it gets commands, etc.) #define debugLEDsROS // LED1: initialized LED2: running LED3: receiving a message LED4: done (others turn off) #define runTimeROS 10000 // how long to run for (in milliseconds) if inifiniteLoopROS is undefined #define infiniteLoopROS // if defined, will run forever (or until stop() is called from another thread) #define rosControllerControlFish // whether to start fishController to control the servos and motor // Map bytes sent over ROS serial to ranges for each fish property #define rosMinPitch fishMinPitch #define rosMaxPitch fishMaxPitch #define rosMinYaw fishMinYaw #define rosMaxYaw fishMaxYaw #define rosMinThrust fishMinThrust #define rosMaxThrust fishMaxThrust #define rosMinFrequency fishMinFrequency #define rosMaxFrequency fishMaxFrequency class ROSController { public: // Initialization ROSController(Serial* serialObject = NULL, Serial* usbSerialObject = NULL); // if objects are null, ones will be created void init(Serial* serialObject = NULL, Serial* usbSerialObject = NULL); // if serial objects are null, ones will be created // Execution control void run(); void stop(); void lowBatteryCallback(); // ROS ros::NodeHandle nodeHandle; ros::Subscriber<fish_msgs::JoystickState> subscriber; void processROSMessage(const fish_msgs::JoystickState& msg); private: Timer programTimer; bool terminated; Serial* usbSerial; Serial* serial; // Low battery monitor DigitalIn* lowBatteryVoltageInput; Ticker lowBatteryTicker; bool detectedLowBattery; // Debug LEDs #ifdef debugLEDsROS DigitalOut* rosLEDs[4]; #endif }; // Create a static instance of ROSController to be used by anyone doing ROS control extern ROSController rosController; #endif /* ROSCONTROL_ROSCONTROLLER_H_ */ #endif // #ifdef rosControl