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)