Python
From RobotinoWiki
Introduction
cricle example
import requests import sys import json import time import math import signal ROBOTINOIP = "192.168.1.180:13080" #ROBOTINOIP = "192.168.1.223" PARAMS = {'sid':'example_circle'} run = True def signal_handler(sig, frame): global run print('You pressed Ctrl+C!') run = False def set_vel(vel): OMNIDRIVE_URL = "http://" + ROBOTINOIP + "/data/omnidrive" r = requests.post(url = OMNIDRIVE_URL, params = PARAMS, data = json.dumps(vel) ) if r.status_code != requests.codes.ok: #print("Error: post to %s with params %s failed", OMNIDRIVE_URL, PARAMS) raise RuntimeError("Error: post to %s with params %s failed", OMNIDRIVE_URL, PARAMS) def bumper(): BUMPER_URL = "http://" + ROBOTINOIP + "/data/bumper" r = requests.get(url = BUMPER_URL, params = PARAMS) if r.status_code == requests.codes.ok: data = r.json() return data["value"] else: raise RuntimeError("Error: get from %s with params %s failed", BUMPER_URL, PARAMS) def distances(): DISTANCES_URL = "http://" + ROBOTINOIP + "/data/distancesensorarray" r = requests.get(url = DISTANCES_URL, params = PARAMS) if r.status_code == requests.codes.ok: data = r.json() return data else: raise RuntimeError("Error: get from %s with params %s failed", DISTANCES_URL, PARAMS) #rotate tuple vec by deg degrees and return the rotated vector as a list def rotate( vec, deg ): rad = 2 * math.pi / 360 * deg; out = [0,0]; out[0] = ( math.cos( rad ) * vec[0] - math.sin( rad ) * vec[1] ); out[1] = ( math.sin( rad ) * vec[0] + math.cos( rad ) * vec[1] ); return out; def main(): signal.signal(signal.SIGINT, signal_handler) try: startVector = (0.2, 0.0); a = 0; msecsElapsed = 0; vec = [0,0,0]; while False == bumper() and True == run: dir = rotate( startVector, a ); a = 360.0 * msecsElapsed / 10000; vec[0] = dir[0]; vec[1] = dir[1]; set_vel(vec); time.sleep(0.05) msecsElapsed += 50; set_vel([0,0,0]) except Exception as e: print(e) return 1 return 0 if __name__ == "__main__": main()