2009년 12월 31일 목요일

[ROS] What is ROS?



ROS의 특징
  • ROS 오픈소스
  • 로봇관련 메타OS 시스템
  • OS 관련서비스 제공
  • 하드웨어 추상화 관련 서비스 제공
  • 저수준장치 제어 서비스 제공
  • 공통적으로 사용하는 기능
  • 프로세스간 메세지 전송
  • 패키지 관리
ROS의 여러 커뮤니케이션 기능들
  • 동기화 통신 : 서비스
  • 비동기 통신 : 토픽
  • 데이터 저장 : 파라메터 서버
ROS는 리얼타임 프레임워크가 아니라 한다. 하지만 ROS는 loosely-coupled 통신 방식을 사용하므로 리얼타임 코드 적용을 통해 가능하다라고 한다. ==> 유튜브를 통해 동영상까지 보여줬다. 논쟁의 여지가 없다.

ROS의 목적
  • 로봇관련 연구 개발의 재사용
  • 노드간 분산 프레임워크
  • 패키지와 스택으로 그룹지어진 노드간 분산 통신, 이들은 서로 데이터를 공유 하고 통신한다.
  • 다른 로봇 프레임워크와 쉬운 통합(python때문에 그렇다)
  • 기타 몇가지 목적





2010 1월1일 목표

ROS분석!
c++과 Python을 요구하네

[연재, code.google.com] marie




10가지정도의 third-party library가 있다.

ACE 예제로 쓰기에 좋다.

MARIE (Mobile and Autonomous Robotics Integration Environment)

2009년 12월 30일 수요일

[연재, code.google.com] rcf-cpp




프로젝트이름대로

Remote Call Framework

사용자 코드가 편리하고 직관적이다.

2009년 12월 28일 월요일

Eclipse RCP&Plugin/QT


내 종목은 C++이다.
그런데 요즘 java관련 솔루션들이 많이 있다.
java 관련 솔루션을 해야 하나 보다.

그래서 선택한것이 Eclipse RCP&Plugin 개발이다.

swt/jface를 알아야 하고 OSGi 프레임워크도 알아야 하고, RCP 개발 방법과, Plugin 개발 방법 또한 알아야 한다. 물론 이 모두를 적용해서 원하는 코드를 만들어야 한다.

얀간은 생소하고 모호하다. 그리고 VM이라는 놈도 신경쓰인다. 그래도 개념적으로 신선하다.

Eclipse의 개념과 개발 방법을 어느정도 숙지하고 QT로 넘어가야 한다.
그런후 애플리케이션의 특성에 따라 선택적으로 개발 해야 한다.

내년 상반기까지 어느정도 익숙하게 다룬후 Job 관련 애플리케이션을 완성하자!

[연재] 32개의 연재의 중간평가

32개의 C++, ACE, Boost 관련 프로젝트 연재 중간 평가를 해보자

잠깐이였지만 많은걸 알 수 있는 계기가 됐다.

이 프로젝트들을 쓰기에 적당한 job이 없다.

정리 하자면

boost 관련 라이브러리를 최대한 살려 자신의 프로젝트에 적용 했으며
gui관련 라이브러리는 cross platform을 염두해 두고 관련 라이브러리를 선택했다.
특히 QT, Boost 라이브러리, zlib, tiff, png, cximage, jpeg, xml 관련 라이브러리를 공통으로 많이
쓰이는 모습을 볼 수 있었다.

가장 쓸모있다고 생각되는 라이브러리를 뽑는다면

컴포넌트 관련 commonKit
네트워크 관련 halfnetwork
GUI 예제 관련 kgui
로그 관련 hielog
TAO 관련 taonet





[연재, code.google.com] aonet




TAO를 이용한 네트워크 라이브러리이다.

TAO 프로젝트를 다시 시작하기에 좋은 예제인것 같다.


[연재, code.google.com] halfnetwork



ACE 프레임워크를 이용한 반이중동기화 방식 네트웍 라이브러리이다.

가장 쓸모 있다고 생각된다.

특히 ACE 부분을 포함해서 제공하기 때문에 어디서든 쉽게 쓸수 있다.

[연재, code.google.com] rpcxx



RPC인데 사용법이 간단하고 매우 가볍다.

sys/socket 사용한다.


[연재, code.google.com] ubeda



ICE, TAO와 같은 건데 좀더 light weight하고 custom 한 커뮤니케이션 프로토콜에 유연하게 디자인했다.

컴파일은 되는데 Tutorial이 없어 써먹진 못하겠다. 아쉽다.

ace, expat(xmal parse)을 썼다.

2009년 12월 27일 일요일

[연재, code.google.com] hielog



로그 유틸이다.

