00001
00027 #include <ObstacleAvoider.H>
00028 #include <RobotTypes.H>
00029
00030 using namespace std;
00031 using namespace WURDE;
00032
00033 void ObstacleAvoider::setAvoidanceRadius(double radius){
00034 Pose goalPose(0,0,0);
00035 requests.avoidanceRadius.setValue(radius);
00036 requests.goalPose.setValue(goalPose);
00037 requests.goalHasTheta.setValue(false);
00038 requests.goalHasLocation.setValue(false);
00039 requests.absolute.setValue(false);
00040
00041 publishRequest();
00042 }
00043
00044 void ObstacleAvoider::stop(){
00045 Pose goal_pose(0,0,0);
00046
00047 requests.goalPose.setValue(goal_pose);
00048 requests.goalHasTheta.setValue(true);
00049 requests.goalHasLocation.setValue(true);
00050 requests.absolute.setValue(false);
00051 requests.brake.setValue(true);
00052
00053 publishRequest();
00054 }
00055
00056 void ObstacleAvoider::moveToPoint(Point &goal){
00057 Pose goal_pose(goal.x(),goal.y());
00058
00059 requests.goalPose.setValue(goal_pose);
00060 requests.goalHasTheta.setValue(false);
00061 requests.goalHasLocation.setValue(true);
00062 requests.absolute.setValue(true);
00063 requests.brake.setValue(false);
00064
00065 publishRequest();
00066 }
00067
00068 void ObstacleAvoider::moveToPoint(const double &x, const double &y){
00069 Pose goal_pose(x,y);
00070
00071 requests.goalPose.setValue(goal_pose);
00072 requests.goalHasTheta.setValue(false);
00073 requests.goalHasLocation.setValue(true);
00074 requests.absolute.setValue(true);
00075 requests.brake.setValue(false);
00076
00077 publishRequest();
00078 }
00079
00080 void ObstacleAvoider::moveToPose(Pose &goal){
00081 requests.goalPose.setValue(goal);
00082 requests.goalHasTheta.setValue(true);
00083 requests.goalHasLocation.setValue(true);
00084 requests.absolute.setValue(true);
00085 requests.brake.setValue(false);
00086
00087 publishRequest();
00088 }
00089
00090 void ObstacleAvoider::moveToPose(const double &x, const double &y, const double &theta){
00091 Pose goal_pose(x,y,theta);
00092
00093 requests.goalPose.setValue(goal_pose);
00094 requests.goalHasTheta.setValue(true);
00095 requests.goalHasLocation.setValue(true);
00096 requests.absolute.setValue(true);
00097 requests.brake.setValue(false);
00098
00099 publishRequest();
00100 }
00101
00102 void ObstacleAvoider::rotateToAngle(const double &theta){
00103 Pose goal_pose(0,0,theta);
00104
00105 requests.goalPose.setValue(goal_pose);
00106 requests.goalHasTheta.setValue(true);
00107 requests.goalHasLocation.setValue(false);
00108 requests.absolute.setValue(true);
00109 requests.brake.setValue(false);
00110
00111 publishRequest();
00112 }
00113
00114 void ObstacleAvoider::moveToRelativePoint(Point &goal){
00115 Pose goal_pose(goal.x(),goal.y());
00116
00117 requests.goalPose.setValue(goal_pose);
00118 requests.goalHasTheta.setValue(false);
00119 requests.goalHasLocation.setValue(true);
00120 requests.absolute.setValue(false);
00121 requests.brake.setValue(false);
00122
00123 publishRequest();
00124 }
00125
00126 void ObstacleAvoider::moveToRelativePoint(const double &x, const double &y){
00127 Pose goal_pose(x,y);
00128
00129 requests.goalPose.setValue(goal_pose);
00130 requests.goalHasTheta.setValue(false);
00131 requests.goalHasLocation.setValue(true);
00132 requests.absolute.setValue(false);
00133 requests.brake.setValue(false);
00134
00135 publishRequest();
00136 }
00137
00138 void ObstacleAvoider::moveToRelativePose(Pose &goal){
00139 requests.goalPose.setValue(goal);
00140 requests.goalHasTheta.setValue(true);
00141 requests.goalHasLocation.setValue(true);
00142 requests.absolute.setValue(false);
00143 requests.brake.setValue(false);
00144
00145 publishRequest();
00146 }
00147
00148 void ObstacleAvoider::moveToRelativePose(const double &x, const double &y, const double &theta){
00149 Pose goal_pose(x,y,theta);
00150
00151 requests.goalPose.setValue(goal_pose);
00152 requests.goalHasTheta.setValue(true);
00153 requests.goalHasLocation.setValue(true);
00154 requests.absolute.setValue(false);
00155 requests.brake.setValue(false);
00156
00157 publishRequest();
00158 }
00159
00160 void ObstacleAvoider::rotateToRelativeAngle(const double &theta){
00161 Pose goal_pose(0,0,theta);
00162
00163 requests.goalPose.setValue(goal_pose);
00164 requests.goalHasTheta.setValue(true);
00165 requests.goalHasLocation.setValue(false);
00166 requests.absolute.setValue(false);
00167 requests.brake.setValue(false);
00168
00169 publishRequest();
00170 }
00171
00172
00173 void ObstacleAvoider::translateFixedDistance(const double &distance){
00174 Pose goal_pose(distance,0);
00175
00176 requests.goalPose.setValue(goal_pose);
00177 requests.goalHasTheta.setValue(false);
00178 requests.goalHasLocation.setValue(false);
00179 requests.absolute.setValue(false);
00180 requests.brake.setValue(false);
00181
00182 publishRequest();
00183 }
00184
00185 void ObstacleAvoider::rotateFixedAngle(const double &rotate){
00186 Pose goal_pose(0,0,rotate);
00187
00188 requests.goalPose.setValue(goal_pose);
00189 requests.goalHasTheta.setValue(true);
00190 requests.goalHasLocation.setValue(false);
00191 requests.absolute.setValue(false);
00192 requests.brake.setValue(false);
00193
00194 publishRequest();
00195 }
00196