Exemples: Mouvement

Cette page explique comment contrôler le Ned pour lui faire réaliser des Move Joints & des Move Pose.

Si vous voulez en savoir plus, vous pouvez regarder PyNiryo - Bras

Important

Dans les sections suivantes, il est supposé que vous êtes connecté à un robot calibré. L’instance du robot est sauvegardée dans la variable robot. Pour savoir comment faire, regardez la section Exemples: Les Basiques

Danger

Si vous utilisez un vrai robot, assurez vous que son environnement est sans obstacles

Joints

Move Joints

Pour effectuer un moveJ, vous devez transmettre :

  • une liste de 6 valeurs décimales : [j1, j2, j3, j4, j5, j6]

Il est possible de transmettre ces paramètres à la fonction move_joints() ou grâce au joints setter, à votre convenance:

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

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

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

Vous noterez que ces 4 commandes réalisent exactement la même chose ! Dans vos futurs scripts, choisissez celle que vous préférez, mais essayez de rester consistant pour gagner en visibilité

Get Joints

Pour obtenir les positions courantes des axes, vous pouvez utiliser la fonction get_joints() ou le joints getter. Les deux retournent une liste de 6 positions d’axes

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

# Getting Joints with getter
joints_read = robot.arm.joints

Indication

Comme nous développons en Python, nous pouvons dépiler une liste facilement, ce qui signifie qu’on peut récupérer les valeurs des axes en écrivant j1, j2, j3, j4, j5, j6 = robot.arm.get_joints()

Pose

Move Pose

Pour réaliser un moveP, vous pouvez transmettre :

  • une liste de 6 valeurs décimales : [x, y, z, roll, pitch, yaw]

  • un PoseObject

Comme pour MoveJ, il est possible de transmettre ces paramètres à la fonction move_pose() ou avec 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.arm.move_pose(0.2, 0.0, 0.2, 0.0, 0.0, 0.0)
robot.arm.move_pose(pose_target)
robot.arm.move_pose(pose_target_obj)

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

Chacunes de ces 6 commandes font la même chose

Get Pose

Pour avoir la position de l’endeffecteur, vous pouvez utiliser la fonction get_pose ou avec le pose getter. Les deux retournent un PoseObject

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

# Getting Joints with getter
pose_read = robot.arm.pose

Comment utilisez le PoseObject

Le PoseObject est un objet Python qui permet de sauvegarder les 6 coordonnées d’une pose (x, y, z, roll, pitch, yaw) en une seule instance. Cela peut être converti en liste si besoin avec la méthode to_list()

Cela permet de créer un nouveau PoseObject avec un décalage, plus simple que de copier une liste et de modifier seulement 1 ou 2 valeurs. Par exemple, imaginez que vous souhaitez décaler la position de dépôt de 5 centimètres à chaque itération dans une boucle for, vous pouvez utilisez 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.arm.move_pose(pick_pose)
    new_place_pose = first_place_pose.copy_with_offsets(x_offset=0.05 * i)
    robot.arm.move_pose(new_place_pose)