2014년 11월 7일 금요일

원격지 우분투 컴퓨터 사용하기

 보통의 경우 원격지의 컴퓨터를 사용하고 싶은 경우 윈도우<->윈도우 원격데스크탑을 사용합니다. 편리하죠. 최근엔 TeamViewer와 같은 프로그램으로 플랫폼에 관계없이 연결할 수도 있습니다.

 여기에서 기술하는 환경은 매우 특이한 환경이기 때문에 다른 분들에게는 적용이 안될 수 도 있을 것 같습니다. 그러나 이렇게 환경을 구성하는 방법도 있구나하는 것 정도와 사용되는 여러가지 방법들이 모두 유용한 것 같아서 공유하고자 합니다.

 원격지 환경

  • IPTIME 공유기
  • 물리하드 2개인 PC
  • 물리하드 한 곳에는 win8, 다른 한 곳에는 우분투 설치
 최종 목적은 원격지에 우분투로 부팅 후 ssh로 접속하고자 하는 것입니다. 리눅스는 기본적으로 GUI를 원격지로 보내는 것을 염두에 두고 개발된 OS이기 때문에 ssh로 접속하는 것 만으로도 콘솔과 화면을 모두 사용할 수 있습니다.

 설정 순서

  1. IPTIME 공유기에 DDNS를 설정하고 WOL(Wake On Lan)환경 구성 <- 이 부분은 웹 서치를 통해서 쉽게 정보를 얻을 수 있기 때문에 생략하겠습니다. 
    1. 여기에서 문제가 있습니다. WOL을 지원하는 우분투 랜카드 드라이버가 거의 없는 것 같습니다. 관련된 내용을 찾아보니 버그로 일단은 빠져 있는 것 같습니다.
    2. 차선책은 WOL은 윈도우에서 하고 윈도우가 재부팅시 리눅스로 부팅이 되도록 순서를 설정하여 주는 것 입니다.
  2. 윈도우에서 재부팅을 하는 경우 다음 부팅은 리눅스로 되도록 설정합니다.
    1. bcdedit /set {fwbootmgr} bootsequence 식별자 <- 식별자는 bcdedit /enum all 명령으로 확인할 수 있습니다. shimx64.efi 파일이 위치한 식별자를 쓰시면 됩니다.


2014년 10월 8일 수요일

개기월식

Animation October 8 2014 lunar eclipse appearance.gif
"Animation October 8 2014 lunar eclipse appearance" by Tomruen - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons.

 우주의 이벤트 개기월식이 10월 8일 펼쳐집니다. 달이 지구의 그림자에 완전히 가려지는 개기월식은 3년 만에 찾아온 것이라고 하니 오늘은 밤 하늘을 유심히 관찰해봐야 할 것 같습니다.

 가능하면 잘 보이는 곳에서 찍은 사진을 다시 게시할 수 있으면 좋겠습니다.

2014년 10월 7일 화요일

#공주 #고마아트센터

디스 이즈 낫 어 토이(THIS IS NOT a TOY)

 #공주는 인구 13만의 작은 소도시 입니다. 그러나, 백제의 수도였던 웅진성(곰나루, 고마나루)이 있던 역사답게 볼거리가 풍부한 곳입니다. 주변의 산림박물관, 국립박물관, 공산성과 함께 9/25에 개관한 #고마아트센터 는 앞으로 좋은 예술 작품과 함께 할 계획이라고 합니다.

 9/25~10/5 에는 아트토이 페어 #디스이즈낫어토이 전시가 있었습니다. 장난감을 좋아하는 키덜트를 위한 전시회라고 해도 좋을 만큼 수많은 아트토이들과 드로잉들이 전시되었습니다.

 평소에 이런 분야에 관심이 있었던 것은 아니지만 예술가들의 디자인 감각이란 굉장히 창조적이라는 생각을 했습니다. 인공지능으로 인간의 인지능력과 행동을 모방할 수 있는 수준에 도달한 지금에도 창의력도 모방할 수 있을지는 의문입니다.

 과연 인간이 전혀 체험해보지 못했던 추상적이고 창조적인 부분은 학습으로 이루어지지 않는 그 창조성은 과연 어디에서 오는 것일까요? 단백질 구조물인 뇌에서 이러한 일들을 모두 하고 있다는 생각을 하니 우리 뇌의 신비는 끝이 없는가 봅니다.










2014년 10월 1일 수요일

Rsimulator

github에서 Rsimulator 보기


Rsimulator 소개

 Rsimulator는 Visual studio 2010, C++, opencv 기반으로 만들어진 이동 로봇 시뮬레이터입니다.

