Note

Avant de suivre les instructions suivantes, assurez-vous que le Convoyeur (V2) et le capteur IR sont connectés comme indiqué dans la partie correspondante (voir /source/setup).

Avec Niryo Studio

Veuillez vous référer au manuel d’utilisation de Niryo Studio pour plus de détails.

Niryo Studio - Le Convoyeur (v2)

Pour utiliser le Convoyeur (v2) avec Niryo Studio, il est nécessaire d’ouvrir l’onglet Convoyeur dans le menu de gauche. L’interface vous permettra de contrôler jusqu’à deux Convoyeurs simultanément. Vous pouvez les activer et contrôler leur vitesse et leur direction.

Indication

Cliquez sur Scan pour détecter et ajouter le Convoyeur (v2) connecté à votre robot dans Niryo Studio.

Pour contrôler un Convoyeur (v2), il faut le connecter au robot et activer le bouton du Convoyeur (v2) sur Niryo Studio. Vous pouvez désormais ajuster la vitesse en utilisant les curseurs ou en entrant la valeur en pourcentage et en choisissant la direction du convoyeur.

Pour utiliser deux Convoyeurs (v2), suivez les étapes détaillées dans le paragraphe précédent puis, dans la section “Définir l’ID du Convoyeur (v2)”, de Niryo Studio, sélectionnez “Convoyeur (v2) 2” et cliquez sur “mettre à jour”.Vous pouvez maintenant connecter votre second convoyeur à Ned2, qui seraconsidéré comme “Convoyeur (v2) 1”. Notez que les ID sont sauvegardées jusqu’à la déconnexion des convoyeurs. Ces étapes sont requises à chaque fois que les deux convoyeurs sont reconnectés.

Niryo Studio - Module infrarouge

Connectez votre capteur sur le connecteur IR-Sensor sur le panneau arrière du robot. Dans Niryo Studio, dans le « Digital I/O panel », vous pouvez lire l’état du capteur IR dans la broche DI5 :

  • Lorsque la distance mesurée est inférieure à la distance réglée, l“« INPUT » est « LOW », ce qui signifie qu’un obstacle est détecté.

  • Lorsque la distance mesurée est inférieure à la distance réglée, l“« INPUT » est « LOW », ce qui signifie qu’un obstacle est détecté. Lorsque la distance mesurée est supérieure à la distance réglée, l“« INPUT » est « HIGH », ce qui signifie qu’il n’y a pas d’obstacle.

Blockly

Des blocs ont été spécifiquement conçus pour être utilisés avec le Convoyeur (v2) de manière à rendre notre écosystème facile à utiliser avec Niryo Studio.

Images

Description

../_images/Blockly_conveyor_1.png

Permet à l’utilisateur de choisir l’ID du Convoyeur (v2).

../_images/Blockly_conveyor_2.png

Permet au Convoyeur (v2) d’être contrôlé par le robot.

../_images/Blockly_conveyor_3.png

Ce bloc contrôle le Convoyeur (v2) :

  • Avec l’ID (1 ou 2),

  • Avec la vitesse (de 0 à 100%),

  • Avec la direction (avant et arrière).

../_images/Blockly_conveyor_4.png

Ce bloc arrête le Convoyeur (v2).

Avec le boîtier de contrôle

../_images/potentiometer.png

Le potentiomètre permet de contrôler la vitesse et la direction du Convoyeur (v2).

Lorsque le potentiomètre est à sa position d’origine, centrée, le Convoyeur (v2) est à l’arrêt.

Plus le potentiomètre est tourné dans le sens des aiguilles d’une montre, plus le Convoyeur (v2) sera rapide en direction de l’avant.

A l’inverse, plus le potentiomètre est tourné dans le sens contraire des aiguilles d’une montre, plus le Convoyeur (v2) sera rapide en direction de l’arrière.

Avec PyNiryo

Veuillez vous référer au manuel d’utilisation de PyNiryo pour plus de détails.

PyNiryo - Le Convoyeur (v2)

Voici un exemple de code montrant comment détecter le Convoyeur (v2) connecté et démarrer son moteur :

#!/usr/bin/env python

from pyniryo import *

# Connecting to robot
robot = NiryoRobot(<robot_ip_address>)

# Activating connexion with Conveyor Belt
conveyor_id = robot.set_conveyor()

# Running the Conveyor Belt (v2) at 50% of its maximum speed, in forward direction
robot.run_conveyor(conveyor_id, speed=50, direction=ConveyorDirection.FORWARD)

# Waiting 3 seconds
robot.wait(3)

# Stopping conveyor's motor
robot.stop_conveyor(conveyor_id)

# Deactivating connexion with the Conveyor Belt
robot.unset_conveyor(conveyor_id)

PyNiryo - Module Infrarouge

