Exemples : Mouvements

Ce document montre comment contrôler Ned afin d’effectuer des Move Joints & des Move Pose.

Si vous souhaitez en apprendre davantage, consultez la rubrique PyNiryo - Joints & Pose.

Important

Dans les sections suivantses, il faut que vous soyez déjà connecté à un robot calibré. L’instance du robot est sauvegardée dans la variable robot. Afin de savoir comment faire, consultez la section Exemples : Fondamentaux.

Danger

Si vous utilisez le robot, assurez vous que l’environnement autour de celui-ci est dégagé.

Joints

Move Joints (Faire bouger les axes)

Pour réaliser un moveJ, vous pouvez passer soit :

  • 6 floats (nombre à virgule flottante): j1, j2, j3, j4, j5, j6

  • une liste de 6 floats : [j1, j2, j3, j4, j5, j6]

Il est possible de passer ces paramètres à la fonction move_joints() ou par le joints setter, à votre convenance.

# Moving Joints with function & 6 floats
robot.move_joints(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)

# Moving Joints with function & a list of floats
robot.move_joints([-0.5, -0.6, 0.0, 0.3, 0.0, 0.0])

# Moving Joints with setter & 6 floats
robot.joints = 0.2, -0.4, 0.0, 0.0, 0.0, 0.0

# Moving Joints with setter & a list of floats
robot.joints = [-0.2, 0.3, 0.2, 0.3, -0.6, 0.0]

Il est important de noter que ces 4 commandes provoquent la même chose ! Dans vos futurs scripts, choisissez celui que vous préférez, mais essayez de rester consistant afin de conserver une bonne lisibilité.

Get Joints (Obtenir la position des joints)

Afin d’obtenir l’actuelle position des axes, vous pouvez utiliser la fonction get_joints() ou le joints getter. Les deux permettront d’obtenir la liste des positions des six axes.

# Getting Joints with function
joints_read = robot.get_joints()

# Getting Joints with getter
joints_read = robot.joints

Indication

Comme nous développons en Python, nous pouvons facilement dissocier une liste, ce qui signifie que l’on peut retrouver les valeurs des axes en 6 variables en tapant j1, j2, j3, j4, j5, j6 =  robot.get_joints().

Pose

Move Pose

Pour réaliser un moveP, vous pouvez passer :

  • 6 floats : x, y, z, roulis, tangage, lacet

  • une liste de 6 floats : [x, y, z, roll, pitch, yaw]

  • un PoseObject

Comme pour MoveJ, il est possible de passer ces paramètres à la fonction move_pose() ou par le pose setter, à votre convenance.

pose_target = [0.2, 0.0, 0.2, 0.0, 0.0, 0.0]
pose_target_obj = PoseObject(0.2, 0.0, 0.2, 0.0, 0.0, 0.0)

# Moving Pose with function
robot.move_pose(0.2, 0.0, 0.2, 0.0, 0.0, 0.0)
robot.move_pose(pose_target)
robot.move_pose(pose_target_obj)

# Moving Pose with setter
robot.pose = (0.2, 0.0, 0.2, 0.0, 0.0, 0.0)
robot.pose = pose_target
robot.pose = pose_target_obj

Chacune de ces 6 commandes provoquent le même résultat.

Get Pose (Obtenir la pose du PCO)

Afin d’obtenir la position actuelle de l’effecteur, vous pouvez utiliser la fonction get_pose() ou un pose getter. Les deux retourneront un PoseObject.

# Getting Joints with function
pose_read = robot.get_pose()

# Getting Joints with getter
pose_read = robot.pose

Comment utiliser PoseObject

PoseObject est un objet Python qui permet de stocker les positions des 6 coordonnées (x, y, z, roll, pitch, yaw) en une seule instance. Il peut être converti en une liste si nécessaire avec la méthode to_list().

Il permet également de créer un nouveau PoseObject avec des offsets, ce qui est beaucoup plus simple que de copier une liste et éditer uniquement une ou deux valeurs. Par exemple, imaginez que nous souhaitions glisser la position de placement de 5 centimètres à chaque itération d’une boucle, alors on peut utiliser la méthode copy_with_offsets().

pick_pose = PoseObject(
x=0.30, y=0.0, z=0.15,
roll=0, pitch=1.57, yaw=0.0
)
first_place_pose = PoseObject(
    x=0.0, y=0.2, z=0.15,
    roll=0, pitch=1.57, yaw=0.0
)
for i in range(5):
    robot.move_pose(pick_pose)
    new_place_pose = first_place_pose.copy_with_offsets(x_offset=0.05 * i)
    robot.move_pose(new_place_pose)