Alterações ao pacote ebamk2_moveit_config

Daquilo que aprendi, das descrições e exemplos que encontrei na web sobre a exploração de um braço robótico real, e de baixo custo, com o ros moveit! é que existem quatro ficheiros importantes, que tem de ser criados ou alterados no pacote que resulta da execução do moveit_setup_assistent.

Este é um exemplo das alterações aplicadas ao pacote ebamk2_moveit_config. Pacote de configuração do moveit para braço robotico eezybotarm mk2.

Algumas notas sobre o hardware real. Os actuadores em cada articulação são servo motores, sem qualquer feedback.

Existem 4 joints, correspondentes a 4 servo motores. Incluindo o da pinça.

Provavelmente deveria estar apenas a enumerar 3, decidi colocar o joint6 que é o da articulação da pinça (o que abre e fecha a pinça). Irei saber depois. Quando abordar o controlo da pinça com o moveit.

Cada um dos motores é referido como um joint_n, pelo que os termos joint_1, joint_2, joint_3, e joint_6, referem os motores. Os nomes usados são importantes e devem ser os nomes das joints existentes no ficheiro urdf usado como base para o pacote de configuração do moveit para o eezybotarm mk2

controllers.yaml

O primeiro passo é criar o ficheiro (ebamk2_moveit_config/config/controllers.yaml) com o seguinte conteúdo:

controller_manager_ns: /
controller_list:
  - name: arm_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    joints: [joint_1, joint_2, joint_3, joint_6]

Este ficheiro vai origem ao tópicos

/arm_controller/follow_joint_trajectory/cancel
/arm_controller/follow_joint_trajectory/feedback
/arm_controller/follow_joint_trajectory/goal
/arm_controller/follow_joint_trajectory/result
/arm_controller/follow_joint_trajectory/status

joint_names.yaml

O segundo passo é criar o ficheiro (ebamk2_moveit_config/config/joint_names.yaml) com o seguinte conteúdo:

controller_joint_names: [joint_1, joint_2, joint_3, joint_6]

ebamk2_moveit_controller_manager.launch.xml

O terceiro passo é substituir ros_controllers.yaml por controllers.yaml no ficheiro abaixo.

(ebamk2_moveit_config/launch/ebamk2_moveit_controller_manager.launch.xml)

O conteúdo será o seguinte:

<launch>

<!-- loads moveit_controller_manager on the parameter server which is taken as argument 
if no argument is passed, moveit_simple_controller_manager will be set -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

<!-- loads ros_controllers to the param server -->
<rosparam file="$(find ebamk2_moveit_config)/config/controllers.yaml"/>
</launch>

robot_planning_execution.launch

O ultimo passo é criar o ficheiro: (ebamk2_moveit_config/launch/robot_planning_execution.launch)

Este launch file é o usado para iniciar os nodes necessários para o braço robótico  executar os movimentos planeados no ros moveit.

<!-- connect to micro controller -->
<arg name="baud" default="57600"/>
<arg name="port" default="/dev/ttyUSB0"/>

<node pkg="rosserial_python" type="serial_node.py" name="init_serial_node">
<param name="baud" value="$(arg baud)"/>
<param name="port" value="$(arg port)"/>
</node>

<!-- load the joint names configuration file manualy created -->
<rosparam command="load" file="$(find ebamk2_moveit_config)/config/joint_names.yaml"/>

<!-- load the robot_description parameter before launching ROS-I nodes -->
<include file="$(find ebamk2_moveit_config)/launch/planning_context.launch" >
<arg name="load_robot_description" value="true" />
</include>

<!-- run the actionlib moveit messages to robot hardware interface node -->
<node pkg="rosarm_control" type="eba_arm_control.py" name="arm_controller" output="screen"/>

<!-- publish the robot state (tf transforms) -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

<!-- include automatic generated launch files -->
<include file="$(find ebamk2_moveit_config)/launch/move_group.launch">
<arg name="publish_monitored_planning_scene" value="true" />
</include>

<include file="$(find ebamk2_moveit_config)/launch/moveit_rviz.launch">
<arg name="rviz_config" value="true"/>
</include>

</launch>

Partes relevantes deste artigo provêm das instruções descritas no documento no seguinte endereço:

https://industrial-training-master.readthedocs.io/en/melodic/_source/session3/Build-a-Moveit!-Package.html