Skip to content

Instantly share code, notes, and snippets.

@sezan92
Forked from farhanhubble/mpc.py
Created January 6, 2021 12:02
Show Gist options
  • Save sezan92/88d58a18c4efeaad7c02632f2665f707 to your computer and use it in GitHub Desktop.
Save sezan92/88d58a18c4efeaad7c02632f2665f707 to your computer and use it in GitHub Desktop.
Python code for connecting to Udacity Self-Driving Cars Simulator (Tested with term 2 project 5 on model predictive control).
import json
import asyncio
import websockets
def _check_mode(msg):
return "Auto" if msg and msg[:2] == '42' else "Manual"
def _parse_telemetry(msg):
msg_json = msg[2:]
parsed = json.loads(msg_json)
msg_type = parsed[0]
assert msg_type == 'telemetry' , "Invalid message type {}".format(msg_type)
# Telemetry values
values = parsed[1]
return values
async def control_loop(websocket, path):
async for message in websocket:
if _check_mode(message) is 'Auto':
telemetry = _parse_telemetry(message)
psi = telemetry['psi']
ptsx = telemetry['ptsx']
ptsy = telemetry['ptsy']
speed = telemetry['speed']
steering = telemetry['steering_angle']
throttle = telemetry['throttle']
x = telemetry['x']
y = telemetry['y']
#Implement your model predictive control here.
else:
print("Falling back to manual mode")
asyncio.get_event_loop().run_until_complete(
websockets.serve(control_loop, 'localhost', 4567))
asyncio.get_event_loop().run_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment