rospibot6

Pacote ROS para controlar base de robot móvel de propulsão diferencial com um RaspberryPi e um STM32F.

https://github.com/inaciose/rospibot6

O pacote do ROS inclui o seguinte software:

  • O node base que comunica por I2C com o  microcontrolador STM32F
  • Vários nodes em Python que implementam isoladamente algumas das funções incluídas no node base.
  • Conjuntos de  launch files e yaml com parâmetros de exemplo para a exploração da base em tarefas de navegação autónoma.

O node base depende do software para o microcontrolador STM32F.

O node base foi pensado para ser monolítico e incluir nele várias funções que podem estar dispersas por vários módulos.

  • twist_diff
  • pid controler
  • IMU MPU6050
  • odometria
  • interface de LCD e botões
  • interface MCU ROS

No entanto, apesar de todos estas funções estarem implementadas, até este momento momento as tarefas de navegação bem sucedidas fizeram uso dos node externo para a odometria e do controlo pid existente no microcontrolador,

Enumerando as funcionalidades no node base e o seu estado

O componente twist_diff que faz a conversão das velocidades expressas nas mensagens twist para as velocidades que cada um das duas rodas deve ter está a funcionar e a ser usado (se bem que foi desenhado de forma diferente da implementação do chefbot)

O pid controler tanto quanto me lembro está a funcionar, mas não está a ser usado.

O IMU está funcional e foi objeto de testes bem sucedidos com o pacote robot_pose_ekf.

A odometria, está implementada mas tanto quanto me lembro tem problemas e não está a ser usada, pois os robots estão a usar um node externo.

O interface de LCD e botões está funcional mas não está a ser usado, porque nenhum dos robots atuais tem o hardware necessário.

O interface MCU ROS está a funcionar.

O software para o microcontrolador STM32F será uma das versões disponíveis no seguinte repositório.

https://github.com/inaciose/rospibot6mcu

Sem uma averiguação mais detalhada o programa adequado deve ser um destes dois:

  • rospibot6_stm32d_v4
  • rospibot6_stm32d_v4d

A principal diferença entre estes dois programas é que o v4d faz uso de dois interrupts, um por cada canal do encoder , o que me faz apostar que este seja o programa adequado pois os pulsos por rotação que estão definidos nos parâmetros do node base são bastante elevados.