eezybotarm mk2 ntbd ros docker

Exploração do eezybotarm mk2 recorrendo a docker containers com os pacotes para o ROS do projecto ntbd docker.

O microcontrolador (Arduino Mega 2560)  tem que estar a correr um programa (firmware) desenhado para o efeito,  que usa a bibloteca Servo, para geral o sinal PWM adequado, e que se integra no ROS pelo recurso ao pacote rosserial e rosserial-arduino.

Saiba mais sobre o Firmware de Arduino para controlo de Servos em ROS.

Esta exploração foi efectuada com base nas informaçoes disponveis no  artigo do seguinte endereço:

https://hotblackrobotics.github.io/en/blog/2018/01/17/ntbd-guide-part-I/

Se não estiver instalado, começamos por instalar o docker com o seguinte comando:

sudo apt install docker docker.io
sudo apt install docker-compose

Testar o docker com o seguinte comando:

sudo docker run hello-world

Conforme as instruções disponiveis a partir do ponto 4 do artigo referido acima.

Instalar as duas imagens do docker que são necessárias com os seguintes comandos:

sudo docker pull hbrobotics/ntbd_base:intel
sudo docker pull hbrobotics/ntbd_manipulator:intel

Existem imagens para o Raspberry Pi 3, para as usar basta substituir o :intel por :rpi3.

Nota suplementar a explorar, no docker hub  existem imagens do ROS para o docker que merecem atenção.

https://hub.docker.com/u/hbrobotics/

Além disso  estão disponíveis os ficheiros que permitem fazer os docker containers no seguinte repositório:

https://github.com/HotBlackRobotics/docker-ros-base

Para executar o dois contentores (imagens) de docker devemos executar o seguinte comando:

sudo docker-compose -f docker-compose.hbr_ntbd_intel.yml up

Para o Raspberry Pi 3 usar o ficheiro docker-compose.hbr_ntbd_rpi3.yml

A primeira execução produziu as seguintes mensagens no terminal

Creating hbr_ntbd_manipulator_intel ... 
Creating hbr_ntbd_manipulator_intel ... done
Attaching to hbr_ntbd_manipulator_intel
hbr_ntbd_manipulator_intel | * Starting nginx nginx
hbr_ntbd_manipulator_intel | ...done.
hbr_ntbd_manipulator_intel | [ERROR] [1586442600.408287]: Error opening serial: [Errno 2] could not open port /dev/ttyACM0: [Errno 2] No such file or directory: '/dev/ttyACM0'
hbr_ntbd_manipulator_intel | the rosdep view is empty: call 'sudo rosdep init' and 'rosdep update'

A mensagem que mais me chamou a atenção foi a que refere o erro na abertura da porta serie: /dev/ttyACM0 (esta porta serie não existe, mas sim a ttyUSB0).

Um dos problemas potenciais é a porta não ter permissões. Pelo que o primeiro passo é verificar e atribuir as permissões correctas. Mas duvido que seja um problema pois o container está a correr como root.

Experimentei as seguintes possibilidades (três) para solucionar este erro, só o ultimo funcionou adequadamente:

  • Alterar o mapeamento do device entre o host e o container no ficheiro docker-compose.hbr_ntbd_intel.yml não funcionou.
  • Criar o link simbólico (ln -s /dev/ttyUSB0 /dev/ttyACM0)
  • Alterar o ficheiro NTBD_launch.launch dentro do docker container de modo a que a porta a  usar seja a /dev/ttyUSB0, assim como trocar o baud rate para 57600 (ver mais abaixo o procedimento).

Depois de executar a alteração do ficheiro NTBD_launch.launch voltei a executar o comando do docker compose e o programa funcionou bem.

No raspberry pi 3 também funciona bem dentro do docker com excepção de um problema de visualização já que a imagem fica invertida no plano (de cabeça para baixo) conforme se pode ver na imagem principal do artigo.

Exemplo de utilização dos docker containers do ntbd num raspberry pi 3 apenas para efeitos de visualização.

Alteração do ficheiro launch no container

Com os containers do projecto ntbd a serem executados, correr o seguinte comando para obter o id do container.

sudo docker ps

Usar os primeiros digitos do CONTAINER ID correspondentes ao container do ntbd e lançar uma shell no container com o seguinte comando:

sudo docker exec -it ctnid /bin/bash

Este comando devolve uma prompt no interior do container, pelo que o passo seguinte é instalar o nano, para o usar na alteração do ficheiro launch.

apt install nano

De seguida executamos o nano para alterar o ficheiro com o comando:

nano /catkin_ws/src/ntbd_core/launch/NTBD_launch.launch

Trocamos a porta e o baud rate, para ttyUSB0 e 57600, e gravamos o ficheiro e saimos da shell.

 <arg name="baud" default="115200"/>
<arg name="port" default="/dev/ttyACM0"/>

Posteriormente reiniciamos o container com o comando:

docker restart ctnid

Para mim tive que sair e voltar a entrar mais uma vez, para funcionar.

informação de alteração do container disponivel no seguinte endereço:

How to edit files within docker containers

EEZYbotARM MK1 ROS moveit

 

Com base no ficheiro URDF que descreve o braço eezybotarm mk1 feito é altura de tentar usar o ROS moveit.

