1. 手柄介绍
2. 安装驱动
在 Ubuntu18.04 ROS(Melodic)环境,安装Xbox360手柄驱动:
$ sudo apt-get install ros-melodic-joystick-drivers
以 Ubuntu16.04 ROS(Kinetic)环境为例,安装Xbox360手柄驱动:
$ sudo apt-get install ros-kinetic-joystick-drivers
3. 配对设置
-
确保安装完驱动程序之后,首先将PC接收器连接PC
-
按下手柄中间大圆按钮,俗称西瓜键,如果没有匹配上,灯会闪烁
-
按手柄前面靠左的小圆按钮,手柄西瓜键灯闪烁旋转,进入匹配状态
-
按PC接收器的小圆按钮,手柄的灯闪烁,进入匹配状态
-
几秒之后自动匹配好,手柄西瓜键灯会亮1号灯,接收器保持常亮
-
再次使用时先将PC接收器连接PC,之后再长按西瓜键开机手柄即可,随后会自主配对
4. 测试设备
首先检查是否发现设备:
$ ls /dev/input/js*
一般为 js0
然后测试设备是否可用:
$ sudo jstest /dev/input/js0
移动手柄,可以发现数据会发生变化
接下来,在 ROS 中测试
首先,在新终端启动 roscore
$ roscore
然后设置设备并启动 joy
节点
$ rosparam set joy_node/dev "/dev/input/js0"
$ rosrun joy joy_node
最后在新的终端显示 joy
主题,移动手柄可以查看到相关的主题
$ rostopic echo joy
效果应该如下图:
5. 控制应用
以手柄控制小乌龟为例,首先创建个小乌龟:
打开新的终端:
$ roscore
再次打开终端:
$ rosrun turtlesim turtlesim_node
出现了小乌龟
在功能包(以hhbot_teleop
为例)中拷贝 turtlebot_teleop
中的 turtlebot_teleop_joy
文件放置在 lib
文件夹
接着拷贝 turtlebot_teleop
源码中的 xbox360_teleop.launch
文件放置在 launch
文件夹
当然,也可以把相关文件重命名,如turtlebot_teleop_joy
重命名为hhbot_teleop_joy
文件结构相比键盘控制增加了以上两个文件:
更新xbox360_teleop.launch
文件:
<launch>
<!-- 长按右正面“START”按钮以发布cmd_vel,松手不发布,移动左摇杆控制 -->
<!--- Teleop Joystick -->
<node pkg="hhbot_teleop" type="hhbot_teleop_joy" name="hhbot_teleop_joystick" output="screen">
<param name="scale_linear" value="0.2"/>
<param name="scale_angular" value="1.5"/>
<param name="axis_deadman" value="7"/>
<remap from="hhbot_teleop_joystick/cmd_vel" to="/turtle1/cmd_vel" />
</node>
<node pkg="joy" type="joy_node" name="joystick" output="screen" />
<param name="dev" type="string" value="/dev/input/js0" />
</launch>
删除不必要的节点
加载hhbot_teleop_joystick
节点
简单的配置 线速度scale linear
,角速度scale angular
,使能按钮axis_deadman
按钮对应编号参考 http://wiki.ros.org/joy ,而这里的 “ 7 ” 对应 “ START ” 按钮
并将运动控制指令hhbot_teleop_joystick/cmd_vel
重映射为小乌龟的运动控制指令/turtle1/cmd_vel
最后加载joystick
节点并设置设备为/dev/input/js0
启动 xbox360_teleop.launch
文件:
$ roslaunch hhbot_teleop xbox360_teleop.launch
移动左摇杆控制移动,并长按右正面“START”按钮以发布cmd_vel
可以看到小乌龟正随着控制移动
应用于别的机器人移动控制,只需根据实际情况修改和设置xbox360_teleop.launch
文件中对应参数即可
如机器人的运动控制指令为cmd_vel
,只需修改运动控制指重映射如下:
<remap from="hhbot_teleop_joystick/cmd_vel" to="/cmd_vel" />
即可控制该机器人移动
参考:
相关推荐:
ROS笔记(37) 抓取和放置
ROS笔记(36) 避障运动规划
ROS笔记(35) 笛卡尔运动规划
ROS笔记(34) 工作空间规划
ROS笔记(33) 关节空间规划
谢谢!