아주 오래 전, 그렇다고 호랑이가 담배 팔 던 시기까지는 아닌 그 즈음에 연구실에 로봇이 여러 대 들어왔다. 어찌된 영문인지는 알 바 없으나, 풀 세트를 갖춘 로봇부터 남은 돈 처리하기 위해 끼워 넣은 장난감 수준의 로봇까지, 그렇게 4 종류의 로봇이 들어왔다.
왼쪽- AmigoBot, 오른쪽- P3-AT
그러나 그동안 별로 관심이 없었기 때문에 다루질 않았더니 먼지만 가득히 쌓여간다. 왠지 모르게 불쌍해 보이더라. 최근들어 갑자기 이것들을 굴려보면 재밌을 것 같다는 생각이 들기 시작했다. 생긴건 별 것 없어보여도 자동차 한 대 값 정도 나가는 것들도 있다보니, 그리고 난 어엿한 학생이니까, 정말 열심히 굴려서 한 번 망가뜨려보고 싶은 충동이 탄력받은 근육마냥 불끈불끈 거린다.
근 3일간의 뻘짓을 통해 개발 환경을 구축했다. 진짜 말 그대로 뻘 짓을 얼마나 많이 했는지, 벌써 "아- 할 것 다 했네, 이제 그만할까?" 하는 생각이 샘솟는다.
1. ARIA 라이브러리 컴파일
첫 번째로 한 작업은 로봇 구동 라이브러리의 설치이다. 이것은 윈도우/리눅스 버전으로 제공되는데 내가 극도로 비주얼 스튜디오를 싫어하기 때문에 윈도우는 개발 환경에서 제외시켰다. 일단 cygwin을 설치하고 그 위에서 컴파일을 시도했는데 실패! log 함수가 어디선가 미리 정의되어있다는 이야기만 반복될 뿐 진전이 없었다. 진작에 포기했었으면 좋았으련만 사나이의 오기가 발동해서 별짓 다 해보다가 결국 포기. 혜진이한테 빌린 컴퓨터에 fedora를 설치했다.
그러나 한가지 (사실 백만가지지만 진짜 이건 말도 안되는 뻘짓들이라 생략) 문제가 있었는데 fedora 9 에서는 INT_MAX가 없다고 징징거린다. 나중에 안 사실인데 limits.h (던가?) 를 추가로 include 해야 한다더라. 하지만 난 이미 fedora 8 을 깔아버렸고, 컴파일에 성공했다. 간단한 데모 프로그램도 구동 완료!
2. 유틸리티 설치
이번엔 유틸리티를 설치할 차례이다. 다음에 다시 제대로 언급하겠지만 MobileRobots사의 로봇들은 ARIA interface를 기반으로 작성되는데, 이 위에 추가적으로 navigation과 localization을 위한 라이브러리(ARNL)를 제공한다. 그리고 이를 지원하기 위한 툴로 Mapper, MobileEye를 제공하며, 이와 함께 MobileSim 시뮬레이터를 제공한다.
문제는 이러한 유틸리티들이 이게 워낙 오래된 버전의 리눅스로 개발되었고 소스 없이 바이너리로 배포된다는 것이다. 따라서 라이브러리 호환에 문제가 발생한다. GUI 기반 유틸리티들은 하나같이 libXft.so.1 을 찾는데 언제부터인지는 모르겠지만 요즘의 리눅스들은 libXft.so.2 를 사용하고 있다. (이게 뭐하는 라이브러리인가는 내게 중요하지 않을 뿐더러 관심도 없다) 이를 해결하는 방법은 구글에서 libXft.so.1 로 검색하면 그것을 포함하는 rpm 패키지가 나오고, 이것을 풀어서 해당 파일만 찾아서 /usr/lib 에 복사하고 libXft.so.1 로 심볼릭링크를 걸면 된다.
3. AmigoBot 무선 인터넷 설정
P3-DX, P3-AT, PeopleBot은 로봇에 PC가 내장된 반면 AmigoBot은 그렇지 않다. 따라서 AmigoBot을 구동하기 위해서는 serial port로 연결하거나 무선 인터넷 통신을 이용해야 한다. 개똥같은 통신기기가 왜 이리도 설정이 안되는지, 설정 화면으로 넘어가는 것 부터가 문제였다. AmigoBot의 통신기기로 접속하기 위해서는 통신 기기의 첫번째 serial port와 PC를 연결하고 하이퍼터미널로 접속한 뒤 키보드 x 를 누른 상태에서 AmigoBot의 전원을 넣으면 된다. 반드시 먼저 하이퍼터미널로 접속 후 x 를 누른 체 전원을 넣어라!
통신 기기를 설정하는 방법은 두가지이다. 하나는 스스로 AP가 되는 것이고, 하나는 다른 AP로부터 IP를 받아오는 것이다. 우선 첫번째 방법을 시도하였으나 윈도우에서는 AmigoBot으로 잘 접속되는데 리눅스에서는 무선랜이 개똥같아서 포기, 결국 AmigoBot에 IP를 할당하고 유선랜으로 접속하였다. 이 때 AmigoBot이 IP를 설정하는 데에 다소 시간이 걸릴 수 있다. 전원 켜 놓고 왜 안되냐고 징징거리지 말고 느긋한 마음으로 있는 힘껏 노려보자. AP에서는 로봇이 IP를 0.0.0.0 으로 받아갔다고 옹알대는데 너무 신경 쓸 필요는 없다. AmigoBot 통신기기의 IP를 고정으로 설정하고 전원을 넣은 뒤 ping을 때려보자. 메아리가 울리면 성공!
4. P3-AT 무선 인터넷 설정
P3-AT는 PC가 내장되어 있으며, 데비안 리눅스가 기본으로 설치되어있다. 부팅 시 무선랜을 활성화시키지 않기 때문에 별도로 무선랜을 활성화시켜주어야 한다. 먼저 ifconfig ath0 up 을 입력하여 무선랜을 활성화한다. 그리고나서 iwconfig ath0 essid ai-wireless-ap01 을 입력하여 무선랜을 무선 AP로 연결시킨다. 그리고 dhclient ath0 를 입력하면 DHCP를 이용하여 무선랜이 IP를 받아오게 된다. ping을 때려보자. 메아리가 울리면 성공!
5. X11 forwarding
자, 이제 마지막이다. 리눅스 머신에 개발 환경을 구축했다고 해서 반드시 리눅스 머신 앞에 앉아서 작업할 필요는 없다. 윈도우에 원격 데스크탑이 있다면 리눅스에는 X11 forwarding이 있다. Putty 같은 ssh 클라이언트의 X11 설정에서 X11 forwarding을 체크하던가 ssh 커맨드 옵션으로 -X 를 주자. 단, 이 때 자신의 컴퓨터에서는 X 서버가 돌고 있어야 한다. (Xming 같은 응용 프로그램을 쓰면 된다) 이제 gnome-terminal & 을 입력하면 자신의 모니터에서 그놈 셸이 뜰 것이다. 이클립스는 X11 forwarding 시 다소 느린 퍼포먼스를 보이는데 이유는 아직 모르겠다. 새로 발표된 GANYMEDE의 문제일 지도 모른다. 나중에 EUROPA 버전을 설치해서 확인해봐야겠다.
조금 큰 모니터와 X11 forwarding
오늘은 개발 환경 구축에 대해 살펴보았다. 개발 환경을 구축하는데에 무려 3일이나 걸렸다. 로봇 구동에도 어려움이 많았지만 보다 근본적으로 모르는게 너무나 많았기 때문이다. 이제 얼추 알았으니, 다시 구축하라고 하면 리눅스를 설치하는 시간 외에는 얼마 걸리지 않을 듯 싶다.
다음 시간에는 MobileRobot 플랫폼의 구동 라이브러리인 ARIA에 대해 살펴볼 예정이다. 캠코더라도 빌릴 수 있으면 다음엔 동영상도 함께 올려봐야겠다.
와... 평소에 저렇게 책상이 깨끗, 깔끔 했다면...
이렇게 변할 줄이야!!
저렇게 계속 좀;;
아하하하- 응;;; 그렇게 할께요;;;
종종 청소 하는데, 종종 지저분해지는걸 잉잉_