数据采集方案#
版本号:v5.1.6.11#
ChangeLog#
-
完善后处理(post_capture)
-
增加位姿变换后处理,修复示教臂和执行臂位姿不一致问题
-
默认进行自动配置,无需额外配置
-
-
支持司岚底盘数采(位姿、速度、info)
-
正式支持相机并发调用采集(优化了调用逻辑避免潜在效率问题)
-
不再记录值均为None的关节相关数据(如replay的关节速度和力,终端启动时会打印相关警告)
-
优化了V4L2相机的关闭机制
-
修复了保存进度条的显示异常
-
修复了死窗口问题(默认不进行prepare_cv2,增加了程序卡死异常时的处理说明)
-
完善自动配置
-
支持指定机器人(机械臂)参考配置文件目录和文件名(修复ros格式自动配置关节数据无名称字段问题)
-
支持配置深度相机自动启动深度信息和异步调用(--depth,--cc)
-
支持单/双臂拖动示教自动配置(--drag),且允许手动调整配置不带夹爪
-
-
增加了资源占用检测工具的使用说明:airdc/docs/troubleshooting/faq.md见资源占用
-
增加了相机的更多问题处理文档
-
增加了PlotJuggler可视化说明文档
-
调整pose话题名称:arm -> eef
-
简化工程名和包名为airdc
系统环境配置#
环境要求#
为确保本项目正常运行,请确认您的系统环境满足以下要求:
-
Python
>= 3.9(推荐使用 Python 3.10,其他版本未经完整测试) -
操作系统
- 支持:Linux(含Docker容器;推荐使用Ubuntu,其他系统未经测试)
- 不支持:Windows,macOS
- 未测试:Windows Subsystem for Linux (WSL)
-
系统架构
- x86_64(64 位 Intel/AMD)
- ARM64(如 NVIDIA Jetson等)
-
依赖工具
POSIX shell(用于运行一键安装脚本等,如sh等)- (可选)虚拟环境管理工具,如
conda、venv等
-
其他
- 至少 2 GB 可用内存
- 磁盘空间:视采集数据量而定
注意,系统环境主要受限于所使用的具体后端,如机器人 SDK 和相机驱动等,请确保这些后端软件的系统要求也得到满足。
虚拟环境#
建议创建独立的Python虚拟环境进行数据采集环境安装,以满足Python版本要求同时避免与其他项目的依赖冲突。以conda为例,可执行如下命令创建并激活虚拟环境:
机器人 Setup#
环境要求
请使用上述创建的Python虚拟环境(如果使用的话)进行后续依赖安装!
数据采集程序依赖于机器人的基本软件环境,请自行安装并配置好对应机器人的驱动程序和Python SDK。
数据采集#
环境要求
- 请使用上述安装好机器人相关软件的
Python环境进行后续依赖安装! - 一键安装脚本默认分别使用
apt和pip进行系统和Python依赖安装,如果使用其他包管理工具,请手动安装对应依赖,或者修改安装脚本后再执行。对于前者,也可以在执行安装脚本时传入安装命令作为参数,例如$SHELL ./install.sh sudo yum install -y。 - 仓库clone注意指定分支/标签,以保证版本一致性。若不指定则默认使用
main分支,是最新的稳定版本。develop分支为最新开发版本,可能存在不稳定情况。如需固定版本,请指定特定标签。
git clone https://github.com/DISCOVER-Robotics/AIRBOT-Data-Collection.git --depth 1 -b <tag/branch> data-collection
cd data-collection
conda activate airbot_data
$SHELL install/install.sh
$SHELL一般可简单用bash代替(下同)。安装结束后终端可能有红色报错提示部分依赖问题,一般可忽略,进行后续操作即可。
相机信息#
可以通过如下命令查看已连接相机的信息:
在终端输出中可以看到每个相机的名称、设备路径(含ID)、USB端口(总线)信息、支持的图像格式和对应的分辨率和帧率,以及设备总数等信息。
相机检查#
连接所需的全部相机,对于USB相机,可以执行如下命令进行检查:
其中2 4 6指定了相机的ID号,可通过ls /dev/video*命令查看并做相应修改,一般来说使用偶数的ID,奇数的ID不可用。
-ff后面的参数指定了每个相机的视频流格式,一般使用MJPEG。常见问题见常见问题。
RealSense相机支持#
对于Intel-RealSense相机,可以运行$SHELL install/install_realsense.sh安装相关依赖,并执行如下命令查看已连接相机的序列号:
数据采集配置#
数据采集程序默认基于Hydra框架进行配置,支持通过yaml文件配置默认参数以及通过命令行对参数进行覆写。
数据采集的配置选项主要包括示教器/遥操系统(Demonstrator)、采样器(Sampler)、管理器(Manager)、可视化器(Visualizer)、状态机(FSM)以及其他基本配置(如logging、数据保存路径等)。
由于配置参数较多,因此提供了默认配置文件夹airbot_ie,一般可在此基础上进行修改。该配置主要使用:
- 示教器:使用
grouped demonstrator分组指定leader、follower和observer三种角色将分散的设备进行组合,完成遥操控制和数据采集。 - 采样器:使用
mcap sampler将episode数据保存为基于FlatBuffersSchema的.mcap格式文件。 - 管理器:使用
keyboard manager结合self manager通过键盘进行数据采集的流程控制。 - 可视化器:使用
OpenCV visualizer进行数据的实时显示和监控。
部分配置调整说明链接如下:
启动遥操作#
请根据实际机器人的使用方式进行启动。部分机器人遥操作说明链接如下:
数据采集流程#
运行数据采集程序#
完成前述准备工作后,可执行如下命令运行数据采集程序(终端在data-collection目录):
上述命令将使用默认配置文件中的配置。此外,也可以在命令行中重新指定配置文件,或对配置文件中的参数进行覆写,例如:
其中--path指定了配置文件路径(这里就是默认路径),dataset.directory=example指定了数据保存目录为data目录下的example文件夹。更多命令行参数覆写规则见配置调整说明。
启动后,默认可以使用键盘进行数据采集的流程控制,键盘使用说明在可在终端打印中上滚看到,或者按键盘i键重新打印。
数据采集建议#
为了保证数据采集的质量,有如下建议:
示教
- 运动过程平稳流畅自然,没有明显加速、停顿、抖动等速度突变情况;
- 数据采集轨迹分布应具有一定的随机性,但请注意动作分布差异不要过大;
- 夹爪开合的动作应比较明显,即张开时尽量张开,关闭时尽量关闭,保证主动臂和从动臂编码器返回明确的开合值;
- 每个动作之间有一定停顿;
- 在操作物体时应考虑模型预测可能出现的偏差,不要出现仅夹住物体边缘的情况;
相机
- 采集图像清晰,相机对焦点正常,画面无卡顿、模糊、抽帧等问题;
- 环境相机中保证操作物体全程位于画面中(杯子等较大物体允许有几帧不整体入镜);
- 环境相机注意操作角度,避免位于夹爪遮挡小物体的角度,如下图所示;
- 臂上相机应保证可以看到操作物体和夹爪的开合特征;
- 环境相机视野中,示教臂不可入镜(因推理时不存在),执行臂在任务开始时可不必须入镜,但在操作物体时要求可以看到夹爪与物体的交互;
- 相机视野应考虑改变物体摆放位置后,物体仍位于相机视野中,且物体的初始摆放位置应尽量位于相机视野中央;
数据采集操作#
- 按空格键开始数据采集
- 完成任务后按
s键保存, 等待保存完毕后, 再次按下空格键开始采集 - 若在采集过程中, 发现本次操作有不符合采集要求时,主观认为是无效数据,则按
q键放弃当前采集,然后重新按空格键开始采集 - 若数据已经保存,发现采集的数据不符合要求,则可按
r键删除本次采集的数据,然后按空格键重新采集 - 所有数据采集完毕后, 按
ESC键退出采集程序
数据可视化#
视保存的数据格式不同,可使用不同工具进行数据可视化。部分数据可视化说明链接如下:
性能测试#
请参考性能测试页面。
常见问题#
请参考常见问题页面。