00001 /* -*- mode: C++ -*- 00002 * 00003 * Copyright (C) 2011 Austin Robot Technology 00004 * License: Modified BSD Software License Agreement 00005 * 00006 * $Id: accel_example.h 1539 2011-05-09 04:09:20Z jack.oquin $ 00007 */ 00008 00017 #ifndef _ACCEL_EXAMPLE_H_ 00018 #define _ACCEL_EXAMPLE_H_ 00019 00020 #include "accel.h" 00021 00022 class Pid; // class reference for pointers 00023 00024 namespace pilot 00025 { 00026 00028 class AccelExample: public AccelBase 00029 { 00030 public: 00031 00032 AccelExample(art_pilot::PilotConfig &config); 00033 virtual ~AccelExample(); 00034 00035 typedef boost::shared_ptr<device_interface::ServoDeviceBase> ServoPtr; 00036 00043 virtual void adjust(art_msgs::PilotState &pstate, 00044 ServoPtr brake, ServoPtr throttle); 00045 00047 virtual void reconfigure(art_pilot::PilotConfig &newconfig); 00048 00050 virtual void reset(void); 00051 00052 private: 00053 00054 // When true, brake is the controlling device, otherwise throttle. 00055 bool braking_; 00056 00057 boost::shared_ptr<Pid> brake_pid_; // Brake_Pilot control PID 00058 boost::shared_ptr<Pid> throttle_pid_; // Throttle control PID 00059 }; 00060 00061 }; // namespace pilot 00062 00063 #endif // _ACCEL_EXAMPLE_H_