@@ -17,8 +17,8 @@ def __init__(self):
17
17
self .rate = rospy .Rate (5 )
18
18
19
19
orientation = 0
20
-
21
- yaw = 0
20
+ global yaw
21
+ yaw = 0.0
22
22
23
23
def convertQtoEuler ():
24
24
quaternion = (pose .orientation .x , pose .orientation .y , pose .orientation .z , pose .orientation .w )
@@ -30,40 +30,48 @@ def convertQtoEuler():
30
30
#Callback function implementing the pose value received
31
31
def callback (self , data ):
32
32
self .pose = data
33
- self .pose .pose .position .x = round (self .pose .pose .position .x , 4 )
34
- self .pose .pose .position .y = round (self .pose .pose .position .y , 4 )
33
+ self .pose .pose .pose . position .x = round (self . pose .pose .pose .position .x , 4 )
34
+ self .pose .pose .pose . position .y = round (self . pose .pose .pose .position .y , 4 )
35
35
36
36
def get_distance (self , goal_x , goal_y ):
37
- distance = sqrt (pow ((goal_x - self .pose .x ), 2 ) + pow ((goal_y - self .pose .y ), 2 ))
37
+ distance = sqrt (pow ((goal_x - self .pose .pose . pose . positionx ), 2 ) + pow ((goal_y - self .pose . pose . pose . position .y ), 2 ))
38
38
return distance
39
39
40
40
def move2goal (self ):
41
- #goal_pose = Pose()
42
41
goal_pose = Odometry ()
43
- goal_pose . pose . position . x = input ( "Set your x goal: " )
44
- goal_pose .pose .position .y = input ("Set your y goal: " )
45
- # goal_pose.theta = input("Set your final orientation : ")
42
+ print ( goal_pose )
43
+ goal_pose .pose .pose . position .x = input ("Set your x goal: " )
44
+ goal_pose .pose . pose . position . y = input ("Set your y goal : " )
46
45
angle = input ("Set your final orientation: " )
47
- #orientation = goal_pose.theta
48
46
distance_tolerance = input ("Set your tolerance: " )
49
47
vel_msg = Twist ()
50
48
51
- while sqrt (pow ((goal_pose .pose .position .x - self .pose .pose .position .x ), 2 ) + pow ((goal_pose .pose .position .y - self .pose .pose .position .y ), 2 )) >= distance_tolerance :
49
+ while sqrt (pow ((goal_pose .pose .pose . position .x - self .pose .pose .pose . position .x ), 2 ) + pow ((goal_pose .pose .pose . position .y - self . pose .pose .pose .position .y ), 2 )) >= distance_tolerance :
52
50
53
51
#Porportional Controller
52
+
54
53
#linear velocity in the x-axis:
55
- vel_msg .linear .x = 1.5 * sqrt (pow ((goal_pose .pose .position .x - self .pose .pose .position .x ), 2 ) + pow ((goal_pose .pose .position .y - self .pose .pose .position .y ), 2 ))
54
+ v_x = 1.5 * sqrt (pow ((goal_pose .pose .pose .position .x - self .pose .pose .pose .position .x ), 2 ) + pow ((goal_pose .pose .pose .position .y - self .pose .pose .pose .position .y ), 2 ))
55
+ if (v_x > 0.5 ):
56
+ v_x = 0.5
57
+ vel_msg .linear .x = v_x
56
58
vel_msg .linear .y = 0
57
59
vel_msg .linear .z = 0
58
60
59
61
#angular velocity in the z-axis:
60
62
vel_msg .angular .x = 0
61
63
vel_msg .angular .y = 0
62
- vel_msg .angular .z = 4 * (atan2 (goal_pose .pose .position .y - self .pose .pose .position .y , goal_pose .pose .position .x - self .pose .pose .position .x ) - yaw )
63
-
64
+ v_z = 4 * (atan2 (goal_pose .pose .pose .position .y - self .pose .pose .pose .position .y , goal_pose .pose .pose .position .x - self .pose .pose .pose .position .x ) - yaw )
65
+ if (v_z < - 4.25 ):
66
+ v_z = - 4.25
67
+ if (v_z > 4.25 ):
68
+ v_z = 4.25
69
+ vel_msg .angular .z = v_z
70
+
64
71
#Publishing our vel_msg
65
72
self .velocity_publisher .publish (vel_msg )
66
73
self .rate .sleep ()
74
+
67
75
#Stopping our robot after the movement is over
68
76
vel_msg .linear .x = 0
69
77
vel_msg .angular .z = orientation - yaw
0 commit comments