LeRobot so100 数据采集细节
2.多机械臂连在hub上,会经常自己变动端口号,我是分开插在电脑上的,可以用hub的Type-C接口一端接USB,Type-C一端电脑解决USB不够用的问题,相机USB不沟通也可以借助HUB的Type-C;第一轮结束点击向右键结束记录,这时候需要初始化环境,初始化环境完成之后再点击向右键,会开始第二轮的采集;回车之后,出现一下输出,环境初始化好之后,点击向右键就开始记录数据,这时候开始操作机械臂采
参考材料:
https://github.com/huggingface/lerobot
9-lerobot aloha 采集数据并且训练_哔哩哔哩_bilibili
https://developer.d-robotics.cc/forumDetail/289424806557116771
https://wiki.seeedstudio.com/lerobot_so100m_new/
lerobot代码库更新太快了,以下针对2025年4月25日之前的代码总结
配置和安装上面材料都有详细介绍,这里根据自己的经验记录一下数据采集的细节
查看机械臂端口号:
python lerobot/scripts/find_motors_bus_port.py
运行以上命令,拔掉usb接口就可以看到端口号如:The port of this MotorsBus is '/dev/ttyACM0'
端口号就是 /dev/ttyACM0
参考以上参考链接在lerobot/common/robot_devices/robots/configs.py中配置机械臂端口号和相机编号
注意:多个机械臂需要同时插上才能读取出来不同的端口号
授权:
sudo chmod 666 /dev/ttyACM0
机械臂组装之前需要标注每个关节的电机:
python lerobot/scripts/configure_motor.py \
--port /dev/ttyACM0 \
--brand feetech \
--model sts3215 \
--baudrate 1000000 \
--ID 1
校准机械臂
我的经验先校准主臂再校准从臂比较荣誉成功,多次操作之后发现机械臂控制走位不准需要重新校准
主臂
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--robot.cameras='{}' \
--control.type=calibrate \
--control.arms='["main_leader"]'
从臂
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--robot.cameras='{}' \
--control.type=calibrate \
--control.arms='["main_follower"]'
校准机械臂的位姿请见开篇参考材料
注意:
1.如果相机通过USB连接电脑供电,多个相机接在一个hub上可能采集数据容易中断,因为供电不足,需要分开连电脑不同的USB;
2.多机械臂连在hub上,会经常自己变动端口号,我是分开插在电脑上的,可以用hub的Type-C接口一端接USB,Type-C一端电脑解决USB不够用的问题,相机USB不沟通也可以借助HUB的Type-C;
下面说采集数据的细节
采集数据:
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--control.type=record \
--control.fps=30 \
--control.single_task="pnp" \
--control.repo_id=mytest/so100_test1 \
--control.tags='["so100","tutorial"]' \
--control.warmup_time_s=5 \
--control.episode_time_s=20 \
--control.reset_time_s=20 \
--control.num_episodes=2 \
--control.push_to_hub=false
回车之后,出现一下输出,环境初始化好之后,点击向右键就开始记录数据,这时候开始操作机械臂采数据。
INFO 2025-04-25 14:08:28 rol_utils.py:82 dt:33.41 (29.9hz) dtRlead: 1.57 (636.7hz) dtWfoll: 0.20 (4881.2hz) dtRfoll: 1.84 (542.5hz) dtRlaptop:27.96 (35.8hz) dtRphone:31.89 (31.4hz)
INFO 2025-04-25 14:08:28 rol_utils.py:82 dt:33.41 (29.9hz) dtRlead: 1.71 (585.5hz) dtWfoll: 0.26 (3805.6hz) dtRfoll: 1.76 (569.8hz) dtRlaptop:32.00 (31.3hz) dtRphone:35.99 (27.8hz)
采集完一轮数据,再点击向右键,结束采集会出现一行以下输出,很快就会过去不一定看得到
INFO 2025-04-25 14:08:12 rol_utils.py:82 dt:33.41 (29.9hz) dtRlead: 1.66 (601.6hz) dtWfoll: 0.22 (4460.5hz) dtRfoll: 1.64 (611.5hz) dtRlaptop:32.18 (31.1hz) dtRphone:35.59 (28.1hz)
Right arrow key pressed. Exiting loop...
^[[CINFO 2025-04-25 14:08:12 rol_utils.py:82 dt:33.41 (29.9hz) dtRlead: 1.65 (607.0hz) dtWfoll: 0.26 (3865.1hz) dtRfoll: 2.04 (490.2hz) dtRlaptop:36.67 (27.3hz) dtRphone:32.76 (30.5hz)
INFO 2025-04-25 14:08:12 ls/utils.py:200 Reset the environment
INFO 2025-04-25 14:08:12 rol_utils.py:82 dt:33.44 (29.9hz) dtRlead: 1.68 (595.7hz) dtWfoll: 0.25 (3948.8hz) dtRfoll: 1.73 (576.8hz) dtRlaptop:31.21 (32.0hz) dtRphone:32.76 (30.5hz)
这时需要重新初始化环境,初始化环境结束之后,再点击向右箭头运行一段时间后会出现进度条
Map: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 279/279 [00:00<00:00, 4634.31 examples/s]
Creating parquet from Arrow format: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2302.03ba/s]
进度条结束后开始新一轮的采集,先不要动,等输出再次出现以下内容时可以新的一轮数据采集
INFO 2025-04-25 14:08:20 ls/utils.py:200 Recording episode 39
INFO 2025-04-25 14:08:20 rol_utils.py:82 dt:33.40 (29.9hz) dtRlead: 1.58 (631.6hz) dtWfoll: 0.24 (4229.5hz) dtRfoll: 1.62 (615.6hz) dtRlaptop:31.99 (31.3hz) dtRphone:35.64 (28.1hz)
INFO 2025-04-25 14:08:20 rol_utils.py:82 dt:33.41 (29.9hz) dtRlead: 1.55 (646.5hz) dtWfoll: 0.22 (4480.8hz) dtRfoll: 1.70 (588.7hz) dtRlaptop:35.76 (28.0hz) dtRphone:32.09 (31.2hz)
INFO 2025-04-25 14:08:20 rol_utils.py:82 dt:33.40 (29.9hz) dtRlead: 1.54 (647.6hz) dtWfoll: 0.27 (3645.9hz) dtRfoll: 1.63 (613.3hz) dtRlaptop:31.91 (31.3hz) dtRphone:32.11 (31.1hz)
总结以下:
第一轮开始采集时需要点击向右键开始记录;
第一轮结束点击向右键结束记录,这时候需要初始化环境,初始化环境完成之后再点击向右键,会开始第二轮的采集;
第二轮采集开始之后只有采集完成和初始化完成需要点击向右键;
最后一轮采集完成之后点击向右键直接会出现进度条,进度条完成之后提示 Stop recording,CRTL+C退出采集
在之前采集的数据之后继续采集:
python lerobot/scripts/control_robot.py \
--control.repo_id=mytest/so100_test1 \
--control.resume=true \
--control.type=record \
--control.single_task="pnp" \
--robot.type=so100 \
--control.fps=30 \
--control.num_episodes=5
--control.num_episodes=1 继续采集的论次
开始采集 初始化环境之后向右键开始
结束一轮之后 向右键 环境复位后向右建,看到进度条完成 开始重新采集的输出之后开始新的一轮
注:
向左键重新采集当前轮次数据
小机械臂容易发热,我的经验每次采5轮,然后回看以下数据有没有问题,顺便让机械臂散散热休息一下
回看数据:
数据可视化
python lerobot/scripts/visualize_dataset.py --repo-id mytest/so100_test1 --episode-index 0
更多推荐
所有评论(0)