lerobot_tutorial / 2. LeRobot Setting.md
aailabkaist's picture
Upload 4 files
1a59c60 verified
|
Raw
History Blame Contribute Delete
5.02 kB

2. LeRobot Setting

last updated Dec/26/2025

2-1. USB port ์ฐพ๊ธฐ

  1. Follower arm ๋ณด๋“œ์™€ PC๋ฅผ USB๋กœ ์—ฐ๊ฒฐ
  2. ์•„๋ž˜ ๋ช…๋ น ์‹คํ–‰
lerobot-find-port
  1. ์•ˆ๋‚ด์— ๋”ฐ๋ผ Follower arm ๋ณด๋“œ์—์„œ USB ์ผ€์ด๋ธ”์„ ๋ฝ‘๊ณ  Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
The port of this MotorsBus is '/dev/ttyACM0'
Reconnect the USB cable

โ†’ ์ด ๊ฒฝ์šฐ์— follower arm ๋ณด๋“œ์˜ USB ํฌํŠธ๋Š” /dev/ttyACM0 ์ž…๋‹ˆ๋‹ค.

  1. Leader arm ๋ณด๋“œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ USB ํฌํŠธ๋ฅผ ์ฐพ์•„์ค๋‹ˆ๋‹ค.

  2. ๊ฐ ํฌํŠธ๊ฐ€ ์–ด๋–ค arm(Follower/Leader)์— ํ•ด๋‹นํ•˜๋Š”์ง€ ๋ฐ˜๋“œ์‹œ ๊ตฌ๋ถ„ํ•ด ๋‘์„ธ์š”.

  3. ์—ฐ๊ฒฐ๋œ USB ํฌํŠธ์— Read/Write ๊ถŒํ•œ ๋ถ€์—ฌ

sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1

(Optional) Serial number๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ USB port ๊ณ ์ •ํ•˜๋Š” ๋ฒ•

1. ttyACM0 serial ํ™•์ธ

udevadm info -a -n /dev/ttyACM0 | grep '{serial}' -m 1
# Example print
ATTRS{serial}=="5A7A057786"

2. ttyACM1 serial ํ™•์ธ

udevadm info -a -n /dev/ttyACM1 | grep '{serial}' -m 1
# Example print
ATTRS{serial}=="5A68011549"

3. udev rule ์ƒ์„ฑ

# udev rule ์ƒ์„ฑ/ํŽธ์ง‘
sudo nano /etc/udev/rules.d/99-serial.rules
  GNU nano 2.9.3                              /etc/udev/rules.d/99-serial.rules

# ์•„๋ž˜์˜ serial number๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ์ž์‹ ์˜ ํ™˜๊ฒฝ์—์„œ ํ™•์ธํ•œ ๊ฐ’์œผ๋กœ ๋ฐ˜๋“œ์‹œ ๊ต์ฒดํ•˜์„ธ์š”.
SUBSYSTEM=="tty", ATTRS{serial}=="5A7A057786", SYMLINK+="so101_follower"
SUBSYSTEM=="tty", ATTRS{serial}=="5A68011549", SYMLINK+="so101_leader"

4. rule reload / trigger

sudo udevadm control --reload-rules
sudo udevadm trigger

5. ๊ณ ์ • ํฌํŠธ ํ™•์ธ

ls -l /dev/so101_*
# Example print
# USB ํฌํŠธ๋ฅผ ๊ฝ‚๋Š” ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋‹ค์Œ ๊ฒฝ๋กœ๋กœ ํ•ญ์ƒ ๋™์ผํ•˜๊ฒŒ ์ธ์‹
lrwxrwxrwx 1 root root 7 11์›” 24 21:46 /dev/so101_follower -> ttyACM0
lrwxrwxrwx 1 root root 7 11์›” 24 21:46 /dev/so101_leader -> ttyACM1

