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