Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Cargar modelos de robot predefinidos

Para acceder rápidamente a los modelos de robot más comunes, utilice la función loadrobot, que carga modelos de robot disponibles en el mercado, como el cobot Universal Robots™ UR10, el humanoide Boston Dynamics™ Atlas y el manipulador KINOVA™ Gen 3. Aprenda cómo generar configuraciones de articulación e interactuar con los modelos de robot.

Para importar su propio formato universal de descripción de robots (URDF), consulte la función importrobot.

Especifique el tipo de modelo de robot como una cadena para la función loadrobot. Utilice la función de completar pestañas para seleccionar de la lista de modelos proporcionados como entradas.

Para utilizar vectores columna en las configuraciones de articulación, especifique el formato de los datos como "column".

ur10 = loadrobot("universalUR10");
atlas = loadrobot("atlas");
gen3 = loadrobot("kinovaGen3","DataFormat","column");

La función loadrobot devuelve un objeto rigidBodyTree que representa la cinemática y la dinámica de cada modelo de robot. Es posible que algunos modelos no se carguen con la dinámica o las propiedades inerciales de los cuerpos. Inspeccione los cuerpos rígidos individuales mediante la propiedad Bodies o la función getBody.

disp(gen3);
  rigidBodyTree with properties:

     NumBodies: 8
        Bodies: {[1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]}
          Base: [1x1 rigidBody]
     BodyNames: {'Shoulder_Link'  'HalfArm1_Link'  'HalfArm2_Link'  'ForeArm_Link'  'Wrist1_Link'  'Wrist2_Link'  'Bracelet_Link'  'EndEffector_Link'}
      BaseName: 'base_link'
       Gravity: [0 0 0]
    DataFormat: 'column'

Llame a show para visualizar los modelos de robot en la configuración inicial. Sustituya el objeto gen3 por otros modelos para visualizarlos.

show(gen3);

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

show(atlas);

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 169 objects of type patch, line. These objects represent pelvis, ltorso, mtorso, utorso, l_clav, l_scap, l_uarm, l_larm, l_ufarm, l_lfarm, l_hand, l_hand_force_torque, l_situational_awareness_camera_link, l_situational_awareness_camera_optical_frame, head, center_bottom_led_frame, center_top_led_frame, left_camera_frame, left_camera_optical_frame, left_led_frame, pre_spindle, pre_spindle_cal_x, pre_spindle_cal_y, pre_spindle_cal_z, pre_spindle_cal_roll, pre_spindle_cal_pitch, pre_spindle_cal_yaw, post_spindle, post_spindle_cal_x, post_spindle_cal_y, post_spindle_cal_z, post_spindle_cal_roll, post_spindle_cal_pitch, hokuyo_link, head_hokuyo_frame, right_camera_frame, right_camera_optical_frame, right_led_frame, r_clav, r_scap, r_uarm, r_larm, r_ufarm, r_lfarm, r_hand, r_hand_force_torque, r_situational_awareness_camera_link, r_situational_awareness_camera_optical_frame, l_uglut, l_lglut, l_uleg, l_lleg, l_talus, l_foot, r_uglut, r_lglut, r_uleg, r_lleg, r_talus, r_foot, ltorso_mesh, mtorso_mesh, utorso_mesh, l_clav_mesh, l_scap_mesh, l_uarm_mesh, l_larm_mesh, l_ufarm_mesh, l_lfarm_mesh, l_hand_force_torque_mesh, l_situational_awareness_camera_link_mesh, head_mesh, hokuyo_link_mesh, r_clav_mesh, r_scap_mesh, r_uarm_mesh, r_larm_mesh, r_ufarm_mesh, r_lfarm_mesh, r_hand_force_torque_mesh, r_situational_awareness_camera_link_mesh, l_uglut_mesh, l_lglut_mesh, l_uleg_mesh, l_lleg_mesh, l_talus_mesh, l_foot_mesh, r_uglut_mesh, r_lglut_mesh, r_uleg_mesh, r_lleg_mesh, r_talus_mesh, r_foot_mesh, pelvis_mesh.