2-2. ๋ชจํ„ฐ ID ์„ค์ •

  • ๊ฐ ๋ชจํ„ฐ์˜ ๊ณ ์œ  ID ์„ค์ •์„ ์œ„ํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„, ํ„ฐ๋ฏธ๋„์— ํ‘œ์‹œ๋˜๋Š” ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ ๋ชจํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์—ฐ๊ฒฐํ•˜๋ฉฐ ์ง„ํ–‰
  • ์•„๋ž˜ ๋งํฌ์˜ ์˜์ƒ์„ ๋ณด๋ฉด์„œ ํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
    https://huggingface.co/docs/lerobot/so101#2-set-the-motors-ids-and-baudrates

Follower

lerobot-setup-motors \
  --robot.type=so101_follower \
  --robot.port=/dev/so101_follower  # Follower ๋ณด๋“œ์˜ USB port

Leader

lerobot-setup-motors \
  --teleop.type=so101_leader \
  --teleop.port=/dev/so101_leader   # Leader ๋ณด๋“œ์˜ USB port

2-3. Calibration

  • Calibration์€ ๋กœ๋ด‡ ํŒ”์˜ ๊ฐ ๊ด€์ ˆ(joint)์ด ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์ธ์‹ํ•˜๊ณ  ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ค‘์š”ํ•œ ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
  • ์•„๋ž˜ ๋งํฌ์˜ ์˜์ƒ์„ ๋ณด๋ฉด์„œ ํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
    https://huggingface.co/docs/lerobot/so101#calibrate

Follower

lerobot-calibrate \
  --robot.type=so101_follower \
  --robot.port=/dev/so101_follower \
  --robot.id=follower

Leader

lerobot-calibrate \
  --teleop.type=so101_leader \
  --teleop.port=/dev/so101_leader \
  --teleop.id=leader

Calibration ๊ณผ์ •

Command ์‹คํ–‰ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Move None SO101Leader to the middle of its range of motion and press ENTER....
Move all joints sequentially through their entire ranges of motion.
Recording positions. Press ENTER to stop...

์œ„ ๋ฉ”์‹œ์ง€๋ฅผ ๋”ฐ๋ผ ์ค‘๊ฐ„ ์œ„์น˜(middle position) ๋ฅผ ์žก์•„์ฃผ๊ณ  Enter๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.

Joint ์›€์ง์ž„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • ๋กœ๋ด‡ ํŒ”์„ ์ค‘๊ฐ„ ์œ„์น˜(middle position) ๋กœ ์ด๋™
  • ๋ชจ๋“  ๊ด€์ ˆ(joints)์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ „์ฒด ๋ฒ”์œ„์—์„œ ์›€์ง์—ฌ๋ณด๊ธฐ
  • ENTER ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๊ธฐ๋ก ์ค‘์ง€

Calibration ๊ฒฐ๊ณผ

Calibration์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ด€์ ˆ ์œ„์น˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค(์˜ˆ์‹œ).

-------------------------------------------
-------------------------------------------
NAME            |    MIN |    POS |    MAX
shoulder_pan    |   1955 |   2007 |   3132
shoulder_lift   |    709 |    724 |   2057
elbow_flex      |   1605 |   3036 |   3110
wrist_flex      |    808 |   2797 |   2803
wrist_roll      |   2037 |   2048 |   2055
gripper         |   2019 |   2046 |   3383

ํŒŒ์ผ ์ €์žฅ ํ™•์ธ

์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Calibration saved to ~/.cache/huggingface/lerobot/calibration/teleoperators/so101_leader/leader.json

Calibration ํŒŒ์ผ

Calibration์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ ์œ„์น˜์— ํŒŒ์ผ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

  • ๋ฆฌ๋” ์•”:
    ~/.cache/huggingface/lerobot/calibration/teleoperators/so101_leader/leader.json
  • ํŒ”๋กœ์›Œ ์•”:
    ~/.cache/huggingface/lerobot/calibration/robots/so101_follower/follower.json

๊ฐ Calibration ํŒŒ์ผ์—๋Š” ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ๊ฐ ๊ด€์ ˆ์˜ ์ตœ์†Œ๊ฐ’(MIN)
  • ํ˜„์žฌ ์œ„์น˜(POS)
  • ์ตœ๋Œ€๊ฐ’(MAX)