Modelos, Control y Sistema de Visión

Central     Modelos     Control     Visión     Aplicaciones     Mapa del sitio     Publicaciones     Sobre el autor      
Algunas consideraciones para implementar un bote robótico
 
Los botes no tripulados (Unmanned Boats) se desarrollan fundamentalmente para realizar tareas de medición (calidad del agua, variables meteorológicas, objetos sumergidos, etc.) que resultarían monótonas y en ocasiones peligrosas para tripulaciones humanas. Como sensores utilizan fundamentalmente un GPS para control de posición, sónar y cámara para observación del fondo marino, LIDAR para evitar obstáculos frontales y monitor de batería de a bordo (ver sensores en robótica). Como actuadores se utiliza un motor para la hélice, un motor para el timón de dirección y otro motor para el control de la hélice de proa.

 

Bote robótico de Yamaha Motor

Algunas consideraciones para diseñar este tipo de plataforma son las siguientes:
1.- Se debe conocer la posición del bote de forma remota (a través de internet).
2.- Ante fallos del sistema de control, debe ser capaz de dirigirse el bote de forma remota.
3.- Debe monitorizarse la información del sónar a través de internet.
 
Como se deriva de lo anterior, debe poseerse una conexión a internet desde el bote. Por simplicidad, se considera que esta está disponible (por ejemplo, se dispone de conexión a través de USB y se navega por zonas donde existe cobertura para este tipo de navegación).
 
Un ejemplo de plataforma para este tipo de experimentos se muestra a continuación

 

LEGO NXT para control de encendido y dirección

Detalle del control del timón de dirección con motor de LEGO

Lo ideal sería incorporar en el bote un computador que admita el control remoto a través de internet de todos los actuadores y monitorizar a través de tal conexión los sensores de a bordo. Como se desea implementar un primer prototipo se realizan las siguientes consideraciones:
1.- Se utiliza el motor de un LEGO NXT para el control de encendido del hardware existente (que activa a velocidad constante a dos servos). Un segundo motor del LEGO controla la dirección. Dado que el LEGO no admite conexión a internet, el control remoto (cuando sea necesario) se realiza vía bluetooth.
2.- Se adjunta una cámara que se monitoriza a través de un PC Asus, al que está adjunto un GPS para determinar la posición. Este PC tiene conexión a internet.
 
Nótese que existe redundancia en la anterior propuesta, puesto que los servos controlados por el LEGO podrían ser controlados por el PC, y como este último dispone de conexión a internet no se necesitaría garantizar la conexión Bluetooth para la conducción remota.
 
Una vez definido el hardware se procede a seleccionar la plataforma software para la programación, donde el Microsoft Robotics Studio es un importante candidato al admitir un marco de conexión .NET. A continuación se muestran algunos servicios que permiten la interfaz hardware para la aplicación

Servicios del MRS

Al utilizar los servicios del MRS, los dos servos (LegoNXTMotorv2) son controlados a través de un cuadro de diálogo de dirección (DirectionDialog), que establece conexión Bluetooth a través del NXT (LegoNXTBrickv2). Los servicios  Webcam y MicrosoftGPS admiten el marco .NET por lo que se puede visualizar la imagen de la cámara a través de internet y ver en Bing Maps de Microsoft la posición del bote en el mapa.
 
Otra plataforma que puede utilizarse es el Matlab:
1.- Utilizar el Toolbox para Simulink ECRobot, que puede instalarse a través del programa ECRobotInstaller.
2.- Utilizar el Toolbox RWTH-NXT con el se adjuntan algunos ejemplos.
 
Los toolboxes anteriores permiten la programación y control de los motores de NXT de LEGO. Para el posicionamiento en Google Maps, se puede utilizar un programa en Matlab para la lectura de un GPS. También se puede conectar una cámara a Matlab, aunque existen programas que monitorizan cámaras remotas a través de internet como el Webcam monitor.
 
A continuación se muestra un programa en Matlab que permite el control de los motores utilizando el toolbox RWTH

%% Apaga motor

clear all

close all

 

%% Establece conexión Bluetooth

handle = COM_OpenNXT('bluetooth.ini', 'check');

COM_SetDefaultNXT(handle);

 

%% Enciende sensor de luz

OpenLight(SENSOR_1, 'ACTIVE');

Ya_activado=1

 

tecla=1; % Condiciones iniciales (<>32)

while tecla~=32 %Para encuesta con espacio en blanco

tecla=getkey;

switch tecla

case 13 % Enter (Enciende motor)

boteon;

case 8 %backspace (Apaga motor)

boteoff;

case 29 % flecha derecha (Doblar derecha)

botedirder;

Active_derecha=1

case 28 % flecha izquierda

botedirizq;

Active_izquierda=1

%otherwise

% tecla=1;

end

end

 

%% Apaga sensor de luz

CloseSensor(SENSOR_1);

%% Close NXT connection

COM_CloseNXT(handle);

Nota: Para la ejecución del anterior programa es necesario la lectura del teclado.
 
El programa que hace girar el bote a la derecha se muestra a continuación

%% Control del motor

%% botedirder.m

ResetMotorAngle(MOTOR_B);

SetMotor(MOTOR_B);

SpeedRegulation on;

SetPower(-90); % On negativo

SetAngleLimit(250);

SetTurnRatio(0);

SetRampMode ('off');

SendMotorSettings();

WaitForMotor(GetMotor);

StopMotor(GetMotor, 'brake')

Referencias:
Roborealm: "Lego PC Bot".