라이센스

 Rsimulator는 GPL을 따릅니다.(GPL 한글 번역 전문)

 기업, 학교, 개인이 마음대로 개작하고 재배포해도 좋지만, 개작된 소프트웨어의 소스코드는 GPL에 따라 공개되어야 하고 Rsimluator를 사용했다는 것을 밝혀야 합니다.. Rsimulator를 공공의 목적으로 공개하는 이유이기도 합니다.

기능 명세

  • 로봇 설정(두 개의 바퀴와 하나의 캐스터)
  • 장애물 환경 디자인(사각형, 원형, 직선 등)
  • 초음파, 레이저 센서 스캔 시뮬레이션
  • 점유 격자 지도 작성 시뮬레이션
  • 전역 경로 계획 시뮬레이션
  • 지역 경로 계획 시뮬레이션
  • UKF SLAM 시뮬레이션

소스 다운로드 방법

 git에 대해 익숙하신 분은 본 글 상단의 링크를 참고하시면 됩니다.

 처음이신 분은 본 글 상단의 링크를 통해 Rsimulator git을 fork하고

 github for windows를 통해 clone을 받으시면 됩니다.

간단 사용 방법

 처음 화면에 몇 개의 원이 뿌려져 있습니다. 랜덤하게 생성된 35의 점(랜드마크 입니다.) r 키로 적당한 크기의 로봇의 생성시키고 space bar를 누르면 정해진 궤적을 따라가면서 SLAM을 수행합니다.
 왼쪽 메뉴의 DT, VFF, VFH를 선택하면 로봇이 다르게 반응합니다. 자세한 설명서는 시간이 허락하면 작성할 계획입니다.

시뮬레이터 개선 계획

  현재는 없습니다. 다만, 본 프로그램을 사용하시는 분이 좋은 아이디어를 바탕으로 개선한 내용을 github에 pull하고 싶으시다면 적극 환영합니다. 공동으로 작업하고 싶은 의향도 있습니다. 그것이 공중 소프트웨어의 본질이라고 생각합니다.

시뮬레이터 실행 화면






OpenCV Visual Studio 환경설정 쉽게 하기

 기존의 서적이나 사용하시는 분들은 보면 Visual Studio 환경설정에서 포함파일과 라이브러리 링크를 수정해서 사용하고 계시는 것 같습니다.


 프로젝트를 매 번 만들때마다 설정하는 것도 여간 귀찮은 일이 아닙니다.

 다음과 같은 방법으로 여러 프로젝트에서 공통으로 참조하는 opencv 파일들은 한 곳에 몰아두고 사용하면 편리하게 환경설정을 할 수 있습니다.


  1. Visual Studio solution 폴더와 같은 레벨의 폴더에 opencv에 관련된 파일들을 넣어둔다. (오른쪽 그림 참조, 파일들은 버전과 사용하는 라이브러리에 따라 다를 수 있습니다.)
  2. stdafx.h 파일에 다음과 같이 추가합니다. 

#include "../opencv/cv.h"
#include "../opencv/cxcore.h"
#include "../opencv/highgui.h"
#include "../opencv/cvcam.h"

#pragma comment(lib, "../opencv/cxcore.lib")
#pragma comment(lib, "../opencv/highgui.lib")
#pragma comment(lib, "../opencv/cv.lib")
#pragma comment(lib, "../opencv/cvcam.lib")

2014년 9월 30일 화요일

Visual Studio MFC 프로그래밍에서 console 디버깅 창 사용하기

 MFC프로그램을 디버깅하다보면 답답한 경우가 있습니다. break point걸고 step into, step over를 사용할 수도 있지만 몇 만번의 반복을 수행하는 경우 조건을 걸고 break point를 설정하고 하는 일 자체가 귀찮은 경우가 있습니다.

 간편하게 printf로 변수 출력을 console로 확인할 수 있는 방법을 소개합니다.

 stdafx.h파일에 마지막에 다음을 추가합니다.

//#ifdef _DEBUG
#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")
//#endif

매개 변수 1을(를) 'const char [16]'에서 'LPCTSTR'(으)로 변환할 수 없습니다.

 다른 사람이 준 Visual studio 2010을 컴파일하거나 오랜만에 다른 PC에서 자신의 코드를 열었을 경우 제목과 같은 에러가 발생되는 경우가 있다.

 사용되는 문자열이 유니코드인지 멀티바이트 포맷인지에 따라 afxstr.h의 내용이 다르게 정의되기 때문이다.

 Visual studio에서 alt+f7을 누르면 다음 속성 페이지가 나타나는데, 구성속성->일반->문자집합을 설정 안 함으로 고치면 간단하게 해결된다.