Via Rápida a la Visión Computarizada con SimpleCV

En nuestro tiempo, el campo de la computación visual sigue siendo un área prácticamente inexplorada.

Esta semana hemos comenzado a estudiar una librería que promete ser un empujón de calidad para cualquiera que esté aprendiendo sobre computación visual. Nos referimos a la librería SimpleCV, que abstrae de manera magistral una serie de métodos importantes de la famosa librería OpenCV, haciendo nuestra entrada al mundo de la visión computrizada tan sencillo como decir “Hola Mundo”

Acá les dejo el enlace. Estoy seguro de que no se van a arrepentir:

http://simplecv.org

No olviden compartir en el área de comentarios sus resultados, pruebas, impesiones de SimpleCV

 

–jn

Servo-motores y Resolución Angular

Recientemente estuve jugando con unos servos para un proyecto que requiere hacer que el servo se mueva “grado por grado” desde cero hasta 180 grados.

Descubrí que de los 0º a los 10° no parece ocurrir movimiento alguno, así que por accidente descubrí que los servos comerciales que compré no tienen una resolución menor a 10 grados.

El siguiente sketch de Arduino hace ese barrido desde los  0º a los 180° en cámara lenta, de forma que nos permite ver de manera experimental cual es la resolución de un servo determinado.

En mi caso, al parecer el servo que tengo tiene una resolución de aproximadamente 7°, lo que quiere decir que si le pido una posición que no dista más de 7 grados de la posición actual, el servo no se moverá.


#include  
#include "rgb_lcd.h"
#define trigger    2
#define echo       7
#define led       13
rgb_lcd lcd;
Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 

void setup() 
{ 
  Serial.begin(9600);
  Serial.println("SETUP");
  lcd.begin(16,2); // columns, rows.  use 16,2 for a 16x2 LCD, etc.
  lcd.setRGB(50,50,50);
  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(13,OUTPUT);
  myservo.attach(3);  // attaches the servo on pin 9 to the servo object 
  myservo.write(0);
  Serial.println("SETUP COMPLETE!");
} 
 
 
void loop() 
{ 
  Serial.println("BEGINING SCAN...");
  blinkEffect(3,500);
  Serial.println("SCANNING...");
  for(int i=0; i<=180; i++){
    Serial.print("ANGLE: ");
    Serial.println(i);
    lcd.setCursor(0,0);
    lcd.print("ANGLE: ");
    lcd.print(i);
    lcd.print("    ");
    myservo.write(i);
    delay(1000);
  }
} 


void blinkEffect(int times, int duration){
  for(int i=0; i<3; i++){
    digitalWrite(led,HIGH);
    delay(duration);
    digitalWrite(led,LOW);
    delay(duration);
  }
}