Vous pouvez connaître l’état du capteur infrarouge et contrôler le Convoyeur (v2) en conséquence, comme le montre le script suivant. Dans cet exemple, le Convoyeur (v2) est connecté au GPIO_1A.

#!/usr/bin/env python

from pyniryo import *

# Connecting to the robot
robot = NiryoRobot(<robot_ip_address>)

# Activating connexion with the Conveyor Belt
conveyor_id = robot.set_conveyor()

# -- Setting variables
sensor_pin_id = PinID.GPIO_1A

# Run conveyor and wait until the IR sensor detects an object
robot.run_conveyor(conveyor_id)
while robot.digital_read(sensor_pin_id) == PinState.LOW:
    robot.wait(0.1)

# Stopping conveyor's motor
robot.stop_conveyor(conveyor_id)

# Deactivating connexion with the Conveyor Belt
robot.unset_conveyor(conveyor_id)

Avec Modbus

Veuillez vous référer à notre manuel utilisateur Modbus pour plus de détails.

Modbus - Le Convoyeur

Voici un exemple de code python permettant le contrôle du Convoyeur (v2) via un client Modbus TCP :

#!/usr/bin/env python

from pymodbus.client.sync import ModbusTcpClient
import time

# Connect to the robot
client = ModbusTcpClient('<robot_ip_address>', port=5020)
client.connect()

# Enable Conveyor 1
client.write_register(520, 1)
time.sleep(1)

# Set direction to forward
client.write_register(523, 1)
time.sleep(1)

# Set speed to 50%
client.write_register(524, 50)
time.sleep(1)

# Start conveyor 1
client.write_register(522, 1)

time.sleep(10)

# Stop conveyor 1
client.write_register(526, 1)

# Close connection to modbus server
client.close()

Modbus - Module Infrarouge

Voici comment mettre l’entrée numérique du capteur infrarouge en mode Input et connaître son état :

#!/usr/bin/env python

from pymodbus.client.sync import ModbusTcpClient

# Connect to the robot
client = ModbusTcpClient('<robot_ip_address>', port=5020)
client.connect()

# Set digital IO mode - input on GPIO_1A
client.write_coil(0, True)

# Read digital IO state. 1 = High, 0 = Low
ir_state = client.read_discrete_inputs(100, count = 1)
print 'IR sensor state is :', ir_state.bits

# Close connection to modbus server
client.close()

Avec le Python ROS Wrapper

Veuillez vous référer au manuel utilisateur du Python ROS Wrapper pour plus de détails.

Important

Si vous utilisez Ned en réel et que vous ne souhaitez pas écrire le code directement sur le robot, vous devrez configurer un environnement ROS multi-machines. Vous pouvez suivre ce tutoriel qui détaille les étapes à suivre. Sinon, vous pouvez utiliser directement PyNiryo en suivant la section Avec PyNiryo.

Python ROS Wrapper - The Conveyor Belt

Voici un exemple de code permettant de contrôler le Convoyeur (v2) via le Python ROS Wrapper :

#!/usr/bin/env python

# Imports
from niryo_robot_python_ros_wrapper import *
import rospy

niryo_robot = NiryoRosWrapper()

# Activating connexion with conveyor and storing ID
conveyor_id = niryo_robot.set_conveyor()

# Running conveyor at 50% of its maximum speed, in Forward direction
niryo_robot.control_conveyor(conveyor_id, True, 100, ConveyorDirection.FORWARD)

# Stopping conveyor's motor
niryo_robot.control_conveyor(conveyor_id, True, 0, ConveyorDirection.FORWARD)

# Deactivating connexion with conveyor
niryo_robot.unset_conveyor(conveyor_id)

Python ROS Wrapper - IR sensor

Vous pouvez connaître l’état du capteur IR et contrôler le Convoyeur (v2) en conséquence en utilisant le script suivant. Dans cet exemple, le Convoyeur (v2) est connecté au GPIO_1A.

#!/usr/bin/env python

# Imports
from niryo_robot_python_ros_wrapper import *
import rospy

def run_conveyor(robot, conveyor):
robot.control_conveyor(conveyor, bool_control_on=True,
                      speed=50, direction=ConveyorDirection.FORWARD)

# -- Setting variables
sensor_pin_id = PinID.GPIO_1A

niryo_robot = NiryoRosWrapper()

# Activating connexion with conveyor
conveyor_id = niryo_robot.set_conveyor()

# Run conveyor and wait until the IR sensor detects an object
run_conveyor(niryo_robot, conveyor_id)
while niryo_robot.digital_read(sensor_pin_id) == PinState.LOW:
    niryo_robot.wait(0.1)

# Stopping conveyor's motor
niryo_robot.control_conveyor(conveyor_id, True, 0, ConveyorDirection.FORWARD)

# Deactivating connexion with conveyor
niryo_robot.unset_conveyor(conveyor_id)