原理:本教程涉及3个包
ps3joy负责将ps3蓝牙接受信号转换成标准的linux设备(/dev/input/js0
)
joy_node节点负责将上述joy设备数据转换成ros中的joy数据类型
turtlebot_teleop_joy负责将上述joy数据topic 转换成小车运动指令/cmd_vel
操作步骤
0.第一次使用手柄,需要将手柄与蓝牙接受器进行绑定,以后可以直接从步骤1开始
如果手柄和小强同时购买,那么我们已经提前为您将手柄配对可以从步骤1开始使用。
绑定方法参考原装和国产ps3手柄ros驱动程序中的“快速使用方法步骤1”
1.启动ps3joy,将ps3手柄与蓝牙接受器配比
#确保蓝牙接收器已经插入主机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.
如果提示下列错误
按下下图中的手柄配对键
配对成功的话,上面的窗口会输出类似下面的结果
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
2.启动joy_node和turtlebot_teleop_joy
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"/>
<param name="axis_enbar" value="12"/>
<param name="axis_disenbar" value="14"/>
<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),底盘红外使能键(axis_enbar),底盘红外关闭键(axis_disenbar),这些控制按键、摇杆的映射关系。
3.保持按住手柄油门键(下图中的10号键),现在使用左侧的推杆可以控制小车的前后移动和转向(下图中的1+1-摇杆)
根据这些按键编号,可以修改launch文件中的相关参数从而改变按键映射关系
花样玩法
购买ps3手机支架, 安卓手机装上小强图传app,这样可以实现图传遥控