ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
原装和国产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://gitee.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
按一下下图中的手柄配对键
配对成功的话,上面的窗口会输出类似下面的结果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.点击系统桌面右上角的蓝牙图标,将连接着的蓝牙手柄服务关闭
2.重新插拔手柄,然后重新运行绑定指令 -
This post is deleted! -
您好,做到这一步后一直无法配对手柄和蓝牙适配器可能是什么问题呢?
蓝牙适配器插在电脑上没有问题,手柄也按下了配对键。 -
@wukefu 你在操作这一步之前有没有通过USB数据线绑定?
-
@wukefu 按配对键的时候手柄不能用usb连接电脑,但是上一部的绑定需要手柄和电脑用usb连接,因此会有一个断开的操作。断开usb时,手柄会自动触发蓝牙连接(手柄配对指示灯会闪),此时就会导致不能配对成功,因为是usb断开引起的。
正确操作是:断开usb后,先等配对指示灯不闪后,再执行“rosrun ps3joy ps3joyfake_node.py”,最后按手柄配对键就可以配对了 -
@weijiz 您好,已经进行过绑定了,图中可以看到usb与手柄已经绑定成功了
-
@xiaoqiang 你好,我按照您说的做了一遍,还是无法配对成功…
-
@xiaoqiang 我和@wukefu 的情况一样 断开USB 配对灯不闪 再运行rosrun ps3joy ps3joyfake_node.py 之后出现waiting for connection. 按手柄配对键,依然没反应。
-
@xiaoqiang 在 原装和国产ps3手柄ros驱动程序 中说:
,
后来再重试了,rosrun ps3joy ps3joyfake_node.py后 出现:
No inactivity timeout was set.(Run with --help for details.)
Unable to register with master node [http://localhost:11311]:master may not be running yet. Will keep trying.这是什么问题?
-
-
@weijiz 输入你所说的命令后显示
Fail to start startup.service: Unit startup.service not found.这是什么问题?
-
@jianjun 你可能用的不是小强系统。直接运行roscore,而且要一直运行,不能关闭。
-
@weijiz 我是在树莓派3 上用Ubuntu系统,最后我还是没配对上,显示:
No inactivity timeout was set. (Run with --help for details.) Waiting for connection. Disconnect your PS3 joystick from USB and press the pairing button.
我是按照您上面说的,先断开USB,等到配对灯灭了后再运行的ps3joyfake_node.py,之后按了很多次配对键都没配对成功。
这是什么原因呢? -
@jianjun 可能是树莓派的问题,树莓派的蓝牙驱动好像有问题。你可以换电脑试试。
-
手柄接上数据线在linux系统下会震动,忽略这样的震动就可以了,继续按照教程操作
-
手柄按照教程上面去配对的时候,到了第二步手柄和蓝牙接收器配对,手柄的灯已经不是一起闪,后来全部灭了,终端也没有显示连接成功。但手柄再按配对按钮,灯不亮,而且重新接usb线灯也不亮。手柄充电后也没有任何反应。
-
@xiangxiang123 把手柄插入主机后运行lsusb看一下。把输出发过来。
-
@weijiz 手柄充了一晚上电之后能开了。配对的时候到了第二步,断开USB 配对灯不闪 再运行rosrun ps3joy ps3joyfake_node.py 之后出现waiting for connection. 按手柄配对键,依然没反应。
-
-
@weijiz 长按后5秒灯就不闪了,也没有提示配对成功。