ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
ps4手柄ros驱动安装和蓝牙配对教程
-
ps4手柄有丰富的led指示,带摇杆和振动,同时还有触摸板,是个比较理想的机器人遥控手柄。在ROS中使用ps4手柄,主要涉及的步骤是蓝牙配对和ros驱动安装启动。
1. ps4手柄与ubuntu进行蓝牙配对
ps4手柄和ubuntu之间只用配对一次,之后就可以跳过配对步骤直接连接。
同时长按ps4手柄的share键 和 ps键,手柄开始快速闪短暂的白灯后就进入配对模式,此时可以松手。
在手柄保持闪烁白光情况下,进入ubuntu蓝牙管理界面里面,可以看到一个叫wireless Controller的蓝牙设备,这个就是ps4手柄,点击它进行配对。有些ubuntu系统是要通过手动添加蓝牙设备方式进行配对的,界面上有+ -号。
配对成功后,手柄led会停止闪烁,同时颜色变成蓝色。
手柄和ubuntu的蓝牙配对就完成了。2. ps4手柄与ubuntu进行蓝牙连接
上面步骤1完成后,手柄与ubuntu就已经连上了,如果ubuntu重启了或者手柄掉线,就需要重新连接。
重新连接很简单,只需要按一下ps键,让手柄进入连接模式,此时手柄会闪白光,白光持续时间比配对时的长。
ubuntu不用进行任何操作,手柄就会连上ubuntu,连上后手柄led会停止闪烁,同时颜色变成蓝色。
如果白灯熄灭前,也没连上ubuntu,可以等白灯熄灭后再次按ps键,再次尝试连接。蓝牙适配器性能不同,有时需要按两三次才能连上。3. ROS驱动安装
ps4手柄的ros驱动包是ds4_driver,依赖于ds4drv这个python库。
#先安装ds4drv库,同时设置udev规则 cd ~/Documents git clone http://git.bwbot.org/publish/ds4drv --branch devel cd ds4drv #安装 sudo python setup.py install #拷贝设置udev规则文件 sudo cp udev/50-ds4drv.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger
#再安装ds4_driver这个ros驱动包 cd ~/Documents/ros/src #这里要换成自己的ros工作空间 git clone http://git.bwbot.org/publish/ds4_driver.git cd .. #开始编译 catkin_make -DCMAKE_BUILD_TYPE=Release -DCATKIN_WHITELIST_PACKAGES="ds4_driver"
4. 测试ROS驱动
# 用roslaunch启动ds4_driver roslaunch ds4_driver xiaoqiang.launch #手柄如果连接上ubuntu,上面launch运行窗口会显示Connected to bluetooth controller, 像下图一样。
# 此时打印/joy 话题,同时按手柄任意按钮,可以观察到/joy话题中对应按钮值发生变化 rostopic echo /joy
5. 将ROS驱动设成开机自启动
利用ubuntu的startup application功能,添加桌面登录后自动启动功能,下次ubuntu重启后,ds4_driver会自动启动,连上手柄后就可以控制/joy话题发布。
ds4_driver包里面的upstart文件夹,里面有一个文本文档,将文本文档里面的命令复制到ubuntu里面的startup application项目即可。
6.安装turtlebot_teleop包,将手柄/joy话题转换成/cmd_vel速度话题
cd ~/Documents/ros/src #这里要换成自己的ros工作空间 git clone http://git.bwbot.org/publish/turtlebot --branch melodic cd .. #开始编译 catkin_make -DCMAKE_BUILD_TYPE=Release -DCATKIN_WHITELIST_PACKAGES="turtlebot_teleop"
#开始运行 roslaunch turtlebot_teleop ps3fakexiaoqiang_teleop.launch #打印/cmd_vel话题,连上手柄后,保持按住手柄油门键(下图中的10号键),现在使用左侧的推杆可以控制cmd_vel话题的前后移动和转向(下图中的1+1-摇杆)
turtlebot_teleop 也可以设成开机自动启动,设置步骤参考上面的步骤5。7.常见问题
1.ps4手柄和ubuntu无法连接 答:之前有没有配对成功,没有配对成功要先确保配对成功。 2.ps4手柄和ubuntu无法连接 答:等白灯熄灭后,再次按ps键尝试连接,因为蓝牙适配器性能原因,有时要尝试两三次才能连上,这是正常现象。 3.ps4手柄和ubuntu无法连接 答:配对成功后,如果再次同时按了share和ps键,会清除手柄的配对信息,此时需要先在ubuntu里面删除叫wireless Controller的蓝牙设备,然后重启执行步骤1的配对。
8.PS4手柄按钮编号
-
@xiaoqiang 在 ps4手柄ros驱动安装和蓝牙配对教程 中说:
- 测试ROS驱动
第四步 4. 测试ROS驱动 roslaunch ds4_driver xiaoqiang.launch 运行之后报错 No module named ‘rospkg’ 咋办呢
-
@potterson 截图完整错误信息
-
@potterson 安装该包之后问题解决,谢谢
-
@xiaoqiang 在 ps4手柄ros驱动安装和蓝牙配对教程 中说:
roslaunch ds4_driver xiaoqiang.launch
博主,我卡在这一步
[INFO] [1692149269.091375]: [hidraw]: Scanning for devices
之后,为就一直在等相应Joystick inactive for 3 seconds. Stop publishing joy
Joystick inactive for 120 seconds. Disconnecting to save battery
然后也连接不上,请问你知道原因是什么吗
-
@cuiliyun 手柄配对没成功,先配对
-
@xiaoqiang 可是我感觉已经配对成功了,我照着流程来,现在手柄led也是亮着蓝光,蓝牙那里也显示已经连接上了
-
@cuiliyun 手柄是哪里采购的?
-
@xiaoqiang 是公司的手柄,不是新的 用了有段时间了
-
@cuiliyun ps4手柄有多款山寨版本,有些版本就会能蓝牙配对但是无法使用ros。包装盒有大小两款,小盒子的一般是用不了的垃圾,大盒子能用的概率比较大,原厂原装的最好。
-
@xiaoqiang 好的,谢谢博主,我去反应一下