Franka Emika Panda se conecta a un brazo robótico real (2)

Franka Emika Panda se conecta a un brazo robótico real (2)

El brazo robótico ya se puede arrastrar en el entorno virtual. El siguiente paso es conectar el brazo robótico a la PC y controlar el movimiento del brazo robótico a través del plan.
El artículo anterior [ Franka Emika Panda se conecta al brazo robótico real (1) ] ya mencionó cómo configurar el entorno del brazo robótico y cómo arrastrar el brazo robótico en el entorno de simulación rviz. Los siguientes registros son algunas de las experiencias de aprendizaje de robots panda en la última semana, que se registran para la conveniencia de "repasar el pasado y aprender cosas nuevas" en el futuro.

Preparación para conectar la PC al brazo robótico

1. Hay luces en la base del brazo robótico y los colores de las luces indican diferentes modos.
Azul: Listo y listo para moverse
Blanco: Detener (puede arrastrar y enseñar en este momento)
Amarillo: Error (simplemente encienda el robot, la luz de la base se muestra amarilla) 2. La
PC y el brazo robótico están conectados a través de un cable de red , debe prestar atención en este momento. La cuestión es que un extremo del cable de red está conectado a la PC y el otro extremo está conectado al gabinete de control del brazo robótico (no a la base del brazo robótico).
3. La IP estática se ha configurado en el lado de la PC, abra el navegador e ingrese la URL 172.16.0.2, puede ver la siguiente interfaz.
inserte la descripción de la imagen aquíAbra el bloqueo de la articulación debajo de las articulaciones y la luz de la base franka se volverá azul. ¡Sostenga el dispositivo de activación externo y comience la exploración de franka panda!

demo.launch controla la exploración del brazo robótico franka

Primero, cree un archivo demo_real.launch en la carpeta de lanzamiento de panda_moveit_config, primero copie todo el contenido del archivo demo.launch en demo_real.launch. Intentamos controlar el brazo robótico modificando este archivo.
Abriendo el archivo demo_real.launch, podemos ver:

<include file="$(find panda_moveit_config)/launch/move_group.launch">
    <arg name="planner" value="$(arg planner)" />
    <arg name="allow_trajectory_execution" value="true"/>
    <arg name="fake_execution" value="true"/>
    <arg name="info" value="true"/>
    <arg name="debug" value="$(arg debug)"/>
  </include>

En este punto fake_execution, value="true"sabemos que la ejecución virtual realizada en este momento es la simulación, por lo que primero cambie verdadero por falso.
Intenté ejecutar:

roslaunch panda_moveit_config demo_real.launch robot_ip:=172.16.0.2

Los resultados muestran:
inserte la descripción de la imagen aquíAction client not connected。Este problema me ha estado molestando durante mucho tiempo y he leído muchos blogs. Por ejemplo:
[ Use moveit! Controlar el brazo robótico real (3) - modificar el archivo de configuración de moveit para controlar el brazo robótico real (actualizado el 27 de septiembre )]
Aquí se menciona cómo modificar el paquete de funciones generado por moveit para controlar el robot real. Entonces comencé a ver si necesito modificar el archivo yaml, etc. El paquete de funciones de git mencionado anteriormente incluye archivos como panda_controller.yaml.
Abre move_group.launch,

<include ns="move_group" file="$(find panda_moveit_config)/launch/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_manage_controllers" value="true" />
    <arg name="moveit_controller_manager" value="panda" if="$(eval not arg('fake_execution') and not arg('load_gripper'))"/>
    <arg name="moveit_controller_manager" value="panda_gripper" if="$(eval not arg('fake_execution') and arg('load_gripper'))"/>
    <arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)"/>
  </include>

Como se puede ver en este párrafo, cuando el valor es , fake_executionel valor es el robot real y no hay error. Entonces, ¿por qué sigue sin funcionar? [ Controlando el manipulador real a través de ROS (5)—Moveit! Manipulador real (modificado por move_group y demo.launch) ] Resultó que moveit era del lado del cliente y no recibía mensajes de los dos nodos del lado del servidor. Abra panda_controllers.yaml,falsemoveit_controller_managerpanda



 controller_list:
  - name: position_joint_trajectory_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: true
    joints:
      - panda_joint1
      - panda_joint2
      - panda_joint3
      - panda_joint4
      - panda_joint5
      - panda_joint6
      - panda_joint7

nombre: Aquí puede escribir un nombre relacionado con su robot para su conveniencia

