После того, как PS3 контроллер заработал с turtlesim, пора возвращаться к импортированному роботу и поуправлять им.
В начале имеет смысл посмотреть топики и сообщения, с помощью которых робот управляется узлом joint_state_publisher. Для этого запускаем робот командой:
# roslaunch urdf_test display.launch
Граф узлов и топиков выводится командой:
# rosrun rqt_graph rqt_graph
Должно получиться что-то подобное
Итак, узел joint_state_publisher отправляет сообщения в топике joint_states. Посмотреть данные, которые в нем передается, можно с помощью rostopic:
# rostopic echo /joint_states
Тип сообщений выдает rostype:
# rostopic type /joint_states
Это - sensor_msgs/JointState.
Для вывода формата сообщения существует rosmsg:
# rosmsg show sensor_msgs/JointState
Получаем следующую информацию:
std_msgs/Header header
uint32 seq
time stamp
string frame_id
string[] name
float64[] position
float64[] velocity
float64[] effort
Теперь можно попытаться выставить положение вручную из консоли с помощью rostopic pub. При этом нужно помнить, что углы поворота звеньев задаются в радианах. Повернем все звенья на 1 радиан:
# rostopic pub -r 1 /joint_states sensor_msgs/JointState "header:
seq: 1
stamp: now
frame_id: ''
name: [joint_1, joint_2, joint_3]
position: [1.0, 1.0, 1.0]
velocity: []
effort: []"
Робот при этом никуда не повернулся :(
Еще раз посмортим граф узлов:
# rosnode kill /joint_state_publisher
Обновленный граф:
Теперь все должно работать. Запускаем rostopic pub еще раз и вуаля:
Робот принял новую позу: все звенья повернулись на 1 радиан. Теперь можно переходить к созданию узла, коорый будет с одной стороны подписан на сообщения от джойстика, а с другой будет публиковать сообщения в топик /joint_states.
Let`s go design!
Комментарии
Отправить комментарий