Search This Blog

Showing posts with label Knowledge. Show all posts
Showing posts with label Knowledge. Show all posts

Tuesday, September 8, 2015

A Holistic Approach to Vocal Freedom

NTU ရဲ့ Campus Recreation and Wellness (CReW) ကစီစဉ်တဲ့ A Holistic Approach to Vocal Freedom ဆိုတဲ့ သီချင်း အဆို သင်တန်း သွားတက်ကြည့်ဖြစ်တယ်။ သင်တဲ့သူက NIE က Visual and Performing Arts က lecturer တယောက်ဖြစ်တဲ့ Dr. Chia Wei Khuan ပါ။ ငယ်ငယ်ကတည်းက သီချင်းတွေ အိမ်နေရင်း အမြဲဆိုခဲ့ပေမယ့် အဲဒီအကြောင်းကို မလေ့လာဘူးတာ တပိုင်း၊ စိတ်ဝင်စားတာတပိုင်း ကြောင့် ကြုံကြိုက်တုန်း သွားတက်ဖြစ်ခဲ့တာပါ။ ခြောက်ပတ်စာ သင်တာတွေက

  • The McClosky Technique: Relaxation, Posture, Breathing and Breathy Sigh
  • Freeing the Tongue, Jaw, Facial Muscles and Neck
  • Phonation: On-set and Off-set, Flow vs Pressed
  • Resonance and Articulation
  • The Singer's Breath: Appoggio
  • Maintaining Vocal Freedom
ဆိုတဲ့ အကြောင်းတွေ ဖြစ်ပါတယ်။


Figure. ကြာတော့ ကြာပြီ အိမ်မှာ ကာရာအိုကေ ဆိုလို့ ရအောင်ဆိုပြီး မိုက်ခရိုဖုန်း လိုက်ရှာရင်း ကြိုးမဲ့မဟုတ်တာလည်း ဖြစ်တဲ့ Shure SM58 လေး သဘောကျတာနဲ့ ဝယ်ဖို့လုပ်တော့ ဘယ်မှာ ဝယ်ရမှန်း မသိဘူး။ အွန်လိုင်း မှလည်း Amazon မှာတော့ တွေ့ပေမယ့် စင်ကာပူ လိပ်စာနဲ့ ဝယ်မရဖြစ်နေတာ။ နောက်မှ သီရိကို အမှတ်မထင် ပြောပြဖြစ်တော့ သူက SingPost ကနေတဆင့် ပို့တဲ့ ဟာလုပ်ပြီး ရအောင် ရှာဝယ်ပေးတာနဲ့ အဆင်ပြေသွားတယ်။

Monday, December 2, 2013

မြန်မာ ပြက္ခဒိန် အခါပေးရက်များ

မြန်မာ ပြက္ခဒိန်တွေမှာ ဗေဒင်နဲ့ ဆက်စပ်တဲ့ အခါပေးရက် ဥပမာ ရက်ကောင်း၊ရက်ဆိုး တွေကို ဖော်ပြလေ့ ရှိပါတယ်။ ဒီစာတမ်းမှာ အောက်ကရက်တွေနဲ့ သူတို့ကို javascript ကုဒ် သုံးပြီး ဘယ်လိုတွက်မလဲဆိုတာ ဖော်ပြပါမယ်

Saturday, June 15, 2013

Algorithm, Program and Calculation of Myanmar Calendar

Read this article in English

မြန်မာ ပြက္ခဒိန် တွက်တဲ့ အခါ ပိုမို မြန်ဆန်လွယ်ကူ စေမယ့် ညီမျှခြင်းများကို တင်ပြမှာဖြစ်ပြီး၊ ပြီးခဲ့တဲ့ မြန်မာ ပြက္ခဒိန် ရက်ကိုပဲ ဖြစ်ဖြစ်၊ နောက်လာမည့် မြန်မာ ပြက္ခဒိန်ရက် ကို ကြိုပြီးပဲဖြစ်ဖြစ် ဘယ်လို တွက်မလဲ ဆိုတာ ဆွေးနွေးပါမယ်။ မြန်မာ ပြက္ခဒိန် ရက်စွဲ တစ်ခုရဲ့ မြန်မာ ခုနှစ်၊ မြန်မာလ၊ လဆန်း လဆုတ်၊ မြန်မာရက်၊ အဲဒီနှစ်က ဝါထပ် မထပ်၊ ထပ်ရင် လည်း ဝါကြီးလား၊ ဝါငယ်လား ဆိုတာ ကိုအလွယ်တကူ တွက်ထုတ်နိုင်ဖို့ ကိန်းသေတွေ၊ ဖော်မြူလာတွေ၊ တွက်ချက်ပုံ အဆင့် တွေ ကို ရှင်းရှင်းလင်းလင်း တင်ပြပါမယ်။ မြန်မာ ပြက္ခဒိန်၊ နတ္ခတ် အခေါ်အဝေါ် တွေနဲ့ မရင်းနှီးရင် တောင်မှ အလွယ် တစ်ကူ နားလည် နိုင်မှာပါ။

Monday, January 21, 2013

k-means clustering using custom distance measuring method

ကြိုက်တဲ့ အကွာအဝေး တိုင်းတဲ့ နည်းသုံးပြီး k-means clustering လုပ်ပေးတဲ့ MATLAB ဖန်ရှင် လေး တစ်ခု ရေးကြည့် ထားပါတယ်။ ဥပမာ histograms တွေကို ခွဲခြားဖို့ဆိုရင် chi-square distance ကို သုံးတာက ပိုကောင်း ချင် ကောင်းနိုင်ပါတယ်။ အောက်က နမူနာမှာ chi-square distance သုံးထားတာကို ပြထားပေမယ့် အဲဒီ distance ဖန်ရှင်နေရာမှာ ကိုယ်ကြိုက်တဲ့ နည်း ကို အစားထိုးပြီး သုံးလို့ရပါတယ်။

%k-means test program
X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];

[idx,ctrs] = KMeansCustom(X,2);
%[idx,ctrs] = kmeans(X,2);

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')

function [Idx,C]=KMeansCustom(X,k)
%KMeansCustom partitions the points in the n-by-d data matrix X into k clusters.
%[Idx,C]= KMeansCustom(X,k) returns 
%n-by-1 vector IDX containing the cluster indices of each point and 
%k-by-d matrix C containing the k cluster centroid locations.
%For n sample points with d dimensions in each point, X has n rows and d columns.
%File name: KMeanCustom.m
%Author: Yan Naing Aye
%Website: http://cool-emerald.blogspot.sg/


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Define maximum number of iterations
MaxIter=500;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[n,d]=size(X);
k=round(k);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%step1 :arbitrarily choose k samples as the initial cluster centers
p=randperm(n);
Mu=X(p(1:k),:);
D=zeros(k,d);
for t=1:MaxIter
 %step2:distribute the samples X  to the clusters 
 for j=1:k
        for i=1:n
            D(j,i)=ChiDist(X(i,:),Mu(j,:));%Use custom distance
        end
 end
 [ValMin,IndexMin]=min(D);
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %step 3: update the cluster centers
    OldMu=Mu;
 for i=1:k
        Mu(i,:)=mean(X(IndexMin==i,:));
 end
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %step4 :check convergence
 if sum(sum(abs(OldMu-Mu))) == 0 %< 1e-9
        break
 end
