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 }