Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00017 #ifndef _ACCEL_H_
00018 #define _ACCEL_H_
00019
00020 #include <ros/ros.h>
00021 #include <art_msgs/PilotState.h>
00022 #include <art_pilot/PilotConfig.h>
00023 #include "device_interface.h"
00024
00025 namespace pilot
00026 {
00027
00029 class AccelBase
00030 {
00031 public:
00032
00038 AccelBase(art_pilot::PilotConfig &config) {};
00039
00041 virtual ~AccelBase();
00042
00044 typedef boost::shared_ptr<device_interface::ServoDeviceBase> ServoPtr;
00045
00052 virtual void adjust(art_msgs::PilotState &pstate,
00053 ServoPtr brake, ServoPtr throttle) = 0;
00054
00060 virtual void reconfigure(art_pilot::PilotConfig &newconfig) = 0;
00061
00063 virtual void reset(void) = 0;
00064 };
00065
00067 typedef boost::shared_ptr<AccelBase> AccelBasePtr;
00068
00075 AccelBasePtr allocAccel(art_pilot::PilotConfig &config);
00076
00085 static inline float clamp(float lower, float value, float upper)
00086 {
00087 return std::max(lower, std::min(value, upper));
00088 }
00089
00095 static inline float signum(float value)
00096 {
00097 return (value > 0.0? 1.0:
00098 (value == 0.0? 0.0:
00099 -1.0));
00100 }
00101
00102 };
00103
00104 #endif // _ACCEL_H_