Hello Robot Stretch 3入门教程-x.Strech Dex Teleop

原文地址:https://github.com/hello-robot/stretch_dex_teleop

该存储库提供了Hello RobotStretch 3移动机械手的灵巧遥控操作代码。

代码下载

git clone https://ghfast.top/https://github.com/hello-robot/stretch_dex_teleop.git

 

Dex Teleop 支持双手灵巧的远程操作,并配合 Stretch 移动机械手使用。如上图所示,您可以使用它与一台或两台 Stretch 机器人一起执行高效的多关节运动。

 

人类操作员使用改装的厨房钳子,并附上 ArUco 标记来控制机器人末端执行器的姿态。地面支架上的网络摄像头向上观察钳子,以估算钳子的位置、方向和夹持宽度。网络摄像头周围的环形灯可减少运动模糊,从而确保在快速运动中也能检测到 ArUco 标记。

该系统可以调整以使用其他能够以高频率(例如,>= 15 Hz)提供六自由度 (6 DOF) 目标姿态和抓握宽度的接口。该目标姿态的位置通过逆运动学 (IK) 控制机器人伸缩臂的末端。目标姿态的方向直接控制机器人的灵巧腕关节,从而控制机器人末端执行器的方向。抓握宽度控制机器人的夹持器。

动机

 Hello Robot 提供了使用游戏手柄和 Web 界面远程操作 Stretch 首个版本(Stretch RE1)的代码。多年来,在 Stretch 社区和 Hello Robot 的努力下,这两种远程操作都得到了改进。游戏手柄远程操作简单易携。基于 Web 的远程操作可在远距离使用,并且已为残障人士提供便利。这些方法的一个显著缺点是,它们倾向于单臂进行缓慢的单关节运动。

如上图 GIF 所示,Stretch Dex Teleop 能够实现高效的双手多关节运动。然而,与游戏手柄和基于网页的远程操作相比,它更加复杂,上手难度更高,并且目前仅支持操控,不支持导航。

您可以在此 YouTube 视频中看到更多真实家庭中的双手遥控操作示例。

设置 Dex Teleop

您应该首先克隆此存储库。以下所有命令都应在机器人计算机上存储库根目录中的命令行中运行。

购买或构建您的界面

您可以从 Hello Robot Inc. 购买钳子、相机、环形灯和支架。

或者,您可以购买组件并按照Stretch Dex Teleop 硬件指南构建自己的组件。

您将需要一台相机、一个环形灯和一个支架,如下图所示。

 

对于单个机器人,您将需要像下面两张照片中所示的右手钳。

 

 

 

对于双手操作,您将需要两个相机、两个环形灯、两个支架、左手钳和右手钳。

 

运行安装脚本

克隆存储库后,运行存储库根目录中的以下安装脚本。

 

./install_dex_teleop.sh

 

安装脚本会为 Logitech Webcam C930e 设置一条 udev 规则,以便每次运行 Dexterous Teleoperation 时都能重置摄像头。这是一种避免低帧率和摄像头设置错误的解决方法

接下来,如果需要,安装脚本会安装 v4l2 实用程序。

您还需要安装一些 Python 依赖项:

pip install -r requirements.txt

 

生成专用 URDF

要运行 Dex Teleop,您需要生成专门的 URDF 文件。Dex Teleop 使用机器人的正向运动学 (FK) 和逆向运动学 (IK) 模型。这些模型使用由机器人上已校准的 URDF 生成的专门 URDF

python3 prepare_specialized_urdfs.py

 

设置相机、环形灯和支架

如上图所示,相机支架应放置在地面上,相机应垂直向上。支架应处于最低高度。

摄像头应使用 USB 延长线插入机器人的USB HUB环形灯不应插入机器人的后备箱,因为它耗电量太大——它可以插入机器人的头部,也可以外接

使用摄像头时,摄像头顶部应朝向远离您的方向。相对于机器人,摄像头顶部指向手臂伸展方向,摄像头镜头朝向升降机向上移动方向,摄像头左侧指向机器人移动基座向前移动方向。

