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

Итак, как переделать rc-car для управления через интернет? Да и еще «чтобы видео смотреть»?

Железо


Про типы rc-car есть хорошая статья.
Машинка, из тех, что имелись в наличии, скорее подходит под определение «buggy»:



Силовой элемент — электромотор.

Пульт управления — стандартный для такого типа игрушек:



И первый вопрос был: как отвязать машинку от пульта?

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

Но это не наш путь. Если «врач сказал ломать, значить — ломать». Поэтому rc-car подверглась радикальной переделке.

Шутки шутками, но в сети попадались проекты, где именно через дублирование сигналов было реализовано управление. Однако, у автора в руках на тот момент были только «молоток и гвозди».

Так как ранее имелась практика работы с raspberry pi, то именно она и легла в основу управления rc-car. К тому же, решился вопрос, как установить камеру видеонаблюдения для трансляции видео.

При изучении устройства машинки, было установлено, что она общается с пультом управления через так называемый драйвер (да простят меня любители rc-car за названия). Если выломать этот драйвер из машинки, и заменить его на что-то другое, то вопрос с управлением будет решен. Наверно.

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


*фото для наглядности что есть что взято из ранее упомянутой статьи.

Еще одна проблема — достаточно малые размеры машинки, чтобы в ней можно было разместить что-то массивное.

Итак, учитывая все вышеизложенное, raspberry pi стала сердцем управления машинкой, драйвер был заменен на другой драйвер — bts7960, которому по силам было выдержать те немалые токи, которые гуляют в rc-car при разгоне и движении.

Управление сервой было отдано ногам raspberry pi (сигнальный провод), а питание сервы (5V) через dc-dc преобразователь от бортового блока питания. Питание сервы напрямую от ног raspberry, последняя не пережила бы.

Камера




Была взята стандартная шлейфовая ov5647 noir, так как обычная камера raspberry pi даже в сумерках уже ничего не видит. Да и noir, тоже ничего не видит. Лучше брать imx462 sony. У нее все же «отношение к темноте» лучше (WDR).

Как выяснилось в дальнейшем, при эксплуатации неплохо бы еще иметь какое-то подобие gimbal, чтобы минимизировать тряску при движении. Но это уже «вкусовщина».

Питание


Так как питание от батарей машинки (литий-полимерный аккумулятор) для целей raspberry pi вызывало опасения, да и в целях оперативной смены самих батарей машины без необходимости отключения по питанию одноплатника, было решено запитать логику отдельно от двигателя.
Ups-hat для raspberry pi относительно дорогие, хотя и удобные, тем не менее были выбраны обычные держатели батарей 18650 с защитой, по типу таких:


Модем




4g модем выбирался из числа usb стиков для экономии пространства. Немаловажным фактором, повлиявшим на выбор, являлось наличие внешних антенн связи. Данные антенны «по идее» должны крепиться к usb модему. Но, как выяснилось в дальнейшем, это практически не реализуемо для машинки. Видимо, создатели usb-стика c внешними антеннами ориентировались на то, что сам модем будет надежно закреплен, от него очень аккуратно будут отходить две антенны в комплекте и в дальнейшем всю эту конструкцию никто не будет трогать. Иначе нельзя объяснить столь хлипкое крепление антенн на корпусе модема.

Что-то еще


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



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

Комментарии (14)


  1. NetBUG
    02.09.2024 11:43
    +1

    Поставлю плюс, но хочу порекламировать

    • немного селфдрайвинга https://github.com/fubarlabs/foocars

    • свой опыт изготовления масси с минимизацией покупных компонентов (только подшипники, болты и двигло) https://github.com/fablab77/printed-car-chassis/tree/v1


    1. zoldaten Автор
      02.09.2024 11:43
      +1

      Если не ошибаюсь, то видел ваш проект. Но там teensy, которую и раньше не просто было достать и tensorflow 1x версий.
      Возможно, он (проект) уже шагнул дальше. А так - задел большой!


      1. NetBUG
        02.09.2024 11:43

        В опубликованном – да.
        foocars я не мейнтейню, но сделать форк на TF2 / pytorch можно (и даже нужно).

        С Teensy без проблем можно перейти на атмегу32 (опубликую, оно уже готово) или BluePill (с кодом чуть поаккуратнее нужно будет быть). К счастью, оно всё в Platformio давно, и никуда там не упирается в ресурсы

        Задел кое-какой есть, но проект принципиально учебный (одна моделька между камерой и управляющими командами Speed/Turn). В реальном селфдрайвинге всегда архитектурный ад разводят, будь то ROS, TCS-AD или что-то менее публичное. Но оно позволяет ряд ситуаций отработать по жёсткой логике, а остальное – предсказуемо изолированно обучать.


  1. buldo
    02.09.2024 11:43

    У вас на фото стрелочка "драйвер" указывает на ESC, который к управлению сервой вообще не имеет отношения


    1. zoldaten Автор
      02.09.2024 11:43

      с чего вы взяли, что не имеет отношения ? вот провод от драйвера (esc) на серву.


      1. buldo
        02.09.2024 11:43

        Этот провод идёт на приёмник. Питает его и серву. И сигнал с приёмника идёт по этому же проводу на esc


      1. buldo
        02.09.2024 11:43

        А, кажется я понял. На фото с подписью не ваша машина. Там видно ESC, приёмник и серву. На вашей машине мог быть ESC совмещённый с приёмником. Ну и bts7960 не смог бы управлять двигателям с того фото.


  1. buldo
    02.09.2024 11:43

    И главный вопрос. У вас получилось нормально ездить на ней? Такие машинки медленно не ездят. А у вас тормозная камера и тормозной энкодер, которые сами по себе дают задержку около 50мс...


    1. zoldaten Автор
      02.09.2024 11:43

      Нормально ездить получилось, но есть нюанс. Камера, не высокоскоростная, это факт. А что про энкодер вы имели в виду ?


      1. buldo
        02.09.2024 11:43

        Обычно в таких системах измеряется время glass to glass - от момента начала сканирования матрицы до вывода полного кадра или первого пикселя.

        Выбранная вами камера медленно сканирует и отдаёт картинку. А HW видео энкодер во всех raspberry до жути медленно кодирует каждый кадр. То есть он успевает реалтаймово кодировать, но это слишком долго и вносит существенную задержку


  1. vagon333
    02.09.2024 11:43

    Интересуюсь для личных задач: хорошо бы иметь удаленное управление машинки типа Go-Getter, "пойди-принеси" на разные задачи.

    Вопрос к размерам и ходовой: почему использовали маленький размер корпуса и ходовой? Ведь, если нужно полностью автономное управление, это ненадежная конструкция. Перевернулся и все.

    Насчет автономности: были ли мысли добавить зарядное устройство для подзарядки батарей? Типа как на автономных пылесосах.

    Насчет удаленного управления: использовать симку накладно.
    А что если врезаться в ближайший Wi-Fi?
    https://habr.com/ru/articles/814495/


    1. zoldaten Автор
      02.09.2024 11:43

      Нет, конструкция не подразумевает полностью автономное управление.
      Мысли добавить зарядное устройство были, но размер солнечной панели не устроил. Да и цели не те.
      Про симку постараюсь во второй части не забыть.
      За врезаться в ближайший wifi по ссылке в статье, если он к тому же чужой, можно получить а-та-та.


    1. buldo
      02.09.2024 11:43

      Вам надо связку ardurower + ros. Там и поддержка лидаров и всякого разного есть


  1. Klochko
    02.09.2024 11:43

    Сразу оговорюсь: я не настоящий механик.

    Но позволю вставить свою 5 копеек. Как по мне, одноплатник (почти любой подходящий) стоит довольно дорого. И в то же время весьма тормознутые они. Я бы взял какой-то Android-смартфон. Здесь на борту уже и более менее вменяемая камера, модем и GPS. И стоимость такого на вторичном рынке близка к стоимости одноплатников, даже б/у. А по производительности и функциональности они существенно лучше.

    Связь с машинкой можно организовать как по Bluetooth, так и по надежнее, используя USB-OTG.

    Возможно я ошибаюсь, но в целом не сильно сложно захватить поток с камеры и выдать наружу по rtmp. Да хоть в Zoom или напрямую на YouTube/Rutube. Попутно по WebSocket туда/обратно гонять пакеты с координатами, управлением, скоростью, зарядом батареи и т.п

    Для работы с USB я бы выбрал что-то типа STM32F103 (F401?), у этих камней и производительности за глаза и аппаратный USB с поддержкой Custom HID. Это чуть ли не единственный довольно простой способ обмена по USB в плане разработки ПО для камня и для Android.

    Бонусом можно получить даже обе камеры (основную и фронтальную) и видеть, что происходит за машинкой. Мало ли кому в голову взбредет за ней погнаться или что-то сделать. Или те же животное часто не здоровый интерес проявляют к такого рода объектам.

    Возможно смартфон можно и раздеть (по типу как делают т.н naked GoPro) и тогда все это дело будет к тому же компактным.