This repository has been archived by the owner on Jun 7, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5716053
commit 5d08528
Showing
9 changed files
with
2,834 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
# Setup and configuring aicoe-ci with configuration file `.aicoe-ci.yaml` | ||
# Example `.aicoe-ci.yaml` with a full list of config options is available here: https://github.com/AICoE/aicoe-ci/blob/master/docs/.aicoe-ci.yaml | ||
--- | ||
check: [] | ||
# Uncomment following line to build a public image of this repo | ||
# - thoth-build | ||
check: | ||
- thoth-build | ||
# Uncomment following lines to build a public image of this repo | ||
# build: | ||
# build-stratergy: Source | ||
# build-source-script: "image:///opt/app-root/builder" | ||
# base-image: quay.io/thoth-station/s2i-custom-notebook:latest | ||
# registry: quay.io | ||
# registry-org: aicoe | ||
# registry-project: <CHANGE-ME> | ||
# registry-secret: aicoe-pusher-secret | ||
build: | ||
base-image: "quay.io/thoth-station/s2i-elyra-custom-notebook:v0.4.1" | ||
build-source-script: "image:///opt/app-root/builder" | ||
custom-tag: latest | ||
build-strategy: Source | ||
registry: quay.io | ||
registry-org: aicoe | ||
registry-project: summit-2021-octo-keynote | ||
registry-secret: aicoe-pusher-secret |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
[[source]] | ||
url = "https://pypi.org/simple" | ||
verify_ssl = true | ||
name = "pypi" | ||
|
||
[packages] | ||
aicoe-donkeycar = "*" | ||
opencv-python-headless = "*" | ||
tensorflow = "*" | ||
pandas = "*" | ||
imgaug = "0.3.0" | ||
|
||
[dev-packages] | ||
|
||
[requires] | ||
python_version = "3.8" |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
#!/usr/bin/env python3 | ||
""" | ||
Scripts to drive a donkey 2 car | ||
Usage: | ||
manage.py (drive) | ||
Options: | ||
-h --help Show this screen. | ||
""" | ||
import os | ||
import time | ||
|
||
from docopt import docopt | ||
|
||
import donkeycar as dk | ||
|
||
# import parts | ||
from donkeycar.parts.controller import LocalWebController, JoystickController, WebFpv | ||
from donkeycar.parts.throttle_filter import ThrottleFilter | ||
from donkeycar.utils import * | ||
|
||
from socket import gethostname | ||
|
||
|
||
def drive(cfg): | ||
""" | ||
Construct a working robotic vehicle from many parts. | ||
Each part runs as a job in the Vehicle loop, calling either | ||
it's run or run_threaded method depending on the constructor flag `threaded`. | ||
All parts are updated one after another at the framerate given in | ||
cfg.DRIVE_LOOP_HZ assuming each part finishes processing in a timely manner. | ||
Parts may have named outputs and inputs. The framework handles passing named outputs | ||
to parts requesting the same named input. | ||
""" | ||
|
||
# Initialize car | ||
V = dk.vehicle.Vehicle() | ||
|
||
ctr = LocalWebController(port=cfg.WEB_CONTROL_PORT) | ||
V.add( | ||
ctr, | ||
inputs=["cam/image_array", "tub/num_records"], | ||
outputs=["angle", "throttle", "user/mode", "recording"], | ||
threaded=True, | ||
) | ||
|
||
# this throttle filter will allow one tap back for esc reverse | ||
th_filter = ThrottleFilter() | ||
V.add(th_filter, inputs=["throttle"], outputs=["throttle"]) | ||
|
||
drive_train = None | ||
|
||
# Drive train setup | ||
if cfg.DONKEY_GYM or cfg.DRIVE_TRAIN_TYPE == "MOCK": | ||
pass | ||
|
||
elif cfg.DRIVE_TRAIN_TYPE == "SERVO_ESC": | ||
|
||
from donkeycar.parts.actuator import PCA9685, PWMSteering, PWMThrottle | ||
|
||
steering_controller = PCA9685(cfg.STEERING_CHANNEL, cfg.PCA9685_I2C_ADDR, busnum=cfg.PCA9685_I2C_BUSNUM) | ||
steering = PWMSteering( | ||
controller=steering_controller, left_pulse=cfg.STEERING_LEFT_PWM, right_pulse=cfg.STEERING_RIGHT_PWM | ||
) | ||
|
||
throttle_controller = PCA9685(cfg.THROTTLE_CHANNEL, cfg.PCA9685_I2C_ADDR, busnum=cfg.PCA9685_I2C_BUSNUM) | ||
throttle = PWMThrottle( | ||
controller=throttle_controller, | ||
max_pulse=cfg.THROTTLE_FORWARD_PWM, | ||
zero_pulse=cfg.THROTTLE_STOPPED_PWM, | ||
min_pulse=cfg.THROTTLE_REVERSE_PWM, | ||
) | ||
|
||
drive_train = dict() | ||
drive_train["steering"] = steering | ||
drive_train["throttle"] = throttle | ||
|
||
V.add(steering, inputs=["angle"], threaded=True) | ||
V.add(throttle, inputs=["throttle"], threaded=True) | ||
|
||
elif cfg.DRIVE_TRAIN_TYPE == "MM1": | ||
from donkeycar.parts.robohat import RoboHATDriver | ||
|
||
drive_train = RoboHATDriver(cfg) | ||
V.add(drive_train, inputs=["angle", "throttle"]) | ||
|
||
ctr.drive_train = drive_train | ||
ctr.drive_train_type = cfg.DRIVE_TRAIN_TYPE | ||
|
||
class ShowHowTo: | ||
def __init__(self): | ||
print(f"Go to http://{gethostname()}.local:{ctr.port}/calibrate to calibrate ") | ||
|
||
def run(self): | ||
pass | ||
|
||
V.add(ShowHowTo()) | ||
|
||
# run the vehicle for 20 seconds | ||
V.start(rate_hz=cfg.DRIVE_LOOP_HZ, max_loop_count=cfg.MAX_LOOPS) | ||
|
||
|
||
if __name__ == "__main__": | ||
args = docopt(__doc__) | ||
cfg = dk.load_config() | ||
|
||
if args["drive"]: | ||
drive(cfg) |
Oops, something went wrong.