JetBot Donkey Car 변경 사항 없음

7574 단어 donkeycarjetbot
이 보도에 관하여
이 글은 AI RC Car Adventcalendar 2019의 7일째 글이다.오늘은 JetBot이 하드웨어 무개조에서 Donkey Car화하는 방법을 써 보겠습니다.
간단하게 돈키카에 대해서.

Donkey Car는 2017년 미국 오클랜드에서 시작한 취미 AI 레이싱 단체DIY ROBOCARS의 입문기로 개발됐다.기체는 기본적으로 RC차를 기반으로 톱니바퀴나 제슨 나노, 카메라, 모터 드라이브를 탑재했다.카메라가 입력한 이미지PilotNet에서 추론하여 밸브와 핸들의 값을 출력하여 모터 드라이버에 주어 주행을 실현한다.
DonkeyCar의 조립 방법과 소프트웨어 설치 방법웹 페이지 정보이 공개됐다.차체 세트는 홍콩Robocar Store과 일본FaBo Store에서 구매할 수 있다.
동키카를 시작하는 것 자체가 그리 어려운 일은 아니지만, 워낙 레이싱 목적이었기 때문에 RC차를 기반으로 속도가 너무 빨라 일본의 집 사정상 주행지 확보가 쉽지 않은 상황이다.나는 평소 돈키카의 원래 차체를 사용하지 않고 제트봇에 돈키카의 소프트웨어를 이식해 즐겼다.
JetBot 정보

JetBot는 맥스웰 세대를 탑재한 GPU TegraX1의 싱글보드 PC'제슨 나노'를 사용해 이미지를 인식할 수 있는 AI 차를 조립하는 프로젝트다.제트봇의 규격은 GiitHub에서 공개합니다.으로, 공개된 문서에 따라 필요한 부품을 구매해 3D 프린트 조립만 하면 AI차를 단순히 제작할 수 있다.조립 세트여러 곳에서 구입할 수 있습니다..
제트봇은 경기 목적이 아니라 속도도 빠르지 않아 좁은 곳에서도 움직일 수 있다.
JetBot Donkey Car
기본적으로 JetBot은 PC와 같은 웹 브라우저에서 Jupter lab을 통해 제어됩니다.이번에는 이 환경을 파괴하지 않기 위해 제때 돈키카로 전환할 수 있게 됐다.
virtualenvwrapper 설치
돈키카 소프트웨어 설치가 기존 환경에 영향을 미치지 않도록 파이톤의 가상 환경을 준비했다.다음 순서에 따라virtualenvwrapper를 설치합니다.
$ sudo apt update
$ sudo apt install python3-virtualenv virtualenvwrapper
$ echo 'export WORKON_HOME=$HOME/.virtualenvs' >> ~/.bashrc
$ mkdir ~/.virtualenvs
$ source ~/.bashrc
Donkey Car는 가상 환경으로 제작
가상 환경을 만들기 위해 'donkey' 라는 이름을 사용한다고 가정하십시오.
$ mkvirtualenv donkey
생성된 가상 환경에 들어가려면workon 명령을 사용하십시오.가상 환경에 들어가면 명령행 프롬프트에 가상 환경 이름이 표시됩니다.
$ workon donkey
(donkey) $
참고로 가상 환경에서 물러나려면 다음과 같은 절차를 밟으세요.
(donkey) $ deactivate
$ 
생성된 가상 환경에 DonkeyCar 소프트웨어 설치
문서의 절차에 따라 2단계부터 설치하십시오.
설치가 완료되면 직접 사용할 DonkeyCar 환경을 만듭니다.
(donkey) $ donkey createcar --path ~/mycar
다리 주위의 제어를 설정하다
표준 돈키카의 발 주변에는 밸브용 모터와 조향용 서보 모터가 있지만, 제트봇의 경우 좌우 DC 모터의 차동에 따라 밸브와 핸들을 제어한다.
Donket Car의 부품 parts/actuator입니다.py에 대체로 이렇게 구성된 모터를 제어하는 TwoWheel Stering Throttle 등급이 준비돼 있어 이를 활용하기로 했다.
우선, AdafluitMotorHAT 패키지를 설치합니다.
(donkey) $ pip install Adafruit-MotorHAT
다음으로 이 패키지를 사용하는 Donkey Car 프로그램에 문제가 있으면 다음과 같이 수정해 주십시오.
diff -ur donkeycar.org/donkeycar/parts/actuator.py donkeycar/donkeycar/parts/ac\
tuator.py
--- donkeycar.org/donkeycar/parts/actuator.py   2019-12-07 22:22:18.438620446 +\
0900
+++ donkeycar/donkeycar/parts/actuator.py       2019-11-24 10:26:04.518697679 +\
0900
@@ -265,9 +265,13 @@
         from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor
         import atexit

