Новости Self Driving Cars (SDC) вокруг нас, и скоро (в следующие 2–5 лет) мы увидим много SDC на дорогах, и они будут нас водить!

Почти каждый день мы видим объявления об установленных (автомобильных) компаниях или стартапах, которые начали работать над технологиями, связанными с SDC.

Хотя есть общедоступные исследования в области робототехники и проекты с открытым исходным кодом, такие как Robotics Operating System (робототехника ROS в целом) и Autoware (специально для SDC), все еще существует потребность в привлечении большего количества людей и проведении исследований, разработок и испытаний. в этой области, чтобы обеспечить безопасное использование SDC на дорогах в ближайшие несколько лет.

Кроме того, участие в разработке SDC для ОС - это очень хороший способ узнать об автономной мобильной робототехнике (очень важная область робототехники для нашей будущей мобильности и возможностей персональных помощников «роботов»). SDC - это просто открытый автономный робот с людьми на борту и вокруг , и используемые здесь технологии могут применяться во многих других случаях в ограниченных или неограниченных средах.

Это продолжение моего (быстрого) глубокого погружения в разработку SDC с открытым исходным кодом (ОС) SDC От 0 до 60 (*) за 4 недели в рамках задач Udacity OS SDC (которые я опубликовал неделю назад), я предлагаю вы сначала прочтите его, чтобы понять, что значит разработка OS SDC.

Надеюсь, я вас уже убедил :-) Итак, приступим.

В следующие несколько недель я покажу вам, как получить результаты, представленные в статье о глубоком погружении, и многое другое. Ниже приводится первая часть этой серии, посвященной подготовке среды разработки и ее тестированию на готовность.

Прежде всего, вот несколько необходимых вещей, чтобы обеспечить плавную езду «SDC»:

  • компьютер, предпочтительно недавний (Linux) настольный компьютер с графическим процессором Nvidia (требуется для глубокого обучения и 3D-симуляторов) с вычислительными возможностями ›3, например, моя текущая конфигурация машины - это , и это скоро будет принадлежать моему сыну машина для глубоких игр / обучения / виртуальной реальности с частичным финансированием раунда A :-)
  • немного опыта в Linux, так как большинство программного обеспечения для робототехники работает только / лучше всего на Linux
  • немного опыта Python, так как он часто используется в робототехнике и искусственном интеллекте / машинном обучении (ML) и особенно для создания глубоких нейронных сетей (DNN)
  • и много любопытства, терпения и настойчивости (для достижения хороших результатов)

За последние 5 недель я рекомендовал и помог людям использовать Docker, это самый простой способ начать работу и содержать вашу хост-машину в чистоте, пробуя много программного обеспечения в контейнерах докеров, в некоторых случаях это единственный способ запустить необходимое программное обеспечение (из-за разной зависимости от ОС).

Установите Docker, следуя инструкциям здесь:

Https://docs.docker.com/engine/installation/linux/ubuntulinux/

Установите nvidia-docker (только в Linux, это даст вам ускорение графического процессора в контейнерах Docker) отсюда:

Https://github.com/NVIDIA/nvidia-docker

Большинство приведенных ниже инструкций будут нацелены на хост Ubuntu 16.04 и использовать nvidia-docker, если у вас нет хоста Linux, вы все равно можете установить Docker и использовать инструкции в Windows и OSX, но вы можете столкнуться с некоторыми проблемами, в том числе с графическим процессором. ускорение не будет работать в Windows и OSX, поэтому обучение моделей DNN на ЦП может занять несколько дней, в то время как графический процессор может сделать это за часы.

Инструкции по установке Docker для Windows и OSX доступны здесь:

Https://docs.docker.com/docker-for-windows/
https://docs.docker.com/docker-for-mac/

Теперь, когда у нас установлены Docker и nvidia-docker (это только в Linux), мы можем продолжить и вытащить мой образ Docker, который содержит много программного обеспечения, готового к использованию для разработки OS SDC, убедитесь, что у вас есть как минимум 20- 30 ГБ доступно в корневой файловой системе (проверьте в Терминале с помощью df /), так как образ докера составляет около 17 ГБ без сжатия (размер сжатого / загружаемого файла составляет 8 ГБ), и вам понадобится (много) места также для наборов данных (которые довольно большие), затем запустите в Терминале:

Докер тянуть gtarobotics / udacity-sdc

Пока он загружается, давайте получим код, который нам понадобится позже, откроем новый Терминал и запустим эти команды, чтобы получить мой проект беспилотный автомобиль с GitHub:

mkdir ~/sharefolder
cd ~/sharefolder/
git clone https://github.com/gtarobotics/self-driving-car
cd self-driving-car
chmod 755 *.sh

Через 5–15 минут, в зависимости от вашего подключения к Интернету, образ Docker должен быть извлечен / загружен и готов к использованию.

Теперь мы можем запустить образ Docker, запустив один из этих скриптов.

В режиме графического процессора:

./run_nvidia_docker-sdc-ros-gpu.sh

или режим ЦП:

./run_nvidia_docker-sdc-ros-cpu.sh

В Mac OSX вместо этого запустите этот сценарий:

./run_docker_sdc_ros_cpu-on-OSX.sh

На этом этапе мы должны увидеть приглашение консоли контейнера Docker, и мы должны работать как root (пока вы можете игнорировать сообщения vnc, которые мы получим позже, вы также можете выполнить CRTL-C, чтобы остановить noVNC).

Сначала давайте быстро проверим, работает ли ускорение графического процессора, выполнив следующую команду:

./run_quick_benchmark.sh

Если вы видите такой вывод:

Шаг 400 (эпоха 0,47), 5,1 мс
Потеря мини-пакета: 3,217, скорость обучения: 0,010000
Ошибка мини-пакета: 9,4%
Ошибка проверки: 2,8%

Чем у вас довольно хороший графический процессор, и он используется правильно, если время шага превышает 15 мс, у вас, вероятно, более старый графический процессор с меньшим количеством ядер CUDA, меньшим объемом памяти и более низкой рабочей частотой, если вы видите значения более 100 мс, вы, вероятно, работаете в ЦП, потому что у вас нет поддерживаемого графического процессора и вы запустили докер с помощью сценария ЦП.

Давайте попробуем еще один быстрый тест, чтобы увидеть, работает ли UI / OpenCV, выполнив следующие команды:

cd ~ / sharefolder
curl https://archive.org/download/NASA_Launchpad_MSL_HD/NASA_Launchpad_MSL_HD.mp4 -o NASA_Launchpad_MSL_HD.mp4 -L
python3 самоуправляемый автомобиль / docker-instance-scripts / test_opencv. py -v NASA_Launchpad_MSL_HD.mp4

Вы должны увидеть такое окно, и видео будет воспроизводиться в серой шкале (с большей скоростью, чем обычно):

На данный момент мы знаем, что python3, Tensorflow с ускорением графического процессора (или без него) и OpenCV работают, поэтому мы готовы пойти дальше, чтобы загрузить наборы данных и проанализировать их.

Продолжение следует …