00001 /* 00002 * Experiment.hpp 00003 * 00004 * Created on: Nov 15, 2011 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef EXPERIMENT_HPP_ 00009 #define EXPERIMENT_HPP_ 00010 00011 #include <telekyb_base/Options.hpp> 00012 00013 #include <sensor_msgs/Joy.h> 00014 00015 #include <telekyb_interface/TeleKybCore.hpp> 00016 #include <telekyb_interface/MKInterface.hpp> 00017 00018 00019 using namespace telekyb; 00020 00021 class ExperimentOptions : public OptionContainer 00022 { 00023 public: 00024 Option<int>* robotID; 00025 Option<std::string> *tJoystickTopic, *trajectoryFile; 00026 Option<bool>* tUseMKInterface; 00027 ExperimentOptions(); 00028 }; 00029 00030 class Experiment : telekyb_interface::ActiveBehaviorListener { 00031 protected: 00032 ExperimentOptions options; 00033 // ROS 00034 ros::NodeHandle mainNodeHandle; 00035 ros::Subscriber joySub; 00036 00037 // the System 00038 telekyb_interface::TeleKybCore* core; 00039 // BehaviorController 00040 telekyb_interface::BehaviorController* bController; 00041 telekyb_interface::OptionController *oController; 00042 00043 // Optional MKInterface 00044 telekyb_interface::MKInterface* mkInterface; 00045 00046 00047 // System Behaviors 00048 telekyb_interface::Behavior ground; 00049 telekyb_interface::Behavior hover; 00050 telekyb_interface::Behavior normalBreak; 00051 telekyb_interface::Behavior takeOff; 00052 telekyb_interface::Behavior land; 00053 00054 // Custom 00055 telekyb_interface::Behavior joystick; 00056 telekyb_interface::Behavior trajPlayback; 00057 00058 // Fly around three points. 00059 telekyb_interface::Behavior flyto1; 00060 telekyb_interface::Behavior flyto2; 00061 telekyb_interface::Behavior flyto3; 00062 00063 // Behavior 00064 telekyb_interface::Behavior* activeBehaviorPtr; 00065 00066 00067 00068 00069 public: 00070 Experiment(); 00071 virtual ~Experiment(); 00072 00073 // setup Behaviors 00074 void setupExperiment(); 00075 00076 // From Interface 00077 void activeBehaviorChanged(telekyb_interface::Behavior newActiveBehavior); 00078 00079 void joystickCB(const sensor_msgs::Joy::ConstPtr& msg); 00080 }; 00081 00082 #endif /* EXPERIMENT_HPP_ */