Ejemplo n.º 1
0
def send_command(request):
    data = request.GET.dict()
    if data['command'] == 'build_path':
        try:
            if not copters[int(data["id"])].path:
                path = build_path(str(data['o']) + '0', str(data['t']) + '0')
                copters[int(data["id"])].path += path
            else:
                return JsonResponse({'m': 'busy'})
        except:
            return JsonResponse({"m": "no way"})
    elif data['command'] == 'force_land':
        copters[int(data["id"])].force_landed = True
    return JsonResponse({"m": "ok"})
Ejemplo n.º 2
0
def send_command(request):
    data = request.GET.dict()
    if data['command'] == 'build_path':
        try:
            if not copters[int(data["id"])].path:
                path = build_path(
                    str(copters[int(data["id"])].point_to) + '0',
                    str(data['t']) + '0')
                print(path)
                copters[int(data["id"])].path += path
            else:
                return JsonResponse({'m': 'busy'})
        except:
            return JsonResponse({"m": "no way"})
    elif data['command'] == 'arrived':
        copter = copters[int(data["id"])]
        if copter.path:
            copter.point(int(copter.path[0][:-1]), int(copter.path[1][:-1]))
            copter.toNewTelem(copters)
    elif data['command'] == 'force_land':
        copters[int(data["id"])].force_landed = True
    return JsonResponse({"m": "ok"})
Ejemplo n.º 3
0
def ask_taxi(request):
    data = request.GET.dict()
    busy = 0
    points = []
    for i in copters:
        if i.path != []:
            busy += 1
            points.append(-1)
        else:
            points.append(get_nearest_point(i))

    if busy == len(copters):
        return JsonResponse({'m': 'busy'})

    busy_points = []

    for i in copters:
        busy_points += i.busy_points

    if str(data['o']) + '0' in busy_points or str(
            data['t']) + '0' in busy_points:
        return JsonResponse({'m': 'wrong'})

    with open('static/roads.json', 'r') as f:
        destination_point = load(f)['points'][int(data['t'])]

    for copter in copters:
        if copter.status == 'land':
            if get_distance(copter.x, copter.y, 0, destination_point['x'],
                            destination_point['y'],
                            0) < nearest_copter_threshold:
                return JsonResponse({'m': 'wrong'})

    paths = []
    for i in range(0, len(points)):
        if points[i] != -1:
            paths.append(
                calc_path(
                    build_path(str(points[i]) + '0',
                               str(data['o']) + '0')))
        else:
            paths.append(9999999)

    nearest_copter = copters[paths.index(min(paths))]
    first_path = build_path(
        str(get_nearest_point(nearest_copter)) + '0',
        str(data['o']) + '0')
    if len(first_path) != 1:
        nearest_copter.path += first_path
        nearest_copter.path.append('-1')
        nearest_copter.busy_points += [
            str(data['o']) + '0', str(data['t']) + '0'
        ]
    else:
        nearest_copter.busy_points += [str(data['t']) + '0']
    nearest_copter.path += build_path(
        str(data['o']) + '0',
        str(data['t']) + '0')
    r = lambda: random.randint(0, 255)
    nearest_copter.led = '#%02X%02X%02X' % (r(), r(), r())

    return JsonResponse({
        'm': 'ok',
        'color': nearest_copter.led,
        'ip': nearest_copter.ip
    })
Ejemplo n.º 4
0
def get_dist(request):
    data = request.GET.dict()
    path = build_path(str(data['o']) + '0', str(data['t']) + '0')
    dist = calc_path(path)
    cost = 150 + dist * 30
    return JsonResponse({'dist': dist, 'cost': cost})