原装和国产ps3手柄ros驱动程序

小强主页

ps3手柄的ros驱动程序为joystick_drivers包中的ps3joy,这份驱动对索尼原装手柄支持较好,但是对国产ps3手柄的支持存在问题。我们在ps3joy的基础上进行了修改,增加了一个ps3joyfake_node.py脚本作为国产手柄的驱动,包源代码地址在这里:。下文以小强为例,演示这个包的安装步骤和简略的使用方法

安装步骤

ssh进入小强ros工作空间,下载源码后编译,完成安装 小强镜像中默认已经安装此软件包,可以跳过这一步骤。

ssh xiaoqiang@192.168.xxx.xxx
cd Documents/ros/src/
git clone https://github.com/BlueWhaleRobot/joystick_drivers.git
cd ..
catkin_make
# 如果提示下列错误
error spnav.h no such file
# 先安装下面这个包,然后重新执行catkin_make
sudo apt-get install libspnav-dev

快速使用方法

ps3joyfake_node.py启动后,它会将蓝牙接收的手柄按键数据转换成标准的joy msg,同时以/joy为话题在ros中发布,即ps3joyfake_node.py一个文件相当于ps3joy.py + joy_node两个文件,在实际使用中不必再开启joy_node节点。

1.将手柄与usb蓝牙适配器进行绑定,只需绑定一次,下次直接跳过这个步骤

如果是手柄是和小强同时购买,那么我们已经提前为您配对,可以跳过此步骤。 将手柄通过usb数据线接入主机,usb蓝牙适配器也插上主机

sudo bash
rosrun ps3joy sixpair

此时会得到类似下图的输出,current和setting的mac地址一样说明绑定成功

Current Bluetooth master: 00:22:b0:d0:5a:09
Setting master bd_addr to 00:22:b0:d0:5a:09

# 如果出现下述错误
Current Bluetooth master: 00:1b:dc:00:07:3c
Unable to retrieve local bd_addr from `hcitool dev`.
Please enable Bluetooth or specify an address manually.
# 先运行
hciconfig hci0 reset
# 如果运行
hciconfig hci0 reset
# 出现错误
# Can't init device hci0: Operation not possible due to  

# 运行 
rfkill unblock all
# 然后运行
hciconfig hci0 reset
# 重新运行
rosrun ps3joy sixpair

绑定设置完成,断开手柄与主机的usb连接

ctrl+D 退出root模式

2.将手柄与usb蓝牙适配器配对

#确保蓝牙接收器已经插入主机usb口
sudo bash
rosrun ps3joy ps3joyfake_node.py

正常会出现下面的提示

root@xiaoqiang-desktop:~# rosrun ps3joy ps3joyfake_node.py 
No inactivity timeout was set. (Run with --help for details.)
Waiting for connection. Disconnect your PS3 joystick from USB and press the pairing button.
#如果提示下列错误
ImportError: No module named bluethooth
#请先安装下列包,然后重新运行
sudo apt-get install libbluetooth-dev
sudo pip install PyBluez

按一下下图中的手柄配对键
alt text
配对成功的话,上面的窗口会输出类似下面的结果

root@xiaoqiang-desktop:~# rosrun ps3joy ps3joyfake_node.py
No inactivity timeout was set. (Run with --help for details.)
Waiting for connection. Disconnect your PS3 joystick from USB and press the pairing button.
Connection activated

配对完成

3.查看手柄输出

新开一个窗口,打印按键输出
rostopic echo /joy

正常会出现下面的类似结果

header:
  seq: 297
  stamp:
    secs: 1488877867
    nsecs: 535818099
  frame_id: ''
axes: [0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.21316899359226227, 0.0]
buttons: [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

从上面可以看到第4个button被按下了

4.启动相关的joy msg处理节点

注意不要再启动joy_node

#以小强为例,启动下列launch文件后就可以遥控小强移动了
roslaunch turtlebot_teleop ps3fakexiaoqiang_teleop.launch

购买带手柄的小强用户,还可以根据这篇教程使用手柄

进行步骤1绑定时,如果提示找不到手柄设备,无法绑定,可以执行下面两个步骤以解决问题: 1.点击系统桌面右上角的蓝牙图标,将连接着的蓝牙手柄服务关闭 0_1523188908187_IMG_1067.JPG 0_1523188923058_IMG_1066.JPG 2.重新插拔手柄,然后重新运行绑定指令

小强主页 返回目录

results matching ""

    No results matching ""