Подглава 12.10.3 Перечисление топиков контроллеров и мониторинг состояния шарниров
Когда dynamixels.launch файла запущен и работает, вызовите другой терминал и перечислите активные топики:
$ rostopic list
Среди перечисленных топиков вы должны увидеть следующие, связанные с dynamixel:
На данный момент мы рассмотрим следующие топики:
Эти два command топика предназначены для установки позиций сервопривода, как мы видели ранее, и мы протестируем их ниже. Топик /joint_states (который на самом деле публикуется нашим вспомогательным узлом dynamixel_joint_state_publisher.py) содержит текущее состояние сервоприводов в виде сообщения JointState. Используйте команду rostopic echo для просмотра сообщений:
$ rostopic echo /joint_states
что должно привести к потоку сообщений, которые выглядят примерно так:
Здесь мы видим заголовок с порядковым номером и меткой времени, frame_id, установленный в base_link, а затем четыре массива для имени, положения, скорости и усилия. Поскольку наши сервоприводы не двигаются, скорости равны 0, а поскольку они не находятся под нагрузкой, усилие (крутящий момент) равно 0.
Пока сообщения все еще идут потоком на экране, попробуйте перемещать сервоприводы вручную. Вы должны немедленно увидеть, что значения положения, скорости и усилия изменяются в соответствии с вашими движениями. Вы также должны видеть движения в RViz.
Возвращаясь к полному списку топиков dynamixel выше, два state топика(топика состояния) контроллера полезны для мониторинга температуры сервопривода и других параметров. Попробуйте просмотреть сообщения в теме Состояние для контроллера head pan:
$ rostopic echo /head_pan_joint/state
Возвращаясь к полному списку топиков dynamixel выше, два state топика(топика состояния) контроллера полезны для мониторинга температуры сервопривода и других параметров. Попробуйте просмотреть сообщения в state топике для контроллера head pan:
$ rostopic echo /head_pan_joint/state
Типичное сообщение выглядит так:
Возможно, самое важное число здесь - это температура сервопривода, указанная в поле motor_temps. Значение 37 градусов довольно типично для покоящегося сервопривода AX-12. Когда температура начинает подниматься примерно до 50 градусов или выше, то, вероятно, неплохой идеей будет дать ему отдохнуть. Чтобы визуально контролировать температуру обоих сервоприводов, вы можете сохранить запущенный график с помощью rqt_plot:
$ rqt_plot /head_pan_joint/state/motor_temps[0], /head_tilt_joint/state/motor_temps[0]
(Мы должны индексировать поля motor_temps, так как пакет dynamixel_controllers использует переменную массива для этого поля, чтобы разместить шарниры, которые используют более одного двигателя.)
Примечание: Если вы видите только одну линию графика на графике rqt_plot, измените внутренний механизм построения графика на PyQtGraph вместо MathPlot, нажав на маленький значок шестеренки настроек в правом верхнем углу окна. По какой-то причине настройка математического графика не масштабируется автоматически, и поэтому линия графика сервопривода с более высокой температурой может быть удалена от верхней части графика.
Поскольку теперь вы знаете топики, содержащие температуру сервоприводов, вы можете подписаться на эти топики в своих скриптах и расслабить сервоприводы или переместить их в нейтральное положение, если температура становится слишком высокой. Более сложный подход использует диагностику ROS, которая рассматривается в Volume 2.
Last updated
Was this helpful?