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