Skip to content

Commit ee6a019

Browse files
revert: to the used version
1 parent f228167 commit ee6a019

File tree

15 files changed

+132
-406
lines changed

15 files changed

+132
-406
lines changed

.DS_Store

6 KB
Binary file not shown.

LICENSE

Lines changed: 0 additions & 21 deletions
This file was deleted.

MANIFEST.in

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 71 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
"""
1+
'''
22
@ 2025, Copyright AVIS Engine
3-
"""
3+
'''
44

55
import cv2
66
import re
77
import base64
88
import time
99
import socket
1010
import numpy as np
11-
from . import utils
11+
import utils
1212

1313
__author__ = "Amirmohammad Zarif"
1414
__email__ = "amir@avisengine.com"
1515

1616

17-
class Car:
18-
"""
17+
class Car():
18+
'''
1919
AVIS Engine Main Car class
20-
20+
2121
Attributes
2222
----------
2323
@@ -34,57 +34,47 @@ class Car:
3434
sensors
3535
current_speed
3636
sensor_angle
37-
"""
37+
'''
3838

39-
# Attributes to kind of replicate a Pub-sub pattern messaging to request data
39+
#Attributes to kind of replicate a Pub-sub pattern messaging to request data
4040
steering_value = 0
4141
speed_value = 0
4242
sensor_status = 1
4343
image_mode = 1
4444
get_Speed = 1
4545
sensor_angle = 30
46-
46+
4747
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
4848

49-
# Data format for request
50-
data_arr = [
51-
speed_value,
52-
steering_value,
53-
image_mode,
54-
sensor_status,
55-
get_Speed,
56-
sensor_angle,
57-
]
58-
_data_format = (
59-
"Speed:{},Steering:{},ImageStatus:{},SensorStatus:{},GetSpeed:{},SensorAngle:{}"
60-
)
61-
data_str = _data_format.format(
62-
data_arr[0], data_arr[1], data_arr[2], data_arr[3], data_arr[4], data_arr[5]
63-
)
64-
49+
#Data format for request
50+
data_arr = [speed_value, steering_value, image_mode, sensor_status, get_Speed, sensor_angle]
51+
_data_format = "Speed:{},Steering:{},ImageStatus:{},SensorStatus:{},GetSpeed:{},SensorAngle:{}"
52+
data_str = _data_format.format(data_arr[0], data_arr[1], data_arr[2], data_arr[3], data_arr[4], data_arr[5])
53+
6554
image = None
6655
sensors = None
6756
current_speed = None
6857

69-
def connect(self, server, port):
70-
"""
58+
def connect(self,server,port):
59+
'''
7160
Connecting to the simulator (server)
72-
"""
61+
'''
7362
try:
7463
self.sock.connect((server, port))
7564
self.sock.settimeout(5.0)
76-
65+
7766
print("connected to ", server, port)
7867
return True
7968
except:
8069
print("Failed to connect to ", server, port)
8170
return False
8271

72+
8373
def recvall(self, socket):
84-
"""
74+
'''
8575
Function to receive all the data chunks
86-
"""
87-
BUFFER_SIZE = 65536 # Increased buffer size for better performance
76+
'''
77+
BUFFER_SIZE = 131072 # Increased buffer size for better performance
8878
data = bytearray() # Use a bytearray for better performance
8979

9080
while True:
@@ -93,35 +83,36 @@ def recvall(self, socket):
9383

9484
# Use KMP search to find the <EOF>, KMPSearch() returns -1 if the pattern was not found
9585
# It is 9 times faster than the simple python search
96-
if utils.KMPSearch(b"<EOF>", data) > -1: # Convert "<EOF>" to bytes
86+
if utils.KMPSearch(b"<EOF>", data) > -1: # Convert "<EOF>" to bytes
9787
break
9888

9989
return data.decode("utf-8")
10090

101-
def setSteering(self, steering):
102-
"""
91+
92+
def setSteering(self,steering):
93+
'''
10394
Setting the steering of the car
104-
95+
10596
Parameters
10697
----------
10798
steering : int
10899
Steering value in degree
109-
"""
100+
'''
110101
self.steering_value = steering
111102
self.image_mode = 0
112103
self.sensor_status = 0
113104
self.updateData()
114105
self.sock.sendall(self.data_str.encode("utf-8"))
115106
time.sleep(0.01)
116107

117-
def setSpeed(self, speed):
118-
"""
108+
def setSpeed(self,speed):
109+
'''
119110
Setting the speed of the car
120-
111+
121112
Parameters
122113
----------
123114
speed : int
124-
"""
115+
'''
125116
self.speed_value = speed
126117
self.image_mode = 0
127118
self.sensor_status = 0
@@ -130,107 +121,100 @@ def setSpeed(self, speed):
130121
time.sleep(0.01)
131122

