multibot_description

ROS multi robot in Rviz and Gazebo demo

https://github.com/inaciose/multibot_description

 

roslaunch multibot_description world_1bot.launch

roslaunch multibot_description spawn_bot.launch ns:=sibot2 botcolor:=Blue x:=2

roslaunch multibot_description spawn_bot.launch ns:=sibot3 botcolor:=Red x:=3

roslaunch multibot_description world_2bot.launch

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.

 

Pacote do ROS para calibrar o MPU6050

O pacote de calibração do MPU6050 está disponivel no seguinte endereço:

https://github.com/inaciose/ros_mpu6050_calibration

As instruções para instalar e usar estão no github.

Descrição do contexto que deu origem ao desenvolvimento do pacoteros_mpu6050_calibration.

Tenho estado a tentar fazer a fusão dos dados do IMU com a odometria usando o pacote robot_pose_ekf.

http://wiki.ros.org/robot_pose_ekf

O teste que efectuei não deu bons resultados, pois o resultado da fusão dos dados do IMU com a odometria, é uma pose completamente diferente daquela que é dada pela odometria e indubitavelmente de muito má qualidade.
Direi mesmo que o resultado no teste efectuado foi uma evolução da pose completamente divergente.

A represestação no rviz é feita com o visualização da: PoseWithCovariance tendo como fonte o topico: /robot_pose_ekf/odom_combined

O resultado deste teste pode ser obervado no seguinte video.

Após ter usado o programa para calibrar o mpu6050, e ter incluido na configuração do node adequado os offsets indicados nos parametros de configuração do mpu6050, efectuei outro teste e o resultado foi mais animador. Conforme se pode observar no seguinte video, a seta vermelha já não aponta para cima, nem diverge com o movimento do robot.

Outra coisa reparei foi que a visualização no topico imu/data, que antes da calibração dava uma seta enorme a apontar para a frente direita do robot e inclinada para cima, agora aparece uma seta ao principio que rapidamente desaparece.

https://github.com/inaciose/ros_mpu6050_calibration

ros_hardware_interfaces

O ros_hardware_interfaces é um conjunto de pacotes com hardware_interfaces para serem usadas com o ros control e  vários ros controllers.

Este conjunto de pacotes é elaborado no ambito da minha aprendizagem do ROS.

É composto pelos seguintes pacotes:

  • arm3dof_all_nofb (não está completamente funcional)
  • arm3dof_jpc_nofb (funcional)
  • arm3dof_jpc_nolim_nofb (funcional)
  • dcmotor_one (completo)
  • diff_drive_base1 (completo)
  • ebamk2_hardware_interface (abandonado a refazer)
  • robotpos1 (investigar o estado do pacote)

Este conjunto de pacotes tem um repositório com o mesmo nome (ros_hardware_interfaces)

gc_bridge

O gc_bridge é um conjunto de pacotes destinados a explorar os recursos do google cloud.

É composto pelos seguintes pacotes:

  • gc_dialogflow bridge
  • gc_msgs
  • gc_speech_bridge
  • gc_vision_bridge

Este conjunto de pacotes tem um repositório com o mesmo nome (gc_bridge)

eezybotarm

O pacote do ROS eezybotarm para o braço robotico eezybotarm mk1 é um projecto abandonado. O pacote foi substituido pelos seguintes pacotes:

  • ebamk1_description;
  • ebamk2_description;
  • rosarm_control;

O firmware está incluido no pacote rosarm_firmware.

 

ebamk2_description

O pacote ROS ebamk2_description contem a descrição do braço róbótico EezyBotArm MK2.

O pacote ROS ebamk2_description contem a descrição do braço róbótico EezyBotArm MK2.

Existem três versões base com a descrição do braço robotico nos seguintes  ficheiros urdf.

ebamk2.urdf

Esta versão descreve o robot com os solidos geométricos base e inclui a garra. Reproduz a alteração no angulo entre a haste principal e a horizontal quando a primeira se movimenta, assim como a manutenção da horizontalidade da garra aquando do movimento da haste horizontal.

ebamk2_mesh.urdf

Esta versão descreve o robot com meshes e inclui a garra. Reproduz a alteração no angulo entre a haste principal e a horizontal quando a primeira se movimenta, assim como a manutenção da horizontalidade da garra aquando do movimento da haste horizontal.

ebamk2_web.urdf

Versão original que não reproduz tão bem o movimento do braço robótico e está incluida no repositório ntbd .