4.1.1 Узлы robot_state_publisher и joint_state_publisher.
Давайте посмотрим на файл запуска, который мы использовали выше, box_robot_base_only.launch:
<launch>
<!-- Load the URDF/Xacro model of our robot -->
<arg name="urdf_file" default="$(find xacro)/xacro.py '$(find
rbx2_description)/urdf/box_robot/box_robot_base_only.urdf.xacro'" />
<param name="robot_description" command="$(arg urdf_file)" />
<!-- Publish the robot state -->
<node name="robot_state_publisher" pkg="robot_state_publisher"
type="state_publisher">
<param name="publish_frequency" value="20.0"/>
</node>
<!-- Provide simulated control of the robot joint angles --> name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="use_gui" value="True" />
<param name="rate" value="20.0"/>
</node>
</launch>
Строка рядом с верхними точками указывает на файл URDF / Xacro нашего робота, а строка загружает этот файл на сервер параметров ROS в качестве параметра с именем robot_description. Фактически, вы можете просмотреть XML загруженной модели, используя команду:
$ rosparam get /robot_description
хотя, как правило, в этом нет необходимости, за исключением, возможно, во время отладки, чтобы убедиться, что параметр установлен.
Следующие несколько строк в файле запуска выводят узел robot_state_publisher. Этот узел считывает геометрию, определенную в модели робота, и публикует набор преобразований, составляющих дерево tf робота. Без этого дерева с роботом можно было бы сделать совсем немного, включая навигацию, трехмерное зрение или управление рукой.
Следующий набор строк запускает узел joint_state_publisher. Этот необязательный узел используется в основном при тестировании модели URDF в RViz, как мы делаем сейчас. Запуск узла с параметром use_gui, установленным в True, вызывает окно управления ползунком, которое мы видели ранее для установки позиций любых подвижных соединений, определенных в модели робота. На данный момент у нас есть только два колесных шарнира, но когда мы добавим многослойный рычаг позже в этой главе, мы сможем также настроить его конфигурацию.
ПРИМЕЧАНИЕ. Когда соединения робота находятся под контролем фактического аппаратного драйвера, узел joint_state_publisher больше не используется, и фактически он будет конфликтовать с реальными позициями соединения, публикуемыми драйвером.
Last updated
Was this helpful?