end
Idx=IndexMin';
C=Mu;

function d=ChiDist(v1,v2)
    dv=(v1-v2).^2;
    sv=abs(v1)+abs(v2);
    %------------------------------------------------------
    %eliminate zero denominator
    sv(sv==0)=1e-9;
    %------------------------------------------------------
    d=sum(dv./sv)./2;    
end

Sunday, January 13, 2013

Changing sampling rate using quadratic regression

signal တစ်ခုရဲ့ sampling rate ကို 333Hz ကနေ 5000Hz ကို ပြောင်းဖို့ အတွက် လုပ်ကြည့်ထားပါတယ်။ ပိုမို ချောမွေ့တဲ့ ရလာဒ် ရချင်တာမို့ ပုံမှန် zero order hold (ZOH) ကို သုံးမယ့်အစား second order hold ကို သုံးကြည့်ထားတာပါ။ ဒီမှာ sampling rate ကို တင်ဖို့လုပ်ထားပေမယ့်၊ ဒီနည်းကို down sampling လုပ်ဖို့လည်း သုံးလို့ရပါတယ်။ အခြား ဖြစ်နိုင်ချေတွေကတော့ noise ကို phase delay မရှိပဲ filter လုပ်တဲ့ဟာမျိုးတွေ အတွက်လည်း သုံးလို့ ရနိုင်ပါတယ်။ real-time application တွေအတွက်ပေါ့။
Approach 1: Quadratic regression
Quadratic ဖန်ရှင်တစ်ခုကို အောက်ပါအတိုင်း သတ်မှတ်နိုင်ပါတယ်။

$$f=w_0+w_1 x + w_2 x^2$$

အနည်းဆုံး ဖြစ်အောင် လုပ်မယ့် cost function ကို အောက်ကလို သတ်မှတ်မှာပါ။

$$J(w)=\frac{1}{2}\sum_{i=1}^{n}(y_i-f_i)^2$$
$$J(w)=\frac{1}{2}\sum_{i=1}^{n}(y_i-w_0+w_1 x_i + w_2 x_i^2)^2$$

ဒါဆို Optimal weights တွေကို differentiate လုပ်ပြီးသုည ညီလိုက်ပြီး ရှာနိုင်ပါတယ်။

$$\frac{\partial J(w)}{\partial w_0}=0$$
$$-\sum_{i=1}^{n}(y_i-w_0+w_1 x_i + w_2 x_i^2)=0$$
$$w_0\sum_{i=1}^{n}1+w_1\sum_{i=1}^{n}x_i+w_2\sum_{i=1}^{n}x_i^2=\sum_{i=1}^{n}y_i$$

w1 နဲ့ w2 ကိုလည်း အဲဒီလိုပဲ ရှာလိုက်မယ် ဆိုရင် အောက်အတိုင်း ထပ်ရလာပါမယ်။

$$w_0\sum_{i=1}^{n}x_i+w_1\sum_{i=1}^{n}x_i^2+w_2\sum_{i=1}^{n}x_i^3=\sum_{i=1}^{n}y_i x_i$$
$$w_0\sum_{i=1}^{n}x_i^2+w_1\sum_{i=1}^{n}x_i^3+w_2\sum_{i=1}^{n}x_i^4=\sum_{i=1}^{n}y_i x_i^2$$

အဲဒီ equation သုံးခုကို မေ့ထရစ် ပုံစံ နဲ့ အောက်ပါအတိုင်း ရေးလို့ရပါတယ်။

$$ \begin{bmatrix} \sum_{i=1}^{n}1 & \sum_{i=1}^{n}x_i & \sum_{i=1}^{n}x_i^2 \\ \sum_{i=1}^{n}x_i & \sum_{i=1}^{n}x_i^2 & \sum_{i=1}^{n}x_i^3 \\ \sum_{i=1}^{n}x_i^2 & \sum_{i=1}^{n}x_i^3 & \sum_{i=1}^{n}x_i^4 \end{bmatrix} \begin{bmatrix} w_0 \\ w_1 \\ w_2 \end{bmatrix} = \begin{bmatrix} \sum_{i=1}^{n}y_i \\ \sum_{i=1}^{n}y_i x_i \\ \sum_{i=1}^{n}y_i x_i^2 \end{bmatrix} $$
$$\mathbf{A}\mathbf{W}=\mathbf{B}$$
$$\mathbf{W}=\mathbf{A}^{-1}\mathbf{B}$$

Approach 2: Three equations
တကယ်တော့ ဒီကိစ္စမှာ နောက်ဆုံး အမှတ် ၃ ခုကိုပဲ သုံးလိုက်ရင်ရတဲ့ အတွက်၊ ညီမျှခြင်း သုံးကြောင်း ကို အောက်က အတိုင်း တစ်ခါတည်း ချရေးလို့လည်း ရပါတယ်။


$$y_1=w_0+w_1 x_1 + w_2 x_1^2$$
$$y_2=w_0+w_1 x_2 + w_2 x_2^2$$
$$y_3=w_0+w_1 x_3 + w_2 x_3^2$$
$$ \begin{bmatrix} 1 & x_1 & x_1^2 \\ 1 & x_2 & x_2^2 \\ 1 & x_3 & x_3^2 \end{bmatrix} \begin{bmatrix} w_0 \\ w_1 \\ w_2 \end{bmatrix} = \begin{bmatrix} y_1 \\ y_2 \\ y_3 \end{bmatrix} $$
$$\mathbf{A}\mathbf{W}=\mathbf{B}$$
$$\mathbf{W}=\mathbf{A}^{-1}\mathbf{B}$$

Approach 3: Two equations အကယ်၍ x1=-1, x2=0, နဲ့ x3=1 လို့ သတ်မှတ်လို့ ရတယ်ဆိုရင် y2 က w0 နဲ့ ညီသွားပါမယ်။ နောက်ကျန်တဲ့ အမှတ် ၂ ခုကနေ ညီမျှခြင်း နှစ်ကြောင်းပဲ ရှင်းဖို့ လိုပါတော့တယ်။

$$y_1=y_2-w_1+ w_2$$
$$y_3=y_2+w_1+ w_2$$
$$ \begin{bmatrix} -1 & 1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} w_1 \\ w_2 \end{bmatrix} = \begin{bmatrix} y_1-y_2 \\ y_3-y2 \end{bmatrix} $$
$$ \begin{bmatrix} w_1 \\ w_2 \end{bmatrix} = \begin{bmatrix} -0.5 & 0.5 \\ 0.5 & 0.5 \end{bmatrix} \begin{bmatrix} y_1-y_2 \\ y_3-y2 \end{bmatrix} $$

နောက် အောက်ကအတိုင်းရလာပါမယ်။

$$w_0=y_2$$
$$w_1=-0.5(y_1-y_2)+0.5(y_3-y2)$$
$$w_2=0.5(y_1-y_2)+0.5(y_3-y2)$$

အထက်ကနည်းတွေကို MatLab နဲ့စမ်းကြည့်ထားတာကို အောက်က ကုဒ်တွေမှာ တွေ့နိုင်ပါတယ်။
%-------------------------------------------------------------------------
clc;
close all;
clear all;
%-------------------------------------------------------------------------
% y= w0 + w1*x + w2* x^2;
%-------------------------------------------------------------------------
%Got x and y
x=[-1 0 1]';
Wo=[4 3 2]';
y=Wo(1)+Wo(2)*x+Wo(3).*x.*x;

