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

  • 6 flacons

  • Une pente (qui représente une machine)

  • Le contenant (qui représente un carton)

  • Niryo One

  • Gripper large

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 :

1
#!/usr/bin/env python
2
from niryo_one_python_api.niryo_one_api import *
3
4
import rospy
5
import time
6
rospy.init_node('niryo_one_example_python_api')
7
8
n = NiryoOne()
9
10
try:
11
	n.change_tool(TOOL_GRIPPER_2_ID)
12
	
13
n.open_gripper(TOOL_GRIPPER_2_ID, 500)
14
	time.sleep(1)
15
	n.close_gripper(TOOL_GRIPPER_2_ID, 500)
16
except NiryoOneException as e:
17
	print e
18
	# Handle errors here

Question

Étudier le code suivant et décrire la tâche réalisée :

1
pose_1 = [x_1, y_1, z_1, roll_1, pitch_1, yaw_1]
2
pose_2 = [x_2, y_2, z_2, roll_2, pitch_2, yaw_2]
3
n.open_gripper(TOOL_GRIPPER_2_ID, 500)
4
time.sleep(1)
5
n.move_pose(*pose_1)
6
time.sleep(1)
7
n.move_pose(*pose_2)
8
n.close_gripper(TOOL_GRIPPER_2_ID, 500)

Question

En utilisant le mode apprentissage, déterminer les positions de pick et de place

1
#!/usr/bin/env python
2
from niryo_one_python_api.niryo_one_api import *
3
4
import rospy
5
6
rospy.init_node('niryo_one_leanring_mode')
7
8
n = NiryoOne()
9
10
print "--- Start"
11
12
try:
13
	raw_input("Placez le robot a sa position initiale et appuyez sur
14
entree")
15
	pose_initiale = n.get_arm_pose()
16
	
17
print "pose_initiale = ", pose_initiale
18
19
	raw_input("Deplacez vers la position 1 et appuyez sur entree")
20
	
21
pose_pick_1 = n.get_arm_pose()
22
	print("pose_pick_1 = ", pose_pick_1)
23
24
	raw_input("deplacez le robot vers une position pick 2 et ensuite
25
 appuyez sur entree")
26
	pose_pick_2 = n.get_arm_pose()
27
	print("pose_ pick_2 = ", pose_pick_2)
28
29
except NiryoOneException as e:
30
	print e
31
32
print "--- End"

Question

Écrire le cycle complet de remplissage du carton et commenter les choix effectués.