Você está na página 1de 9

Figure 1

Given, xd : Goal position as given by us. xr : Virtual goal position after rotation by an angle of xc : Present position of the robot. : Orientation error. : Distance between xr and xc. : The angle formed by the line linking the origin of the robot of the onboard and the inertial frame with the horizontal axis. u : Linear velocity of the robot. : Angular velocity of the robot. d : Minimum distance calculated by the sensor apparartus. : For this see Fig. 2

Figure 2 As mentioned before, we can divide the whole process in two parts i.e. in two nested loops. The inner one is responsible for reducing the robot-goal distance in the absence of obstacles and outer one is responsible for deviating the robot of the obstacle closest to it CASE 1 : When no obstacle is detected inside the repulsion zone, defined by dmax, which I will consider to be 75 cm. As a result, no will be calculated and hence the goal position would remain the same. The inner loop is significant only. Thus, here, we have xd and xc. xc: We get this from the robot odometry data. a) CARTESIAN TO POLAR BLOCK Functions required:

1. FindAngleTo: This command is to find the angle between robots current heading angle and the goal point wrt the robot i.e. by cross and dot product. 2. FindDisatnceTo: To calculate the distance between xd and xc i.e. . 3. getTh: Present theta value of the robot position as measured on its onboard odometer. b) MOTION CONTROLLER BLOCK Mathematical function required to calculate u and , where u = umaxtanhcos. = k + umax ( tanh / ) sin cos where k>0 K is calculated from the following formula : |max| = k (pi/4) + 0.5 umax. where umax and wmax are known from the datasheet of the robot. c)CARTESIAN MODE: Functions required : 1. setVel : to set the velocity of the robot as calculated above. 2. setRotVel : to set the rotational velocity of the robot. Here again the sensors check for any obstacle nearby. Also the new current position of the robot i.e. xc is calculated and fed back. 1. GetX : This command returns the current x-value of the robot's position as measured on it's on board odometer. 2. GetY : This command returns the current y-value of the robot's position as measured on it's on board odometer. 3. FindAngleToX : This command is to find the angle between robots current heading angle and the actual goal point wrt the

current position of the robot. i.e. o.

CASE 2 : When an obstacle is detected inside the repulsion zone, dmax,= 75 cm. The sensing system adopted is a laser scanner installed in the center of the robot which delivers 181 range measurements at a prescribed rate, covering a semi-circle in front of the robot. Check the sensor values at a prescribed sample rate, if all the sensor values at a given time>75 cm, no need for employing escape. But if anyone of them is less than 75 cm, check the for the sensor value which gives the minimum reading.

Figure 2

1) -ESTIMATION From the dmin delivered by the sensorial apparatus onboard the robot in a certain instant, the angle is obtained.

2) TANGENTIAL ESCAPE CONTROLLER: Here the angle by which the original goal position is rotated is calculated. We have : , calculated from above. o, , obtained from the FindAngleToX function as defined above. The required angle is calculated by the following expression: = sign () +(o .)

3) ROTATION FUNCTION This function rotates the goal position by the angle obtained above. Thus, the robot now proceeds to this virtual goal and thus avoids the collision with the obstacle.. Not that it reaches the new goal, but the sensors keep on noting the distance from the obstacle and when it is > 75 cm, the robot now proceeds to the actual goal as there is no rotation of the goal now. Xr = cos sin -sin cos

The following functions would be using the odometric data to calculate necessary quantities : 1.FindAngleTo 2.FindDistanceTo. 3.getTh 4.GetX 5.GetY 6.FindAngleToX

An algorithm for the same -input : xd -check : any -if no, then xr=xd,
xc (from the robot odometry) *cal , , = ! xr-xc! =

-> as mentioned. * cal u, w * set the robot velocity i.e. linear and rotational as above. * After a set point of time get new xc and feed it back to the above xc * Also, calculate o. * Check for sensor values. # if no obstacles detected-> =0->Go to 1 # if obstacle detected, find dmin, find , calculate If yes, then calculate xr, from the Rest as above.

Things needed to be noted : -In the equation, = sign () +(o .) Care needs to be taken with regard to the sign of the angles o and . General convention has been that for o, when the object is at the right of the axis of the movement of the robot, it is taken to be positive. Similarly for , when the obstacle is at the right side of the robot, it is taken as positive. Correspondingly, (considering beta> alpha) is positive meaning that the goal is rotated to the left of the robot.

--Timer : Very important .

Você também pode gostar