校准 Logitech C930e 网络摄像头

设置好相机后,您需要对其进行校准。

首先,使用以下命令生成校准板:

python3 webcam_calibration_create_board.py

这应该会生成以下 PNG 文件。

webcam_aruco_calibration_board.png

 

 

打印此图像,请勿缩放。打印输出应与 PNG 文件中指定的尺寸一致。

将打印输出安装在平坦的表面上,您可以在相机周围移动该表面以在环形灯打开的情况下捕捉校准图像。

使用以下命令和校准图案为您的 Logitech C930e 网络摄像头采集校准图像。整个校准板应清晰可见且距离不太远,否则校准图像可能会导致错误。

python3 webcam_calibration_collect_images.py

 

图像将存储在以下目录中。

./webcam_calibration_images/Logitech Webcam C930e/1920x1080

 

收集校准图像后,运行以下命令来处理图像。

python3 webcam_calibration_process_images.py

 

处理图像将生成类似于以下文件的 YAML 校准文件

./webcam_calibration_images/Logitech Webcam C930e/1920x1080/camera_calibration_results_20231211211703.yaml

 

测试相机

为了确保您的相机检测到钳子上的 ArUco 标记,请打开环形灯并运行以下代码。

python3 webcam_teleop_interface.py

您应该会看到相机拍摄的图像,其中检测到的 ArUco 标记周围画有绿色方框


运行 Dex Teleop

一切设置完成后,即可试用 Dex Teleop。请务必先慢动作,测试系统、积累经验并热身。

从慢动作开始!

完成所有设置后,运行以下命令(不带任何命令行参数)。这将使机器人以最慢的速度移动,同时确保一切正常,并熟悉使用远程操作系统。

python3 dex_teleop.py

当你准备好时,尝试快速动作

首先,将充电器插入机器人并将充电器设置为供电模式。

然后,当您确信系统已正确配置并学会以最慢速度使用它时,您可以运行以下命令,以最快的速度尝试它。机器人会快速移动,并且接触灵敏度会大大降低,所以请务必小心!

python3 dex_teleop.py --fast

高级:共享内存的多处理

为了获得更好的性能,您可以使用两个通过共享内存进行通信的进程来运行 Dex Teleop

首先,在终端中运行接口进程。该进程通过网络摄像头观察 ArUco 标记,为机器人的夹持器创建目标

python3 goal_from_teleop.py --multiprocessing

其次,在另一个终端运行机器人进程。该进程接收夹持器的目标,并尝试通过控制机器人来实现这些目标。

python3 gripper_to_goal.py --multiprocessing --fast

高级:双手 Dex Teleop

要执行双手遥控操作,您可以在第二个机器人上按照上述说明操作,并使用“--left”命令行参数。使用“--left”运行时,代码将仅响应左侧钳子,这些钳子带有ArUco标记,其ID号与右侧钳子不同。

例如,对于左手机器人,您可以运行以下命令来尝试慢动作 Dex Teleop

python3 dex_teleop.py --left

故障排除

如果您在执行指南中的步骤时遇到问题,请查看以下提示:

在快速模式下,手臂突然停止或急促移动

对于大多数拉伸动作,Dex Teleop 的快速模式需要手臂/升降电机施加更大的力来跟踪(并根据)参考轨迹进行接触。如果您发现动作突然或不顺畅,请尝试以下技巧:

电机所需的百分比力也会随机器人的系统电压而变化。因此,在 Dex Teleop 中使用快速模式时,请确保机器人充电器已插入电源并将其设置为 SUPPLY 模式。有关充电器 SUPPLY 模式的文档,请参阅电池维护指南。

如果已插入充电器,则可能需要校准电机的力度阈值。有关使用 CLI 的更多详细信息,请参阅“防护接触实用指南REx_calibrate_guarded_contact.py帖子。手臂和升降电机可能都需要重新校准。