Ros moveit GripperCommand

Mais um problema resolvido. Como descobri que não tenho nenhuma interface visual para interagir com o gripper no moveit rviz, não está completamente conforme com a minha ideia inicial. Mas é o melhor que consegui descobrir por enquanto.

Mais tarde acho que irei dedicar um bocado de atenção ao moveit_grasps, mas por enquanto o proximo passo é descobrir como funciona o pick and place.

The quest for a robot with moveit follow joint trajectory

Após conseguir fazer a cinemática inversa para o eezybotarm mk2 no moveit, e conduzir o robot em espelho com a apresentação do rviz, por subscrição do fake_controller_joint_states, quando se corre o demo.launch, andei em busca da integração com o moveit! com base nas mensagens follow joint trajectory.

Na minha humilde perspectiva, de quem não teve qualquer formação de relevo para o assunto, devo dizer que provavelmente para quem não sabe, há assuntos que parece muito difícil encontrar informação sobre o eles.

O controlo de movimentos de um braço robótico físico com o ros moveit parece uma delas. O que eu diria é que não existe nenhum exemplo para a exploração de um braço físico de baixo custo com o moveit!

Existe informação, ambiguidades, questões sobre a implementação que por vezes não sabemos como colocar, e portanto até pesquisar, e algumas questões respondidas. Regra geral a solução está numa dessas respostas. Até mesmo quando por vezes temos alguma ideia conceptual de como a coisa funciona, ficamos imenso tempo a procura de alguns detalhes que são fundamentais.

Entretanto parece que consegui encontrar todos os pequenos detalhes para colocar a funcionar a integração do braço eezybotarm mk2 com o ros moveit, sem recorrer a soluções menos apropriadas como as que tinha ensaiado anteriormente. Ainda assim acho que não estou a usar ainda um hardware interface ao estilo do ros control.

eezybotarm mk2 no ros moveit

Tenho andado de volta do controlo do braço robótico eezybotarm mk2 com o ros moveit, e até agora não tinha tido muito sucesso em controlar a rotação do braço sobre o eixo z (posição no eixo y). Apenas conseguia posicionar a ponta do braço robótico mais perto ou mais longe da base (posição no eixo x) ou mais alto ou mais baixo face á superfície (posição no eixo x).

Finalmente consegui. A diferença fundamental foi a escolha do LMA kinematics plugin como kinematic solver, para o arm planing group durante a configuração do braço efectuada no Moveit Setup Assistant.

ROS Moveit não gosta de mimic joints

Depois de ter tido o trabalho de rescrever dois dos urdf do eezybotarm mk2 para incluir mimic joints de forma a melhor reproduzir os movimentos do braço descobri que o ROS moveit não faz o planeamento de trajectorias de robots com cadeias cinemáticas que contenham mimic joints.

Actualização: ainda ontem apercebi-me que apesar de o launch file demo.launch exibir o seguinte erro na consola:

[ERROR] [1590019577.283880216]: Group ‘Arm’ has a mimic joint. Will not initialize dynamics solver

O moveit consegue fazer o planeamento de robots com mimic joints na cadeia cinemática

Exploração do projecto typepyt para o meArm

Ontem estive a explorar o pacote typepyt para o meArm disponivel num repositório do github com o mesmo nome.

Nessa exploração conheci um ficheiro urdf que procura descrever a cinemática do meArm com recurso à tag mimic. Esta tag é aplicada a uma articulação virtual existente entre a haste principal e a haste horizontal, e permite assim efectuar uma melhor descrição do movimento do braço robótico.

Como a cinemática do meArm é semelhante à do eezyBotArm vou melhorar a descrição que tenho do eezyBotArm MK2, no pacote ebamk2_description.

Hardware Interface para diff_drive_controller

Adicionei uma versão mais simples de um Hardware Interface para diff_drive_controller.

O diff_drive_base2 está disponivel no seguinte repositório do github: https://github.com/inaciose/ros_hardware_interfaces

Também existem repositórios para os firmware correspondentes aos diversos nodes de hardware interface disponiveis no repositório acima.

Existem os seguintes repositórios:

https://github.com/inaciose/rosmotor_firmware

https://github.com/inaciose/rosarm_firmware

https://github.com/inaciose/rosstepper_firmware

É provavel que no futuro estes repositórios sejam revistos.

Excluído do Mestrado de Automação Industrial

Apesar de no edital indicar que o Mestrado de Automação Industrial na Universidade de Aveiro era destinado a licenciados em engenharia electrónica, mecânica e afins, decidi candidatar-me. Quanto muito perdia os 20 euros. Pois bem. Os resultados saíram e não fui colocado.

Nova placa controladora para o braço robótico RAMK2P

Hoje estive a fazer as ligações e a testar a nova placa para o braço robótico RAMK2P. Usei uma placa perfurada de lado duplo e como não estou habituada a elas acho que fiz um mau trabalho. Tive que ir duas vezes ao ferro de soldar corrigir problemas. No final o braço robótico ficou a trabalhar conforme estava anteriormente.

Vista superior do braço robótico RAMK2P com a placa controladora
Vista superior do braço robótico RAMK2P com a placa controladora

A placa está ainda incompleta pois não tem a ligação para o servo motor da garra nem a sua alimentação independente. Só estou a prever completar a placa mais tarde. Antes de a completar estou a pensar dedicar um tempo a desenvolver o software para usar este braço com o ROS, entre o qual um node com o hardware interface usável com o ros control.

Placa para o braço ramk2p

Terminei agora a primeira fase da placa perfurada para servir de suporte à electrónica de controlo para o braço robótico Robotic Arm MK2 Plus, que é uma versão impressa em 3D do eezyBotArm Mk2 modificada para motores de passo NEMA 17, e que por vezes por conveniência designo pelo seu acrónimo RAMK2P.

Como melhoramento face ao original desenvolvi um sistema para posicionamento automático das hastes na inicialização, que se pode-se adaptar ao braço original, e um pequeno firmware para o Arduino que permite explorar o braço no ROS.

Os testes iniciais e o desenvolvimento da primeira versão do firmware para o ROS foi feita com uma placa de testes e já estava farto de tanto fio.

Placa de testes do braço robótico

Durante as experiências que fiz queimei um dos drivers A4988 e só agora, um mês depois retomei o projecto.

Placa perfurada para a electrónica de controlo do braço robótico

Na placa ainda não estão contempladas a ligação, nem a alimentação, motor servo MG90 usado como actuador na garra do braço.

Regresso às compras na china

No inicio do mês de Abril voltei a encomendar coisas na china. As novas encomendas aconteceram com o meu envolvimento em novos projectos na área da robótica. Após uma pausa de cerca de três meses que coincidiu com os três primeiros meses que se seguiram a ter largado o tabaco.

Também experimentei comprar coisas na banggood pois lá existe a possibilidade de comprar na europa, e aproveitei para comprar drivers drv8825 e fio electrico em banda vindo do Reino Unido. Chegaram as duas coisas em cerca de 12 dias. Entretanto coloquei mais duas encomendas, um pack com shield CNC, drivers drv8825 e um Arduino Uno, e 5 steppers nema 17.

Mas ontem chegou a primeira encomenda vinda da China. Uns drivers A4988 que encomendei no ebay. Mas o grosso das coisas que encomendei, e foram umas dezenas estão por chegar. Acho que têm ficado muito tempo estacionadas a espera de transporte na China e depois quando chegam a Portugal, desde a semana passada que tem estado a chegar a Portugal, devem ficar estacionadas na alfandega.