%-------------------------------------------------------------------------
%Approach 1
%Polynomial regression of order 2
%For n=3
S1=3;
Sx=sum(x);
Sx2=sum(x.*x);
Sx3=sum(x.*x.*x);
Sx4=sum(x.*x.*x.*x);
Sy=sum(y);
Syx=sum(y.*x);
Syx2=sum(y.*x.*x);

P=[S1 Sx Sx2; Sx Sx2 Sx3; Sx2 Sx3 Sx4];
B=[Sy Syx Syx2]';
%P1=P^(-1);
W1=P\B

%-------------------------------------------------------------------------
%Approach 2
%Linear equations
A=[1 x(1) x(1)*x(1);1 x(2) x(2)*x(2); 1 x(3) x(3)*x(3)];
W2=A\y
%-------------------------------------------------------------------------
%Approach 3
%Only 2 linear equations
w0=y(2);
w1=-0.5*( y(1)- y(2))+0.5*( y(3)- y(2));
w2=0.5*( y(1)- y(2))+0.5*(y(3)- y(2));
W3=[w0 w1 w2]'
%-------------------------------------------------------------------------
အောက်ကပုံမှာ ဒီနည်းကို သုံးလို့ရတဲ့ ရလဒ် (အပြာ) နဲ့ ပုံမှန် zero order hold သုံးရင် ရမယ့် ရလဒ် (အနက်) တို့ကို ယှဉ်ပြထားပါတယ်။ ဒီနည်းက ပိုပြီး ညက်ညော ချောမွေ့တဲ့ ရလဒ်ကို ရပေမယ့် one sample delay ရှိသွားတာကိုတော့ သတိထားဖို့ လိုပါတယ်။
ဒီနည်းလမ်းကို LabVIEW မှာ C code သုံးပြီး လုပ်ထားတာကို အောက်ကပုံမှာ တွေ့နိုင်ပါတယ်။
ပထမ နှစ်ခုမှာ 3x3 matrix ကို inverse ရှာဖို့ လိုတဲ့အတွက် inverse ရှာတဲ့ C program လေးတစ်ခုကို ရေးပြီး စမ်းကြည့်ထားပါတယ်။
#include
#include
main()
{
    float M[3][3]={{3,0,2},{0,2,0},{2,0,2}}; //initialize a 3x3 matrix
    float N[3][3]={{0,0,0},{0,0,0},{0,0,0}}; //allocate for inverse
    int i,j;
    float d;
    //-------------------------------------------------------------------------
    N[0][0]=(M[1][1]*M[2][2]-M[2][1]*M[1][2]);
    N[1][0]=-(M[1][0]*M[2][2]-M[2][0]*M[1][2]);
    N[2][0]=(M[1][0]*M[2][1]-M[1][1]*M[2][0]);
    d=M[0][0]*N[0][0]+M[0][1]*N[1][0]+M[0][2]*N[2][0];
    N[0][0]/=d;
    N[1][0]/=d;
    N[2][0]/=d;
    N[0][1]=-(M[0][1]*M[2][2]-M[0][2]*M[2][1])/d;
    N[1][1]=(M[0][0]*M[2][2]-M[0][2]*M[2][0])/d;
    N[2][1]=-(M[0][0]*M[2][1]-M[0][1]*M[2][0])/d;
    N[0][2]=(M[0][1]*M[1][2]-M[0][2]*M[1][1])/d;
    N[1][2]=-(M[0][0]*M[1][2]-M[0][2]*M[1][0])/d;
    N[2][2]=(M[0][0]*M[1][1]-M[0][1]*M[1][0])/d;
    //-------------------------------------------------------------------------
    //print 3x3 matrix
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++) printf("%3.4f ",N[i][j]);
        printf("\n");
    }
    getch();
    return 0;
}

Wednesday, January 9, 2013

Rotations in 3D space using Euler angles

ကိရိယာ တစ်ခုရဲ့ body reference frame နဲ့ world reference frame ရဲ့ ဆက်သွယ်မှု ကို ရှာဖို့အတွက် Euler angle sequence တစ်ခုကို သုံးပြီး သရီးဒီ စပေ့ ထဲမှာ rotation လုပ်တဲ့ အကြောင်း ပြောချင်ပါတယ်။ အွိုင်လာ တင်ပြခဲ့တဲ့ သီအိုရမ်တစ်ခု မှာ ပြောထားတာက အောက်ပါအတိုင်း ဖြစ်ပါတယ်။
Any two independent orthonormal coordinate frames can be related by a sequence of rotations (not more than three) about coordinate axes, where no two successive rotations may be about the same axis.
{M} နဲ့ ကိုယ်စားပြု ခေါ်မယ့် world reference frame နဲ့ {B} နဲ့ ကိုယ်စားပြုမယ့် body reference frame တို့ကို အောက်မှာ ပုံနဲ့ နမူနာ ပြထားပါတယ်။
Pan angle rotation ကို α လို့ ခေါ်မှာ ဖြစ်ပြီး သူ့ကို computer vision ကနေ ရနိုင်ပါတယ်။ နောက် tilt angle rotation - β နဲ့ roll angle rotation - γ တို့ကိုတော့ ကိရိယာ ထဲမှာ တပ်ထားမယ့် accelerometers တွေကနေ မြေဆွဲအား (gravity- g ) ကို အာရုံခံ ပြီး သိရှိနိုင်ပါတယ်။ အရင်ဆုံး pan and tilt မရှိဘူး လို့ ယာယီ ယူဆပြီး roll angle ကို စဉ်းစားကြည့်ပါမယ်။ γ က သုည ဖြစ်နေချိန်မှာ Y ဝင်ရိုးက အထက်ကို ညွှန်ပြီး၊ X ဝင်ရိုးက right handed rule အတိုင်း ရေပြင်ညီ ရှိမယ်လို့ သတ်မှတ် ပါမယ်။ X ဝင်ရိုး accelerometer နဲ့ Y ဝင်ရိုး accelerometer တို့က မြေဆွဲအားကို အာရုံခံ တိုင်းလို့ရတဲ့ တန်ဖိုးတွေကို gx နဲ့ gy လို့ခေါ်ပါမယ်။ roll angle ကို သတ်မှတ် ထားပုံကို အောက် က ပုံမှာ ဖော်ပြထားပါတယ်။
Roll angle - γ ကို အောက်က ညီမျှခြင်း ကိုသုံးပြီး တွက်ယူလို့ ရပါတယ်။

$$ \gamma = \tan^{-1}\frac{gx}{gy} $$

နောက် second နဲ့ third quadrants တွေ မှာ ရှိမရှိကို ပြန်စစ်ပါမယ်။
if(gy<0)
  if(gx>=0)
    γ=π+γ;
  else
    γ=-π+γ;
  end
end
ဒါဆို roll angle rotation matrix - Rγ ကို အောက်က အတိုင်းရနိုင်ပါတယ်။

$$ \mathbf{R}_{\gamma}= \begin{bmatrix} \cos(\gamma) & -\sin(\gamma) & 0 \\ \sin(\gamma) & \cos(\gamma) & 0 \\ 0 & 0 & 1 \end{bmatrix}$$