action_ns:follow_joint_trayectory, follow_joint_trayectory es parte del nombre de la acción posterior, debe completar el nombre de una acción, que se determina en este archivo de configuración, que es la combinación de las cadenas correspondientes representadas por name/action_ns.

type: FollowJointTrajectory , este tipo es el tipo de acción incorporado en ros. Es una estructura de datos que controla la trayectoria de movimiento del brazo robótico. Complete el original. En el futuro, es posible que también desee controlar estructuras como agarrando la mano Diferente.

articulaciones: Estos son los nombres de las articulaciones de su robot (manipulador), estos nombres se derivan de su archivo de modelo de robot, nuestro archivo controllers.yaml se copia en el archivo fake_controllers.yaml, esta parte debe generarse automáticamente.
Enlace original: https://blog.csdn.net/nmssg1/article/details/100665543
Aquí puede leer este blog, que explica la acción más claramente:
[ Una serie imprescindible para el aprendizaje de robots: Cómo usar moveit para controlar ¿Un brazo robótico real? ]
En términos simples, la comunicación es como un enchufe, moveit es como un enchufe, está listo, pero el servidor de acción siempre está ausente, por lo que, por supuesto, no se puede encender.

El problema es entender, pero ¿cómo resolverlo a continuación? Esto dificulta a las personas.
Algunos bloggers sugirieron que puede escribir un archivo de nodo usted mismo y ejecutar el nodo antes de ejecutar el archivo de inicio, de modo que position_joint_trajectory_controller esté en un estado fluido. Pero acabo de entrar en contacto con robots, y Franka es un robot de siete grados de libertad. Tomó algunos días escribir un archivo de nodo útil.
Aquí, los documentos útiles encontrados antes se cuentan para su estudio posterior.
[ Cómo actúa la trayectoria generada por Moveit en ROS sobre el brazo robótico real (1) ]
[ Cómo actúa la trayectoria generada por Moveit en ROS sobre el brazo robótico real (2) ]
[ Cómo actúa la trayectoria generada por Moveit en ROS sobre el robot real (3) ) ]
[ Usar moveit! Controle el manipulador real (5): escriba el programa de servicio de acción en el nodo del manipulador real ]
[ Moveit control del manipulador real (5) moveit, escriba el nodo del servidor de acción y el nodo en el lado de Arudion ]
[ Notas de estudio ROS 16 - controle el Acción real del brazo robótico (gran colección de instancias) ]
[ Controlar el brazo robótico real a través de ROS (5)—Moveit! Brazo robótico real (modificado por move_group y demo.launch) ]
[ Usar moveit! Controlando un brazo robótico real (4) - ¡Aprende sobre moveit! la acción utilizada]
Este camino está bloqueado temporalmente, y no hay muchos tutoriales sobre el uso de ROS para controlar el brazo robótico franka panda, rascándose el cuero cabelludo (la línea del cabello se mueve hacia atrás).

Controla el brazo robótico

1. Pruebe la conectividad del brazo robótico

ifconfig

Revisa si la ip ha sido modificada.

uname -r

Compruebe si el kernel de Linux es un kernel en tiempo real.

ping 172.16.0.2

Compruebe si la PC puede comunicarse con el brazo robótico.

cd ~/catkin_franka/libfranka/build/examples
./echo_robot_state 172.16.0.2
./communication_test 172.16.0.2

Si esta prueba de comunicación falla, la red de comunicación es insuficiente para controlar el robot.
2. Control en tiempo real del brazo robótico

roslaunch franka_example_controllers cartesian_impedance_example_controller.launch robot_ip:=172.16.0.2 load_gripper:=true

En este momento, arrastre el brazo robótico en rviz y el brazo robótico real se moverá en tiempo real, así que asegúrese de que no haya obstáculos alrededor.

cd ~/catkin_franka/libfranka/build/examples
./communication_test 172.16.0.2

Utilice este comando para devolver el brazo robótico a su posición original.
3. El plan y ejecución del brazo robótico.

roslaunch franka_control franka_control.launch robot_ip:=172.16.0.2
roslaunch panda_moveit_config panda_moveit.launch
roslaunch panda_moveit_config demo_real.launch

Me llevó mucho tiempo pensar en este método. Aunque se siente como un enfoque de lado a lado, la medición real muestra que el plan y la ejecución del brazo robótico se pueden realizar.

Supongo que te gusta

Origin blog.csdn.net/qq_34935373/article/details/122148347
Recomendado
Clasificación