O procedimento descrito abaixo foi efectuado de acordo com as indicações disponiveis em:

  • http://docs.ros.org/melodic/api/moveit_tutorials/html/doc/setup_assistant/setup_assistant_tutorial.html

No caso de estar a usar o ROS kinetic as indicações estão disponiveis em:

  • http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/setup_assistant/setup_assistant_tutorial.html

Efectuei vários testes com dois ficheiros URDF diferentes. Um com garra, e outro sem a garra. No processo descrito abaixo, a versão sem garra tem apenas o planning group Arm, com os links de 1 a 3, e não tem o End Efector.

O moveit setup assistant permite criar um pacote do ROS para usar um braço robótico com o Moveit.

O processo começa na execução do Moveit setup assistant com o seguinte comando:

roslaunch moveit_setup_assistant setup_assistant.launch

Escolher criar uma nova configuração para o moveit

Escolher o ficheiro URDF que descreve o braço eezyBotArm MK1 e enviar;

Clicar em Self Colisions

Clicar em Generate Colision Matrix;

Clicar em Virtual Joints

Clicar em Add Virtual Joint;

No joint name colocar “virtual_joint”;

No child link selecionar “base_link”;

No parent frame name colocar “world”;

No Joint Type selecionar “fixed”;

Clicar em Save;

Clicar em Planning Groups

Criar dois grupos. Um para o braço e outro para a garra.

Clicar em Add Group;

No group name colocar: Arm;

No kinematic solver seleccionar: kdl_kinematics_plugin/KDLKinematicPlugin;

Manter Kin. Search Resolution e  Kin. Search Timeout nos valores pré-definidos;

Clicar em Add Joints;

Do lado esquerdo selecionar: Joint_1, Joint_2, Joint_3 e Joint_4 e mover para o lado direito;

Clicar em Save;

Clicar em Add Group;

No group name colocar: Hand;

Não selecionar nada no kinematic solver;

Manter Kin. Search Resolution e  Kin. Search Timeout nos valores pré-definidos;

Clicar em Add Joints;

Do lado esquerdo selecionar: Joint_5 e mover para o lado direito;

Clicar em Save;

Clicar em Robot Poses

Clicar em Add pose

Em pose name colocar: Start

Definir os valores apropriados para Joint_1, Joint_2, Joint_3 e Joint_4;

Clicar em Save

Clicar em End Efector

Em End Efector Name colocar: Hand

No End Efector Group selecionar: Hand

No Parent Link selecionar: Joint_4

Clicar em Author Information

Definir o nome e o email do autor

Clicar em Configuration Files

Escolher o Configuration Package Save Path

Clicar em Browse,

No selector de pastas que se abre, clicar no icone para criar uma nova pasta, e atribuir-lhe o nome: ebamk1_movit_config

Clicar em Generate Package

No final, para sair, clicar em Exit Setup Assistant

De fora desta preparação ficaram as seguintes áreas.

  • Passive Joints
  • ROS Control
  • Simulation
  • 3D perception

 

Para visualizar o resultado no rviz usa-se o seguinte comando:

roslaunch ebamk1_moveit_config demo.launch

Durante a processo de aprendizagem fiz vários testes, e acabei por conservar também o primeiro teste ebamk1t1_moveit_config.

 

EEZYbotARM MK1 URDF

O braço robótico EEZYbotARM MK1 foi modelado com base no braço robótico industrial ABB – IRB460.

Este tipo de braço tem uma cadeia cinemática de malha fechada, pelo que não pode ser representado no RViz, sem antes ser convertido num modelo equivalente de malha aberta. Numa malha aberta o modelo tem de ter uma hierarquia em árvore.

Esquema do braço robotótico eezybotarm (equivalente malha aberta)

A informação sobre a cinemática deste braço robótico está descrita no artigo que avalia o braço eezbotarm MK2.

A criação do ficheiro foi descrita como exemplo de um ficheiro URDF no artigo sobre ficheiros URDF.

Esta descrição do braço robótico eezyBotArm MK1 foi efectuada com base no urdf usado para MK2 no projecto ntbd disponivel no seguinte repositório:

https://github.com/HotBlackRobotics/ntbd

Apesar de ter perdido imensas horas a tentar, não consegui efectuar um ficheiro urdf apropriado com meshes, usando os ficheiros stl disponiveis.

Existem duas versões do ficheiro URDF para o eezbotarm mk1,:

ebamk1b.urdf – versão inicial conforme o projecto ntbd, e abordado no artigo sobre como fazer ficheiros urdf;

ebamk1a.urdf – versão com link representativo da garra, e que foi desenvolvido para a criação de um pacote de configuração para o eezyBotArm MK1 no ROS moveit, com o Moveit Setup Assistant.

 

Making of EEZYbotARM MK1

Este artigo é sobre a lista de materiais, o fabrico das partes mecânicas e montagem de um braço róbotico MK1.

As informações de base para este projecto estão disponíveis nos seguintes links:

  • http://www.eezyrobots.it/eba_mk1.html
  • https://www.instructables.com/id/EEZYbotARM/
  • https://www.thingiverse.com/thing:1015238

A parte electrónica e o sofware de exploração serão abordados em artigos posteriores

 

Lista de materiais

