Costruisci il tuo robot SO-101!

Ottieni le parti per il SO-101

Segui questo README. Include il distinta base con un link alle fonti per le parti, oltre alle istruzioni per la stampa 3D delle parti. Inoltre, indica se è la tua prima volta che stampi o se non possiedi una stampante 3D.

Installa LeRobot

Per installare LeRobot, segui Guida all'installazione.
Oltre a queste istruzioni, devi installare il Feetech SDK:
 pip install -e ".[feetech]"

Istruzioni di montaggio passo dopo passo

Il braccio follower utilizza 6 motori STS3215 con ingranaggi 1/345. Il leader, invece, usa tre motori con ingranaggi diversi per garantire sia il supporto del proprio peso sia un movimento con sforzo minimo. La tabella sottostante mostra quale motore è necessario per ogni giunto.
Asse del braccio leader Motore Rapporto di trasmissione
Base / Rotazione della spalla 1 1 / 191
Sollevamento della spalla 2 1 / 345
Flessione del gomito 3 1 / 191
Flessione del polso 4 1 / 147
Rotazione del polso 5 1 / 147
Pinza 6 1 / 147

Pulisci le parti del SO-101

Rimuovi tutto il materiale di supporto dalle parti stampate in 3D. Il metodo più semplice è far scorrere un piccolo cacciavite sotto il materiale di supporto per rimuoverlo.
Dopo aver posizionato i motori, installa un cavo a 3 pin in ciascun motore prima di procedere con l'assemblaggio.

Installa l'articolazione 1

  1. Inserisci il primo motore nella base.
  2. Fissa il motore con quattro viti M2x6mm (le viti più piccole): due dall'alto e due dal basso.
  3. Fai scorrere il primo supporto motore sopra il motore e fissalo con due viti M2x6mm (una per lato).
  4. Adatta entrambe le corna del motore e fissa la corna superiore con una vite M3x6mm.
  5. Monta la parte della spalla.
  6. Fissa la parte della spalla con quattro viti M3x6mm sulla parte superiore e quattro viti M3x6mm sulla parte inferiore.
  7. Installa il supporto motore della spalla.

Installa l'articolazione 2

  1. Fai scorrere il secondo motore verso il basso in posizione dall'alto.
  2. Fissa il secondo motore con quattro viti M2x6mm.
  3. Adatta entrambe le corna del motore al motore 2 e fissa la corna superiore con una vite M3x6mm.
  4. Fissa il braccio superiore, assicurandolo con quattro viti M3x6mm su ciascun lato.

Installa l'articolazione 3

  1. Inserisci il motore 3 e fissalo con quattro viti M2x6mm.
  2. Installa entrambe le corna del motore sul motore 3, fissandone una con una vite per corna M3x6mm.
  3. Fissa l'avambraccio al motore 3, utilizzando quattro viti M3x6mm su ciascun lato.

Installa l'articolazione 4

  1. Fai scorrere il supporto motore 4 in posizione.
  2. Inserisci il motore 4.
  3. Fissa il motore 4 con quattro viti M2x6mm, quindi monta i suoi corni motore e fissa uno con una vite corno M3x6mm.

Installa Giunto 5

  1. Inserisci il motore 5 nel supporto del polso e fissalo con due viti frontali M2x6mm.
  2. Monta un singolo corno motore sul motore del polso e fissalo con una vite corno M3x6mm.
  3. Fissa il polso al motore 4, serrandolo con quattro viti M3x6mm su ogni lato.

Installa Pinza / Maniglia

Follower

  1. Monta la pinza sul motore 5 fissandola al corno motore del polso con quattro viti M3x6mm.
  2. Inserisci il motore della pinza e fissalo con due viti M2x6mm su ogni lato.
  3. Monta i corni motore e fissa uno con una vite corno M3x6mm.
  4. Installa l'artiglio della pinza e fissalo con quattro viti M3x6mm su ogni lato.

Leader

  1. Monta il supporto leader sul polso e fissalo con quattro viti M3x6mm.
  2. Fissa la maniglia al motore 5 usando una vite M2x6mm.
  3. Inserisci il motore della pinza e fissalo con due viti M2x6mm su ogni lato; monta un corno motore e fissalo con una vite corno M3x6mm.
  4. Fissa il grilletto follower usando quattro viti M3x6mm.

Configura i motori del SO-101

Individua le porte USB corrispondenti a ogni braccio

Per identificare la porta di ogni adattatore bus servo, collega il MotorBus al computer tramite USB e alimentazione. Esegui lo script seguente e scollega il MotorBus quando richiesto:
 lerobot-find-port

Mac

Esempio di output:
 Ricerca di tutte le porte disponibili per il MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Rimuovi il cavo USB dal tuo MotorsBus e premi [Enter] quando hai finito.

[...Disconnect corresponding leader or follower arm and press Enter...]

La porta di questo MotorsBus è /dev/tty.usbmodem575E0032081
Ricollega il cavo USB.
La porta rilevata è /dev/tty.usbmodem575E0032081, che corrisponde al tuo braccio leader o follower.

Linux

Su Linux, potresti dover concedere l'accesso alle porte USB eseguendo:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Esempio di output:
 Ricerca di tutte le porte disponibili per il MotorBus. 
['/dev/ttyACM0', '/dev/ttyACM1']

Rimuovi il cavo usb dal tuo MotorsBus e premi [Enter] quando hai finito.

[...Disconnect corresponding leader or follower arm and press Enter...]

La porta di questo MotorsBus è /dev/ttyACM1
Ricollega il cavo USB.

La porta rilevata è /dev/ttyACM1, che corrisponde al tuo braccio leader o follower.