132123
def setSensorAngle(self, angle):
133-
"""
124+
'''
134125
Setting the angle between each sensor ray
135-
126+
136127
Parameters
137128
----------
138129
angle : int
139130
In degrees
140-
"""
131+
'''
141132

142133
self.image_mode = 0
143134
self.sensor_status = 0
144135
self.sensor_angle = angle
145136
self.updateData()
146137
self.sock.sendall(self.data_str.encode("utf-8"))
147-
138+
148139
def getData(self):
149-
"""
140+
'''
150141
Requesting for the data from the simulator
151-
"""
142+
'''
152143
self.image_mode = 1
153144
self.sensor_status = 1
154145
self.updateData()
155146
self.sock.sendall(self.data_str.encode("utf-8"))
156147

157148
receive = self.recvall(self.sock)
158149

159-
imageTagCheck = re.search(r"<image>(.*?)</image>", receive)
160-
sensorTagCheck = re.search(r"<sensor>(.*?)</sensor>", receive)
161-
speedTagCheck = re.search(r"<speed>(.*?)</speed>", receive)
162-
150+
imageTagCheck = re.search('<image>(.*?)<\/image>', receive)
151+
sensorTagCheck = re.search('<sensor>(.*?)<\/sensor>', receive)
152+
speedTagCheck = re.search('<speed>(.*?)<\/speed>', receive)
153+
163154
try:
164-
if imageTagCheck:
155+
if(imageTagCheck):
165156
imageData = imageTagCheck.group(1)
166157
im_bytes = base64.b64decode(imageData)
167-
im_arr = np.frombuffer(
168-
im_bytes, dtype=np.uint8
169-
) # im_arr is one-dim Numpy array
158+
im_arr = np.frombuffer(im_bytes, dtype=np.uint8) # im_arr is one-dim Numpy array
170159
imageOpenCV = cv2.imdecode(im_arr, flags=cv2.IMREAD_COLOR)
171160
self.image = imageOpenCV
172-
173-
if sensorTagCheck:
161+
162+
if(sensorTagCheck):
174163
sensorData = sensorTagCheck.group(1)
175-
sensor_arr = re.findall(r"\d+", sensorData)
176-
sensor_int_arr = list(map(int, sensor_arr))
164+
sensor_arr = re.findall("\d+", sensorData)
165+
sensor_int_arr = list(map(int, sensor_arr))
177166
self.sensors = sensor_int_arr
178167
else:
179-
self.sensors = [1500, 1500, 1500]
168+
self.sensors = [1500,1500,1500]
180169

181-
if speedTagCheck:
170+
if(speedTagCheck):
182171
current_sp = speedTagCheck.group(1)
183172
self.current_speed = int(current_sp)
184173
else:
185174
self.current_speed = 0
186175
except:
187176
print("Failed to receive data")
188177

178+
189179
def getImage(self):
190-
"""
180+
'''
191181
Returns the image from the camera
192-
"""
182+
'''
193183
return self.image
194184

195185
def getSensors(self):
196-
"""
186+
'''
197187
Returns the sensor data
198-
A List:
188+
A List:
199189
[Left Sensor: int, Middle Sensor: int, Right Sensor: int]
200-
"""
190+
'''
201191
return self.sensors
202-
192+
203193
def getSpeed(self):
204-
"""
194+
'''
205195
Returns the speed of the car
206-
"""
196+
'''
207197
return self.current_speed
208-
198+
209199
def updateData(self):
210-
"""
200+
'''
211201
Updating the request data array and data string
212-
"""
213-
data = [
214-
self.speed_value,
215-
self.steering_value,
216-
self.image_mode,
217-
self.sensor_status,
218-
self.get_Speed,
219-
self.sensor_angle,
220-
]
221-
self.data_str = self._data_format.format(
222-
data[0], data[1], data[2], data[3], data[4], data[5]
223-
)
224-
202+
'''
203+
data = [self.speed_value,self.steering_value,self.image_mode,self.sensor_status,self.get_Speed, self.sensor_angle]
204+
self.data_str = self._data_format.format(data[0], data[1], data[2], data[3], data[4], data[5])
205+
225206
def stop(self):
226-
"""
207+
'''
227208
Stoping the car and closing the socket
228-
"""
209+
'''
229210
self.setSpeed(0)
230211
self.setSteering(0)
231212
self.sock.sendall("stop".encode("utf-8"))
232213
self.sock.close()
233214
print("Process stopped successfully!")
234-
215+
235216
def __del__(self):
236217
self.stop()
218+
219+
220+
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
"""
1+
'''
22
@ 2025, Copyright AVIS Engine
3-
"""
3+
'''
44

55
SIMULATOR_IP = "127.0.0.1"
66
SIMULATOR_PORT = 25001
7+
8+
9+

docs/README.md

Lines changed: 0 additions & 53 deletions
This file was deleted.

0 commit comments

Comments
 (0)