INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

NONFRAMEWORK CODE
Driver Interfaces
Drivers
Libraries
Utilities

FRAMEWORK CODE
Interfaces
Components
Libraries
Utilities

Full Software Listings

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

libs/orcateleop/events.h

00001 /*
00002  * Orca-Robotics Project: Components for robotics 
00003  *               http://orca-robotics.sf.net/
00004  * Copyright (c) 2004-2009 Alex Brooks, Alexei Makarenko, Tobias Kaupp
00005  *
00006  * This copy of Orca is licensed to you under the terms described in
00007  * the LICENSE file included in this distribution.
00008  *
00009  */
00010 
00011 #ifndef  EVENTS_H
00012 #define  EVENTS_H
00013 
00014 #include <hydroiceutil/eventqueue.h>
00015 
00016 namespace orcateleop
00017 {
00018 
00019 enum EventType  
00020 {
00021     // user & network
00022     SentVelocityCommand=0,
00023     SentBicycleCommand,
00024     SentRepeatCommand,
00025     FailedToSendCommand,
00026     // network
00027     MixedCommand,
00028     IncrementCommand,
00029     RelativeCommand
00030 };
00031 
00032 class SentVelocityCommandEvent : public hydroiceutil::Event
00033 {
00034 public:
00035     SentVelocityCommandEvent( double vx, double vy, double w, bool vxLimit, bool vyLimit, bool wLimit ) :
00036         Event( SentVelocityCommand ),
00037         vx_(vx),
00038         vy_(vy),
00039         w_(w),
00040         vxLimit_(vxLimit),
00041         vyLimit_(vyLimit),
00042         wLimit_(wLimit) {};
00043 
00044     double vx_;
00045     double vy_;
00046     double w_;
00047     bool vxLimit_;
00048     bool vyLimit_;
00049     bool wLimit_;
00050 };
00051 typedef IceUtil::Handle<SentVelocityCommandEvent> SentVelocityCommandEventPtr;
00052 
00053 class SentBicycleCommandEvent : public hydroiceutil::Event
00054 {
00055 public:
00056     SentBicycleCommandEvent( double speed, double steerAngle, bool speedLimit, bool steerAngleLimit ) :
00057         Event( SentBicycleCommand ),
00058         speed_(speed),
00059         steerAngle_(steerAngle),
00060         speedLimit_(speedLimit),
00061         steerAngleLimit_(steerAngleLimit) {};
00062 
00063     double speed_;
00064     double steerAngle_;
00065     bool speedLimit_;
00066     bool steerAngleLimit_;
00067 };
00068 typedef IceUtil::Handle<SentBicycleCommandEvent> SentBicycleCommandEventPtr;
00069 
00070 class SentRepeatCommandEvent : public hydroiceutil::Event
00071 {
00072 public:
00073     SentRepeatCommandEvent() :
00074         Event( SentRepeatCommand ) {};
00075 };
00076 
00077 class FailedToSendCommandEvent : public hydroiceutil::Event
00078 {
00079 public:
00080     FailedToSendCommandEvent() :
00081         Event( FailedToSendCommand ) {};
00082 };
00083 
00084 class MixedCommandEvent : public hydroiceutil::Event
00085 {
00086 public:
00087     MixedCommandEvent( double lon, bool isLong, double tr, bool isTr, double ang, bool isAng ) :
00088         Event( MixedCommand ),
00089         longitudinal(lon),
00090         isLongIncrement(isLong),
00091         transverse(tr),
00092         isTransverseIncrement(isTr),
00093         angular(ang),
00094         isAngularIncrement(isAng) {};
00095 
00096     double longitudinal;
00097     bool isLongIncrement;
00098     double transverse;
00099     bool isTransverseIncrement;
00100     double angular;
00101     bool isAngularIncrement;
00102 };
00103 typedef IceUtil::Handle<MixedCommandEvent> MixedCommandEventPtr;
00104 
00105 class IncrementCommandEvent : public hydroiceutil::Event
00106 {
00107 public:
00108     IncrementCommandEvent( int lon, int tr, int ang ) :
00109         Event( IncrementCommand ),
00110         longitudinal(lon),
00111         transverse(tr),
00112         angular(ang) {};
00113 
00114     int longitudinal;
00115     int transverse;
00116     int angular;
00117 };
00118 typedef IceUtil::Handle<IncrementCommandEvent> IncrementCommandEventPtr;
00119 
00120 class RelativeCommandEvent : public hydroiceutil::Event
00121 {
00122 public:
00123     RelativeCommandEvent( double lon, double tr, double ang ) :
00124         Event( RelativeCommand ),
00125         longitudinal(lon),
00126         transverse(tr),
00127         angular(ang) {};
00128 
00129     double longitudinal;
00130     double transverse;
00131     double angular;
00132 };
00133 typedef IceUtil::Handle<RelativeCommandEvent> RelativeCommandEventPtr;
00134 
00135 
00136 class TeleopEventQueueOptimizer : public hydroiceutil::EventQueueOptimizer
00137 {
00138 public:
00139     // this combine function adds the member variables of the two events
00140     virtual bool combine( hydroiceutil::EventPtr& existing, const hydroiceutil::EventPtr& extra );
00141 };
00142 
00143 } // namespace
00144 
00145 #endif
 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5