Les funcions de locomoció definides a xgo.py utilitzen un gait (patró de marxa) concret, definit a la funció gait_walk(), que s'executa cada cop que cridem les funcions caminar, girar o lateral.
# --- Locomoció ---
def gait_walk():
escriure_byte(0x09, 0x00) # 0x00 indica el gait utilitzat
def caminar(vel):
gait_walk()
escriure_byte(0x30, vel & 0xFF)
escriure_byte(0x31, 0x80)
escriure_byte(0x32, 0x80)
def girar(valor):
gait_walk()
escriure_byte(0x30, 0x80)
escriure_byte(0x31, 0x80)
escriure_byte(0x32, valor & 0xFF)
def lateral(valor):
gait_walk()
escriure_byte(0x30, 0x80)
escriure_byte(0x31, valor & 0xFF)
escriure_byte(0x32, 0x80)
def stop():
caminar(0x80)
Segons GPT hi ha més gaits possibles:
0x00 Idle el definit a xgo.py. Sembla el que utilitza la extensió de MakeCode
0x01 Walk més ràpid
0x02 Trot més ràpid, menys estable
0x03 Crawl molt lent, molt estable
0x04 Pace lateralitzat (no m'ha funcionat)
0x05 Bound sovint inestable (no m'ha funcionat)
Proposta per poder utilitzar altres patrons
a xgo.py:
convertir el valor del gait en un paràmetre de valor que es definirà en cridar l'execució de la funció
def gait_walk (gait=0x00): # si no es defineix cap valor, agafarà 0x00 per defecte
escriure_byte (0x09, gait & 0xFF) # 0xFF assegura la conversió del valor a byte
def caminar (vel, gait=0x00):
gait_walk(gait)
escriure_byte(0x30, vel & 0xFF)
escriure_byte(0x31, 0x80)
escriure_byte(0x32, 0x80)
def girar (valor, gait=0x00):
gait_walk(gait)
escriure_byte(0x30, 0x80)
escriure_byte(0x31, 0x80)
escriure_byte(0x32, valor & 0xFF)
def lateral (valor, gait=0x00):
gait_walk(gait)
escriure_byte(0x30, 0x80)
escriure_byte(0x31, valor & 0xFF)
escriure_byte(0x32, 0x80)
def stop ():
caminar(0x80)
# ------------------------------------
a test.py:
en cridar les funcions de locomoció, si no especifiquem el gait s'executaran amb el valor per defecte (0x00)
si volem que s'executin amb un altre gait, l'especifiquem com a segon paràmetre de la funció
xgo.caminar(0x90) # usa el gait 0x00
xgo.caminar(0x90, 0x01) # usa el gait 0x01