机器人技术(5)AtdRobot无线手柄控制教程

游戏手柄介绍(Xu, Chen et al. 2016)

      上一章节我们介绍了如何用键盘控制我们的机器人底盘运动。实际使用过程中,我们很难抱着笔记本来遥控小车。更为常见的情况是利用无线遥控手柄来进行遥控控制小车的前进、后退和转弯。

   本机器人系统为大家准备的是GameSir游戏手柄,该手柄握感舒适,且按键丰富,可以用于本机器人系统的控制。

机器人技术(5)AtdRobot无线手柄控制教程_第1张图片 

    无线手柄的接收器连接到底盘主机的USB接口即可。通过后面的例程我们将实现用手柄无线遥控小车运动的DEMO。

运行无线手柄DEMO

开启一个终端,运行底盘控制主节点,输入:

ssh [email protected]

roslaunch ros_arduino_python arduino.launch

如下图所示,节点即开启成功。

 机器人技术(5)AtdRobot无线手柄控制教程_第2张图片

 机器人技术(5)AtdRobot无线手柄控制教程_第3张图片

        控制手柄的两个节点分别是手柄开启节点(rosrun joy joy_node)和手柄控制节点(rosrun turtlesim turtle_teleop_joystick),你可以在已经和树莓派实现远程连接的终端下分别运行这两个节点。不过现阶段,我们已经将这两个节点整合到了底盘的主launch文件中,故只需运行roslaunch ros_arduino_python arduino.launch即可通过手柄控制底盘移动。

核心代码讲解

    手柄控制是通过~/catkin_ws/src/turtlesim/turtlesim文件夹下的turtle_teleop_joystick.cpp文件实现的。实现过程是通过读取手柄输入值,转化为ROS系统下的cmd_vel话题,小车底盘通过订阅该话题来决定自己的运动状态。手柄所发布的数据可以通过rostopic echo /joy 这个命令查看。

机器人技术(5)AtdRobot无线手柄控制教程_第4张图片 

    向该主题发布的消息类型是twist,其中twist.linear是底盘运动的线速度,twist.angular是底盘运动的角速度。

最后

    到这里我门就实现了用手柄控制小车运行的一个简单例程。其中关键点是cmd_vel指令和turtle_teleop_joystick.cpp文件。如果需要自己开发,可以修改我们本文件中的指令即可。

你可能感兴趣的:(机器人技术)