小强ROS机器人教程(33)_使用ps4手柄控制小车移动
原理:本教程涉及2个包
ds4_driver节点负责将蓝牙手柄设备数据转换成ros中的joy数据类型
turtlebot_teleop_joy负责将上述joy数据topic 转换成小车运动指令/cmd_vel
操作步骤
0.先要安装对应的ros驱动同时将手柄与ubuntu进行蓝牙配对
如果手柄和小强同时购买,那么我们已经提前为您将手柄适配好了,可以从步骤1开始使用。
1.将ps4手柄与蓝牙接受器进行连接
只需要按一下ps键,让手柄进入连接模式,此时手柄会闪白光。
ubuntu不用进行任何操作,手柄就会连上ubuntu,连上后手柄led会停止闪烁,同时颜色变成蓝色。 如果白灯熄灭前,也没连上ubuntu,可以等白灯熄灭后再次按ps键,再次尝试连接。蓝牙适配器性能不同,有时需要按两三次才能连上。
2.启动ds4_driver和turtlebot_teleop_joy
已经适配好小强的用户,这些节点默认开机自动启动,不用手动执行
#启动ds4_driver
roslaunch ds4_driver xiaoqiang.launch
#启动 turtlebot_teleop
roslaunch turtlebot_teleop ps3fakexiaoqiang_teleop.launch
正常启动后如下图所示 ps3fakexiaoqiang_teleop.launch文件内容如下
<launch>
<node pkg="turtlebot_teleop" type="turtlebot_teleop_joy" name="turtlebot_teleop_joystick">
<param name="scale_angular" value="0.4"/>
<param name="scale_linear" value="0.4"/>
<param name="axis_deadman" value="10"/>
<param name="axis_linear" value="1"/>
<param name="axis_angular" value="0"/>
<remap from="turtlebot_teleop_joystick/cmd_vel" to="/cmd_vel"/>
<remap from="turtlebot_teleop_joystick/joy" to="/joy"/>
</node>
</launch>
上述launch文件中的参数分别对应直线速度最大值(scale_linear)和角速度最大值(scale_angular),油门离合键(axis_deadman)、前进后退轴(axis_linear)、左右转轴(axis_angular),这些控制按键、摇杆的映射关系。
3.保持按住手柄油门键(下图中的10号键),现在使用左侧的推杆可以控制小车的前后移动和转向(下图中的1+1-摇杆)
根据这些按键编号,可以修改launch文件中的相关参数从而改变按键映射关系
4.使用手柄对主机进行关机
同时按住手柄的12和14号键,手柄会振动,然后松手,在振动消失前再次长按,会触发主机关机同时振动消失。
5.常见问题
1.ps4手柄和ubuntu无法连接
答:之前有没有配对成功,没有配对成功要先确保配对成功。
2.ps4手柄和ubuntu无法连接
答:等白灯熄灭后,再次按ps键尝试连接,因为蓝牙适配器性能原因,有时要尝试两三次才能连上,这是正常现象。
3.ps4手柄和ubuntu无法连接
答:配对成功后,如果再次同时按了share和ps键,会清除手柄的配对信息,此时需要先在ubuntu里面删除叫wireless Controller的蓝牙设备,然后重启执行步骤0的配对。