Подглава 12.9.2 launch-файл dynamixel_controllers
Файл dynamixels.launch в каталоге rbx1_dynamixels/launch показывает, как запустить сервоконтроллеры, когда у нас есть контроллер USB2Dynamixel на устройстве /dev/ttyUSB0 и два сервопривода Dynamixel на шине с аппаратными идентификаторами 1 и 2. Давайте взглянем на него сейчас:
Если ваш контроллер USB2Dynamixel находится на устройстве, отличном от /dev/ttyUSB0, и / или ваши идентификаторы сервоприводов отличаются от 1 и 2, отредактируйте этот файл сейчас, прежде чем идти дальше.
launch-файл сначала загружает модель URDF для робота и запускает узел robot_state_publisher для публикации состояния робота в tf. Затем мы запускаем узел controller_manager.py, загружаем файл dynamixels_param.yaml, который мы рассматривали ранее, затем порождает пару совместных контроллеров, по одному для каждого сервопривода.
Следующий запущенный узел называется dynamixel_joint_state_publisher.py и находится в каталоге rbx1_dynamixels/nodes. Он не является частью пакета dynamixel_controllers, но нам необходимо исправить одно несоответствие в том, как пакет публикует совместные состояния. Вместо использования стандартного типа сообщения ROS JointState, который мы ввели ранее, пакет dynamixel_controllers использует пользовательский тип сообщения для публикации состояний шарниров, включая некоторую дополнительную полезную информацию, такую как температура сервопривода. Если вы посмотрите на код узла dynamixel_joint_state_publisher.py, вы увидите, что он просто переиздает пользовательскую информацию о совместном состоянии как стандартное сообщение JointState в теме /joint_states.
Наконец, в launch-файлe запускается узел relax_all_servos.py, находящийся в каталоге rbx1_dynamixels/nodes, который ослабляет крутящий момент на каждом сервоприводе и устанавливает разумный предел скорости и крутящего момента по умолчанию. (Подробнее об этом ниже.)
Last updated