Para além das peças que são produzidas na impressora 3D, este projecto necessita do seguinte material:

  • 3 x servo Tower Pro MG90 (ou SG90) c/ acessórios
  • 1 x servo Tower Pro SG90 c/ acessórios
  • 4 x parafuso M3 de 8 mm (alternativa: 10 mm)
  • 2 x parafuso M3 de 10 mm
  • 2 x parafuso M3 de 15 mm
  • 6 x parafuso M4 de 20 mm
  • 1 x parafuso M4 de 25 mm
  • 1 x parafuso M4 de 30 mm
  • 8 x porca M3 auto bloqueante
  • 8 x porca M4 auto bloqueante
  • 20 x anilha M4
  • 1 x varão roscado c/ 25 mm (alternativa: 1 x parafuso M4 de 20mm)

Parte 1: Impressão e preparação das peças em 3D

Lista de peças a imprimir em 3D efectuar o braço róbotico, incluindo a garra.

  • 1 x EBA_01.00.001.STL
  • 1 x EBA_01.00.002_vertical_drive_arm.STL
  • 3 x EBA_01.00.003_link.STL
  • 1 x EBA_01.00.004_forward_drive_arm.STL
  • 1 x EBA_01.00.005_horizontal_arm.STL
  • 1 x EBA_01.00.006_triangular_link.STL
  • 2 x EBA_01.00.009_servo_plate.STL
  • 1 x EBA_01.00.010_basement.STL
  • 1 x EBA_01.00.011_round_plate.STL
  • 1 x EBA_01.00.012_R01_claw_support.STL
  • 1 x EBA_01.00.013_R01_right_finger.STL
  • 1 x EBA_01.00.014_R01_left_finger.STL
  • 1 x EBA_01.00.015_drive_gear.STL
  • 1 x EBA_01.00.016_R01_driven_gear.STL

Peças adicionais que são apenas usadas na demonstração

  • EBA_01.00.017_R01_ramp.STL
  • EBA_01.00.018_maestro_holder.STL
  • EBA_01.00.019_ball.STL

 

Parte 2: Montagem do braço robótico

A montagem do braço robótico é efectuada em cerca de 5 passos, e divide-se em três conjuntos, a base, as hastes e a garra.

Passo 1 : montagem da base do braço robótico

Peças usadas:

  • 1 x servo Tower Pro MG90 com acessórios
  • 2 x parafusos M3 x 10 mm
  • 2 x porcas M3 autobloqueante
  • 001.STL
  • 010_basement.STL
  • 011_round_plate.STL

Primeiro fixa-se o servo à base (basement), com os parafusos que vêm como acessórios.

De seguida aplica-se o adaptador igual ao da imagem, e encaixa-se na base rotativa (round_plate). Fixa-se com um parafuso adequado(vem nos acessórios?).

Por ultimo aplica-se o suporte das hastes (001) com os dois parafusos M3 x 10mm e as respectivas porcas M3.

Passo 2: Montagem das hastes do braço robótico

Peças usadas

  • 1 x EBA_01.00.002_vertical_drive_arm.STL
  • 3 x EBA_01.00.003_link.STL
  • 1 x EBA_01.00.004_forward_drive_arm.STL
  • 1 x EBA_01.00.005_horizontal_arm.STL
  • 1 x EBA_01.00.006_triangular_link.STL
  • 5 x parafuso M4 de 20 mm
  • 1 x parafuso M4 de 30 mm
  • 6 x porca M4 auto bloqueante
  • 16 x anilha M4

Devido ao numero de peças este passo tem várias fases.

 

Passo 3: Montagem da garra do braço robótico

Peças usadas:

  • 1 x EBA_01.00.012_R01_claw_support.STL
  • 1 x EBA_01.00.013_R01_right_finger.STL
  • 1 x EBA_01.00.014_R01_left_finger.STL
  • 1 x EBA_01.00.015_drive_gear.STL
  • 1 x EBA_01.00.016_R01_driven_gear.STL
  • 1 x servo Tower Pro MG90 com acessórios
  • 2 x parafuso M3 de 15 mm
  • 2 x porca M3 auto bloqueante

 

 

Passo 4: Montagem das hastes na base do braço robótico

Peças usadas:

  • 1 x conjunto de hastes montadas  (previamente montada)
  • 1 x servo Tower Pro MG90 com acessórios

 

 

Passo 4: Montagem da garra nas hastes do braço robótico

Peças usadas:

  • 1 x garra (previamente montada)
  • 1 x parafuso M4 de 20 mm
  • 1 x parafuso M4 de 25 mm
  • 2 x porca M4 auto bloqueante
  • 4 x anilha M4

 

 

Braços robóticos ROS DIY

O principal propósito deste artigo é procurar coligir uma lista de Braços Robóticos operados com ROS, com recurso ao Moveit. No entanto também são incluídos alguns braços róboticos que ainda não existe software para os operar com o ROS mas que seja eventualmente possível criar esse software.

Requisitos básicos para operar um braço robótico com o ROS

Uma das primeiras condições para que o braço róbotico seja possível de ser operado com facilidade com o ROS Moveit é que exista uma descrição do mesmo num ficheiro URDF.

Os ficheiros URDF são ficheiros XML com duas etiquetas fundamentais:

  • Link, que representam as parte estáticas dos robot
  • Joint. que representam as ligações entre as várias partes do robot, (links)

