參考:blog.csdn.net/hcx25909/article/details/9042469
羅技F710無線控制手柄ROS下使用說明
-
安裝手柄相關的包和驅動
sudo apt-get install ros-indigo-joy(ROS相關項,Jetson TK1只安裝這一個)
sudo apt-get install ros-indigo-joystick-drivers
rosdep install joy
rosmake joy
備注:直接rosdep install joy時提示錯誤:
wang@wang-Rev-1-0:~$ rosdep install joy
ERROR: Rosdep cannot find all required resources to answer your query
Missing resource joy
ROS path [0]=/opt/ros/indigo/share/ros
ROS path [1]=/home/wang/bzrobot_ws/src
ROS path [2]=/opt/ros/indigo/share
ROS path [3]=/opt/ros/indigo/stacks
所以用apt-cache search ros-indigo查找安裝包,最后選定以下包安裝,之后rosdep install joy成功
ros-indigo-joy
ros-indigo-joystick-drivers
sudo apt-get install ros-indigo-joy
rosdep install joy
rosmake joy
-
查看手柄接口信息並更改其所在的群組 //重啟后無效不知道怎么解決
默認情況下游戲手柄接口名稱為js0
1). 輸入:ls -l /dev/input/js0
輸出:crw-rw-r--+ 1 root root 13, 0 10月 5 09:03 /dev/input/js0
可知js0默認的所有者和群組都是root,即需要root權限才能操作js0
2). 更改js0的root群組為dialout群組
sudo chgrp dialout /dev/input/js0 //改變所屬用戶方法:sudo chown 用戶名 /dev/input/js0
查看更改后所屬群組,輸入:ls -l /dev/input/js0
輸出:crw-rw-r--+ 1 root dialout 13, 0 10月 5 09:03 /dev/input/js0
3. 測試手柄信號
1). 插上無線手柄接收器
2). sudo jstest /dev/input/js0
(sudo apt-get install joystick) (在ubuntu本身上的測試,Jetson TK1安裝了該項)
現在按下手柄按鍵就會在終端顯示信息,如附件表一所示:
-
運行joy_node節點,查看或訂閱消息
1). 運行joy_node節點:
rosrun joy joy_node 或者rosrun bzrobot_comm joy_node
2). 查看消息:
rostopic echo joy 或者rosrun bzrobot_comm joy_sub.py
現在按下手柄按鍵即可收到信息,終端顯示如下:
header:
seq: 1990
stamp:
secs: 1412479062
nsecs: 544396707
frame_id: ''
axes: [-0.0, -0.0, 1.0, -0.0, -0.0, 0.0, -0.0, -0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
header:
seq: 1964
stamp:
secs: 1412478581
nsecs: 100324311
frame_id: ''
axes: [-0.0, -0.0, 0.21262244880199432, -0.0, -0.0, 0.0, -0.0, -0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
備注:與sudo jstest /dev/input/js0輸出信號相比,其數字量用0.0,1.0,-1.0表示,模擬量在-1.0到1.0之間,方向鍵和搖桿的正負號反過來
-
查看ROS定義的手柄消息類型Joy
輸入:rosmsg show Joy
附件表一: sudo jstest /dev/input/js0時終端顯示
MODE有兩種狀態:綠燈不亮、綠燈亮
VIBRATION:按下手柄震動
為方便敘述,左側搖桿稱為搖桿A,右側搖桿稱為搖桿B,有上下左右標志的鍵稱為方向鍵
綠燈不亮時按鍵值及其位置如下表黑色部分,綠燈亮時buttons相同,axes為綠色部分.
D | X 的選擇在X時如下表:
| buttons(整型) | |||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
| "A"按下松開 | 1->0 | ||||||||||
| "B"按下松開 | 1->0 | ||||||||||
| "X"按下松開 | 1->0 | ||||||||||
| "Y"按下松開 | 1->0 | ||||||||||
| "LB"按下松開 | 1->0 | ||||||||||
| "RB"按下松開 | 1->0 | ||||||||||
| "BACK"按下松開 | 1->0 | ||||||||||
| "START"按下松開 | 1->0 | ||||||||||
| "Logitech"按下松開 | 1->0 | ||||||||||
| "搖桿A"按下松開 | 1->0 | ||||||||||
| "搖桿B"按下松開 | 1->0 | ||||||||||
| axes(浮點型) | ||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
| "搖桿A"向左並松開(模擬量)(數字量) |
0.0-> 1.0->0.0 | 1.0->0.0 |
||||||
| "搖桿A"向右並松開(模擬量)(數字量) | 0.0->-1.0->0.0 | -1.0->0.0 | ||||||
| "搖桿A"向上並松開(模擬量)(數字量) | 0.0-> 1.0->0.0 | 1.0->0.0 | ||||||
| "搖桿A"向下並松開(模擬量)(數字量) | 0.0->-1.0->0.0 | -1.0->0.0 | ||||||
| "LT"按下並松開(模擬量)(同) | 1.0->0.0->-1.0->0.0->1.0 | |||||||
| "搖桿B"向左並松開(模擬量)(同) | 0.0-> 1.0->0.0 | |||||||
| "搖桿B"向右並松開(模擬量)(同) | 0.0->-1.0->0.0 | |||||||
| "搖桿B"向上並松開(模擬量)(同) | 0.0-> 1.0->0.0 | |||||||
| "搖桿B"向下並松開(模擬量)(同) | 0.0->-1.0->0.0 | |||||||
| "RT"按下並松開(模擬量)(同) | 1.0->0.0->-1.0->0.0->1.0 | |||||||
| "方向鍵左"按下並松開(數字量)(數字量) | 1.0->0.0 | 1.0->0.0 | ||||||
| "方向鍵右"按下並松開(數字量)(數字量) | -1.0->0.0 | -1.0->0.0 | ||||||
| "方向鍵上"按下並松開(數字量)(數字量) | 1.0->0.0 | 1.0->0.0 | ||||||
| "方向鍵下"按下並松開(數字量)(數字量) | -1.0->0.0 | -1.0->0.0 | ||||||
綠燈亮時:1). 搖桿A成為數字量,其位置和值與綠燈不亮時方向鍵鍵相同
2). 方向鍵只是位置由axes的6,7位改變到0,1位
3). 其它按鍵不變
Jetson TK1安裝F710驅動:
1.ls -l /dev/input/js0
2.sudo apt-get install joystick(安裝)
3.sudo jstest /dev/input/js0
4. sudo apt-get install ros-indigo-joy(安裝)
5.roscore
6.rosrun joy joy_node
7.rostopic echo joy

