Проиллюстрировал этот пост автомобилем из лего, потому что заставить робота двигаться так же просто, как собрать автомобиль из лего. Установка не требуется, так как автомобиль управляется прямо из браузера. Подключи Wi-Fi и вперед! Программирование на Python, но не беспокойтесь, если вы никогда не использовали его раньше.

NVIDIA приложила усилия, чтобы их робот Jetbot очень легко начал работать. Он будет запускаться из браузера, поэтому не нужно ничего устанавливать. Ура! Jetbot поставляется с предварительно прошитой картой памяти. Вы можете загружать в него другие проекты позже, но теперь вы можете делать это. Чтобы ваш браузер мог подключиться к машине, оба они должны использовать один и тот же беспроводной интернет. Нам понадобится экран, клавиатура и мышь, чтобы подключить их.

  1. Подключение к WiFi
  2. Настройка блока питания
  3. Использование Юпитера
  4. Супер простой Python 101

1. Подключение к Wi-Fi

Используйте порты USB для подключения мыши и клавиатуры. Используйте hdmi или displayport для подключения экрана, в зависимости от используемого кабеля. Машина работает под управлением Ubuntu в качестве операционной системы. Наличие немного терпения является плюсом, так как иногда запуск машины занимает много времени. Но если долгое время ничего не происходит, вы можете перезагрузить автомобиль, отсоединив шнуры питания (они легче отрываются от повербанка) и снова подключив их. Сделайте то же самое, если через некоторое время машина не переводит вас с экрана с логотипом Nvidia на рабочий стол.

Подключите робота к тому же Wi-Fi, который вы используете на своем компьютере. Вы можете найти параметры Wi-Fi в правом верхнем углу. Обратите внимание, что компьютер предполагает, что вы используете английскую клавиатуру, которая на самом деле может отличаться от той, которую вы используете. Если вам нужна помощь в поиске ключей, вы можете проверить, где они находятся, здесь!

Как только подключение к Интернету установлено, вы можете загрузить машину, выключив Ubuntu. Отключите клавиатуру, экран и мышь, они нам больше не нужны.

С этого момента машина будет подключаться к WiFi по умолчанию и, самое главное, показывать свой IP-адрес на маленьком экране.

Это то, что нам нужно для подключения к роботу. Напишите следующий адрес в поле URL вашего браузера:

http://<jetbot_ip_address>:8888
В нашем случае это http://192.168.2.15:8888

Браузер открывает страницу Jupyter, на которой нужно войти, используя пароль jetbot.

2. Настройка блока питания

Jetbot может передвигаться с помощью внешнего аккумулятора, но для обучения нейронной сети ему требуется больше электроэнергии. Итак, нам нужно настроить блок питания. После входа в Jupyter вы увидите Launcher. Нажмите Терминал.

Блок питания подает электричество через порт мини-usb, который является режимом питания номер 1 или для краткости «m1». Напишите команду sudo nvpmodel -m1. Это вызовет запрос пароля, который является тем же «jetbot», что и раньше.

jetbot@jetbot:~$ sudo nvpmodel -m1
[sudo] password for jetbot: jetbot

Вы можете проверить состояние своей машины с помощью команды sudo nvpmodel -q . Вот к чему мы стремимся:

jetbot@jetbot:~$ sudo nvpmodel -q
NVPM WARN: fan mode is not set!
NV Power Mode: 5W
1
jetbot@jetbot:~$

Над Jetson Nano можно прикрепить вентилятор, но он нам не понадобится. Но это то, о чем предупреждение, наш вентилятор не включен.

При обучении нейронной сети Jetson Nano требуется больше электроэнергии. Подключите трансформатор на 5 вольт и 3 ампера к левой стороне компьютера. Хотя, как видно из рисунка ниже, 4,5 В достаточно. Этот режим мощности имеет номер 0 или «m0».

Настройте источник питания с помощью:

jetbot@jetbot:~$ sudo nvpmodel -m0
[sudo] password for jetbot: jetbot

Когда обучение будет завершено и вы начнете управлять Jetbot, не забудьте изменить режим мощности с нуля на единицу.

3. Использование Юпитера

Jupyter — это проект с открытым исходным кодом, который поддерживает интерактивную науку о данных. Как следует из названия, он основан на проекте Python, который мы также будем использовать. Если вы никогда раньше не использовали Python, вам не о чем беспокоиться. Вам будет хорошо.

