-
Notifications
You must be signed in to change notification settings - Fork 1
/
jetson_car_control.py
76 lines (68 loc) · 3.04 KB
/
jetson_car_control.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 22 23:14:59 2019
@author: tom
"""
import asyncio
import jetson_gamepad_control
import jetson_motor_servo_control
import jetson_ki_camera_control
async def remote_car_control():
while True:
if my_gamepad.button_x: #stop if x is pressed
my_gamepad.power_on = False
#my_gamepad.erase_rumble()
my_movement_control.stop()
my_ki_camera.power_on_shm.value = 0
my_ki_camera.run_camera_process.join()
break
if my_gamepad.button_b: # toggle between record training data on and off
my_gamepad.button_b = False
if my_ki_camera.mode_shm.value != 1:
my_ki_camera.mode_shm.value = 1
print("record mode on")
else:
my_ki_camera.mode_shm.value = 0
print("record mode off")
if my_gamepad.button_a: # toggle between auto mode on and off
my_gamepad.button_a = False
if my_ki_camera.mode_shm.value != 2:
my_ki_camera.mode_shm.value = 2
print("auto mode on")
else:
my_ki_camera.mode_shm.value = 0
print("auto mode off")
if my_gamepad.button_y: # change turn direction
my_gamepad.button_y = False
my_ki_camera.mode_shm.value = 3
# in auto-ai-mode set direction to ai-prediction from camera and speed constant -0.4
if my_ki_camera.mode_shm.value == 2:
if (my_gamepad.trigger_right > 1e-3) and (my_gamepad.trigger_left < 1e-3):
speed = my_gamepad.trigger_right
elif (my_gamepad.trigger_right < 1e-3) and (my_gamepad.trigger_left > 1e-3):
speed = -1 * my_gamepad.trigger_left
else:
speed = 0
my_ki_camera.tank_speed_shm.value = speed
# in manual-mode set direction and speed with values from gamepad
else:
if (my_gamepad.trigger_right > 1e-3) and (my_gamepad.trigger_left < 1e-3):
speed = my_gamepad.trigger_right
elif (my_gamepad.trigger_right < 1e-3) and (my_gamepad.trigger_left > 1e-3):
speed = -1 * my_gamepad.trigger_left
else:
speed = 0
direction = my_gamepad.joystick_left_x
my_ki_camera.tank_direction_shm.value = direction
my_ki_camera.tank_speed_shm.value = speed
# now update speed and direction for the movement control
my_movement_control.set_speed_direction(my_ki_camera.tank_speed_shm.value, my_ki_camera.tank_direction_shm.value)
await asyncio.sleep(0)
my_gamepad = jetson_gamepad_control.xbox_one(file = '/dev/input/event2')
my_movement_control = jetson_motor_servo_control.movement_control()
my_ki_camera = jetson_ki_camera_control.ki_camera()
futures = [my_gamepad.read_gamepad_input(), remote_car_control()] #
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(futures))
loop.close()