Roll angle ကို ပြင်ပြီးတဲ့နောက် tilt angle ကိုဆက်စဉ်းစားပါမယ်။ Tilt angle ရဲ့ သတ်မှတ်ပုံ ကို အောက်မှာ ပြထားပါတယ်။
Tilt angle - β ကို Y နဲ့ Z မြေဆွဲအား တိုင်းတာမှုတွေ ကနေ တွက်လို့ရပါတယ်။ သတိထား ဖို့ လိုတာကတော့ အဲဒီတန်ဖိုးတွေက roll angle ပြင်ထားတဲ့ တန်ဖိုးတွေ ဖြစ်ရပါမယ်။ ပြောင်းသွားတဲ့ Y နဲ့ Z မြေဆွဲအား တိုင်းတာမှုတွေ ကို အောက်ပါအတိုင်း တွက်ယူနိုင်ပါတယ်။

$$ \begin{bmatrix} gx2 \\ gy2 \\ gz2 \end{bmatrix} = \mathbf{R}_{\gamma} \begin{bmatrix} gx \\ gy \\ gz \end{bmatrix} $$

ဒါဆို β ကို အောက်ပါ ညီမျှခြင်း ကနေရှာလို့ ရပါပြီ။

$$ \beta = \tan^{-1}\frac{gy2}{gz2} $$.

နောက် second and third quadrants တွေ အတွက် စစ်ပါမယ်။
if(gz2>=0)
  if(gy2>=0)
    β=-π+β;
  else
    β=π+β;
  end
end
အဲဒီအခါ Tilt angle rotation matrix -Rβ က အောက်ပါအတိုင်းရလာပါမယ်။

$$ \mathbf{R}_{\beta}= \begin{bmatrix} 1 & 0 & 0\\ 0 & \cos(\gamma) & -\sin(\gamma) \\ 0 & \sin(\gamma) & \cos(\gamma) \end{bmatrix}$$

အဲဒီလိုပါပဲ၊ pan angle rotation matrix - Rα နဲ့ pan angle ရဲ့ သတ်မှတ်ပုံတွေ ကိုလည်း အောက်ပါအတိုင်း တွေနိုင်ပါတယ်။

$$ \mathbf{R}_{\alpha}= \begin{bmatrix} \cos(\alpha) & -\sin(\alpha) & 0 \\ \sin(\alpha) & \cos(\alpha) & 0 \\ 0 & 0 & 1 \end{bmatrix}$$

အဲဒီ rotation matrices တွေရဲ့ မြှောက်လဒ် က rotation matrix တစ်ခု ပါပဲ။ $$ \mathbf{R}=\mathbf{R}_{\alpha} \mathbf{R}_{\beta} \mathbf{R}_{\gamma}$$
အဲဒီအခါ အောက်ပါအတိုင်း ရရှိလာမှာပါ။
M=RB

R က rotation matrix တစ်ခု ဖြစ်တာမို့ သူ့ရဲ့ inverse ကို ရှာဖို့ လိုခဲ့ရင် အဲဒါက R transpose နဲ့ အတူတူပါပဲ။ ဒီ 3D rotation ကို LabVIEW မှာ MabLab code သုံးပြီး လုပ်ထားတာကို အောက်ကပုံမှာ မြင်နိုင်ပါတယ်။

အခုလို 3D transformation တွေအတွက် Quaternion algebra ကလည်း လွယ်ကူပြီး ခေတ်စားနဲ့ နည်းတစ်နည်း ပါပဲ။

Reference:
Kuipers, Jack B., Quaternions and rotation sequences : a primer with applications to orbits, aerospace, and virtual reality, Princeton University Press, 1999, ISBN: 0691058725.

Friday, December 16, 2011

Hand, Foot and Mouth Disease (HFMD)

အရင် တပါတ် လောက်က သမီးရဲ့ လက် နဲ့ ခြေ မှာ မိတ်လို အဖု နဲ့ အနီပြင် တွေ တွေ့လို့ ဆရာဝန် သွားပြတော့ HFMD ဒါမှမဟုတ် တုပ်ကွေး ကြောင့် ဖြစ်နိုင်တယ်လို့ ပြောပါတယ်။ နောက်တော့ သမီး ဖြစ်တာ တုပ်ကွေးပါ။ HFMD ကိုတော့ မကြားဘူးလို့ KK hospital က လက်ကမ်းစာရွက် မှာ တွေ့တာလေးကို ဖတ် ပြီး ဒီမှာ ပြန်ရေးထားပါတယ်။

မေး။ Hand, Foot and Mouth Diease (HFMD) ဆိုတာ ဘာလဲ?
ဖြေ။ အန်တရိုဗိုင်းရပ်စ် (Enterovirus) လို့ခေါ်တဲ့ ဗိုင်းရပ်စ် ပိုးတွေကြောင့် ဖြစ်တဲ့ ကူးစက်ရောဂါတစ်မျိုးပါ။ အသက် အရွယ် မရွေး ဖြစ်နိုင်ပြီး အထူးသဖြင့် မူကြို အရွယ် ကလေးတွေမှာ ဖြစ်တတ်ပါတယ်။ ဒီ ရောဂါဟာ ရှားပါးတဲ့ ရောဂါ အသစ် မဟုတ် ပါဘူး။ ရှေးကတည်းက ရှိခဲ့ပြီး စင်ကာပူ မှာ တွေ့ရတတ်တဲ့ ရောဂါတစ်မျိုးပါ။

မေး။ HFMD ဖြစ် မဖြစ် ဘယ်လို သိနိုင် မလဲ?
ဖြေ။ HFMD ဖြစ် တဲ့ ကလေးမှာ မိတ်လို၊ အရေကြည်ဖုလို၊ အနီကွက်တွေ လက်၊ခြေ နဲ့ တင်ပါး မှာ ထလာပါမယ်။ ပါးစပ်ထဲမှာ အနာပေါက် မယ်။ ဖျားပါ မယ်။ ဒါ့အပြင် လည်ချောင်းနာတာ၊ နှာရည်ယိုတာ၊ အန်တာ၊ ဝမ်းလျှောတာ နဲ့ မောပန်းတာတွေ လည်း ဖြစ်နိုင်ပါတယ်။ ကလေးကို ဆေးခန်း၊ မိသားစု ဆရာဝန် တို့နဲ့ ပြနိုင်ပါတယ်။ ဆေးရုံ အရေးပေါ် ဌာန ကို သွားဖို့ မလိုအပ်ပါ။

မေး။ ကလေးကို HFMD ဘယ်လို ကူးတာလဲ?
ဖြေ။ နှာရည်၊ တံတွေး၊ ဝမ်း၊ အရည်ကြည်ဖုက အရည် များကို တိုက်ရိုက် ထိခြင်းအား ဖြင့် အလွယ်တကူ ကူးနိုင်ပါတယ်။

မေး။ ဒီရောဂါက ပြင်းထန်လား?
ဖြေ။ ရောဂါဟာ သာမန်အားဖြင့် မပြင်းထန်ပါဘူး။ ကလေး အများစုဟာ တစ်ပါတ် လောက်ကြာရင် သက်သာ သွားပါတယ်။ ရှားရှားပါးပါး မှသာ တွေ့ရခဲတဲ့ ဗိုင်းရပ် ဗီဇကွဲတွေမှာ ပဲ ဦးနှောက် နဲ့ နှလုံး ရောင်တာ အစရှိတဲ့ နောက်ဆက်တွဲ ရောဂါ တွေ ဖြစ်တတ် ပါတယ်။