Existem dois tipos de cadeias cinemáticas:

  • As cadeias em malha fechada (closed loop): em que cada link está ligado pelo menos a dois outro links ( a cadeia forma um ou mais circuitos fechados).
  • As cadeias em malha aberta (malha aberta): em que um, ou mais, dos links apenas está ligado a um outro link.

Os ficheiros URDF só permitem a descrição de robots em árvore hierárquica, o que deixa de fora os robots com cadeia cinemática em malha fechada.

Braços Róboticos com ROS

  • Niryo One
  • BCN3D Moveo
  • dobot
  • EezyBotArm MK2
  • RoboticArmV1
  • EezyBotArm MK1
  • Tinkerkit Braccio Robot
  • 7DOF arduino arm for ROS
  • Faze4 Robotic arm

Braços Róboticos sem ROS

  • Robot Arm MK2 Plus
  • RoboticArmV2
  • Sixi 2 Robot Arm
  • WE-R2.4 Six-Axis Robot Arm
  • https://www.thingiverse.com/thing:1718984
  • uStepper (4th gen) https://www.thingiverse.com/thing:3876856
  • 6DOF Robot Arm v1.0
  • Faze4 Robotic arm (6dof)
  • Atlas – 6DOF 3D printed universal robot
  • RepRap HELIOS SCARA Robot
  • SCARA Robotic Arm
  • Dexter
  • Walter – 6 DOF robot arm in vintage style
  • Thor – OpenSource 3D printable Robotic 6DOF Arm
  • 6 axis stepper robot

 

 

Robots paletizadores

Partilham a mesma cadeia cinemática

  • meArm (v0.3, v0.4, v1.0)
  • eezybotarm (mk1, mk2, mk3)
  • Robot Arm MK2 Plus
  • uStepper Robot Arm (Rev 2, Rev3, Rev 4)
  • Horizontal Travel Robot Arm
  • robotArm (ftobler)
  • uArm

Dexter

https://hackaday.io/project/158779-dexter

https://www.thingiverse.com/thing:2108244

https://github.com/cfry/dde

 

6 axis stepper robot

https://www.thingiverse.com/thing:1738665

Thor – OpenSource 3D printable Robotic 6DOF Arm

https://hackaday.io/project/12989-thor

Walter is a 6 DOF robot arm in vintage style

https://hackaday.io/project/19968-walter

https://walter.readthedocs.io/en/latest/

 

RepRap HELIOS SCARA Robot

https://hackaday.io/project/21355-reprap-helios

SCARA Robotic Arm

https://www.thingiverse.com/thing:1241491

Atlas – 6DOF 3D printed universal robot

https://hackaday.io/project/168259-atlas-6dof-3d-printed-universal-robot

 

Faze4 Robotic arm (6dof)

https://hackaday.io/project/167247-faze4-robotic-arm

https://github.com/PCrnjak/Faze4-Robotic-arm

meArm

https://www.instructables.com/id/Pocket-Sized-Robot-Arm-meArm-V04/

https://github.com/phenoptix/me-arm-ik

 

Robot Arm MK2 Plus

https://www.thingiverse.com/thing:2520572

 

uStepper Robot Arm (Rev 2, Rev3, Rev 4)

https://www.thingiverse.com/thing:986224

https://www.thingiverse.com/thing:1398215

https://www.thingiverse.com/thing:1774473

https://github.com/uStepper/uStepper-RobotArm-Rev3

remixes

https://www.thingiverse.com/thing:2849783

 

Horizontal Travel Robot Arm

https://medium.com/@pacogarcia3/computer-vision-pick-and-place-for-toys-using-raspberry-pi-and-arduino-68a04874c039

https://www.thingiverse.com/thing:3509006

https://www.instructables.com/id/Horizontal-Travel-Robot-Arm/

 

RobotArm (ftobler)

https://www.thingiverse.com/thing:1718984

