Universitat de Lleida: Laboratori de Robòtica
Inicio    Equipo    Publicaciones    TFG/TFM/Tesis    Proyectos    Contacto
Relacionat amb MatLab ( enrere / atrás / back )
15/12/2021 - WITmotion 16 channel servo driver
% Control de WIT motion servo controller 16 chanels mediante MatLab
% Comunicación mediante USB-serial externo (con el interno no funciona)

% Tramas de datos
% | 0xFF          | 0x(XX)         | 0x(XX) | 0x(XX) | 0x(XX) |
% |Byte           |Byte            | # de   | Data 2 | Data 1 |
% |de             |de              | servo  |        |        |
% |Confirmación   |acción          | [0-15] |        |        |
% |(Siempre       |0x01 velocidad  |        |        |        |
% | 0xFF)         |0x02 posición   |        |        |        |
% |               |0x09 en grupo   |        |        |        |
% |               |0x0b emergencia |        |        |        |

% Conectar el puerto 'COMX' con MatLab para acceso serie (RS232)
s = serial('COM3');  % Por defecto: 9.600bps, 8bits, sin paridad, 1 stop
% Abrir la comunicación serie con el puerto
fopen(s);

% Parámetros de control
% Número de serovo a controlar, de 0 a 15
servo = 2;

% Velocidad de giro en grados por segundo, de 9º/s a 180º/s
velocidad = 90;
% Debe convertirse en un valor entre 1 (9º/s) y 20 (180º/s)
velocidad = round((velocidad*10)/90);

% Posición en grados, de 0º a 180º
posicion = 90;
% Debe convertirse a un valor de control entre 500 y 2500
% realmente se envía el ancho del pulso de control en microsegundos
posicion = round(500+(111*(posicion/10)));

% Los datos se deben enviar en dos bytes
% Ejemplo: para enviar el valor 2498 que equivale a 0x09C2
% se sebe enviar primero 0xC2 y luego 0x09 
Data2 = posicion - 256*fix(posicion/256);
Data1 = fix(posicion/256);

% Enviar velocidad de movimiento
fwrite(s,[hex2dec('ff') hex2dec('01') servo velocidad hex2dec('00')]);
% Enviar la posición destino
fwrite(s,[hex2dec('ff') hex2dec('02') servo Data2 Data1]);
pause(2);

% Finalizar la comunicación
fclose(s); % Cerrar la comunicación serie (se puede volver a abrir)
delete(s); % Desconectar definitivamente el puerto 'COMX' de MatLab
24/08/2021 - Recordatorio: apagar el PC-W10 de forma temporizada
Acceder a la consola de comandos mediante una de estas alternativas:
En la consola de comandos teclear shutdown para ver todas las opciones que ofrece el programa de autoapagado de W10
Otra aplicación muy interesante es copiar archivos de una carpeta a otra a la máxima velocidad posible y apagar automáticamente el ordenador al terminar
Ver todos los comandos disponibles en el 'Símbolo del Sistema': Finalmente, también es posible arrancar un PC de forma remota mediante una aplicación WakeOnLAN
04/05/2021 - Utilizar caracteres especiales (unicode) en Matlab
>> disp( [ sprintf( '\x03B1' ) ' = ' num2str(90) 'º, ' sprintf( '\x03B2' ) ' = ' num2str(45) 'º, ' sprintf( '\x03C9' ) ' = ' num2str(-12.5) 'º' ] )
α = 90º, β = 45º, ω = -12.5º

>> disp([ char( 916 ) 't = 0, ' char(hex2dec( '0394' )) 't = 0' ] )
Δt = 0, Δt = 0

Unicodes UTF-8: Greek and Coptic
07/11/2019 - Math Notepad
Math Notepad una sorprendente calculadora online con capacidades gráficas muy interesantes. Permite realizar cálculos y definir variables y funciones muy fácilmente:





Web online: http://mathnotepad.com/
Y si se quiere tener el (simple pero fantástico) programa (del mismo autor) para Windows que inspiró esta implementación en web: http://www.speqmath.com/
04/10/2019 - Solució matricial de sistemes d'equacions amb Matlab
Exemple de sistema d'equacions:

9·X1 + 3·X2 + 4·X3 = 7
4·X1 + 3·X2 + 4·X3 = 8
1·X1 + 1·X2 + 1·X3 = 3

(Solució: X1 = -0.2, X2 = 4.0, X3 = -0.8)

Sistema expressat en format matricial Matlab: A·X = B

>> A = [9 3 4; 4 3 4; 1 1 1];
>> B = [7 8 3]';
Solució amb el mètode de reducció de Gauss (wikipedia, MathWorld):
% funció creada per Cheuk i disponible a fileexchange

>> X = gauss_elim(A,B)

X = -0.2000 4.0000 -0.8000
Solució mitjançant càlcul numèric directe
Calculant la inversa de A:

>> X = A\B

X = -0.2000 4.0000 -0.8000
Solució mitjançant càlcul numèric directe
Calculant la pseudo-inversa de A:

>> X = pinv(A)*B

X = -0.2000 4.0000 -0.8000
Relacionat amb MatLab ( enrere / atrás / back )
Inicio    Equipo    Publicaciones    TFG/TFM/Tesis    Proyectos    TIC    Contacto

© Laboratori de Robòtica, Universitat de Lleida