မေး။ HFMD က ပြုစုကုသ နိုင် ပါသလား?
ဖြေ။ တိကျတဲ့ ပြုစုကုသ မှု သတ်သတ်မှတ်မှတ် မရှိပါဘူး။ ရောဂါ လက္ခဏာ က များသော အားဖြင့် မပြင်းထန်ပဲ ကလေးရဲ့ ကိုယ်ခံအားစနစ်က ဗိုင်းရပ်စ် တွေကို တိုက်ထုတ် တဲ့အခါ များသောအားဖြင့် ပြန်ကောင်း သွားကြပါတယ်။ ဆရာဝန်က အဖျား မကြီးအောင် ဆေး ပေးပါ မယ်။ ကလေးကို တတ်နိုင် သမျှ အရည် များများ တိုက် သင့် ပါတယ်။ အစားအစာ ကို မျိုချရတာ နာကျင် နိုင်တာကြောင့် ကလေးဟာ အစာ စားချင်စိတ် နည်းနေနိုင်ပါတယ်။ ဒါပေမယ့် ရေဓာတ်ခန်းခြောက် ခြင်း မဖြစ်အောင် ကလေးက လုံလောက်တဲ့ အရည် သောက်ဖို့ သေချာအောင် ဂရုစိုက်ပေးပါ။ ကလေးကို သစ်သီးရေ၊ ထမင်းရည်၊ ဘာလီရည် အစရှိတဲ့ အရည်တစ်မျိုးမျိုး ကို နည်းနည်းချင်း (၁၀ ကနေ ၃၀ မီလီလီတာ လောက်) ကို နာရီဝက်ခြား တစ်ခါလောက် တစ်နေ့လုံး တိုက်ကျွေး ပေးပါ။ ဒါက ဗိုင်းရပ်စ် ကြောင့် ဖြစ်ပြီး ဘက်တီးရီးယား ကြောင့် ဖြစ်တာ မဟုတ်တဲ့ အတွက် အန်တီဗိုင်အိုတစ် (Antibiotics) တွေက ထိရောက်ထက်မြက်မှု မရှိပါဘူး။

မေး။ အန်တရိုဗိုင်းရပ်စ် (Enterovirus) တစ်ခါဖြစ်ဘူးရင် ဒီရောဂါကိုပြီးတဲ့ ခံနိုင်ရည်ရှိသွားပြီလား?
ဖြေ။ အဲဒီဖြစ်တဲ့ ဗိုင်းရပ်စ် အတွက်တော့ သီးသန့် ခံနိုင်ရည် ရှိသွားပါတယ်။ ဒါပေမယ့် အဲဒီ အန်တရိုဗိုင်းရပ်စ် (Enterovirus) အုပ်စု ထဲက ပဲ မတူတဲ့ ဗိုင်းရပ် ဗီဇကွဲ တွေကနေ ထပ်ဖြစ်ကောင်း ဖြစ်နိုင် ပါတယ်။

မေး။ ဒီရောဂါ မပြန့် ပွားအောင် ဘာလုပ်လို့ရလဲ?
ဖြေ။ ရောဂါဖြစ်နေတဲ့ ကလေးဟာ မပျောက်မချင်း ကလေးထိန်းကျောင်း၊ ကျောင်း၊ လူထူထပ်တဲ့ နေရာတွေကို မသွား ရပါဘူး။ တကိုယ်ရည် သန့်ရှင်းမှု ကို ဂရုစိုက်သင့်ပါတယ်။ ရောဂါရှိတဲ့ ကလေးကို ထိပြီးတဲ့အခါ၊ ကလေး ခါးတောင်းကျိုက်ကို လဲပေး ပြီးတဲ့အခါ၊ နဲ့ အစားအစာ များကို မကိုင်ခင်မှာ လက်ဆေးပါ။ ရောဂါဖြစ်နေတဲ့ ကလေး ကိုင်ထားတဲ့ ကစား စရာတွေ၊ စာအုပ်တွေ၊ ပန်းကန်ခွက်ယောက်တွေ၊ ပဝါ၊ အဝတ်အစားနဲ့ အခြား အသုံးအဆောင်များကို အခြား ကလေးများ မထိစေရပါဘူး။

မေး။ HFMD ဖြစ်နေတဲ့ ကလေးကို ဘယ်လို အချိန်မျိုးမှာ ဆေးရုံ အရေးပေါ် ဌာန ကို ခေါ်သွားသင့် သလဲ?
ဖြေ။ HFMD ဖြစ် တဲ့ ကလေး အများစု က အဖျားရှိပေမယ့် နေကောင်း တက်ကြွ ကြပါတယ်။ အများစုဟာ ဆေးခန်း၊ မိသားစု ဆရာဝန် တို့နဲ့တင် လုံလောက် အဆင်ပြေပါတယ်။ ဒါပေမယ့် အောက်ပါ ပြဿနာ များ ဖြစ်ပေါ်လာရင်တော့ ဆေးရုံ အရေးပေါ် ဌာန ကို ခေါ်သွားသင့် ပါတယ်။
၁။ ကလေးက အရည် သောက်တာ အရမ်းနည်းနေမယ်၊ မျိုမချ နိုင်ဘူး၊ တောက်လျှောက် အန်နေမယ် ဆိုရင်။
၂။ ကလေးက လျှာက ခြောက်နေမယ်၊ ဆီးသွားတာ နည်းနေတယ် (ရေဓာတ်ခန်းခြောက်ခြင်း) ဆိုရင်။
၃။ ကလေးက နုံးနေမယ်၊ ငိုက်နေမယ်၊ စိတ်တို စိတ်ဆိုးနေမယ်၊ မနားတမ်း ငိုနေမယ်၊ စိတ်ရှုပ်ထွေး စိတ်လွတ် နေမယ် ဆိုရင်။
၄။ တက် မယ်ဆိုရင်။
၅။ အသက်ရှုရ ခက်ခဲနေတယ် ဆိုရင်။
၆။ ကလေးက ဖြူဖပ်ဖြူရော်၊ ဖျော့တော့၊ ပြာနှမ်း လာတယ်ဆိုရင်။
၇။ ကလေးက ခေါင်းကိုက်တာ၊ ခေါင်းမူးတာ၊ အုန်းလွဲတာ တွေ ရှိတယ်ဆိုရင်။

Saturday, August 13, 2011

Troubleshooting Daikin Aircon

Daikin(3MKD58DVM) inverter multi-split (R-22) aircon ကိုသုံးနေတာ တစ်နှစ် နှစ်နှစ် လောက်တော့ ရှိပြီ။ ပြီးခဲ့တဲ့ လကမှ indoor unit (FTKD25DVM) တစ်ခုက အလုပ် မလုပ် တော့ပဲ ဖွင့်လိုက်ရင် စက္ကန့်ပိုင်း လေးပဲ ထလုပ်ပြီး ပြန်ပြန် ပိတ်ပိတ် သွားတယ်။ နောက်တော့ LED indicator က မှိတ်တုပ် မှိတ်တုပ် ပဲ ပြနေတယ်။ အင်တာနက် ပေါ် ရှာဖတ် ကြည့်မှ ARC433B47 ရီမု ကွန်ထရိုး ကိုသုံးပြီး စစ်ကြည့်ဖို့ နည်းလမ်းတွေ တွေ့ တာနဲ့ ပြန်ပြီး ထုတ်နုတ် ထားလိုက်ပါတယ်။

