ROS - управление роботом с помощью контроллера PS3 ч.1

После того, как 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: []"

Робот при этом никуда не повернулся :(

 


Еще раз посмортим граф узлов:


Видно, что появился новый узел, который шлет сообщения в /joint_states. Если посмотреть rostopic echo, то видно, что новые сообщения появляются на фоне сообщений от joint_state_publisher. При этом их частота всего 1 Гц, а у j_s_p 31 и rviz просто не успевает их отработать. Поправить ситуацию может отключение узла j_s_p:

#  rosnode kill /joint_state_publisher 

Обновленный граф:


Теперь все должно работать. Запускаем
rostopic pub еще раз и вуаля:


Робот принял новую позу: все звенья повернулись на 1 радиан. Теперь можно переходить к созданию узла, коорый будет с одной стороны подписан на сообщения от джойстика, а с другой будет публиковать сообщения в топик /joint_states.

Let`s go design!


 


Комментарии