LeRobot documentation
OpenArm
OpenArm
OpenArm là cánh tay humanoid 7DOF mã nguồn mở được thiết kế cho nghiên cứu và triển khai AI vật lý.
Để có được OpenArm của bạn, dù là đã lắp ráp sẵn hay tự lắp ráp, và tham gia vào cộng đồng toàn cầu, hãy tìm hiểu các nhà sản xuất được xác minh và chứng nhận trên toàn thế giới tại openarm.dev.
Điểm khác biệt?
Thiết kế theo tỷ lệ con người: OpenArm được thiết kế với các tỷ lệ giống con người, được thu nhỏ để phù hợp với người cao khoảng 160-165cm. Điều này mang lại sự cân bằng tối ưu giữa tầm với thực tế và quán tính có thể kiểm soát được, cho phép vận hành an toàn và phản hồi nhanh.
Kiến trúc đặt an toàn lên hàng đầu: Được xây dựng với động cơ QDD có khả năng đảo ngược và độ tuân thủ cao, OpenArm ưu tiên tương tác an toàn giữa con người và robot trong khi vẫn duy trì khả năng tải thực tế (đỉnh 6,0kg / danh định 4,1kg) cho các tác vụ thực tế.
Được thiết kế để bền bỉ: Các thành phần cấu trúc quan trọng được chế tạo từ nhôm và thép không gỉ, đảm bảo hiệu suất ổn định cho việc thu thập dữ liệu lặp đi lặp lại và sử dụng nghiên cứu liên tục.
Truy cập và chế tạo hoàn toàn: Mọi thành phần, từ các chi tiết CNC và vỏ in 3D đến hệ thống dây điện, đều được thiết kế để các nhà nghiên cứu và phòng thí nghiệm cá nhân có thể mua và chế tạo, kèm theo dữ liệu chế tạo đầy đủ.
Thực dụng & Chi phí hợp lý: Với giá 6.500 USD cho một hệ thống hai tay hoàn chỉnh, OpenArm mang lại khả năng cấp nghiên cứu với chi phí chỉ bằng một phần nhỏ so với các robot humanoid truyền thống.
Yêu cầu về nền tảng
**Linux Only**: OpenArm currently only works on Linux. The CAN bus USB adapter does not have macOS drivers and has not been tested on Windows.
Hướng dẫn An toàn
Trước khi vận hành OpenArm, vui lòng đọc hướng dẫn an toàn chính thức. Các điểm chính:
- Cài đặt an toàn: Cố định cánh tay vào bề mặt phẳng, ổn định bằng ốc vít hoặc kẹp
- Khoảng cách an toàn: Giữ các bộ phận cơ thể và vật thể nằm ngoài phạm vi di chuyển trong quá trình vận hành
- Thiết bị bảo hộ: Luôn đeo kính bảo hộ; sử dụng thêm PPE khi cần
- Giới hạn tải trọng: Không được vượt quá giới hạn tải trọng quy định (6,0kg đỉnh / 4,1kg danh định cho mỗi cánh tay)
- Dừng khẩn cấp: Biết vị trí và cách vận hành thiết bị dừng khẩn cấp
- Kiểm tra định kỳ: Kiểm tra các vít lỏng, giới hạn cơ khí bị hỏng, tiếng ồn bất thường và hư hỏng dây điện
Cấu hình phần cứng
Xem tài liệu phần cứng OpenArm chính thức để biết thêm về:
- Danh sách vật tư và nguồn cung
- Hướng dẫn in 3D
- Lắp ráp cơ khí
- Đường dây điện
Các kho phần cứng có sẵn tại github.com/enactic/openarm.
Cấu hình Bus CAN
OpenArm sử dụng giao tiếp CAN bus với động cơ Damiao. Sau khi bạn đã cắm bộ chuyển đổi CAN bus USB vào máy tính Linux, hãy làm theo hướng dẫn về động cơ Damiao và CAN bus để cấu hình giao diện.
Cài đặt nhanh:
# Setup CAN interfaces
lerobot-setup-can --mode=setup --interfaces=can0,can1
# Test motor communication
lerobot-setup-can --mode=test --interfaces=can0,can1Cài đặt LeRobot 🤗
Theo Hướng dẫn cài đặt của chúng tôi, sau đó cài đặt hỗ trợ động cơ Damiao:
pip install -e ".[damiao]"Cách sử dụng
Cánh tay theo dõi (Robot)
lerobot-calibrate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_followerfrom lerobot.robots.openarm_follower import OpenArmFollower, OpenArmFollowerConfig
config = OpenArmFollowerConfig(
port="can0",
side="right", # or "left" for left arm
id="my_openarm_follower",
)
follower = OpenArmFollower(config)
follower.connect()
# Read current state
obs = follower.get_observation()
print(obs)
# Send action (position in degrees)
action = {
"joint_1.pos": 0.0,
"joint_2.pos": 0.0,
"joint_3.pos": 0.0,
"joint_4.pos": 45.0,
"joint_5.pos": 0.0,
"joint_6.pos": 0.0,
"joint_7.pos": 0.0,
"gripper.pos": 0.0,
}
follower.send_action(action)
follower.disconnect()Cánh tay điều khiển (Teleoperator)
Cánh tay leader được sử dụng cho teleoperation - di chuyển thủ công để điều khiển cánh tay follower.
lerobot-calibrate \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderfrom lerobot.teleoperators.openarm_leader import OpenArmLeader, OpenArmLeaderConfig
config = OpenArmLeaderConfig(
port="can1",
id="my_openarm_leader",
manual_control=True, # Disable torque for manual movement
)
leader = OpenArmLeader(config)
leader.connect()
# Read current position (as action to send to follower)
action = leader.get_action()
print(action)
leader.disconnect()Điều khiển từ xa
Để điều khiển OpenArm từ xa bằng phương pháp điều khiển leader-follower:
lerobot-teleoperate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderSử dụng cùng --robot.id và --teleop.id như trong quá trình hiệu chuẩn để LeRobot tìm thấy các tệp hiệu chuẩn.
Điều khiển từ xa hai tay
Để điều khiển từ xa một hệ thống OpenArm hai tay với hai cánh tay dẫn và hai cánh tay theo:
lerobot-teleoperate \
--robot.type=bi_openarm_follower \
--robot.left_arm_config.port=can0 \
--robot.left_arm_config.side=left \
--robot.right_arm_config.port=can1 \
--robot.right_arm_config.side=right \
--robot.id=my_bimanual_follower \
--teleop.type=bi_openarm_leader \
--teleop.left_arm_config.port=can2 \
--teleop.right_arm_config.port=can3 \
--teleop.id=my_bimanual_leaderGhi Dữ Liệu
Để ghi lại một bộ dữ liệu trong quá trình vận hành từ xa:
lerobot-record \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leader \
--dataset.repo_id=${HF_USER}/my_openarm_dataset \
--dataset.single_task="Describe your task here" \
--dataset.fps=30 \
--dataset.num_episodes=10lerobot-record thêm ngày và giờ của phiên vào tên tập dữ liệu, do đó nó được lưu dưới dạng my_hf_username/my_openarm_dataset_YYYYMMDD_HHMMSS. Xem hướng dẫn ghi hình để biết về camera, điều khiển bàn phím và phần còn lại của quy trình.
Tùy chọn cấu hình
Cấu hình Follower
| Tham số | Mặc định | Mô tả |
|---|---|---|
port | - | Giao diện CAN (ví dụ: can0) |
side | None | Bên cánh tay: "left", "right", hoặc None cho các giới hạn tùy chỉnh |
use_can_fd | True | Bật CAN FD để đạt tốc độ truyền dữ liệu cao hơn |
can_bitrate | 1000000 | Tốc độ bit danh định (1 Mbps) |
can_data_bitrate | 5000000 | Tốc độ bit dữ liệu CAN FD (5 Mbps) |
max_relative_target | None | Giới hạn an toàn cho các vị trí đích tương đối |
position_kp | Theo từng khớp | Hệ số khuếch đại tỷ lệ cho điều khiển vị trí |
position_kd | Theo từng khớp | Hệ số lợi đạo hàm của điều khiển vị trí |
Cấu hình Leader
| Tham số | Mặc định | Mô tả |
|---|---|---|
port | - | Giao diện CAN (ví dụ: can1) |
manual_control | True | Tắt mô-men xoắn cho chuyển động thủ công |
use_can_fd | True | Bật CAN FD để đạt tốc độ truyền dữ liệu cao hơn |
can_bitrate | 1000000 | Tốc độ bit danh định (1 Mbps) |
can_data_bitrate | 5000000 | Tốc độ bit dữ liệu CAN FD (5 Mbps) |
Cấu hình động cơ
OpenArm sử dụng động cơ Damiao với cấu hình mặc định như sau:
| Liên hợp | Loại động cơ | Gửi ID | ID nhận |
|---|---|---|---|
| joint_1 (Xoay vai) | DM8009 | 0x01 | 0x11 |
| joint_2 (Nâng vai) | DM8009 | 0x02 | 0x12 |
| joint_3 (Xoay vai) | DM4340 | 0x03 | 0x13 |
| joint_4 (Uốn khuỷu tay) | DM4340 | 0x04 | 0x14 |
| joint_5 (Xoay cổ tay) | DM4310 | 0x05 | 0x15 |
| joint_6 (Góc nghiêng cổ tay) | DM4310 | 0x06 | 0x16 |
| joint_7 (Xoay cổ tay) | DM4310 | 0x07 | 0x17 |
| gripper | DM4310 | 0x08 | 0x18 |
Xử lý sự cố
Không có phản hồi từ động cơ
- Kiểm tra các kết nối nguồn điện
- Verify CAN wiring (CAN-H, CAN-L, GND)
- Chạy chẩn đoán:
lerobot-setup-can --mode=test --interfaces=can0 - Xem hướng dẫn khắc phục sự cố Damiao để biết thêm chi tiết
Không tìm thấy giao diện CAN
Đảm bảo giao diện CAN được cấu hình:
ip link show can0