Check Method 1

၁။ Timer cancel ခလုတ်ကို ၅ စက္ကန့် လောက် ဖိထား မယ်ဆိုရင် အပူချိန် ပြတဲ့နေရာ မှာ ၀၀ လို့ ပေါ်လာပါလိမ့်မယ်။


၂။ Timer cancel ခလုတ်ကို နှိပ်ရင် အသံတို တစ်ချက် ဒါမှမဟုတ် အသံတို နှစ်ချက် ကြားရပါလိမ့်မယ်။ အသံရှည် မြည်သံ ကြားရတဲ့ထိ ထပ်ခါ တလဲလဲနှိပ်ပါ။ ပြထားတဲ့ နံပါတ် တွေက ၀၀ ကစပြီး အောက်ပါ အစီအစဉ် အတိုင်း ပြောင်းသွား ပါလိမ့်မယ်။


၃။ အသံရှည် မြည်သံ ကြားရတဲ့ အခါ ပြနေတဲ့ နံပါတ် ကerror code ဖြစ်ပြီး ဖြစ်နိုင်တဲ့ ပြဿနာ အကြောင်းကို ဖော်ပြထားတဲ့ ဇယားကို အောက်မှာ တွေ့နိုင်ပါတယ်။

၄။ စစ်ဆေး ပြီးတဲ့ အခါ ပုံမှန် အခြေအနေ normal mode ကိုပြန်ရောက်အောင် timer cancel ခလုတ် ကို ၅ စက္ကန့် လောက် ဖိထားနိုင်ပါတယ်။ ဘာမှ မလုပ်ပဲထားရင်လဲ စက္ကန့် ၆၀ လောက် ကြာတဲ့ အခါ ရီမု ကွန်ထရိုးကသူ့ဟာသူ ပုံမှန် အတိုင်း ပြန်ဖြစ်သွားမှာပါ။

Check Method 2

၁။ TEMP ခလုတ် ရဲ့ အလယ်နဲ့၊ MODE ခလုတ်ကို ပြိုင်တူဖိလိုက်ပါ။ ပြနေတဲ့ နံပါတ် ရဲ့ ဘယ်ဘက် ဂဏန်း က မှိတ်တုပ် မှိတ်တုပ် ဖြစ်သွား ပါလိမ့်မယ်။


၂။ TEMP ခလုတ်ရဲ့ အပေါ် ဒါမှမဟုတ် အောက်ကို နှိပ်မယ် ဆိုရင် ဂဏန်း က ပြောင်းသွားပြီး အသံမြည်တာ ကြားရမှာပါ။

၃။ အသံကို အောက်က အတိုင်းစစ်နိုင်ပါတယ်။
အသံတို တစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံတို နှစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက တော့ ဟုတ်သွားပြီ။ ဒါပေမယ့် ညာဖက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံရှည် တစ်ချက်။ ။ ဂဏန်းနှစ်ခုလုံး ဟုတ်သွားပြီ။ ပြနေတဲ့ နံပါတ်က error code ဖြစ်ပါတယ်။


၄။ ဘယ်ဘက် ဂဏန်း ရပြီးတဲ့ အခါ MODE ခလုတ်ကို နှိပ်ပါ။ ညာဖက် ဂဏန်းက မှိတ်တုပ် မှိတ်တုပ် ဖြစ်သွား ပါလိမ့်မယ်။

၅။ TEMP ခလုတ်ရဲ့ အပေါ် ဒါမှမဟုတ် အောက်ကို နှိပ်မယ် ဆိုရင် ဂဏန်း က ပြောင်းသွားပြီး အသံမြည်တာ ကြားရမှာပါ။

၆။ အသံကို အောက်က အတိုင်းစစ်နိုင်ပါတယ်။
အသံတို တစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံတို နှစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက ဟုတ်တယ်။ ဒါပေမယ့် ညာဖက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံရှည် တစ်ချက်။ ။ ဂဏန်းနှစ်ခုလုံး ဟုတ်သွားပြီ။ ပြနေတဲ့ နံပါတ်က error code ဖြစ်ပါတယ်။


ရ။ အသံရှည် မြည်သံ ကြားရတဲ့ အခါ ပြနေတဲ့ နံပါတ် က error code ဖြစ်ပြီး၊ ဖြစ်နိုင်တဲ့ ပြဿနာ အကြောင်းကို ဖော်ပြထားတဲ့ ဇယားကို အောက်မှာ တွေ့နိုင်ပါတယ်။

၈။ စစ်ဆေး ပြီးတဲ့ အခါ diagnosis mode ကနေ ထွက်ဖို့ MODE ခလုတ် ကို နှိပ်ပါ။

၉။ ပုံမှန် အခြေအနေ normal mode ကိုပြန်ရောက်အောင် ON/OFF ခလုတ် ကို နှစ်ခါ နှိပ်ပါ။ ဘာမှ မလုပ်ပဲထားရင်လဲ စက္ကန့် ၆၀ လောက် ကြာတဲ့ အခါ ရီမု ကွန်ထရိုးကသူ့ဟာသူ ပုံမှန် အတိုင်း ပြန်ဖြစ်သွားမှာပါ။

Error Codes and Description of Fault

System

  • 00 ပုံမှန်
  • U0 refrigerant ဂတ်စ် အရည် နည်းနေပြီ
  • U2 ဗို့အား မမှန်။ မီးအား နည်း/များ နေပြီ
  • U4 အပြင်ယူနစ် နဲ့ အတွင်း ယူနစ် ကြား ဆက်သွယ်တဲ့ Signal ကြိုး ပြဿနာ
  • U7 အပြင်ယူနစ် ဆားကစ်ပြား ဆက်သွယ်ရေး Signal ပြဿနာ
  • UA အပြင်ယူနစ် နဲ့ အတွင်း ယူနစ် ကြား ဗို့အား မမှန်။
  • UH အခြား အခန်းက ရေ မခဲ အောင် လုပ်တဲ့ လုပ်ငန်း (Anti-icing function)


Indoor Unit

  • A1 အတွင်း ယူနစ် ဆားကစ်ပြား ပြဿနာ
  • A5 ခဲခြင်း၊ အပူလွန် ခြင်းမှ ကာကွယ်ခြင်း
  • A6 ပန်ကာ မော်တာနှင့် ဆက်စပ်သော ပြဿနာ
  • C4 အတွင်း အပူ ထိန်း (heat exchanger) ကိရိယာ၊ အပူချိန်တိုင်း ကိရိယာ တို့နှင့် ဆက်စပ်သော ပြဿနာ
  • C9 အခန်း အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ


Outdoor Unit

  • A5 ရေမခဲ အောင် လုပ်တဲ့ လုပ်ငန်း (Anti-icing function) ပြဿနာ
  • E1 အပြင် ယူနစ် ဆားကစ်ပြား ပြဿနာ
  • E5 ကွန်ပရက်စာ မနိုင်ဝန် ထမ်းခြင်း
  • E6 ကွန်ပရက်စာ ပိတ်သွားခြင်း (lock)
  • E7 DC ပန်ကာ ပိတ်သွားခြင်း (lock)
  • E8 အဝင် လျှပ်စစ် စီးဆင်းမှု လွန်ကဲခြင်း
  • EA လေးလမ်းသွား အဆို့ရှင် ပြဿနာ
  • F3 စွန့်ထုတ် ပိုက် အပူချိန်ထိန်း ပြဿနာ
  • F6 အအေးခံ ရာတွင် ဖိအား မြင့် အထိန်း ပြဿနာ
  • H0 ကွန်ပရက်စာ အာရုံခံ sensor စနစ် ပြဿနာ
  • H6 နေရာ အာရုံခံ စနစ် sensor ပြဿနာ
  • H8 CT နှင့် ဆက်စပ်သော ပြဿနာ
  • H9 အပြင် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J3 စွန့်ထုတ် ပိုက် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J6 အပြင် အပူ ထိန်း (heat exchanger) အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J8 အရည် ပိုက် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J9 အငွေ့ ပိုက် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • L3 လျှပ်စစ် အိမ် အပူချိန် မြင့်တက်ခြင်း
  • L4 အပူဖြာ ဆူးတောင် အပူချိန် မြင့်တက်ခြင်း
  • L5 အထွက် လျှပ်စစ် စီးဆင်းမှု လွန်ကဲခြင်း
  • P4 အပူဖြာ ဆူးတောင်အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ


ကျွန်တော် တို့ရဲ့ ရီမု နဲ့ စစ်ကြည့်တော့ U4 လို့ ပြနေပါတယ်။ အပြင်ယူနစ် နဲ့ အတွင်း ယူနစ် ကြား ဆက်သွယ်မှု Signal ပြဿနာ ပေါ့။ အပြင်ယူနစ် ကပို့တာကို ကောင်းကောင်း မရတာ၊ ဒါမှမဟုတ် အပြင်ယူနစ် က ကောင်းကောင်း မပို့နိုင်တာပါ။ အဲဒီ လက်ကိုင်စာအုပ် မှာ ပြောထားတဲ့ ဖြစ်နိုင်တဲ့ ပြဿနာတွေက
၁။ အပြင် ယူနစ် ဆားကစ်ပြား ပြဿနာ
၂။ အတွင်း ယူနစ် ဆားကစ်ပြား ပြဿနာ
၃။ ဝါယာကြိုး ပြဿနာ
၄။ ပါဝါ ဆပ်ပလိုင်း မကောင်းတာ
၅။ အတွင်း ယူနစ် နဲ့ အပြင် ယူနစ် ဆက်ထားတဲ့ ဝါယာ နံပါတ် ၃ ပြတ်နေတာ တွေ ပါ။


အဲယားကွန်း ပြင်တဲ့သူတွေ အိမ်ကို ရောက်လာပြီး စစ်လိုက်တော့ အတွင်း ယူနစ် နဲ့ အပြင် ယူနစ် ဆက်ထားတဲ့ ဝါယာ နံပါတ် ၃ ပြတ်နေတာ ပါ။ ပြတ်တာက အပြင် ယူနစ် မှာ ဆက်ထားတဲ့ အဆက် နေရာမှာ ရေလေ တိုက်စားပြီးပြတ်တာပါ။ သူ့တို့ လှုပ်ပြလိုက်မှ နောက်ထပ် တစ်ခြား အတွင်း ယူနစ် တွေကို ဆက်ထားတဲ့ ဝါယာ နံပါတ် ၃ တွေပါ ပြတ်သွား သေးတယ်။ သူ့တို့က ဆက်ထားတဲ့ အိမ်ထဲ၊ အိမ်ပြင်က ဝါယာအားလုံး ဖြုတ်လဲရမယ်လို့ ပြောပါတယ်။ မလိုဘူး ထင်ပါတယ်။ ဝါယာ ထိပ်နားကို အခွံလေး နွာပြီး ပြန်ဆက် လိုက်တော့ OK သွားပါတယ်။ စိတ်ဝင်စားစရာ ကတော့ အတွင်း ယူနစ် တွေကို ဆက်ထားတဲ့ ဝါယာ အားလုံးမှာ နံပါတ် ၃ တွေပဲ တိုက်စား ခံရတာပါ။ ကြည့်ရတာတော့ အဲဒီ ဝါယာက DC ဗို့ကို သုံးပြီး electrode လို ဖြစ်သွားတယ် ထင်ပါတယ်။ နောက်ထပ် ပြန်ဖြစ် ဦးမယ့် ပုံပါပဲ။

၂၀၁၃ ဇွန် ၁၀ ဖြည့်စွက်ချက်

အဲကွန်းက အဲဒီကတည်းက ကောင်းသွားတာ အခုထက်ထိ ဘာပြဿနာမှ ပြန်မပေါ်သေးဘူး။ electrode ပြဿနာလည်း မဟုတ်လောက်ပြန်ဘူး။ အချို့သူတွေ ကွန်မန့်ပေးထားတာ ဒီစီ ဗို့မသုံးဘူးတဲ့။ ကွန်ထရက်တာ က အရည်အသွေးညံ့တဲ့ ဝါယာတွေ သုံးသွားလို့လည်း ဖြစ်နိုင်ပါတယ်။ ဒါကြောင့်နေမှာ သူတို့က ဝါယာအားလုံး ပြန်လဲဖို့ လိုတယ်လို့ ပြောပြီး ပြန်လဲသွားတာ။

၂၀၁၄ ဖေဖော်ဝါရီ ၁၀ ဖြည့်စွက်ချက်

ဒီပြဿနာပဲ နောက် အတွင်းယူနစ် တစ်ခု မှာ ထပ်ဖြစ်ပါတယ်။ ဒီတစ်ခါတော့ အပြင်ယူနစ်ထဲက ဆားကစ်ဘုတ် ပျက်တယ်လို့ ဆိုပါတယ်။ ပြန်လဲချင်ရင် ဒေါ်လာ ၈၀၀ လောက်ကုန်မယ် လို့ပြောပါတယ်။

Reference:
Malfunction code chart
Service Manual

Thursday, May 5, 2011

Degrees of Freedom of the Human Arm

လူတွေရဲ့ လက်မှာ လှုပ်ရှားနိုင်တဲ့ ပုံစံ (degrees of freedom) ဘယ်နှစ်မျိုး ရှိလဲလို့ စဉ်းစား ဘူးပါသလား။ Saeed Benjamin Niku ရေးတဲ့ စာအုပ် တစ်အုပ် ဖြစ်တဲ့ Introduction to Robotics -Analysis, Control, Applications ထဲမှာ ဖတ်မိတဲ့ ဟာ တစ်ချို့ကို ပြန်ပြီး ထုတ်နုတ် တင်ပြ ချင်ပါတယ်။ လူ့ လက်မှာ ပခုံး၊ တံတောင်ဆစ် နဲ့ လက်ကောက်ဝတ် တွေက ကိုယ်၊ လက်မောင်း၊ လက်ဖျံ၊ လက်ဖဝါး တွေကို ဆက်ထား ပေးတဲ့ အဆက် နေရာတွေပါ။ ပခုံး က သုံးမျိုး လှုပ်နိုင်ပါတယ်။ coronal plane အတိုင်း အပေါ်အောက် လှုပ်လို့ရ သလို၊ transverse plane အတိုင်း ရှေ့နောက် လွှဲလို့ လဲရနိုင်ပြီး၊ လက်မောင်း ဝင်ရိုးမှာ လှည့်လို့ လည်း ရပါတယ်။ လူတွေရဲ့ ခန္ဓာဗေဒ ပြင်ညီ အခေါ်အဝေါ် ကို အောက်က Wikipedia က ပုံမှာ တွေ့နိုင်ပါတယ်။
တံတောင်ဆစ် ကတော့ အကွေး၊ အဆန့် တစ်မျိုးပဲ လှုပ်လို့ရတာပါ။ လက်ကောက်ဝတ် ကလဲ သုံးမျိုး လှုပ်နိုင်ပါတယ်။ အပေါ်အောက် လှုပ်တာ၊ ဘေးတိုက် လှုပ်တာ နဲ့ လက်ဖျံ တလျှောက် လှည့်တာ တွေ ဖြစ်ပါတယ်။ ဒါ့ကြောင့် လက်ချောင်းတွေကို ထည့်မစဉ်းစားဘူးဆိုရင် လူတွေရဲ့ လက်မှာ လှုပ်ရှားနိုင်တဲ့ ပုံစံ (degrees of freedom) ခုနှစ်မျိုး ရှိတယ်လို့ ပြောနိုင်ပါတယ်။