-        self.FORWARD = Adafruit_MotorHAT.FORWARD
-        self.BACKWARD = Adafruit_MotorHAT.BACKWARD
-        self.mh = Adafruit_MotorHAT(addr=0x60)
+        #self.FORWARD = Adafruit_MotorHAT.FORWARD
+        #self.BACKWARD = Adafruit_MotorHAT.BACKWARD
+        #self.mh = Adafruit_MotorHAT(addr=0x60)
+        self.FORWARD = Adafruit_MotorHAT.BACKWARD
+        self.BACKWARD = Adafruit_MotorHAT.FORWARD
+        self.RELEASE = Adafruit_MotorHAT.RELEASE
+        self.mh = Adafruit_MotorHAT(i2c_bus=1)

         self.motor = self.mh.getMotor(motor_num)
         self.motor_num = motor_num
@@ -276,6 +280,8 @@
         self.speed = 0
         self.throttle = 0

+    def turn_off_motors(self):
+        self.mh.getMotor(self.motor_num).run(self.RELEASE)

     def run(self, speed):
         '''
@@ -297,7 +303,9 @@


     def shutdown(self):
-        self.mh.getMotor(self.motor_num).run(Adafruit_MotorHAT.RELEASE)
+        #self.mh.getMotor(self.motor_num).run(Adafruit_MotorHAT.RELEASE)
+        self.mh.getMotor(self.motor_num).run(self.RELEASE)
+


 class Maestro:

이어 mycar/manage.py에서 TwoWheel Stering Throttle을 사용한 수정이 이뤄졌다.
@@ -483,6 +483,20 @@
         V.add(left_motor, inputs=['left_motor_speed'])
         V.add(right_motor, inputs=['right_motor_speed'])

+    elif cfg.DRIVE_TRAIN_TYPE == "DC_TWO_WHEEL_AF":
+        from donkeycar.parts.actuator import TwoWheelSteeringThrottle, Adafrui\
t_DCMotor_Hat
+
+        left_motor = Adafruit_DCMotor_Hat(cfg.ADAFRUIT_MOTOR_NUM_LEFT)
+        right_motor = Adafruit_DCMotor_Hat(cfg.ADAFRUIT_MOTOR_NUM_RIGHT)
+        two_wheel_control = TwoWheelSteeringThrottle()
+
+        V.add(two_wheel_control,
+                inputs=['throttle', 'angle'],
+                outputs=['left_motor_speed', 'right_motor_speed'])
+
+        V.add(left_motor, inputs=['left_motor_speed'])
+        V.add(right_motor, inputs=['right_motor_speed'])
+
     elif cfg.DRIVE_TRAIN_TYPE == "SERVO_HBRIDGE_PWM":
         from donkeycar.parts.actuator import ServoBlaster, PWMSteering
         steering_controller = ServoBlaster(cfg.STEERING_CHANNEL) #really pin
이후에는 mycar/myconfig,py에 설치하기만 하면 됩니다.최소한 필요한 설정 항목은 다음과 같다.
CAMERA_TYPE = "CSIC"
DRIVE_TRAIN_TYPE = "DC_TWO_WHEEL_AF"
ADAFRUIT_MOTOR_NUM_LEFT = 1
ADAFRUIT_MOTOR_NUM_RIGHT = 2
끝말
지금까지는 일반적인 Donkey Car와 마찬가지로 사용할 수 있습니다.BATCH~/mycar/myconfig.pySIZE를 기본값의 절반 정도로 설정하면 Jetson Nano의 GPU를 사용해 학습할 수도 있습니다(조금 느리지만).

좋은 웹페이지 즐겨찾기