ROS笔记(38) Xbox360手柄控制移动

ROS笔记(38) Xbox360手柄控制移动


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. 配对设置

  1. 确保安装完驱动程序之后,首先将PC接收器连接PC

  2. 按下手柄中间大圆按钮,俗称西瓜键,如果没有匹配上,灯会闪烁
    在这里插入图片描述

  3. 按手柄前面靠左的小圆按钮,手柄西瓜键灯闪烁旋转,进入匹配状态

  4. 按PC接收器的小圆按钮,手柄的灯闪烁,进入匹配状态

  5. 几秒之后自动匹配好,手柄西瓜键灯会亮1号灯,接收器保持常亮

  6. 再次使用时先将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官方wiki


相关推荐:

ROS笔记(37) 抓取和放置
ROS笔记(36) 避障运动规划
ROS笔记(35) 笛卡尔运动规划
ROS笔记(34) 工作空间规划
ROS笔记(33) 关节空间规划



谢谢!

发布了217 篇原创文章 · 获赞 290 · 访问量 288万+

猜你喜欢

转载自blog.csdn.net/qq_32618327/article/details/103885239