Tuesday, February 22, 2011

Denavit-Hartenberg Representation of Robots

D-H model ဟာ robot links နဲ့ joints တွေကို ဖော်ပြဖို့ အတွက် ရိုးရှင်းတဲ့ ပုံစံ တစ်ခု ဖြစ်ပြီး ဘယ်လို robot ပုံစံ မျိုး အတွက် မဆို သုံးလို့ရပါတယ်။ လက်တံ (link) တစ်ခုစီ အတွက် z ဝင်ရိုးနဲ့ x ဝင်ရိုး တို့ကို သတ်မှတ်ပေးဖို့ လိုပါတယ်။ D-H representation မှာ y ဝင်ရိုးကို သုံးစရာ မလိုပါဘူး။ Lk ကို link k အတွက် frame လို့ သတ်မှတ်ကြမယ် ဆိုပါစို့။



၁။ Joint အားလုံး အတွက် Z ဝင်ရိုးကို သတ်မှတ်ပါ

Joint k+1 ရဲ့ ဝင်ရိုးကို zk လို့ သတ်မှတ်ပါ။ အကယ်၍ လည်တဲ့ revolute joint မျိုးဆိုရင် z axis ကို လည်တဲ့ဖက် အတိုင်း right hand rule သုံးပြီး သတ်မှတ်ပါ။ အကယ်၍ ဆန့်ထွက်တဲ့ prismatic joint မျိုးဆိုရင် z-axis ကို ဆန့်ထွက်တဲ့ ဖက် အတိုင်း သတ်မှတ်ပါ။

၂။ Origin များကို သတ်မှတ်ပါ

zk နဲ့ zk-1 တို့ အချင်းချင်း ဖြတ်သွားတဲ့ နေရာကို Lk ရဲ့ origin လို့ သတ်မှတ်ပါ။ အကယ်၍ မဖြတ်ခဲ့ ရင် zk ရော zk-1 ကိုပါ ထောင့်မတ်ကျတဲ့ common normal နဲ့ zk နဲ့ ဖြတ်တဲ့နေရာကို ယူပါ။ လိုင်း နှစ်လိုင်း ဟာ ဘယ်လိုပဲ ရှိ ရှိ နှစ်လိုင်း စလုံးကို ထောင့်မတ်ကျတဲ့ common normal လို့ ခေါ်တဲ့ လိုင်းတစ်လိုင်းတော့ အမြဲရှိပြီး အဲဒီနှစ်လိုင်း ရဲ့ အနီးဆုံး အကွာအဝေး လည်း ဖြစ်ပါတယ်။

၃။ X ဝင်ရိုးများကို သတ်မှတ်ပါ

xk ကို zk နဲ့ zk-1 ကြားက common normal ရဲ့ ဦးတည်ရာ အတိုင်း သတ်မှတ်ပါ။ အကယ်၍ z ဝင်ရိုး အချင်းချင်း ဖြတ်နေရင် xk ကို zk နဲ့ရော zk-1 နဲ့ပါ ထောင့်မတ်ကျ အောင် သတ်မှတ်ပါ။ (z ဝင်ရိုး တွေရဲ့ cross-product ဦးတည်ရာ အတိုင်း လို့ လည်းပြောလို့ ရပါတယ်)။ အကယ်၍ zk နဲ့ zk-1 တွေက ပြိုင်နေရင် xk ကို zk-1 နဲ့ ဝေးရာကို ဦးတည်ပါ။ အရင် ရှေ့က common normal ရဲ့ ဦးတည်ရာ အတိုင်း ဖြစ်နိုင်ရင် သတ်မှတ်ပါ။

၄။ Y ဝင်ရိုးများကို သတ်မှတ်ပါ

yk ကို right-handed frame Lk ဖြစ်အောင် သတ်မှတ်ပါ။

၅။ Kinematic Parameter လေးခု ကို ရှာပါ

k က xk-1 နဲ့ xk ကြားက zk-1 ဝင်ရိုးပေါ်က ထောင့်ပါ။ *dk က xk-1 နဲ့ xk ကြားက zk-1 ဝင်ရိုး တစ်လျှောက် အကွာအဝေး ပါ။ *ak က zk-1 နဲ့ zk ကြားက xk ဝင်ရိုး တစ်လျှောက် အကွာအဝေး ပါ။ *αk က zk-1 နဲ့ zk ကြားက xk ဝင်ရိုးပေါ်က ထောင့်ပါ။

၆။ Frame k-1 မှ Frame k သို့ ပြောင်းခြင်း

*Lk-1 ကို zk-1 ဝင်ရိုး ပေါ်မှာ θk လှည့်လိုက်ရင် xk-1 နဲ့ xk နဲ့ အပြိုင်ဖြစ် သွားပါမယ်။ ဘာ့ကြောင့်လဲ ဆိုတော့ common normals တွေ ဖြစ်တဲ့ ak-1 နဲ့ ak နှစ်ခုစလုံးက zk-1 ဝင်ရိုးနဲ့ perpendicular ဖြစ်နေလို့ပါ။ *Lk-1 ကို zk-1 ဝင်ရိုး တစ်လျှောက် dk ရွှေ့ရင် xk-1 နဲ့ xk က တစ်တန်းတည်း ဖြစ်သွားပါမယ်။ *Lk-1 ကို xk ဝင်ရိုး တစ်လျှောက် ak ရွှေ့ရင် Lk-1 နဲ့ Lk တို့ရဲ့ origin တွေဟာ တစ်ထပ်တည်း ဖြစ်သွား ပါမယ်။ *Lk-1 ကို xk ဝင်ရိုး ပေါ်မှာ αk လှည့်လိုက်ရင် zk-1 နဲ့ zk ဝင်ရိုး တွေဟာ အပြိုင်ဖြစ် သွားပါမယ်။ ဒီအချိန်မှာ frames Lk-1 နဲ့ Lk တို့ဟာ တထပ်တည်း ကျသွားပါပြီ။


simulation လုပ်ကြည့်မယ် ဆိုရင် Robotassist ဆိုတဲ့ free software လေးက အဆင်ပြေမယ် ထင်ပါတယ်။
Ref:
Introduction to Robotics -Analysis, Control, Applications; Second Edition, Saeed Benjamin Niku
Fundamental of Robotics -Analysis & Control, Robert J. Schilling