Existe um grupo do facebook para os utilizadores deste braço. (https://www.facebook.com/groups/robotarm)

O administrador do grupo criou uma remix deste braço usando correias. Informação disponível em: https://www.20sffactory.com/
STLs disponiveis em: https://www.thingiverse.com/thing:4415380

 

uArm robotic arm

https://store.ufactory.cc/products/uarm

https://github.com/uArm-Developer/RosForSwiftAndSwiftPro

https://github.com/uArm-Developer/UArmForROS

 


6DOF Robot Arm v1.0

https://github.com/RoboLabHub/RobotArm_v1.0

 


Niryo One

https://github.com/NiryoRobotics/niryo_one

 


BCN3D Moveo

https://www.thingiverse.com/thing:1693444

 

 


Dobot magician

https://www.dobot.cc/

https://www.dobot.de/

https://hotblackrobotics.github.io/en/blog/2018/06/29/ros-dobot/

https://github.com/sgabello1/ros-dobot

3D-Model DOBOT Magician incl. Tools

 


EezyBotArm MK2

https://www.instructables.com/id/EEZYbotARM-Mk2-3D-Printed-Robot/

https://www.thingiverse.com/thing:1454048/files

http://www.eezyrobots.it/eba_mk2.html

https://hotblackrobotics.github.io/en/blog/2018/01/17/ntbd-guide-part-I/

https://hotblackrobotics.github.io/it/blog/2018/02/14/sibot-cloud/

https://hackaday.io/project/157951/logs

eezyarm_APIEMS2019_paper_259

https://github.com/IdreesInc/EEZYbotARM-MK2-Cartesian-Coordinates

https://github.com/SimBil91/coffee-bot

https://hackaday.io/project/157951-stm32-robot-arm-controller

 

 


Tinkerkit Braccio Robot

Tinkerkit Braccio robot

https://www.robotshop.com/en/arduino-braccio-robotic-arm.html

https://github.com/ohlr/braccio_arduino_ros_rviz

 


RoboticArmV1

https://www.instructables.com/id/ROS-MoveIt-Robotic-Arm/

https://www.instructables.com/id/ROS-MoveIt-Robotic-Arm-Part-2-Robot-Controller/

https://www.thingiverse.com/thing:851345

 


EezyBotArm MK1

https://www.instructables.com/id/EEZYbotARM/

https://www.thingiverse.com/thing:1015238

http://www.eezyrobots.it/eba_mk1.html

 


Robot Arm MK2 Plus

https://www.instructables.com/id/Robot-Arm-MK2-Plus-Stepper-Motor-Used/

https://www.thingiverse.com/thing:2520572

https://www.instructables.com/id/Using-Arduino-to-Design-3-Dof-Robot-Arm-for-3d-Pri/

 


7DOF arduino arm for ROS

https://hackaday.io/project/164495-a-7dof-arduino-arm-for-ros

https://github.com/qq95538/ArduinoRobotHardWareInterfaceForROS

 


RoboticArmV2

https://www.thingiverse.com/thing:969460

 


 

Sixi 2 Robot Arm

https://github.com/MarginallyClever/sixi-2

https://docs.google.com/spreadsheets/d/1kIXNkmVc6ltsIxx8kSpOiDqU04hZP3wAlI8Vb9QwlLI/edit#gid=0

 


 

WE-R2.4 Six-Axis Robot Arm

https://www.thingiverse.com/thing:3327968

 

 


 

Faze4 Robotic arm

 

https://hackaday.io/project/167247-faze4-robotic-arm

https://github.com/PCrnjak/Faze4-Robotic-arm

 


https://hackaday.io/project/3800-3d-printable-robot-arm


https://grabcad.com/library/microb-3d-printable-6-axis-robot-1

 

 

Videos do youtube para selecionar braços

Skyentific

 


Chris Annin

https://www.anninrobotics.com/

https://github.com/Chris-Annin/Annin-Robot-Project

 

 


Dr. D-Flow

RBX1 (Remix): 3D Printed 6 Axis Robot Arm Beta Kit

 

 



 

 

 

Making of EEZYbotARM MK2

Após ter feito um braço robótico EEZYbotARM (MK1), em que não cumpri exactamente as instruções pois não encontrei o tubo, e de ter tentado sem sucesso criar uma descrição do braço num ficheiro URDF, iniciei a construção do EEZYbotARM MK2.

O braço EEZYbotARM MK2, tal como o MK1 tem os ficheiros STL disponiveis para podermos imprimir parte das suas peças mecânicas numa impressora 3D e está descrito nos seguintes links:

  • http://www.eezyrobots.it/eba_mk2.html
  • https://www.thingiverse.com/thing:1454048
  • https://www.instructables.com/id/EEZYbotARM-Mk2-3D-Printed-Robot/

As partes mecânicas e a respectiva montagem estão bem descritas nos links acima.

A parte electrónica também tem a descrição, no artigo do instructables, de uma das soluções possíveis que é usar o controlador USB servo Mini Maestro da Pololu.  Nesta solução o software é fornecido com o controlador e instalado no PC

Outra solução possível, conforme indicado na informação disponível no thingverse, e assim como no instructables  é usar uma app para o android e um arduino. As informações sobre esta solução estão disponíveis em:

  • https://www.instructables.com/id/Android-APP-to-Control-a-3DPrinted-Robot/

A ideia de fazer este braço róbotico é também usa-lo com o ROS conforme exposto no seguinte link:

https://hotblackrobotics.github.io/en/blog/2018/01/17/ntbd-guide-part-I/

Existe também o seguinte trabalho que descreve o uso do braço robótico EEZYbotARM MK2 com o ROS:

eezyarm_APIEMS2019_paper_259

No entanto este documento não informa nem sobre o sobre qual a electrónica e software usado.

Por ultimo também será possível implementar o controlo do braço recorrendo ao ROS moveit.

Parte 1: Aquisição das peças necessárias para o braço robótico

As peças necessárias são 4 servos, esferas, um rolamento e um conjunto de diversas porcas, parafusos e anilhas.

3 x Servo Tower Pro MG955 ou MG946 ou MG996
1 x SG90 SERVO

1 x rolamento 606zz (6mm x 17mm x 6mm)

32 x esferas 6mm (diametro)

2 x parafuso M3 x 10 mm fenda
5 x parafuso M3 x 20 mm
2 x parafuso M3 x 25 mm
5 x parafuso M4 x 20 mm
1 x parafuso M4 x 35 mm ( original: 1 x parafuso M4 x 30)
1 x parafuso M4 x 50 mm ( original: 1 x parafuso M4 x 40)
1 x parafuso M6 x 25 mm

1 x varão roscado M4 x 32 mm
1 x varão roscado M4 x 60 mm

3 x porca M3
5 x porca M3 auto-bloqueante
9 x porca M4 auto-bloqueante
1 x porca M6  auto-bloqueante

2 x anilha M3
8 x anilha M4
1 x anilha M6

Esta lista de materiais pode ser ligeiramente diferente da original, por exemplo uso mais esferas, e em alguns pormenores, como por exemplo os parafusos, não tem de ser exactamente igual.

Parte 2: Impressão dos componentes para o braço robótico

Lista dos componentes impressos por ordem de impressão.

A ordem de impressão dos componentes foi escolhida de modo a ir efectuando a respectiva montagem.

Base

  • EBAmk2_001_base.STL
  • EBAmk2_010_gearservo.STL
  • EBAmk2_012_mainbase.STL
  • EBAmk2_013_lower base.STL
  • EBAmk2_011_gearmast_full.STL

Braço

  • EBAmk2_002_mainarm.STL
  • EBAmk2_003_varm.STL
  • EBAmk2_004_link135.STL
  • EBAmk2_005_link135angled.STL
  • EBAmk2_006_horarm__.STL
  • EBAmk2_007_trialink.STL
  • EBAmk2_008_link147_new.STL
  • EBAmk2_009_trialinkfront.STL

Garra

  • EBAmk2_014_claw base.STL
  • EBAmk2_015_claw finger dx.STL
  • EBAmk2_016_claw gear drive.STL
  • EBAmk2_017_claw finger sx.STL
  • EBAmk2_018_claw gear driven.STL

Cobertura da base

EBAmk2_019_drive cover.STL

Não impressos

  • EBAmk2_010_gearservo_22DENTI.STL
  • EBAmk2_011_gearmast.STL
  • EBAmk2_006_horarm_plate.STL

Parte 3: Montagem do braço róbotico

A montagem do braço robótico é efectuada em várias fases e está descrita mais abaixo. Posteriormente encontrei o seguinte video, em inglês, que explica com bastante pormenor a montagem do braço robótico.

Entre a descrição e o video creio que fica bastante claro o que é que é necessário e como se monta o braço robótico.

Montagem da base do braço robótico

A base, que é composta pelas seguintes peças:

  • Peças impressas ( 5 peças, das indicadas acima)
  • 1 x Servo MG966
  • 1 x rolamento 606 ZZ
  • 32 x esferas 6 mm
  • 2 x parafusos (1 mm x 5mm), (fixar o hub do servo à gearservo)
  • 1 x  parafuso M3 x 10 mm, (fixar o hub com engrenagem ao servo)
  • 3 x parafuso M3 x 20 mm
  • 2 x parafuso M3 x 25 mm
  • 1 x parafuso M6 x 25 mm
  • 3 x porcas M3
  • 2 x porcas M3 auto-bloqueante
  • 1 x porca M6 auto-bloqueantes
  • 1 x anilha M6
Passo 1:  montar o servo MG996R

Peças usadas:

  • 1 x 012_mainbase
  • 1 x Servo MG966
  • 4 x parafusos fornecidos com o servo

Para encaixar o servo na mainbase, retirar os 4 parafusos inferiores do servo e retirar a tampa inferior. Encaixar o servo na posição, colocar a tampa e voltar a colocar os parafusos no sitio.

A mainbase não tem os furos para fixar o servo. Fazer os furos com um arame fino e quente. De seguida Usar os 4 parafusos para fixar o servo à mainbase. 

Passo 2: Montar o suporte das esferas com o rolamento

Peças usadas

  • 1 x 013_lower base.STL
  • 3 x parafuso M3 x 20 mm
  • 3 x porcas M3
  • 1 x rolamento 606 ZZ

Primeiro encaixam-se as 3 porcas M3 nos locais apropriados. Provavelmente será necessário limar um pouco, ou aquecer as porcas, de modo a conseguir encaixar devidamente as porcas.

De seguida encaixa-se o rolamento no espaço destinado ao efeito e aplica-se os respectivos parafusos de modo a fixar a base

 

Passo 3: aplicar a engrenagem ao servo

Peças usadas

  • 1 x 010_gearservo
  • 1 x  parafuso M3 x 10 mm
  • 1 x suporte circular para o eixo do servo (fornecido com o servo)

Antes de aplicar a engrenagem verificar se está bem impressa e eventualmente retirar algum imperfeição ou algum plástico a mais que se tenha acumulado nas primeiros camadas.

Também convém determinar qual é a amplitude do servo, o seu mínimo, máximo e centro. Deixando o servo posicionado ao centro.

Aplicar o suporte circular préviamente encaixado  à engrenagem no eixo do servo (e eventualmente fixo com 2 parafusos pequenos). Fixar o conjunto com o parafuso M3.

Passo 4: aplicar as esferas e montar a base rotativa

Peças usadas

  • 1 x 001_base.STL
  • 1 x 011_gearmast_full
  • 32 x esferas 6 mm
  • 2 x parafuso M3 x 25 mm (com 2 porcas fixar a gearmaster à base)
  • 1 x parafuso M6 x 25 mm
  • 2 x porcas M3 auto-bloqueantes
  • 1 x porca autoblocante M6
  • 1 x anilha M6

Antes de aplicar a engrenagem verificar se está bem impressa e eventualmente retirar algum imperfeição ou algum plástico a mais que se tenha acumulado nas primeiros camadas.

Numa primeira fase, aplicar a porca auto-bloqueantes M6 no local apropriado na parte de baixo da base.

De seguida aplicar o gearmaster com o rebordo de acondicionamento das esferas para baixo, na parte de baixo da base, fixando-o com 2 parafusos M3 de 25 mm e 2 porcas auto-bloqueantes M3.

Depois de preparar a base com a engrenagem colocar as esferas no socalco apropriado e manter peça na vertical de modo a que as esferas se mantenham na devida posição.

De seguida encaixar a base com engrenagem na engrenagem do servo sem deixar fugir as esferas.

Fixar os dois elementos com o parafuso M6, com anilha, que enrosca na porca M6 préviamente colocada na base. Apertar quanto baste de modo a não dificultar o movimento.

Montagem do braço robótico

Após finalizar a montagem da base do braço passamos a montagem do sistema de alavancas do braço que são comandadas por dois servos.

Esta parte do braço robótico, é composto pelas seguintes peças:

  • Peças impressas ( 8 peças, das indicadas acima)
  • 1 x Varão roscado M4 com 32 mm
  • 8 x parafusos fixadores do servo

 

Passo 5: aplicar as alavancas principais do braço

Peças usadas:

  • 002_mainarm
  • 003_varm
  • 1 x varão roscado M4 com 32 mm
  • 8 x parafusos fixadores do servo

Antes de começar este passo, determinar qual é a amplitude dos servos, o seu mínimo, máximo e centro. Deixar os servos posicionados ao centro.

Também deve preparar o fixador para o eixo do servo, pois é necessário retirar uma aba ao fixador longitudinal (o que tem 2 abas)

Como os buracos onde vai passar o varão roscado estão com certeza muito apertados deve-se afinar o seu diâmetro com uma lima redonda até o varão roscado deslizar sem muito atrito nos diversos orifícios das 2 hastes impressas.

Na primeira fase deste passo, coloca-se a haste maior (002_mainarm) no local adequado (com a curvatura para o lado da pequena haste existente base), insere-se de seguida o varão roscado M4 com 32 mm.

Na segunda fase, coloca-se a haste mais pequena (003_varm) e avança-se o varão roscado até estar a face nos dois lados.

Com o eixo dos servos posicionado na posição central, aplica-se o fixador no eixo dos servos. De acordo com o seguinte procedimento:

Na haste grande, o fixador fica a apontar para cima. Na haste pequena o fixador fica a apontar para o lado da haste, que fica mais ou menos na horizontal. Para montar o fixador, deve-se usar o parafuso que vem com os servos.

Como senti dificuldades na fixação dos servos com os parafusos. Será melhor adequar melhor os orifícios na peça impressa ao diâmetro dos parafusos que se vai usar e enroscar primeiro os parafusos mesmo sem o servo para testar primeiro.

Passo 6: montar as hastes verticais traseiras

Peças usadas

  • 004_link135
  • 005_link135angled
  • 2 x parafuso M4 x 20 mm
  • 2 x porca M4 auto-bloqueante

Preparar os buracos onde vão passar os parafusos M4 com uma lima de modo a que os parafusos deslizem e rodem sem muito atrito nos diversos orifícios das hastes (link135 e  link135angled).

Na primeira fase coloca-se a haste recta com a nervura para o lado de fora, no espaço apropriado para o efeito.

Fixa-se com um parafuso M4 de 20 mm e uma porca M4 auto-bloqueante. O aperto ao parafuso deve ser dado de forma a que o movimento não sofra atrito.

Na segunda fase, coloca-se a haste curvada com a nervura para o lado de dentro, e a parte saliente da curvatura orientada para traz. Aplica-se com o parafuso M4 de 20 mm e uma porca M4 auto-bloqueante. O aperto ao parafuso deve ser dado de forma a que o movimento não sofra atrito.

Passo 7: Montar a haste horizontal e triângulo superior

Peças usadas:

  • 006_horarm__
  • 007_trialink
  • 008_link147_new
  • 1 x varão roscado M4 com 60 mm
  • 2 x parafuso M4 x 20 mm
  • 1 x parafuso M4 x 30 mm
  • 5 x porca M4 auto-bloqueante

Todos os orifícios devem ser preparados préviamente com uma lima de modo a que o varão roscado e os parafusos deslizem e rodem sem muito atrito nos diversos orifícios.

Primeiro encaixamos a haste horizontal (horarm) no local apropriado.  Seguidamente inserimos o varão roscado no orifício até ficar à face do encaixe (de forma a suster a haste).

Em segundo lugar encaixamos o triângulo (trialink) com a face plana para fora no espaço apropriado e continuamos a inserir o varão roscado (que previamente tinha ficado à face) pelo furo do triângulo. Apertar de ambos os lados com porcas M4 auto-bloqueantes.

Em terceiro lugar fixamos as duas hastes verticais na traseira da haste horizontal.

Numa primeira fase fixamos a haste com ângulos no orifício posterior na parte de dentro do triângulo com um parafuso M4 de 35 mm e uma porca M4 auto-bloqueante (este parafuso pode ser M4 25 mm).

Na fase seguinte fixamos a haste rectilínea no orifício posterior da haste horizontal, pela parte de fora, com um parafuso M4 de 20mm e uma porca M4 auto-bloqueante.

Em quarto lugar, com um parafuso M4 de 20mm e uma porca M4 auto-bloqueante, montamos a haste rectilínea maior (link147_new), por dentro no orifício do triângulo e com a nervura para fora.  

Passo 8: Montar terminação da haste horizontal

Peças usadas:

  •  009_trialinkfront
  • 1 x parafuso M4 x 35 mm
  • 1 x parafuso M4 x 50 mm
  • 2 x porca M4 auto-bloqueante

Neste passo vamos montar o suporte da garra (trialinkfront) na parte frontal da haste horizontal superior e no final da haste lateral superior.

Todos os orifícios devem ser preparados préviamente com uma lima de modo a que o varão roscado e os parafusos deslizem e rodem sem muito atrito nos diversos orifícios.

Como a garra (claw base) aplica no suporte da garra  (trialinkfront), num encaixe justo. Antes de prosseguir confirmar se as duas peças encaixam devidamente. Caso seja necessário deve desbastar a zona de encaixe no suporte da garra.

Primeiro aplica-se o suporte da garra no meio do encaixe da haste horizontal. Depois insere-se um parafuso M4 de 35mm no orifício e aperta-se uma porca M4 auto-bloqueante para o fixar.

Segundo, fixa-se a parte de cima da garra à terminação da haste lateral, com um parafuso  M4 de 50 mm no orifício e aperta-se uma porca M4 auto-bloqueante para o fixar.

Montagem da garra

Após a montagem das hastes do braço robótico a fase seguinte é montar a garra e aplicar no braço.

Passo 9: montar a garra e aplicar no suporte da garra

Peças usadas:

  • 1 x claw base
  • 1 x claw finger dx
  • 1 x claw gear drive
  • 1 x claw finger sx
  • 1 x claw gear driven
  • 1 x servo Tower Pro SG90
  • 2 x parafuso M3 com 20 mm
  • 2 x parafuso para montar servo
  • 1 x parafuso para montar suporte no eixo do servo

Todos os orifícios por onde passam os parafusos devem ser preparados préviamente com uma lima de modo a que o varão roscado e os parafusos deslizem e rodem sem muito atrito nos diversos orifícios.

A engrenagem (claw gear driven) tem duas saliências que servem como encaixe nos dois orifícios apropriados no dedo da garra (claw finger sx).

Antes de prosseguir deve certificar de que essas duas peças encaixam devidamente. Se não encaixarem deve-se desbastar os excesso nas saliências até estarem encaixarem.

O eixo do servo deve ser colocado nos zero graus. Mais tarde o fixador que é aplicado no eixo deve ficar posicionado para a frente. Deste modo quando o eixo do servo está no ângulo zero graus a garra está completamente fechada, e quando está no ângulo 180 graus  a garra está completamente aberta.

Após os procedimentos preparatórios, a primeira coisa a fazer é montar o servo no local apropriado. Para o montar devem ser usados os dois parafusos para esse efeito que vêm com o servo.

A segunda coisa a fazer é fixar a engrenagem (claw gear drive) junto com o fixador (que vem com o servo) no eixo do servo, e usar o parafuso que vem como o servo para prender o conjunto.

Em terceiro lugar, deve encaixar a engrenagem (claw gear driven) no dedo da garra (claw finger sx) e montar o conjunto alinhado com o orifício à direita na base da garra ( claw base), usando um parafuso M3 de 20 mm, uma anilha M3 e uma porca M3 auto bloqueante.

Em quarto lugar, proceder à montagem do outro dedo da garra, no orifício à esquerda na base da garra (claw base), usando um parafuso M3 de 20 mm, uma anilha M3 e uma porca M3 auto bloqueante.

Com a garra montada o ultimo passo é encaixar a garra no suporte da garra que está a haste horizontal, e fixar o conjunto com um parafuso M3 de 10 mm e uma porca M3 auto-bloqueante.

 

Finalizar a montagem da garra

Após a montagem da, base, hastes e garra do braço robótico a ultima coisa que falta da parte mecânica é a cobertura da base.

Passo 10: montar a cobertura da base

Peças usadas:

  • 019_drive cover

Para a aplicar a cobertura da base basta colocar no local e pressionar.

Com este passo, a montagem parte mecânica fica completa.

Parte 4: A electrónica de controlo do braço

Conforme indicado na introdução, o autor do braço refere as seguintes soluções:

  • controlador USB servo Mini Maestro da Pololu + sofware proprietario no pc
  • arduino uno + placa bluetooth ( HC-06) + sketch para arduino + app para android.

Para além das soluções do autor é possível ainda usar outras soluções disponíveis na internet como por exemplo:

O controlo do braço em ROS o método ntbd.

https://hotblackrobotics.github.io/en/blog/2018/01/17/ntbd-guide-part-I/

Também é possível usar outra solução testada previamente com o MK1, e que se baseia na placa PCA9685 + arduino + potenciómetros.