Jupyter использует блокноты, которые представляют собой тип файла. Давайте начнем с открытия блокнота basic_motion, чтобы мы могли начать двигать машину.

Кстати, если вы в какой-то момент «потеряете» записные книжки, просто нажмите на значок папки слева. Он снова покажет файлы.

И, как говорится в этой записной книжке, это сочетание текста, кода и графического интерфейса в одном. Вы не можете редактировать текстовые части (зачем?), но вы можете редактировать код и запускать его из того же файла. Вам никогда не придется создавать код самостоятельно.

Код уже находится на компьютере, потому что этот блокнот Jupyter находится на компьютере. Это не означает, что процессы продолжались. Вот почему вам нужно активировать и запустить их через блокнот.

Имейте в виду, что код часто пишется для выполнения сверху вниз. Как и в первом случае, вы инициализируете переменную, а затем можете ее вызывать. Тот же принцип работает и с нашим Jetbot. Если вы используете переменную для ее перемещения, автомобиль должен знать, что переменная существует.

И точно так же, как в тексте говорится, что для запуска строки кода вам нужно выделить ее, щелкнув строку, а затем либо нажав play, либо клавиши ctrl + enter.

В левом нижнем углу видно, готова ли машина к приему новых команд. Idle ожидает новых входных данных, а busy уже что-то делает. Но если у вас неизвестно или нет ядра, соединение не удалось, и вам следует перезагрузить компьютер.

Первые две строки кода только подготавливают Jetbot к движению, а третья строка должна заставить машину развернуться.

Если у вашего автомобиля проблемы с движением, убедитесь, что он стоит на ровной поверхности. Обработанный деревенский стол в нашем офисе слишком неровный, а ковер слишком скользкий под колесами. Вот почему автомобили нашей мастерской будут ездить по картонным дорогам.

Наш Jetbot должен двигаться так, чтобы камера была впереди, а батарея торчала сзади. Если автомобиль движется не в правильном направлении, вы можете изменить значения оборотов двигателей на отрицательные, добавив «-» перед ними.

Когда вы вносите изменения в код записной книжки, они сохраняются, и вы найдете их при следующем открытии соответствующей записной книжки. Иногда теряется связь с автомобилем и сохранить изменения не получится. Тогда вам следует просто перезагрузить машину и начать заново.

4. Супер простой Python 101

Язык программирования, относящийся к Монти Пайтону, а не к настоящим змеям. Бесполезный лакомый кусочек, который может говорить за логику создателей. Иногда описывается как действенный псевдокод, потому что похоже, что кто-то пытался превратить естественный язык в код.

  • Sleep() не останавливает машину. Вместо этого sleep() сообщает программе, сколько ждать до перехода к следующей строке. В примере робот повернет налево со скоростью 0,3 и продолжит это делать, пока программа остается на месте в течение 0,5 секунды. И только тогда он остановится, когда дойдет до команды stop().
  • # начинает знак одобрения. Это строка в коде, описывающая только то, что делают другие строки кода.
  • Отступы имеют значение. Python – это один из языков программирования, в котором содержимое определяется так, как если бы оно было помещено в невидимую таблицу. Ниже пример Python с отступом. Функция handle_heartbeat_status(change) определена, и все строки с отступом после двоеточия являются частью этого определения. В определение также включено предложение if, в котором все с отступом еще раз является частью определения if. Под определением функции у нас есть строка без отступа, которая находится за пределами определения функции. (Есть также разрыв строки, чтобы добавить ясности, но разница заключается в отсутствии отступа.)

И это все, что вам нужно знать, чтобы начать! Вы встретите и более сложный код, но сопроводительный текст объяснит, что он делает.

У Jetbot есть пять ноутбуков, с которыми вы можете попробовать и поэкспериментировать:

  • Основное движение заставляет робота двигаться
  • Предотвращение столкновений используется, чтобы научить Jetbot избегать столкновений.
  • Слежение за объектом учит Jetbot следовать за определенным объектом.
  • Следование по дороге учит Jetbot следовать по линии.
  • Телеуправление Позволяет вам управлять Jetbot с помощью пульта дистанционного управления — для этого вам понадобится контроллер.

Если вы хотите проверить код Jetbot, вы можете найти блокноты на GitHub NVIDIA.

В следующем посте мы посмотрим, как наша мастерская ИИ научила автомобили.