原理:本教程涉及3个包,ps3joy负责将ps3蓝牙接受信号转换成标准的linux设备(/dev/input/js0),joy_node节点负责将上述joy设备数据转换成ros中的joy数据类型,turtlebot_teleop_joy负责将上述joy数据topic 转换成小车运动指令/cmd_vel
绑定方法参考原装和国产ps3手柄ros驱动程序中的“快速使用方法步骤1”
#确保蓝牙接收器已经插入主机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
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),这些控制按键、摇杆的映射关系。
根据这些按键编号,可以修改launch文件中的相关参数从而改变按键映射关系
购买ps3手机支架, 安卓手机装上小强图传app,这样可以实现图传遥控