Partie 1 : OpenCV et le robot MRPiZ

Ce tutoriel permet de faire du traitement d’images avec le robot MRPiZ en langage Python.

OpenCV_Logo

Le matériel nécessaire pour le tutoriel :

  • Un robot MRPiZ
  • Un support caméra pour le robot MRPiZ
  • Une caméra Raspberry Pi 8MP

Installation

La première étape est d’installer la camera sur la carte Raspberry Pi :

  • Installation de la camera Raspberry Pi 8MP : ici
  • Mise à jour du système:
sudo apt-get update
sudo apt-get upgrade
  • Installation de la bibliothèque de traitement d’image OpenCv :
sudo apt-get install python-opencv
  • Installation de imutils:
sudo easy_install pip
sudo pip install imutil
sudo apt-get install python-picamera python3-picamera

Une simple photo

Prendre une simple photo avec la camera et l’enregistrer dans une image, voic

#!/usr/bin/python
import picamera

camera = picamera.PiCamera()

# initialisation de la resolution
camera.resolution = (1920, 1080)

# capture d'une image
camera.capture('image.jpg')

Simple photo

Lecture d’une image

Un script pour la lecture d’une image avec OpenCv :

#!/usr/bin/python
import picamera
import cv2

camera = picamera.PiCamera()

# initialisation de la resolution
camera.resolution = (100, 100)

# capture d'une image
camera.capture('image.jpg')

image = cv2.read('image.jpg')

print image

Conversion en HSV

Conversion colorimétrique.

HSV : Hue Saturation Value

#!/usr/bin/python
import picamera
import cv2

camera = picamera.PiCamera()

# initialisation de la resolution
camera.resolution = (1920, 1080)

# capture d'une image
camera.capture('image.jpg')

# lecture de l'image
frame = cv2.imread('image.jpg')


# conversion RGB en HSV de l'image
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

# enregistrer image hsv
cv2.imwrite('image_hsv.png', hsv)

image HSV

 

 

Fin de la première partie.

MRPiZ obstacle avoidance

Exemple de gestion des obstacles avec le robot MRPiZ et 5 capteurs de distance ToF:


#!/usr/bin/python

# Mace Robotics (www.macerobotics.com)
 # Author : Mace Robotics
 # Exemple : alarm
 # Date : 30/12/2015
 # Version : 0.1

from mrpiZ_lib import *
 import time, sys
 import random

#main program
 print "Exemple : Obstacle avoidance"

limit = 20
 speed = 45
 speedSlow = 30

try:
 while 1:
 p1 = proxSensor(1)
 p2 = proxSensor(2)
 p3 = proxSensor(3)
 p4 = proxSensor(4)
 p5 = proxSensor(5)
 #-----------------
 if((p1 < limit)or(p2 < limit)) and (p4 > limit):
 turnRight(speed)
 time.sleep(0.5)
 r = random.randint(0,2)
 if (r == 0):
 back(speedSlow)
 elif ((p4 < limit)or(p5 < limit)) and (p2 > limit):
 turnLeft(speed)
 time.sleep(0.5)
 r = random.randint(0,2)
 if (r == 1):
 back(speedSlow)
 elif (p3 < limit):
 r = random.randint(0,3)
 if (r == 0):
 back(speedSlow)
 time.sleep(0.6)
 elif (r == 1):
 back(speedSlow)
 time.sleep(0.9)
 turnRight(35)
 time.sleep(0.5)
 elif (r == 2):
 back(speedSlow)
 time.sleep(0.7)
 turnLeft(35)
 time.sleep(0.5)
 elif (r == 3):
 back(speedSlow)
 elif (p2 < limit) and (p4 < limit):
 turnLeft(35)
 time.sleep(1)
 else:
 forward(speed)
 except:
 print "Fin programme"
 stop()
 print "stop"
 exit()

MRPiZ en Java

Dans ce tutorial vous allez apprendre à programmer le robot MRPiZ en langage Java.

Remarque : le robot MRPiZ doit etre connecté à internet.

Installation

  • Mise à jour et installation de java :
sudo apt-get update && sudo apt-get install oracle-java7-jdk
  • Installation de la librairie Pi4J pour l’accès hardware de la Raspberry Pi:
curl -s get.pi4j.com | sudo bash

Librairie