Assegna gli ID dei motori e imposta i loro baudrate

Ogni motore ha un ID unico sul bus. I motori nuovi solitamente vengono spediti con un ID pari a 1. Per una comunicazione corretta tra i motori e il controller, ogni motore deve avere un ID distinto. Il baudrate determina la velocità di trasmissione dati sul bus; il controller e tutti i motori devono condividere lo stesso baudrate per comunicare.
Per fare ciò, connettiti a ogni motore individualmente con il controller e configura il suo ID e baudrate. Queste impostazioni vengono scritte nella memoria non volatile (EEPROM) del motore, quindi il processo deve essere eseguito solo una volta.
Se stai riutilizzando motori da un altro robot, probabilmente dovrai ripetere questo passaggio perché i loro ID e baudrate potrebbero non corrispondere.
Il video qui sotto dimostra la procedura passo-passo per impostare gli ID dei motori.

Follower

Collega il cavo USB dal tuo computer e l'alimentatore alla scheda controller del braccio follower. Poi esegui il comando qui sotto (o esegui l'esempio API) usando la porta ottenuta in precedenza. Assegna anche un nome al tuo braccio leader usando il parametro id.
Comando:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- incolla qui la porta trovata nel passaggio precedente

Esempio API:
 from lerobot.robots.so101_follower import SO101Follower, SO101FollowerConfig

config = SO101FollowerConfig(
      port="/dev/tty.usbmodem585A0076841",
      id="my_awesome_follower_arm",
)
follower = SO101Follower(config)
follower.setup_motors()
Vedrai la seguente istruzione.
 Collega la scheda controller solo al motore 'gripper' e premi [Enter].
Come indicato, collega il motore del gripper—assicurati che sia l'unico motore collegato alla scheda e non collegato a catena ad altri. Quando premi [Enter], lo script configurerà automaticamente l'ID e la velocità di trasmissione di quel motore.
Risoluzione dei problemi:
Se si verifica un errore, verifica tutte le connessioni dei cavi:
  • Alimentatore
  • Cavo USB tra il tuo computer e la scheda controller
  • Cavo a 3 pin dalla scheda controller al motore
Se usi una scheda controller Waveshare, conferma che entrambi i jumper siano impostati sul canale B (USB).
Dopo di ciò, dovresti vedere il seguente messaggio:
 ID motore 'gripper' impostato su 6
Seguito dalla prossima istruzione:
 Collega la scheda controller solo al motore 'wrist_roll' e premi [Enter].
Puoi scollegare il cavo a 3 pin dalla scheda controller ma lasciare l'altra estremità collegata al motore del gripper, poiché quella estremità è già in posizione. Successivamente, collega un nuovo cavo a 3 pin dalla scheda controller al motore del polso rotante. Come prima, assicurati che questo motore sia l'unico collegato alla scheda e non sia collegato a catena ad altri motori.
Ripeti questa procedura per ogni motore come indicato.
Prima di premere [Enter] ogni volta, verifica tutte le connessioni dei cavi — il cavo di alimentazione, per esempio, può allentarsi mentre maneggi la scheda.
Quando lo script termina, i motori saranno configurati e pronti. Puoi quindi collegare a catena i cavi a 3 pin da un motore all'altro, e collegare il cavo dal primo motore (la spalla pan con id=1) alla scheda di controllo, che può essere montata alla base del braccio.

Leader

Esegui gli stessi passaggi per il braccio leader.
Comando:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- incolla qui la porta trovata nel passaggio precedente
Esempio API:
 from lerobot.teleoperators.so101_leader import SO101Leader, SO101LeaderConfig
config = SO101LeaderConfig(
      port="/dev/tty.usbmodem585A0076841",
      id="my_awesome_leader_arm",
)
leader = SO101Leader(config)
leader.setup_motors()

Calibra il tuo Robot

Successivamente, calibra il robot affinché i bracci leader e follower riportino valori di posizione identici quando occupano la stessa posa fisica. Questa calibrazione è cruciale perché permette a una rete neurale addestrata su un robot di funzionare correttamente su un altro.

Follower

Esegui il comando qui sotto (o usa l'esempio API) per calibrare il braccio follower:
Comando:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- La porta del tuo robot
      --robot.id=my_awesome_follower_arm # <- Dai al robot un nome univoco
Esempio API:
 from lerobot.robots.so101_follower import SO101FollowerConfig, SO101Follower

config = SO101FollowerConfig(
      port="/dev/tty.usbmodem585A0076891",
      id="my_awesome_follower_arm",
)
follower = SO101Follower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()
Il video qui sotto dimostra la calibrazione: prima posiziona il robot in modo che ogni giunto sia centrato nel suo intervallo, poi premi [Enter] e muovi ogni giunto attraverso tutto il suo range di movimento.

Leader

Esegui gli stessi passaggi per calibrare il braccio leader — esegui il comando qui sotto o usa l'esempio API:
Comando:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- La porta del tuo robot
      --teleop.id=my_awesome_leader_arm # <- Dai al robot un nome unico
Esempio API:
 from lerobot.teleoperators.so101_leader import SO101LeaderConfig, SO101Leader
config = SO101LeaderConfig(
      port="/dev/tty.usbmodem58760431551",
      id="my_awesome_leader_arm",
)

leader = SO101Leader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()

Barra laterale

Ultimo post

Questa sezione attualmente non include alcun contenuto. Aggiungi contenuti a questa sezione utilizzando la barra laterale.

Iscriviti alla nostra newsletter

Ottieni le ultime informazioni sui nostri prodotti e offerte speciali.