Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #include <trajmodules/PMPositionError.hpp>
00009 
00010 #include <tk_trajprocessor/TrajectoryProcessorController.hpp>
00011 
00012 
00013 PLUGINLIB_DECLARE_CLASS(tk_trajprocessor, PMPositionError, telekyb_traj::PMPositionError, TELEKYB_NAMESPACE::TrajectoryModule);
00014 
00015 namespace telekyb_traj {
00016 
00017 PMPositionErrorOptions::PMPositionErrorOptions()
00018         : OptionContainer("PMPositionError")
00019 {
00020         tMaxPositionError = addOption("tMaxPositionError", "Maximal Position Error", 0.5, false, true);
00021 }
00022 
00023 PMPositionError::PMPositionError()
00024         : TrajectoryModule("tk_trajprocessor/PMPositionError", TrajModulePosType::Position, 110) 
00025 {
00026 
00027 }
00028 
00029 void PMPositionError::initialize()
00030 {
00031 
00032 }
00033 
00034 void PMPositionError::destroy()
00035 {
00036 
00037 }
00038 
00039 
00040 void PMPositionError::willTurnActive()
00041 {
00042         
00043 }
00044 
00045 
00046 void PMPositionError::didTurnInactive()
00047 {
00048         
00049 }
00050 
00051 bool PMPositionError::trajectoryStep(const TKState& currentState, TKTrajectory& trajInput)
00052 {
00053         
00054         
00055         
00056         
00057         
00058         double posError = (currentState.position - trajInput.position).norm();
00059         if (posError > options.tMaxPositionError->getValue()) {
00060                 
00061                 ROS_ERROR_STREAM("Trajectory Module " << getName() << ": Position error too big. "
00062                                 << posError << ">" << options.tMaxPositionError->getValue());
00063                 tpController.getBehaviorSwitcher()->switchToNormalBrake();
00064                 trajInput.setVelocity( Velocity3D::Zero() );
00065                 return false; 
00066         }
00067 
00068 
00069         return true;
00070 }
00071 
00072 }