Firmware de controlo comROS do servo da direcção e do ESC de um rover traxxas,para um ESP8266 nodeMCU V3 com um PCA9685.
Usado no rover traxxas do Automec – Universidade de Aveiro
O firmware subscreve os tópicos:
pub_dir, (angulo de direcção entre -90º e 90º a aplicar ao servo)
pub_vel (velocidade expressa entre |0, 90| sendo o seu sinal indicador da direcção, o negativo é marcha atrás)
Pode ser expandido para controlar também o servo do diff. traseiro e do diff. dianteiro.
ESP8266 (micontrolador de 32bits com wifi integrado);
PCA9685 (gerador de PWM de 12bits e 16canais)
IDE: platformIO,
Board: ESP8266 nodeMCU 12E
Na primeira fase está implementado o controlo do ESC e do servo da direcção.
A ligação do firmware aos node ROS depende do pacote rosserial.
Caso não esteja instalado, pode-se instalar com o seguinte comando (substituir noetic, pela identificação da distribuição do ROS):
sudo apt install ros-noetic-rosserial
Depende de um node que publique mensagens twist nos tópicos apropriados. Como por exemplo o node: linang_to_ackermann.py.
O node deve ser lançado com a seguinte configuração
message_type:=physical
O node pode ser configurado para dois tipos de input,:
train:=1 (subscreve um único tópico twist com velocidade angular e linear)
train:=0 (pré-definido, subscreve dois tópicos twist, um com velocidade angular, e outro com a velocidade linear)
Identificação da porta serie a usar na comunicação
~$ dmesg
[12722.986709] usbserial: USB Serial support registered for ch341-uart
[12722.986727] ch341 1-1:1.0: ch341-uart converter detected
[12722.987254] usb 1-1: ch341-uart converter now attached to ttyUSB0
Exemplos de exploração do sistema
Cada um dos comandos deve ser lançado num terminal independente
Exemplo de exploração em modo real e autónomo com o node linang_to_ackermann.py (usando um launch file)
Antes de volta a trabalhar no ficheiro urdf com o modelo do robot de lagartas, fui, mais uma vez, ver se conseguia colocar o plugin phobos para o blender de modo a passar a usar a funcionalidade de import/export de urdfs no blender e desse modo usar o blender para desennhar os modelos urdf dos robots.
Mais uma vez não tive sucesso nessa instalação.
Entretanto consegui acabar o urdf do robot com lagartas á mão e ficou com o seguinte aspecto no rviz e no gazebo:
Existe uma pequena diferença relação ao modelo definido no sdf original, o angulo dos flippers face ao solo é menor (os flippers são as extremidades que existem anexas a cada lagarta)
Passado o problema da conversão do sdf para urdf, passei ao problema do controlo do movimento do robot, que gostava que fosse efectuado com base no seguinte plugin do gazebo (e a respectiva evocação no urdf):
Mas o problema, á primeira vista é que este plugin não tem interface para topicos do ROS e aparenta ter como input o teclado via o seguinte plugin do gazebo (e a respectiva evocação no urdf):
O modelo de robot de lagartas definido no mundo acima usa o seguinte plugin especifico para robots de lagartas (tracked robot):
libSimpleTrackedVehiclePlugin.so
Primeiro passei por um processo de conversão manual do sdf para urdf, no entanto o resultado não foi satisfatório. Todos os componentes do modelo ficaram colocados no eixo dos y, e as extremidades das lagartas também não ficaram bem posicionadas.
O modelo tal como está no mundo do gazebo em sdf tem o seguinte aspecto:
O aspecto original no rviz e no gazebo do modelo após o primeiro processo manual de conversão do sdf para urdf era o seguinte:
2021-04-22
sibotdiff_description & sibotdiff_bringup
Actualizei o sibotdiff_description da seguinte forma:
Removi os models antigos (robot01 e robot02) e respectivas pastas de includes, e copiei o model robot01 do multibot_description (e respectiva pasta de includes) para a para a pasta urdf do sibotdiff_description.
Na pasta launch do sibotdiff_bringup actualizei os ficheiros spawn_* e world_* para ficarem em linha com o existente no multibot_description.
Os modelos e ficheiros relacionados do sibotdiff_description vão ficar a ser desenvolvidos no multibot_description até ficarem estáveis e serem copiados para o sibotdiff_description.
multibot_description
Passando para o desenvolvimento no multibot_description o proximo passo é passar a usar macros e fazer com que a robot seja mais estavel (eventualmente pesado)
Sobre as propriedades fisicas seguem dois links importantes
Para além do rqt existem outras ferramentas de teleop para conduzir o robot.
Essas ferramentas são opcionais e tem de ser instaladas através do apt, e o pacote sibot_tools tem os launch files que permitem intermediar o seu lançamento.
Pacotes opcionais
Permitem opções alternativas ao uso do rqt para enviar mensagens para tópicos twist.msg
joy
teleop_tools
teleop_twist_joy
Joy
Pacote base para leitura do joystick e publicação de mensagens joy.msg, notopico joy
Install
sudo apt install ros-noetic-joy
Os pacotes seguintes pacotes dependem do joy para funcionar:
teleop_tools
teleop_twist_joy
O pacote teleop_tools é mais versátil e por isso o mais aconselhado
Teleop tools instructions
Pacote de teleop que publica twist messages
Depende do pacote joy
Install
sudo apt install ros-noetic-teleop-tools
Este pacote fornece as funcionalidades de teleop com base nos seguintes inputs:
Keyboard
Mouse
Joystick
A forma como se comporta o teleop pode ser configurado nos launch files e em config files em yaml.
Mouse teleop
Este pacote fornece as funcionalidades de teleop para conduzir os robots com base no rato
A forma como a mensagem é construída pode ser configurada no ficheiro yaml.
Mouse configuration files
config/teleop_tools/mouse.yaml
Joystick teleop
Este pacote fornece as funcionalidades de teleop para conduzir os robots com base no joystick
Os componentes linear e angular da mensagem twist, assim como os botões de activação, super speed,as diversas acções opcionais/complementares, e os factores aplicados, podem ser configurados no ficheiro yaml.
Joystick configuration files
config/teleop_tools/joystick.yaml
Keyboard teleop
Este componente não está funcional
Teleop twist_joy instructions
Este pacote fornece as funcionalidades de teleop para conduzir os robots com base no joystick
Depende do pacote joy
Install
sudo apt install ros-noetic-teleop-twist-joy
Ficheiro de configuração yaml
config/teleop_twist_joy/joystick.yaml
Para os novos comandos serem enviados para o topic tem de se estar a premir um botão.
Os componentes linear e angular da mensagem twist, assim como os botões de activação e super speed, e os factores aplicados, podem ser configurados no ficheiro yaml.
Neste projecto pretendo explorar o controlo de vários tipos de viaturas com o ROS (Robotic Operating System).
Numa primeira fase será abordado o controlo de modelos de robots em ambientes simulados com o Gazebo e posteriormente passarei para robots e situações reais.
Os tipos de viaturas abordados neste projecto são os seguintes:
Viaturas de 4 rodas com direcção akermann (sibotackm)
Viaturas de 2 rodas com direcção diferencial (sibotdiff)
Viaturas de 4 rodas com direcção derrapante (sibotskid)
Viaturas com 2 lagartas (sibottrak)
Viaturas mecanum com 4 rodas omnidirecionais (sibotmeca)
O software está dividido por vários pacotes dedicados a a cada tipo de viatura e pacotes comuns usados por todos os tipos de viaturas.