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: 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);
|
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: |