boost asio, thread를 썼다.

  • 기본 포맷
  • xml 포맷
  • 기본 provider
  • 원격 provider
  • 파일 provider( 멀티 파일, 싱글 파일)
  • 각각의 범의 설정 로그( 어플리케이션 전체, 모듈별, 스레드별)
그런데 쓰기가 좀 조잡하다.

2009년 12월 25일 금요일

[연재, code.google.com] libshinablegui



스킨 가능한 MFC GUI 라이브러리이다.

fatal error C1083: 포함 파일을 열 수 없습니다. 'afxcontrolbars.h': No such file or directory
=> vc 2008 service pack1 설치 한다.


2008에서 빌드했음

컴파일 해서 써먹자!

SimpleSample 컴파일 하려고 시도 하면서 전혀 사용자를 고려 하지 않았다는 걸 알게됐다.

어찌되었건 컴파일은 했다. 하지만 런타임 에러가 발생한다.
원인을 모르겠다.

참고: 윈도우에서 cximage를 쓰려면 CxImageMfcDll 프로젝트로 로드 한다.



[연재, code.google.com] uvu-fusion-project



닷넷으로 짰음(managed c++ )

자동화 관리 프로젝트임


[연재, code.google.com] high-performance-cplusplus-profiler



  • 싱글스레드/멀티 스레드 지원
  • 낮은 지연/높은 처리량
  • ..
  • HTML/text 보고서

반복 연산 및 스레드 성능에 좋다. 그것보다도 HTML 보고서가 맘에 든다.


[연재, code.google.com] cppscript



c++ project에 스크립트 기능을 추가할 수 있다.

소스를 살펴 보면 스크립트 형태의 문법들을 볼 수 있는데 어디에 쓰일까 궁금하다.




2009년 12월 23일 수요일

[연재, code.google.com] commonkit



Component-base framework

특성을 살펴보면
  1. 스마트 포이터 지원
  2. 이벤트 디스페칭
  3. undo/redo 오토메이션
  4. 동시성 메커니즘
  5. 확장을 위한 투명성 지원(스마트 공유 객체 로더)
  6. 상위레벨의 네트워 지원(Boost의 asio사용)
  7. 분산 시스템 설계 및 구현 지원(리모트 컴포넌트)
OPRoS 컴포넌트 실행기랑 뭐가 다른가?


[연재, code.google.com] easl



Unicode String 라이브러리이다.

UTF-8, UTF-16, UTF-32 인코딩 포멧을 지원한다.

사용자 코드가 쉽고, 예제가 있어 따라하기 쉽다.

[연재, code.google.com] phoenixgl



2D 게임 엔진이다.

OpenGL를 사용했다.

달랑 소스만 있다.


[연재, code.google.com] scope-exit



C++ Scope를 벋어날때 호출되는 메크로다.

finally constructor 와 같다.

메크로 형태이고 내부적으로 boost 라이브러리를 쓴다.

프로젝트의 부속으로 쓰일 수 있다.



[연재, code.google.com] cpp-project-template



C++ 프로젝트 만들거나 수정 할 수 있는 템플릿을 제공하다
정확인 뭔지는 모르겠다.
이 프로젝트를 컴파일 하려면 boost, qt4, log4cxx, unittest++를 설치 해야한다.




[연재, code.google.com] ann



게임 엔진이라고 하는데
게임관련 유틸 라이브러리이다.

zip관련 , 가상파일시스템 관련, 기타 유틸이 눈에 뛴다.


[연재, code.google.com] bwapi



스타크래프트 API라니!!!

꼭 한번 해보리라!!

[연재, code.google.com] kgui



cross platform gui 라는거 말고는 별 매력이 없음

window 스타일이 좀 구림


2009년 12월 22일 화요일

[연재, code.google.com] uri-grammar



URI(Uniform Resource Identifier)주소를 parsing 하기위해 Boost 라이브러리에 포함된 Spirit grammar 를 사용한다.

이 문법에서 파라메터로 사용자 정의 parsing action를 추가할수 있다.

원문을 보기 바란다.


[연재, code.google.com] tambores


타악기용 에뮬레이터 인데 중요한건 SDL(Simple Directmedia Layer)과 SDL확장 Boost를 썼다는 것이다.
SDL확장으로는 image, ttf, mixer를 썼다. 아래사이트 참조

참고로 드럼을 제작 해야 이 어플리케이션을 사용할 수 있다.

[연재, code.google.com] datagrambuilder




test/main.cpp 를 보게 되면 어떻 기능인지 알게 될 것이다.
테스트는 BoostTest를 썼다.

[연재, code.google.com] crisscross




CMake로 컴파일 하고 mercurial 에서는 empty로 나온다.

Download에서 받자

cross-platform에서 Thread-safe I/O, hashing, sorting algorithms, data structures, sockets적용하기 좋은 library이다.

[연재, code.google.com] greentimer



