O pacote typepyt explora o pequeno braço robótico meArm no ROS. Tendo em consideração que eezyBotArm partilha o mesmo tipo de cadeia cinemática com o meArm decidi explorar este pacote de software disponível no seguinte endereço:
https://github.com/inaciosef/TyPEpyt
Nota: o fork explorado foi:
https://github.com/matrhint/TyPEpyt
Logo ao inicio chamou-me a atenção a forma como os ficheiros estavam dispostos no pacote. Normalmente não existem ficheiros urdf e launch na raiz.
Uma das coisas que me chamou a atenção é que o urdf que descreve o braço robótico aparenta representar melhor a cadeia cinemática que existe num robot manipulador deste tipo, do que aquela que descobri no repositório do ntbd.
No urdf do ntdb o que acontece é que quando a haste principal se desloca, a haste horizontal que se articula no seu topo mantém o seu ângulo com a haste principal (ver video abaixo) .
No entanto na descrição do meArm as duas haste relacionam-se de forma diferente (ver video abaixo)
Como se pode observar segundo este urdf, a haste horizontal tem um ângulo relativamente a haste principal que vai variando com a posição desta. Este comportamento está mais próximo do real.
A visualização do modelo no rviz é efectuada com o seguinte comando:
roslaunch typepyt urdf_visualize.launch model:='$(find typepyt)/typepyt.urdf'
De seguida instalei os seguintes pacotes por serem requisitos para continuar a explorar o typepyt. O primeiro dos quais está disponível para ser instalado por clonagem e compilação
https://github.com/mintar/mimic_joint_gazebo_tutorial
O segundo é uma ferramenta de teleop para trajectórias de braços e é instalado via apt
sudo apt install ros-melodic-rqt-joint-trajectory-controller
A experiência seguinte foi lançar o lançar unico launch file que está na respectiva pasta.
roslaunch typepyt gazebo.launch
O terminal exibiu um numero considerável de erros que reproduzo parcialmente abaixo e no final a simulação no gazebo não estava funcional.
[WARN] [1589846396.527857, 0.000000]: wait_for_service(/controller_manager/load_controller): failed to contact, will keep trying (...) [ERROR] [1589846397.308676399, 0.120000000]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/hip [ERROR] [1589846397.309328809, 0.120000000]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/shoulder [ERROR] [1589846397.309993934, 0.120000000]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/elbow1 [ERROR] [1589846397.310607059, 0.120000000]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/wrist
De seguida experimentei lançar launch file typepyt.launch disponível na raiz do pacote.
roslaunch typepyt typepyt.launch
Também lançou uma serie de erros relacionados com o ganho do parametro p do pid.
[ WARN] [1589847824.627491156, 0.129000000]: Deprecated syntax, please prepend 'hardware_interface/' to 'PositionJointInterface' within the <hardwareInterface> tag in joint 'hip'. [ERROR] [1589847824.628310336, 0.129000000]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/hip
Os problemas foram corrigidos pela inclusão do seguinte ficheiro de configuração no launch file.
<rosparam file="$(find typepyt)/config/gazebo/gazebo_controller.yaml" command="load" />
<!-- Load teleop --> <node name="rqt_joint_trajectory_controller" pkg="rqt_joint_trajectory_controller" type="rqt_joint_trajectory_controller" />