Решения комплексных задач робототехники, например SLAM, требует введения в состав робототехнической платформы вычислительного устройства ( Intel Nuc, Edison, Joule, Raspberry Pi, nanoX-BT и тд ) на котором выполняется основная программа управления. Помимо решения главной алгоритмической задачи, система управления должна производить обмен данными с периферийными узлами для считывания показаний датчиков и задания команд изменения пространственного положения исполнительным механизмам.
В большинстве вычислителей общего назначения отсутствуют аппаратные средства обмена данными для использования совместно с промышленными интерфейсами ( RS-485/422/232, CAN ) с применением которых, традиционно, строится архитектура объединяющая электронные узлы робототехнической системы. Разработчик вынужден вводит дополнительные аппаратные средства преобразования интерфейсов ( USB-RS485, USB-CAN ) подключаемые к основному вычислителю с применением наиболее распространенного последовательного интерфейса — USB.
При подключение нескольких подобных устройств операционная система Linux идентифицирует и нумерует их автоматически.
При этом, каждый перезапуск системы изменяет последовательность идентификации и нумерации устройств. Существует необходимость в наделения уникальными идентификаторами подключаемые устройства для дальнейшего использования в программах управления. Это позволит избежать постоянных проблем со сменой идентификаторов. Присвоит визуально понятные для пользователя имена каждому устройству.
USB-serial устройство имеет Vendor ID и Product ID которые возможно выяснить с использованием команды lsusb.
К сожалению, при использовании в конструкции адаптера одной и той же микросхемы преобразования интерфейсов ( CP2103, FTDI ) у подключенных устройств данный параметр будет совпадать и нельзя достоверно определить его принадлежность. Соответственно необходимо найти другой уникальный идентификатор устройства.
Одним из способов поиска уникального идентификатора является использование инструмента udevadm, например:
udevadm info -a -n /dev/ttyUSB1 | grep '{serial}'
После того, как будет найден уникальный идентификатор необходимо создать udev правило, наделяющее понятными символьными именами устройства.
Необходимо создать файл в директории /etc/udev/rules.d, например 27-usb-serial.rules и разместить следующие строки внутри:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTG5E7WD", SYMLINK+="robot_main_bus" SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTH9NILS", SYMLINK+="robot_sensors"
Теперь каждый преобразователь интерфейсов имеет уникальное имя, которое может использоваться при написание программного обеспечения и не зависит от очередности подключения устройств в системе.