Exercice : Synthèse
Cas pratique : Pick & Pack
Dans le cadre de la rénovation de l'outil de production de la société BOX qui fabrique et distribue des produits cosmétiques, on vous demande d'automatiser le conditionnement en fin de chaîne qui consiste à déposer des flacons remplis dans des cartons.
Six flacons, disposés sur la machine, symbolisée ici par la pente, doivent être placés dans un carton qui est parfaitement aligné avec le robot. Il sera nécessaire de réaliser la programmation nécessaire pour atteindre cet objectif avec l'API Python du Niryo One.
Mise en place du matériel
Travail demandé
Le robot est dans sa position initiale. Lorsque l'opérateur appuie sur le bouton pour indiquer l'arrivée des flacons sur la machine, le conditionnement commence.
L'automatisation de ce système est décomposée en quatre tâches :
1. Le robot se déplace vers la machine pour récupérer un flacon
2. Le robot prend le flacon
3. Le robot se déplace vers le carton pour poser le flacon
4. Le robot pose le flacon
Ces quatre tâches se répètent jusqu'à ce que le carton soit rempli, puis le robot retourne à sa position initiale
Question
Brancher et tester le préhenseur avec le code suivant :
#!/usr/bin/env pythonfrom niryo_one_python_api.niryo_one_api import *
import rospy
import time
rospy.init_node('niryo_one_example_python_api')
n = NiryoOne()
try:n.change_tool(TOOL_GRIPPER_2_ID)
n.open_gripper(TOOL_GRIPPER_2_ID, 500)
time.sleep(1)
n.close_gripper(TOOL_GRIPPER_2_ID, 500)
except NiryoOneException as e:
print e
# Handle errors hereQuestion
Étudier le code suivant et décrire la tâche réalisée :
pose_1 = [x_1, y_1, z_1, roll_1, pitch_1, yaw_1]
pose_2 = [x_2, y_2, z_2, roll_2, pitch_2, yaw_2]
n.open_gripper(TOOL_GRIPPER_2_ID, 500)
time.sleep(1)
n.move_pose(*pose_1)
time.sleep(1)
n.move_pose(*pose_2)
n.close_gripper(TOOL_GRIPPER_2_ID, 500)
Question
En utilisant le mode apprentissage, déterminer les positions de pick et de place
#!/usr/bin/env pythonfrom niryo_one_python_api.niryo_one_api import *
import rospy
rospy.init_node('niryo_one_leanring_mode')
n = NiryoOne()
print "--- Start"
try:raw_input("Placez le robot a sa position initiale et appuyez sur
entree")
pose_initiale = n.get_arm_pose()
print "pose_initiale = ", pose_initiale
raw_input("Deplacez vers la position 1 et appuyez sur entree")
pose_pick_1 = n.get_arm_pose()
print("pose_pick_1 = ", pose_pick_1)
raw_input("deplacez le robot vers une position pick 2 et ensuite
appuyez sur entree")
pose_pick_2 = n.get_arm_pose()
print("pose_ pick_2 = ", pose_pick_2)
except NiryoOneException as e:
print e
print "--- End"


