46 lines
1.2 KiB
Python
46 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):
|
|
t.pen(pensize=z)
|
|
if z <= 0:
|
|
t.penup()
|
|
else:
|
|
t.pendown()
|
|
|
|
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()
|