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/srcgit clone https://gitlab.com/AllJordanSS/rpi_gpio_manager.gitcd ..
colcon build --packages-select rpi_gpio_manager
source install/setup.bashApó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.bashContribuições são bem-vindas! Sinta-se à vontade para abrir issues, pull requests ou sugerir melhorias.