painting-robot-sim/main.py

48 lines
1.2 KiB
Python

import threading
import turtle
import argparse
from pythonosc import udp_client
from pythonosc.dispatcher import Dispatcher
from pythonosc import osc_server
t = turtle.Turtle()
screen = turtle.Screen()
screen.title("Painting robot sim")
COLORS = [
"black",
"yellow",
"red",
"blue"
]
def color_handler(unused_addr, c):
if c in COLORS:
t.pencolor(c)
def coordinate_handler(unused_addr, x, y, z, roll, pitch, yaw):
prev_size = t.pensize
t.pen(pensize=z)
if z <= 0:
t.penup()
else:
t.pendown()
if prev_size == 0:
t.dot()
t.goto(x, y)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ip", default="127.0.0.1", help="The ip to listen on")
parser.add_argument("--port", type=int, default=5005, help="The port to listen on")
args = parser.parse_args()
dispatcher = Dispatcher()
dispatcher.map("/tcp_coordinates", coordinate_handler)
dispatcher.map("/color", color_handler)
server = osc_server.ThreadingOSCUDPServer((args.ip, args.port), dispatcher)
print(f"Serving on {server.server_address}")
osc_thread = threading.Thread(target = server.serve_forever, daemon=True)
osc_thread.start()
turtle.done()