Este pacote é responsável por gerenciar duas GPIOs em uma Raspberry Pi 4, fornecendo um serviço ROS 2 para ativar ou desativar alimentação dos motores e freios em uma plataforma robótica personalizada.
O pacote rpi_gpio_manager
fornece:
- Um nó ROS 2 chamado
gpio_node
- Um serviço chamado
/motor_power
(configurável) - Controle dos pinos GPIO via arquivo de configuração:
params.yaml
- Respostas customizáveis no YAML
- Limpeza automática dos GPIOs ao encerrar o nó
- Serviço ROS 2 baseado em
std_srvs/SetBool
- Ativação/desativação de dois motores conectados a GPIOs
- Configurações carregadas dinamicamente via
params.yaml
- Estado inicial dos pinos definido no YAML
- Mensagens de resposta configuráveis no YAML
- Compatível com ROS 2 Humble e arquitetura ARM64 (Raspberry Pi 4)
- ROS 2 Humble instalado
- Python 3.8 ou superior
- Acesso root ou permissão para usar GPIO
- Plataforma: Ubuntu Server 64-bit ou Raspberry Pi OS 64-bit
mkdir -p ~/workspace/src
cd ~/workspace/src
git clone https://gitlab.com/AllJordanSS/rpi_gpio_manager.git
cd ..
colcon build --packages-select rpi_gpio_manager
source install/setup.bash
Após compilar:
ros2 run rpi_gpio_manager gpio_node
# Ligar motores
ros2 service call /motor_power std_srvs/srv/SetBool "{data: true}"
# Desligar motores
ros2 service call /motor_power std_srvs/srv/SetBool "{data: false}"
Observação: O nome do serviço pode ser alterado no
params.yaml
.
Você pode ajustar os seguintes parâmetros editando o arquivo:
rpi_gpio_manager/gpio_manager/config/params.yaml
Exemplo:
gpio_config:
pin_motor_1: 18
pin_motor_2: 20
service_name: "motor_power"
response1: "Motores ligados com sucesso."
response2: "Motores desligados e estado inicial restaurado."
messages:
true: "Motores ligados."
false: "Motores desligados."
Ao modificar esses valores, você pode:
- Alterar os pinos utilizados
- Renomear o serviço ROS 2
- Mudar as mensagens de resposta do serviço
rpi_gpio_manager/
├── package.xml
├── CMakeLists.txt
├── setup.py
├── config/
│ └── params.yaml
└── rpi_gpio_manager/
├── __init__.py
└── gpio_node.py
O nó gpio_node.py
:
- Carrega os parâmetros do
params.yaml
- Define os pinos BCM usados para controle de motores
- Levanta um serviço chamado
/motor_power
(ou outro, se alterado) - Quando recebe
data: true
, liga o motor (GPIO HIGH/LOW) - Quando recebe
data: false
, desliga o motor e retorna ao estado inicial - Garante limpeza dos GPIOs ao finalizar o nó
[INFO] [gpio_manager]: GPIO Manager iniciado...
[INFO] [gpio_manager]: Serviço '/motor_power' pronto.
[INFO] [gpio_manager]: Ativando motores...
[INFO] [gpio_manager]: Desligando motores...
[INFO] [gpio_manager]: GPIOs limpos.
Se quiser alterar o nome do serviço, basta editar no params.yaml
:
service_name: "gpio_action"
E recompilar:
colcon build --packages-select rpi_gpio_manager
source install/setup.bash
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues, pull requests ou sugerir melhorias.