4.6 Железная инфраструктура

В этом параграфе перечислены ключевые компоненты, которые помогают передавать данные с робота в облако. Только с надёжной сетью и быстрыми протоколами коммуникации появляется ценность у свежих данных.

IP

IP (Internet Protocol) — это базовый сетевой протокол, который доставляет пакеты данных от одного устройства к другому через сеть.

IP работает как адресная книга интернета: у каждого пакета есть адрес отправителя и адрес получателя, а маршрутизаторы по пути решают, куда переслать пакет дальше. Протокол не гарантирует доставку, порядок и отсутствие потерь — он просто пытается передать пакет дальше. Надёжность может быть добавлена выше по стеку.

В робототехнике IP особенно важен для связи между бортовым компьютером, сенсорами и внешними машинами. Лидар, камера, Jetson, ноутбук оператора и узлы ROS 2 должны находиться в одной сети или иметь корректные маршруты.

Если IP-адрес, маска подсети или gateway настроены неправильно, а устройство физически подключено кабелем, то система его «не увидит». Если Ethernet-лидар имеет статический адрес 192.168.1.201, то Jetson должен получить адрес из той же подсети, например 192.168.1.10/24.

Интересный факт

В начале 2010-х интернет пережил свой «адресный апокалипсис»: свободные IPv4-адреса начали подходить к концу, и казалось, что без срочного перехода на IPv6 рост сети упрётся в стену.

Крупные компании, провайдеры и производители роутеров начали включать IPv6, где адресов хватит на триллионы триллионов устройств.

Но интернет не рухнул — его временно спасли NAT, переиспользование адресов и рынок старых IPv4-блоков, поэтому переход на IPv6 растянулся не на месяцы, а на десятилетия.

Практика. На Linux текущие IP-адреса интерфейсов смотрят командой ip addr, маршруты — ip route, доступность устройства — ping 192.168.1.201, а путь пакета до узла — traceroute.

Временный статический адрес можно назначить так: sudo ip addr add 192.168.1.10/24 dev eth0. Для роботов удобная схема — зафиксировать адреса сенсоров и бортового компьютера, подписать их в документации проекта и держать все Ethernet-устройства в одной подсети.

Утилита ip входит в iproute2 и используется для просмотра и управления сетевыми интерфейсами, адресами и маршрутами.

Изучить подробнее:

TCP

TCP (Transmission Control Protocol) — транспортный сетевой протокол, который передаёт данные между программами как надёжный упорядоченный поток байтов.

Если IP отвечает за доставку пакетов между устройствами, то TCP отвечает за то, чтобы приложение получило данные целиком, без пропусков и в правильном порядке.

Для этого TCP устанавливает соединение, нумерует байты, ждёт подтверждения получения, повторно отправляет потерянные сегменты и регулирует скорость передачи, чтобы не перегрузить сеть.

В отличие от UDP, TCP не подходит для задач, где минимальная задержка важнее, чем гарантированная доставка, но отлично подходит для команд, логов, файлов, HTTP-запросов, SSH и большинства обычных сетевых сервисов.

Интересный факт

TCP — один из старожилов интернета. Классический стандарт TCP был опубликован в RFC 793 в 1981 году, а обновлённая спецификация RFC 9293 вышла только в 2022 году — спустя 41 год.

При этом сам протокол всё это время развивался через расширения: окна большего размера, timestamps, защиту от переполнения номеров последовательности и алгоритмы контроля перегрузки. Именно поэтому TCP из эпохи ARPANET до сих пор работает в современных дата-центрах, Wi-Fi-сетях и роботах на Jetson.

Практика. На Linux активные TCP-соединения смотрят командой ss -tuna, открытые TCP-порты — ss -tlnp, доступность порта — nc -vz 192.168.1.10 22, а сетевые пакеты — sudo tcpdump -i eth0 tcp.

Для диагностики робота полезно проверять три вещи: открыт ли нужный порт, доходит ли TCP handshake, нет ли повторных передач и резкого роста задержки. ss показывает состояние сокетов, tcpdump позволяет захватывать пакеты, а Wireshark удобно использовать для визуального разбора handshake, ACK и retransmission.

Изучить подробнее:

UDP

UDP (User Datagram Protocol) — транспортный сетевой протокол для быстрой передачи отдельных сообщений.

В отличие от TCP, UDP не устанавливает соединение, не ждёт подтверждений, не восстанавливает потерянные пакеты и не гарантирует порядок доставки.

Он просто добавляет к данным минимальный заголовок с портами отправителя и получателя, длиной пакета и checksum, а дальше передаёт пакет вниз — в IP. Поэтому UDP легче и быстрее TCP, но вся ответственность за потери, повторы, порядок и контроль перегрузки ложится на приложение.

Интересный факт

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

Практика. На Linux UDP-сокеты смотрят командой ss -ulnp, весь UDP-трафик — sudo tcpdump -i eth0 udp, конкретный порт — sudo tcpdump -i eth0 udp port 7400.

Простейший самодельный чат можно сделать, запустив приёмник на одной машине — nc -ul 9999, а на другой — отправить сообщение echo test | nc -u 192.168.1.10 9999. В Wireshark удобно фильтровать пакеты выражением udp, смотреть поля udp.srcport, udp.dstport, udp.length, udp.checksum, а для ROS 2 дополнительно проверять RTPS-трафик и multicast.

Изучить подробнее:

Ethernet

Ethernet — семейство технологий проводной локальной сети.

Протокол передаёт кадры внутри локального сегмента — между компьютером, коммутатором, лидаром, камерой, роутером или бортовым вычислителем.

Если IP отвечает за адресацию между сетями, то Ethernet работает ниже: определяет, как устройства физически и канально обмениваются данными по кабелю или оптике.

В робототехнике Ethernet используют там, где нужен стабильный поток данных: для 3D-лидаров, промышленных камер, Jetson, ноутбука оператора и сетевых хранилищ. Проводное соединение обычно более предсказуемо, чем Wi-Fi: меньше потерь, стабильнее задержка.

Интересный факт

В обычном Ethernet-кабеле 8 медных жил — 4 витые пары. Fast Ethernet 100BASE-TX использует только две пары, а Gigabit Ethernet 1000BASE-T — все четыре.

Поэтому кабель с повреждённой или плохо обжатой парой может работать на 100 Мбит/с, но не поднять 1 Гбит/с.

Практика. На Linux состояние интерфейса смотрят через ip link, адреса — ip addr, маршруты — ip route, скорость и duplex — sudo ethtool eth0.

При диагностике робота сначала проверьте физику: горит ли link LED, целый ли кабель, правильно ли обжаты все 8 жил. Затем проверьте IP-настройки: одна ли подсеть, нет ли конфликта адресов, отвечает ли устройство на ping.

Изучить подробнее:

  • Wireshark User’s Guide — руководство по анализу Ethernet-кадров, ARP, IP и другого сетевого трафика

Мы разобрали, как данные физически доходят от робота до облака. Ethernet передаёт кадры по кабелю. IP находит путь между сетями. TCP гарантирует доставку там, где важна целостность, а UDP отдаёт скорость там, где важна свежесть данных.

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

Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф4.5. Облачная инфраструктура
Следующий параграф5.1. Системное тестирование