UGV Rover PI ROS2 3. 使用手柄或键盘控制

来自Waveshare Wiki
跳转至: 导航搜索
RaspRover
{{{name2}}}
{{{name3}}}
功能简介
特性 UGV Rover ROS2 小车
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 TTL总线舵机控制接口 I2C UART

3. 使用手柄或键盘控制

本章节介绍如何使用手柄或键盘按键来控制产品运动,该产品出厂时有附带一个 Xbox 蓝牙手柄。默认您已根据第一章 UGV Rover PI ROS2 1. 准备工作里的内容已结束主程序且远程连接上 Docker 容器。


3.1 底盘驱动

在运行手柄控制和键盘控制例程之前,必须要先运行底盘驱动节点。上一章节中我们有介绍一种 ROS2 小车驱动节点的运行,这里我们介绍另一种底盘驱动节点的运行。

在容器中,进入该产品 ROS 2 项目的工作空间:

cd /home/ws/ugv_ws

启动小车驱动节点:

ros2 launch ugv_bringup bringup_lidar.launch.py use_rviz:=true

此时,机器人云台会转至中位,摄像头面向前方,可以查看到该产品 Rviz2 模型界面,原地旋转小车可以看见模型中也会跟着一起旋转。

ROS2 RViz.png

注意:如果模型界面中显示的不是 UGV Rover 四驱六轮的底盘,则需要先按 Ctrl+C 关闭运行小车驱动节点。接着将 ROS 2 项目中的 UGV 模型切换为 UGV Rover 的,输入以下命令切换完模型后再启动小车驱动节点。

export UGV_MODEL=ugv_rover
source ~/.bashrc


3.2 手柄控制

启动小车驱动节点后,将手柄接收器接入到树莓派中。

插入后,需要先在一个新的 Docker 容器终端运行手柄控制节点。打开一个新的 Docker 容器终端,点击左边侧栏中的“⭐”符号,双击打开 Docker 的远程终端,输入用户名:root,密码:ws。

ROS2 newDocker.png

在容器中,先运行如下命令查看是否识别到游戏手柄,运行后如图所示:

ls /dev/input

ROS2 xboxls.png

其中,js0 代表游戏手柄。

在容器中,进入该产品 ROS 2 项目的工作空间:

cd /home/ws/ugv_ws

运行手柄控制节点:

ros2 launch ugv_tools teleop_twist_joy.launch.py

接着打开手柄背后的开关,看见手柄上亮红灯之后可以控制小车运动。【标注手柄三个功能键手柄:R下面的那个键锁定or解锁,手柄的摇杆,左摇杆——前进,后退;右摇杆——左转,右转】

通过按 Ctrl+C 可以关闭手柄控制节点。


3.2 键盘控制

关闭手柄控制节点,可以接着再运行手柄控制节点的终端窗口中来运行键盘控制节点:

ros2 run ugv_tools keyboard_ctrl

保持这个窗口为激活状态(即确保操作按键时位于该终端窗口界面),通过以下按键来控制小车运动:

键盘按键 操作描述 键盘按键 操作描述 键盘按键 操作描述
字母 U 左前进 字母 I 直前进 字母 O 右前进
字母 J 左转 字母 K 停止运动 字母 L 右转
字母 M 左后退 符号 , 直后退 符号 . 右后退

通过按 Ctrl+C 可以关闭键盘控制节点。