La librairie java est disponible sur le Github : ici

Exemple

Voici un exemple de programme (Exemple1.java):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.io.IOException;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class Exemple1 {

/****************/
public static void main(String args[]) throws InterruptedException, IOException
{
float tension_batterie;
float distance_sensor1;
float distance_sensor2;

MRPiZ robot = new MRPiZ();

// Lecture de la tension de la batterie
tension_batterie = robot.proxSensor(1);
System.out.println("Batterie = " + tension_batterie);

// avancer le robot pendant 1 seconde
robot.forward(30);

TimeUnit.SECONDS.sleep(2);

// reculer le robot pendant 1 seconde
robot.back(30);

TimeUnit.SECONDS.sleep(2);

// tourner à droite
robot.turnRight(30);

TimeUnit.SECONDS.sleep(1);

// arret du robot
robot.stop();

// Lecture du capteur de proximitè n°1 et n°2
distance_sensor1 = robot.proxSensor(1);
distance_sensor2 = robot.proxSensor(2);

// afficher les valeurs
System.out.println("Sensor 1 = " + distance_sensor1);
System.out.println("Sensor 2 = " + distance_sensor2);

}
}
  • Compilation du programme :
javac -classpath .:classes:/opt/pi4j/lib/'*' -d . Exemple1.java
  • Exécution du programme :
sudo java -classpath .:classes:/opt/pi4j/lib/'*' Exemple1

Fusion360 – Modifier un fichier STL

Un tutoriel pour modifier un fichier STL avec le logiciel Fusion360.

 

  • Ouvrir Fusion 360:

 

  • Clic droit :
    • Dot not capture Design History

  • Continue :  

 

  • Ouvrir votre fichier STL via le menu INSERT Mesh:

  • Le fichier STL tel quel ouvert n’est pas modifiable :

  • Clic droit sur la pièce 3D:
    • Mesh to BRep

Maintenant, vous pouvez modifier votre fichier STL.

 

Fin du tuto !

 

Capteur VL6180X avec la carte Esus

Voici un programme afin d’interfacer le capteur VL6180X avec la carte Esus. Le capteur est relié par bus I2C à la carte Esus. Le capteur VL6180X est capteur de distance “Time of Flight” de mesure laser de distance de 0 à 200 mm.

esus_pres_kick

La carte Esus

  • SDA : pin 2
  • SCL : pin 13
#include <VL6180X.h>
unsigned int data;
VL6180X sensor;

void setup() 
{
  Serial.begin(9600);
  // init I2C
  Wire.begin(2, 13);//SDA, SCL
  
  // init VL6180X sensor
  sensor.init();
  sensor.configureDefault();
  sensor.setTimeout(500);
}

void loop() 
{ 
  data = sensor.readRangeSingleMillimeters();

  Serial.print("Distance mm =");
  Serial.println(data);

  delay(500);
}

Le résultat des  mesures avec le capteur :

Resultat

Fin du tuto.

Kicad : étaler les empreintes.

Un petit tutoriel pour étaler les empreintes lors de la toute première phase du routage d’un circuit imprimé.

  • Après avoir lu la netlist, vous obtenez tous les composants réunis dans un même bloc :

img1

  • Cliquer sur le bouton “Mode empreinte”:

img2

  • Ensuite, clic droit sur les composants:

img3

  • Étalements de toutes les empreintes:

img4

Voilà, fin du tuto.

 

Lecture des capteurs de sols

Dans ce tutorial vous allez apprendre à utiliser les 3 capteurs de sols du robot MRduino afin de faire du suivi de ligne.

Les capteurs de sols

Le robot MRduino est équipé de 3 capteurs de sols, ils sont situés à l’avant.

Lire un capteur

La fonction pour lire le capteur de sol n°1 du robot :

value = groundSensor(1)
  • La fonction renvoie une valeur entre 0 et 4095.

Exemple de programme pour lire les 3 capteurs :

#include <mrduino.h>

void setup() 
{
  Serial.begin(115200);

}

void loop()
{
int capteur1, capteur2, capteur3;

 capteur1 = groundSensor(1);
 capteur2 = groundSensor(2);
 capteur3 = groundSensor(3);

 Serial.println(capteur1);
 Serial.println(capteur2);
 Serial.println(capteur3);

 delay(1000);

}