Witam,
Tu Daniel i zapraszam do części drugiej overview na temat składania Jet Racer od firmy Waveshare.
Instalacja
Proces instalacji przeszedł bez większych problemów używając manuala ze stronki: https://www.waveshare.com/wiki/JetRacer_AI_Kit. Następnie wykonując kolejne kroki w sekcji ‘Guide of DonkeyCar’. Miałem kilka śmiesznych zagadek i chciałbym się z wami nimi podzielić. Jeśli się na takowe natkniecie to oszczędzicie sobie troszkę czasu.
Podczas łączenia się z w Wifi (sudo nmcli device wifi connect <ssid> password <pass>
) miałem błąd:
error: bash: syntax error near unexpected token `newline'
[te <> trzeba usunąć w terminalu bo to placeholder jest tylko, czyli pass bez <> wpisujemy]
Copy + Paste w terminalu jupyter:
- Ctrl + Shift + V robimy wklej
- Shift + RightClick otwieramy okno dialogowe i wybieramy kopiuj
Podczas wykonywania rename oczywiście musimy znaleźć nazwe pliku (w sensie xxx nie zadziała) to jest raczej logiczne, ale wole dodać na wszelki wypadek.
Budowanie OpenCV
Podczas wykonywania cmake także miałem problem z komendą:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/projects/cv2/opencv_contrib/modules \
-D PYTHON_EXECUTABLE=~/env/bin/python3.6 \
-D BUILD_EXAMPLES=ON ../opencv
Usunięcie pliku CMakeCache.txt i uruchomienie bez ../opencv załatwiło sprawę.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/projects/cv2/opencv_contrib/modules \
-D PYTHON_EXECUTABLE=~/env/bin/python3.6 \
-D BUILD_EXAMPLES=ON ..
Źródła:
- https://answers.opencv.org/question/220984/opencv-fails-to-install-on-jetson-nano/
- https://stackoverflow.com/questions/45518317/in-source-builds-are-not-allowed-in-cmake
make -j2
(-j2 oznacza dwa wątki) trochę to potrwa (około 2-3h o ile dobrze pamiętam, a zbyt duża ilość wątków zwiesi Ci cały proces zatem nie dodawał bym więcej)
Musiałem downgradeować picamera
i jeśli u Ciebie wystąpi podobny problem to ja zrobiłem downgrade do 1.12:
sudo pip install picamera==1.12
Kalibracja
Jeśli chodzi o kalibracje to u mnie wygląda to tak:
Calibrate:
530 Center
Left 400
Right 650
donkey calibrate --channel 0 --bus=1
Problem z repo -> W dokumentacji waveshare był dodany nieprawidłowy repo (wysłałem do nich maila, powinno być poprawione do czasu publikacji tego bloga). Należy użyć repo: https://github.com/waveshare/donkeycar. Repozytorium od Waveshare zawiera modyfikacje oficjalnego repo donkeycar tak by działało bez problemów na hardwarze dostarczonym przez Waveshare. (oficialny nie zadziała out of the box niestety).
Koła wariują
Podczas uruchamiania web_control koła same mi wariowały tak jakby mu było zimno 😉
Aby to poprawić wchodzimy do lokalizacji:cd ~/projects/donkeycar/donkeycar/parts/web_controller/templates
nano base.html
Integrity należy usunąć w dwóch miejscach by koła nie wariowały.
Problem z I2C
Należy skonfigurować I2C PCA9685 tutaj:
http://docs.donkeycar.com/guide/create_application/
Problem z rsync
Upewnij się że masz zainstalowane rsync na jetsonie:
sudo apt-get install rsync
Pobieranie zdjęć z jetsona
192.168.1.77
poniżej to IP Twojego Jetsona z wyświetlacza na jetsonie bądź z terminala, więc uwaga.
rsync -rv --partial jetson@192.168.1.77:~/mycar/data/ ~/mycar/data/
Trenowanie modelu
conda activate donkey
python ~/mycar/manage.py train --model ~/mycar/models/mypilot.h5
Wysyłanie modelu z powrotem na jetsona
rsync -rv --partial ~/mycar/models/ jetson@192.168.777.777:~/mycar/models/
Jeśli JetRacer nie jedzie po wytrenowaniu modelu zapewne masz /mycar z repo donkeycar a nie z waveshare (skopiuj ze swojej karty SD folder /mycar na Twojego Ubuntu i nim się wytrenuje bez problemów).
Wiecej pomocy!
Jeśli mimo to będą jakieś problemy to znajdziecie mnie (a także wielu innych pomocnych duszków) na discord:
https://www.donkeycar.com/community.html
Obraz od Supportu Waveshare service@waveshare.com
(nie próbowałem ale zakładam, że działa):
https://onedrive.live.com/?authkey=%21AOrBIyT5wWey3eU&id=807979134EB82134%21371247&cid=807979134EB82134
Robienie własnego obrazu podłączając kartę SD do PC (Ubuntu):
sudo dd bs=4M if=/dev/sdb of=jetcard_image.img status=progress
zip jetcard_image.zip jetcard_image.img
Source: https://github.com/NVIDIA-AI-IOT/jetcard
Efekt Końcowy
Podsumowanie
Trochę zabawy z tym było, ale dzięki temu poznałem ciekawych i bardzo pomocnych ludzi na Discordzie a co najważniejsze udało mi się wredzcie go uruchomić 🙂
Mam nadzieje, że dzięki temu krótkiemu wpisowi oszczędze komuś troszkę czasu i troche ułatwię zabawę.
PS. Taka mała auto-reklama -> znajdziesz mnie na Medium pod adresem:
https://medium.com/@danielszulc (postaram się coś tam wrzcić od czasu do czasu)
Hi, very nice blog. I am waiting on my JetRacer to arrive and I came across your blog. Just a little confused however, you are building a JetRacer but you say to refer to the 'Guide of DonkeyCar’ isn’t JetRacer and DonkeyCar two different cars? If we just follow the 'JetRacer AI Kit’ by Waveshare shouldn’t that be enough to be able to run the examples on the Jupyter Lab successfully?
Karol here (not author of this post)
If you go to official JetRacer docs https://www.waveshare.com/wiki/JetRacer_AI_Kit you will find **Section 3 Guide of DonkeyCar**
– JetRacer is based on DonkeyCar
– I think of JetRacer as *a DonkeyCar* (not **The DonkeyCar**) – you buy everything, assembly and you have a *DonkeyCar* ready
Dobra robota 🙂