show(ur10);

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 28 objects of type patch, line. These objects represent world, base_link, base, shoulder_link, upper_arm_link, forearm_link, wrist_1_link, wrist_2_link, wrist_3_link, ee_link, tool0, base_link_mesh, shoulder_link_mesh, upper_arm_link_mesh, forearm_link_mesh, wrist_1_link_mesh, wrist_2_link_mesh, wrist_3_link_mesh.

Generar configuraciones de articulación

Genere configuraciones aleatorias para el robot KINOVA Gen3. La función randomConfiguration produce posiciones de articulación aleatorias dentro de los límites del modelo. Para verificar que el modelo se comporte como se espera, visualice un conjunto de cuatro configuraciones.

for i = 1:4
    subplot(2,2,i)
    config = randomConfiguration(gen3);
    show(gen3,config);
end

Figure contains 4 axes objects. Axes object 1 with xlabel X, ylabel Y contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh. Axes object 2 with xlabel X, ylabel Y contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh. Axes object 3 with xlabel X, ylabel Y contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh. Axes object 4 with xlabel X, ylabel Y contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

Interactuar con el modelo de robot

Para mover el modelo de robot e inspeccionar el comportamiento, cargue la interfaz gráfica interactiva del árbol de cuerpo rígido. Puede establecer las posiciones de los efectores finales objetivo, mover manualmente las articulaciones y seleccionar varios elementos del modelo.

interactiveGUI = interactiveRigidBodyTree(gen3);

Figure Interactive Visualization contains an axes object. The axes object with xlabel X, ylabel Y contains 35 objects of type patch, line, surface.

Haga clic y arrastre el disco central para mover libremente la posición del efector final objetivo. La interfaz gráfica utiliza Cinemática inversa para resolver las posiciones de articulación de cada cuerpo. Utilice los ejes para movimiento lineal y los círculos para girar alrededor de un eje.

Haga clic en un rigidBody para ver sus parámetros específicos.

Haga clic con el botón secundario para establecer un cuerpo marcador objetivo diferente. Modificar el cuerpo objetivo actualiza el efector final del solver de cinemática inversa.

Para controlar manualmente las articulaciones, haga clic con el botón secundario y cambie el método de control del marcador.

Para controlar la rotación de una articulación giratoria en el cuerpo seleccionado, haga clic y arrastre el círculo amarillo.

Guardar las configuraciones de las articulaciones

Guarde las configuraciones específicas establecidas con la función addConfiguration, que almacena las posiciones actuales de las articulaciones en la propiedad StoredConfigurations. En este ejemplo se establece una configuración aleatoria antes del almacenamiento.

interactiveGUI.Configuration = randomConfiguration(gen3);

Figure Interactive Visualization contains an axes object. The axes object with xlabel X, ylabel Y contains 35 objects of type patch, line, surface.

addConfiguration(interactiveGUI)
disp(interactiveGUI.StoredConfigurations)
   -0.4218
   -1.6647
    1.3419
   -2.0818
    1.8179
   -0.4140
   -1.4517

Siguientes pasos

Con el modelo creado en MATLAB®, podrá hacer varias cosas distintas.

  • Calcule Cinemática inversa para obtener configuraciones de articulaciones basadas en las posiciones deseadas del efector final. Además de los parámetros del modelo del robot, especifique otras restricciones, como apuntamiento, límites cartesianos o poses objetivo.

  • Genere Generación y seguimiento de trayectorias basadas en waypoints y en otros parámetros con perfiles de velocidad trapezoidal, B-splines o trayectorias polinómicas.

  • Realice Planificación de trayectorias de manipuladores mediante los modelos de robot y el planificador de rutas de árboles aleatorios de exploración rápida (RRT).

  • Compruebe si se producen Detección de colisiones con obstáculos del entorno para garantizar que el robot se mueve de forma segura y eficaz.