Go to the documentation of this file.00001
00002
00003
00004
00005
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;
00026 Option<bool>* tUseMKInterface;
00027
00028 Option<std::string>* tTrajectoryFileName;
00029
00030 Option<Eigen::Vector3d>* tTrajectoryStartPoint;
00031 ExperimentOptions();
00032 };
00033
00034 class Experiment : telekyb_interface::ActiveBehaviorListener {
00035 protected:
00036 ExperimentOptions options;
00037
00038 ros::NodeHandle mainNodeHandle;
00039 ros::Subscriber joySub;
00040
00041
00042 telekyb_interface::TeleKybCore* core;
00043
00044 telekyb_interface::BehaviorController* bController;
00045 telekyb_interface::OptionController *oController;
00046
00047
00048 telekyb_interface::MKInterface* mkInterface;
00049
00050
00051
00052 telekyb_interface::Behavior ground;
00053 telekyb_interface::Behavior hover;
00054 telekyb_interface::Behavior normalBreak;
00055 telekyb_interface::Behavior takeOff;
00056 telekyb_interface::Behavior land;
00057
00058
00059
00060 telekyb_interface::Behavior trajPlayback;
00061
00062
00063 telekyb_interface::Behavior flyto1;
00064
00065
00066
00067
00068 telekyb_interface::Behavior* activeBehaviorPtr;
00069
00070
00071
00072
00073 public:
00074 Experiment();
00075 virtual ~Experiment();
00076
00077
00078 void setupExperiment();
00079
00080
00081 void activeBehaviorChanged(telekyb_interface::Behavior newActiveBehavior);
00082
00083 void joystickCB(const sensor_msgs::Joy::ConstPtr& msg);
00084 };
00085
00086 #endif