Skip to content

LabirasIFPI/roomba_pi_drivers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Roomba Pi Drivers - Controle via ROS 2

Este repositório contém o driver e as configurações necessárias para controlar um iRobot Roomba 614 utilizando um Raspberry Pi 4 com ROS 2 Humble. O projeto foca na comunicação serial via protocolo iRobot Open Interface (OI).

🛠️ Requisitos do Projeto

Hardware

  • Cérebro: Raspberry Pi 4 (recomendado 4GB de RAM ou superior).
  • Robô: iRobot Roomba 614 (ou outros modelos da série 600 compatíveis com a interface Mini-DIN).
  • Comunicação: Cabo USB-TTL (Serial UART).
  • Conexão de despertar: Fio jumper para o pino Device Detect (DD) do Roomba.

Software

  • Sistema Operacional: Ubuntu 22.04 (Jammy Jellyfish) ou Ubuntu 24.04.
  • Middleware: ROS 2 Humble Hawksbill.
  • Dependências Python: rclpy, geometry_msgs, pyserial.

🔌 Arquitetura de Hardware e Pinagem

Abaixo está o mapeamento de conexões entre o Raspberry Pi, o cabo USB-TTL e a porta Mini-DIN do Roomba:

Componente (Origem) Destino (Físico no Pi) Destino (Roomba) Função
Fio Verde (Cabo TX) - Pino 3 (RX) Envio de comandos
Fio Branco (Cabo RX) - Pino 4 (TX) Recebimento de sensores
Fio Preto (GND) - Pino 6 ou 7 (GND) Aterramento comum
Raspberry GPIO 18 Pino 12 Pino 5 (DD) Wake-Up do sistema

⚙️ Configuração do Sistema (Importante)

Para garantir que a comunicação serial funcione sem interferências no Ubuntu, siga estes passos:

  1. Liberar a UART Principal Desative o Bluetooth integrado que conflita com a porta serial:
sudo nano /boot/firmware/config.txt

Adicione ao final:

enable_uart=1
dtoverlay=disable-bt
  1. Desativar o Console Serial Remova a instrução console=serial0,115200 (ou console=ttyAMA0,115200) do arquivo de boot:
sudo nano /boot/firmware/cmdline.txt
  1. Permissões de Usuário Adicione seu usuário ao grupo dialout para acessar a porta USB sem sudo:
sudo usermod -a -G dialout $USER

Reinicie o sistema após estas alterações.

🚀 Como Instalar e Executar

Crie um workspace e clone o repositório:

mkdir -p ~/roomba_ws/src
cd ~/roomba_ws/src
git clone https://github.com/Xamacardoso/roomba_pi_drivers.git

Compile o pacote:

cd ~/roomba_ws
colcon build --packages-select roomba_pi_drivers
source install/setup.bash

Inicie o driver do motor:

# Verifique qual porta o cabo USB-TTL assumiu (ex: /dev/ttyUSB0)
ros2 run roomba_pi_drivers motor --ros-args -p port:=/dev/ttyUSB0

Teleoperação (em outro terminal):

ros2 run teleop_twist_keyboard teleop_twist_keyboard

🧠 Lógica de Funcionamento

O nó motor_driver.py realiza uma sequência de inicialização crítica:

  • Wake-Up: Envia um pulso no GPIO 18 para acordar o Roomba.
  • Start (Opcode 128): Inicia a Open Interface.
  • Safe Mode (Opcode 131): Habilita o controle total com proteção de sensores de queda (cliff sensors).
  • Tradução: Converte mensagens geometry_msgs/Twist em comandos de velocidade para as rodas.

About

Driver e configurações necessárias para controlar um iRobot Roomba 614 utilizando um Raspberry Pi 4 com ROS 2 Humble. O projeto foca na comunicação serial via protocolo iRobot Open Interface (OI).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages