-
Notifications
You must be signed in to change notification settings - Fork 0
/
lidar_publisher.py
114 lines (88 loc) · 2.11 KB
/
lidar_publisher.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env python
import rospy
from sensor_msgs.msg import LaserScan
#from std_msgs.msg import String
from std_msgs.msg import Int32MultiArray
import sys
drive_data=Int32MultiArray()
#pub = rospy.Publisher("drive", Int32MultiArray, queue_size=10)
def callback(data):
pub = rospy.Publisher("drive", Int32MultiArray, queue_size=10)
c0 = []
c1 = []
c2 = []
c3_1 = []
c3_2 = []
c3 = []
c4 = []
c5 = []
drive_data.data=[]
value=data.ranges
speed=10
angle=96
#print (value)
for x in range(90,270):
c0.append(value[x])
c0 = min(c0)
print (c0)
for x in range(70,90):
c1.append(value[x])
c1 = min(c1)
print (c1)
for x in range(35,70):
c2.append(value[x])
c2 = min(c2)
print (c2)
for x in range(0,35):
c3_1.append(value[x])
c3_1 = min(c3_1)
for x in range(325,360):
c3_2.append(value[x])
c3_2 = min(c3_2)
c3 = min(c3_1,c3_2)
print (c3)
for x in range(250,325):
c4.append(value[x])
c4 = min(c4)
print (c4)
for x in range(250,270):
c5.append(value[x])
c5 = min(c5)
print (c5)
if c1 <= 0.4:
speed = 10
angle = 142
print('Take a Sharp Right')
elif c2 <= 0.5:
speed = 10
angle = 122
print('Turn Right')
elif c3 <= 0.25:
speed = 0
angle = 96
print('STOP!')
elif c4 <= 0.5:
speed = 10
angle = 70
print('Turn Left')
elif c5 <= 0.4:
speed = 10
angle = 50
print('Take a Sharp Left')
drive_data.data=[speed,angle]
rospy.loginfo(drive_data)
pub.publish(drive_data)
def talker():
rospy.init_node('talker', anonymous=True)
rospy.Subscriber("/scan", LaserScan, callback, queue_size=10)
rospy.spin()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pub = rospy.Publisher("drive", Int32MultiArray, queue_size=10)
speed = 0
angle = 100
drive_data.data=[speed,angle]
rospy.loginfo(drive_data)
pub.publish(drive_data)