월요일, 4월 21, 2008

좋은 글 쓰기

좋은 논문을 쓴다는 것은 정말 힘든 일이라는 것을

뼈저리게 느끼고 있다.

예전에 중요도가 높지 않은 논문들을 쓸때에는 슬쩍 넘어가는

논리적 비약의 구간들을

하나 하나 메꾸려다 보니 큰 틀에서 보면 엉망진창인 괴물이 되어 버려서

쓰다 지우기를 무한 반복 하고 있다..

정말 괴롭다....휴.....

몇백페이지 짜리 책을 쓰는 사람들에게 새삼 존경과 범접할 수 없음을 느낀다..

월요일, 4월 14, 2008

연구단지 수영장


연구단지 스포츠 센터 내에 있다. 가격은 3,500원

엑스포에서 예전 대덕 롯데호텔로 가는 길가에 있다.

주말에 갔더니 사람 더럽게 많고, 꼬맹이들도 정말 많다.

사람이 많아서 그런지 물도 그닥...

부딪히고, 충돌하고 난리도 아님.

역시 학교 수영장 만한데가 없구나 뼈저리게 느낌..ㅋ

다음주에는 마지막으로 월드컵 스포츠센터 수영장을 점검하고

주말에 수영하러 다닐 곳을 최종 결정할 예정..ㅋㅋ

수요일, 4월 09, 2008

18대 국회의원 선거

난 이제 대한민국에서 3%를 넘네 마네 하는

마이너리티가 되어버렸군...-_-;;

고민할 필요는 없어서 좋은건가???

.....

낮은 투표율에 투표할 권리와 의무에 대해 게시판들에서 여러가지 말들이 오간다.

개인적으로 투표권이란 걸 가진 뒤로 투표를 포기한적이 한번도 없는데,

정치적 지향점이 나의 그것과 같다 다르다,

나와 같은 곳을 바라보는 사람이 될 가능성이 있다 없다를 떠나서,

내가 던지는 이 한표를 얻기 위해,

민주주의란 정치 체계가 태어난 이래 발전, 변화하는 과정에서 생각하고,

주장하고, 서로 싸웠을 수많은 사람들의 역사에 경의를 표하는 의미에서

이 절차적 행위를 포기하면 안될 것 같은 생각에서 이다.

어쨌던 한 국가의 일원으로 내 의사를 다른 이들과 동등한 가치를 가지고 표현할 수 있는

유일한 기회가 아닌가 싶다.

ps 1. 일평생 중 나보다 강하고 큰 영향력을 가진 사람들과 사회 구성원으로서

동등한 가치를 가진 권리를 행사하는(형식적으로나마) 유일한 기회일텐데

신나지 않을까???? 다른 사람들의 생각이 궁금해진다.

ps 2. 그러고 보니, 위정자들이 제일 두려워 하는 것은 모든 국민이 투표하는 사태가

일어나는 것이라는 영국의 전직 의원의 말이 생각나는군요..ㅋㅋ

................

2.94%라니...흑 안타깝다..

화요일, 4월 08, 2008

봄, 벚꽃, 그리고 과다 노출

봄이 왔습니다.




벚꽃도 만개하고..





사진은 노출 과다가 됩니다..ㅋ

일요일, 4월 06, 2008

Dynamic Walking Robot

Youtube에 재미있는 동영상이 올라왔습니다.

MIT Leg Lab에서 Spin-off된 Boston Dynamics에서 개발중인 Big Dog의 패러디 동영상입니다.

첨엔 이게 진짜 Beta로 출시 된건가 하고 보지만 정체가 중간에 드러납니다...ㅋㅋ



MIT Leg Lab은 Walking에 관한 재미있는 연구를 하고 있는 연구실입니다.

초창기 연구로 기억되는 것은 아래의 동영상과 같은 한 다리로 팔짝 거리던 로봇입니다.

저렇게 돌다가 점프하여 재주넘기도 하고 했었는데 그 영상은 못찾겠고, 추가로 다른

영상들이 Youtube에 많이 올라와 있습니다.





그리고 가장 최근의 Big dog영상이라고 올라온 동영상은

Dynamic walking의 진수를 보여줍니다.

2015년까지 미군은 군의 운용 차량 1/3을 무인 차량으로 바꿔야 합니다.

미 의회의 명령이지요..^^

아마 세계 여기 저기서 전쟁을 수행하는 국가로서

국내의 반전 여론등을 심화 시키는 요인 중 하나가

자기의 아들, 딸 들이 전쟁에 나가 상처를 입거나 죽기 때문이므로

이러한 오더를 의회가 내리지 않았나 생각합니다.

한마디로 전쟁을 수행하기 더 효율적이며 쉬워 지는 것이지요..

아마 F-22도 미군 개발하는 마지막 유인 전투기가 되리라 예상되고 있습니다.

아무튼 이런 분위기에 의해 DARPA는 다양한 로봇 기술들을 군용으로 적용하는데

지원을 아끼지 않고 있습니다.

무인 차량 경주인 DARPA Grand Challenge를 비롯해

이 Big Dog도 DARPA의 지원을 받고 있습니다.



