Aiuto Movementazione rover + Arduino + joistick

Salve a tutti, sto progettando un rover basato su due motoriduttori controllati mediante Arduino e come driver gli integrati L298N.
Ho postato questo intervento anche su un altro forum di robotica, ma essendo questo il forum sull'arduino e dovendo programmare il rover ho pensato fosse opportuno postarlo anche qui.

In questo post vorrei un attimo discutere riguardo la "miglior" alternativa per pilotare un rover in modalità carroarmato mediante un arduino (il tutto in PWM ovviamente).

Pensavo di utilizzare la modalità Locked Anti-phase.

In generale il rover dovrebbe andare:

  • Avanti e dietro
  • Girare a destra e a sinistra.

La rotazione dovrebbe avvenire:

  • in moto rallentando la coppia di ruote (o cingoli) di sinitra per ruotare a sinistra o rallentando la coppia di ruote (o cingoli) di destra per ruotare a destra. Il rallentare la coppia di destra o di sinistra dovrebbe essere regolabile in modo da poter variare l'angolo di sterzata. Più vengono rallentate e più velocemente si gira.
  • da fermo facendo girare la coppia destra e sinistra in veso opposto per effettuare una riotazione sul centro del sistema (considerando i 4 vertici nelle ruote).

Inizialmente lascerei colegato l'arduino del rove al pc mediante cavo usb. L'ideale sarebbe poter guidare il tutto con un joistick.

A livello di programmazione avete degli esempi che io possa visionare ed usare come spunto?

Finchè bisogna dare i comandi avanti e dietro non è un grosso problema.
Ma come gestite la programmazione della rotazione?
Ovvero, quando si sposta il joistick verso destra la coppia destra di ruote dovrebbe rallentare e lo stesso se sposto in joistick verso sinistra con le ruote di sinistra.In che modo gestire questo tipo di movimentazione?

Mentre per la rotazione attorno al baricentro riterreste più comodo usare 2 tasti del joistick per impartire questo tipo di rotazione?

Pensavo di utilizzare la modalità Locked Anti-phase.

In questo caso hai il vantaggio di avere i motori bloccati in posizione di riposo, tuttavia questo comporta consumo di batteria anche quando il mezzo è fermo.

Finchè bisogna dare i comandi avanti e dietro non è un grosso problema.
Ma come gestite la programmazione della rotazione?
Ovvero, quando si sposta il joistick verso destra la coppia destra di ruote dovrebbe rallentare e lo stesso se sposto in joistick verso sinistra con le ruote di sinistra.In che modo gestire questo tipo di movimentazione?

Mentre per la rotazione attorno al baricentro riterreste più comodo usare 2 tasti del joistick per impartire questo tipo di rotazione?

Certo è abbastanza complicato, per compliarti ancora più il problema considera che se il rover è salita dovrai essere tu ad accellerare quel tanto che basta, mentro ho letto in giro chi ha implementato questo usando il PID.
Cioè la velocità desiderata va da 0% a 100%, l'algoritmo provvede a variare il duty cycle per mantenere la velocità costante.

Mentre per la sterzata è proprio come hai detto tu. Devi fare un pò di calcoli e differenziare il comportamento inverso che c'è tra marcia e rotazione sull'asse.

Prova a buttare giù un pò di codice.
Ciao.

Quasi quasi piloto il tutto con due potenziometri (tipo joistick). è molto probabile che il sistema in questo modo sia più controllabile.