Сначала мы храним размеры Kinect в нескольких свойствах, разделяющих три части: основание, опорный столб и корпус камеры.
Далее мы определяем коробчатое соединение для базы камеры и соединение, соединяющее ее с родительской ссылкой (это будет туловище, как мы увидим в следующем разделе). Обратите внимание, как мы используем переменную ${name} вместо фиксированной строки <camera> для префикса имени ссылки и сустава. Это позволяет нам при желании присоединить более одной камеры и дать каждой камере свое имя, которое затем будет распространяться через ее набор ссылок и суставов.
Здесь процесс строительства продолжается, так как мы прикрепляем цилиндрический столб к основанию камеры внизу и корпус камеры в верхней части.
Остальная часть файла URDF/Xacro определяет связь между различными оптическими и глубинными кадрами камеры. Смещения были скопированы из "официального" файла URDF Kinect, найденного в пакете Turtlebot_description. Например, соотношение между корпусом камеры (camera_link frame) и кадром глубины задается блоком:
Здесь мы видим, что рамка глубины смещена сбоку от центра корпуса камеры на 1.25 см. Это отношение, как и другие, указанные в файле камеры, позволяют издателю robot_state_publisher включать в tf-дерево различные эталонные рамки камер. Это, в свою очередь, соединяет кадры камеры с остальной частью робота, что позволяет роботу просматривать объект в глубинной рамке, но знать, где он находится относительно базы робота (например). Все сложные преобразования кадра выполняются для вас ROS благодаря библиотеке tf.