혼다의 Asimo와 같은 이족 보행 로봇과 기술적 면에서 어떠한 점이 다른지는

Walking쪽이 전공이 아니라 잘 모르겠지만..

똑같이 Dynamic walking system 이지만, Big dog쪽이 유압 액츄에이션을 사용해서

힘도 더 좋고, 응답 속도도 빠르며, 스프링,댐퍼 등의 element를 적극 활용해서

좀더 Dyanamic한 특성을 가진 시스템일 것이라 생각합니다.

그렇다 해도 하드웨어만의 문제 보다는 다양한 영역에서 stability를 점차적으로

확보하는 제어는 정말 대단합니다...

참조 사이트

YouTube MIT Leg Lab 동영상
http://www.youtube.com/results?search_query=mit+leg+lab+walking&search_type=

Boston Dynamics Co.
http://www.bostondynamics.com/index.php

MIT Leg Lab.
http://www.ai.mit.edu/projects/leglab/

Darpa Grand Challenge
http://www.darpagrandchallenge.com/

Future Combat System of the United States Army
http://en.wikipedia.org/wiki/Future_Combat_Systems

목요일, 4월 03, 2008

Matlab에서 만든 function을 C library로 Visual Studio 6.0에서 이용하기 기초 테스트

참고 사이트

http://www.mathworks.com/support/solutions/data/1-2QTWCE.html?solution=1-2QTWCE

http://www.nbs.ntu.edu.sg/userguide/MatLab/MatLab6/toolbox/mathlib/cmathug/cmathug.html

http://www.fsa.ucl.ac.be/help/helpdesk.html


  1. 우선 Matlab의 Matlab Component Runtime Library를 인스톨 합니다.

    MATLAB의 \toolbox\compiler\deploy\win32 폴더의 MCRInstaller를 실행하여 설치합니다.


  2. Matlab에서 원하는 Function을 작성합니다.

    예를 들어 Inverse.m 을 다음과 같이 작성합니다.


    function y=inverse(x)

    y=inv(x);


  3. 먼저 compiler를 setting합니다.

    Matlab command창에서

    mbuild -setup을 실행하면 시스템에 설치된 컴파일러를 찾아 선택하게 됩니다.


  4. Matlab에서 해당 function을 컴파일 합니다.

    Matlab command 창에서

    mcc -B csharedlib:inverselib inverse.m

    을 실행하면 inverselib.h inverselib.c inverselib.lib…. 등등의 파일을 생성합니다.



  5. Visual studio에서 테스트 프로젝트를 하나 만듭니다.

    이 프로젝트 폴더로 아까 matlab이 생성한 파일들을 모두 카피합니다.

    그리고 이 프로젝트가 matlab library를 사용할 수 있게 환경을 setting해 줍니다.

    Tools->Options->Directories 의

    include 와 library 의 path에 각각

    C:\MATLAB7\extern\include

    C:\MATLAB7\extern\lib\win32\microsoft\msvc60

    를 추가해 줍니다.

    그리고 Project->Settings->Link의 Object/library modules:에

    mclmcrrt.lib inverselib.lib를 지정해 줍니다.


  6. View의 Header입니다.

    만든 라이브러리를 사용하기 위해 헤더 inverselib.h를 include 해 주고,

    행렬의 입력, 출력을 확인하기 위해 mxArray 포인터 타입의 변수 2개를 선언합니다.


    #include "inverselib.h"


    class CMatlabLibView : public CView

    {

    …...

    mxArray *pX;

    mxArray *pY;

    …..

    };


  7. View class의 OnCreate 함수

    라이브러리의 초기화를 해 줍니다.


    if( !mclInitializeApplication(NULL,0) )

    {

    AfxMessageBox("Could not initialize the application.");

    exit(1);

    }


    if (!inverselibInitialize())

    {

    AfxMessageBox("Could not initialize the library.");

    exit(1);

    }


  8. View class의 OnDraw함수


    2X2 행렬 하나를 만들고 inverse를 구해 출력해 봅시다.


    int rows=2;

    int cols=2;


    static double data[] = { 1, 2, 3, 4 };

    double *start;


    pX = mxCreateDoubleMatrix(rows,cols,mxREAL);

    start = (double *)mxGetPr(pX);

    memcpy(start, data, rows * cols * sizeof(double) );


    pY=NULL; <---- 반드시 NULL로 지정해 주어야 합니다.

    mlfInverse(1,&pY,pX); <---- matlab에서 생성한 library의 함수 입니다.


    double *x,*y;


    x=(double*)mxGetPr(pX);

    y=(double*)mxGetPr(pY);


    for (int i=0;i<rows;i++)

    {

    for (int j=0;j<cols;j++)

    {

    double xx,yy;

    xx=*(x+cols*i+j);

    yy=*(y+cols*i+j);

    CString str;

    str.Format("%1.3f",xx);

    pDC->TextOut(50*j,20*i,str);

    str.Format("%1.3f",yy);

    pDC->TextOut(200+50*j,20*i,str);

    }

    }


  9. View class의 OnDestroy 함수

    끝나면 정리는 항상 확실히


    mxDestroyArray(pX);

    mxDestroyArray(pY);

    inverselibTerminate();

    mclTerminateApplication();