3.1 version까지 나온거 보면 단순하게 생각해서 만든게 아니라 본다
중국언어로 쓰였지만 시간내서 컴파일 해봐야 겠다.

GreenTimer 뭘까? ㅋㅋ

[연재, code.google.com] qdalton



Cross-platform(QT-base) GUI for Dalton quantum chemistry program

양자 화학 프로그램


2009년 12월 21일 월요일

[연재, code.google.com] lanremotecontrol



원격에서 windows의 volume/mute를 제어 합니다.

뭐 특별한게 있나 모르겠습니다.

컴파일 하려면 ATL(Active Template Library)확장인 WTL( Windows Template Library)를 설치해야 한다.

[연재, code.google.com] blitzzengine



2D game 개발 엔진 치고는 코드가 간결하다.

사소한 라이브러리까지 포함 하지 않고 최대한 가볍고 간결하게 만드려고 한것 같다.

시간 날때 응용해봐야 겠습니다.


[연재, code.google.com] ingame-console-command-system



제목은 거창 하지만 boost의 tokenizer와 lexical_cast의 응용이다.

콘솔 화이트 박스 테스트시 응용하면 좋을것 같다.

[연재, code.google.com] mathpresso



요거 쓸모있게 생겼내

수학적 표현식을 구문 분석을 통해 답을 찾는것인데

일반적인 수학API가 아닌 표현식을 제공한다는게 다른 것 같아.

로봇관련 수학 공식을 적용할때 매우 유용할 것 같다.

내용중에 Mathpresso가 JIT 컴파일러를 포함한다는데 무슨 소린지 모르겠다.

빌트인 타임시에 계산하는 것보다 런타임시에 계산하는게 더 빠르다는 소리인지?



[연재, code.google.com] cppe4x



xml 파서기 및 저작기 이다.

tinyxml 과 비슷하다. 성능은 모르겠지만




[연재, code.google.com] quadra



테트리스 게임이다.

single, multi, remote 에서 게임이 된다.

zlib, libpng, SDL 라이브러리가 필요하다.

참고로 SDL은 Simple DirectMedia Layer의 약자로 크로스 컴파일 가능한 멀티미이어 라이브러리 이다.

한글 문서


[연재, code.google.com] angel-engine



opengl 기반으로 작성된 2D 게임 엔진이다.

소스 받아서 컴파일 하니 MS_DLL_ID가 없다고 나온다.

python 설치 해야 하나보다.

[연재, code.google.com] mar1



엑션 게임이란다

이게임에 쓰인 라이브러리가 인상적이다.

다이렉트 3D는 기본이겠고

LUA라는 프로그램 언어를 가지고 개발 한것 같은데
궁금한 사항은 Lua언어자체의 특성을 C++(toLua)형태로 코딩해서 쓰것 같다.
더 자세히 알아보려면 코드를 분석 하라!
혹시 좋은 코딩 스타일을 배울수 있지 않을까.





[연재, code.google.com] QCTemplate



Google CTemplate기반을 둔 Qt framework용 Template Engine이다.
그럼 Template Engine이 뭐냐
위에서 언급한 Smarty, Django는 나름 많이 쓰이고 있는 Template Engine인데
이것은 비지니스 로직과 표현 로직을 분리의 목적을 두고 있습니다.

Source tap에서
mercurial 설치후 다운로드후 sln 파일을 실행 하시기 바랍니다.

Google ctemplate를 써보진 않았지만 강력하다고 합니다.
다들 자신의 프로젝트에 써보시길...



개발자로써의 2009년도 테그들


Eclipse RCP, Eclipse Plugin, OSGi, swt/jface
ACE Framework, boost library
Google code
Android, IPhone
OPRoS(Component, Task, Interpreter), OPRoS 시연


2009년 8월 20일 목요일

OPRoS 과제 1년을 돌아보며

장황하게 쓰일까봐 그냥
돌아보고싶지 않다.
한마디 하자면 "갈길이 멀다" 이다.
내가 알고있는 미들웨어는 명확하고, 쓰기 편하고, 다양한 기능을 제공하고 인데
OPRoS는 별로 명확하지 않고, 쓰기 편하고지도 않고, 다양한 기능을 제공하지 않는다.
그래서 좀 그렇다.
과제는 과제로란 말이 할필 내가 하는 이과제에서 생각날께.. 모람!!!!

지금은 android에 관심이 있어 자바를 공부 중이다.
이것저것 책을 샀는데 "자바 성능을 결정짓는 코딩 습관과 튜닝 이야기"를 보고 있다.
그런데 온라인 문서가 잘되서 그런지 좋은 자바책을 볼 수가 없다.

2009년 4월 5일 일요일

OPRoS 국가과제

내가 이과제를 시작한게 8년 9월이다 그면 7개월이란 시간이 흘렀다

이기간 동안에 난 뭘 배웠는가?

Middleware, Plugin, Component, ARIA, ...