이전 포스트에서 소개했던 모바일 프로세싱을 실제 사용해 보도록 하겠다.

노키아 6210S를 구입한 사람들도 많아졌고 최근 노키아 5800 Music edition이 판매되기 시작하여 Symbian S60을 사용하는 사람들이 많이 늘어났기 때문에 모바일 프로세싱을 실제 폰에서 사용해 보기가 매우 편해졌다.

모바일 프로세싱을 설치해 주려면 Java, Java Wireless Toolkit for CLDC (WTK, 현재 최신버젼은 2.5.2_01이다), mobile processing까지 총 3개의 파일이 필요하다.
JavaWTK는 sun의 웹 사이트에서 다운받을 수 있고 mobile processing은 모바일 프로세싱 홈페이지에서 다운받으면 된다.

파일을 다 다운받았으면 먼저 java를 설치해준다. 이미 설치되어 있는 경우 이 단계는 건너뛰면 된다. 그 다음 WTK를 설치해 준다. 그리고 WTK가 설치된 위치를 기록해 놓는다. (디폴트는 c:\wtk2.5.2_01 이다.)
마지막으로 다운받은 mobile processing 파일의 압축을 풀어준다. 모바일 프로세싱은 별도의 설치 과정이 필요없이 그냥 압축을 풀어주면 된다.


압축을 풀면 위와 같은 파일이 보인다. 여기서 'mobile'을 더블클릭해서 실행해 주면 된다. (별도의 설치과정이 없기때문에 시작메뉴에도 자동으로 등록되지 않는다.)


모바일 프로세싱을 실행시킨 화면이다. 프로세싱 화면과 거의 동일하다. 다만 모바일 프로세싱을 사용하려면 먼저 환경설정을 해 줘야 한다.


File->Preferences 를 선택한다.


Preferences 창이 열리면 Mobile 탭을 선택한다.


이 화면에서 아까 설치한 WTK의 위치를 지정해 줘야 한다. 그리고 자신이 사용할 폰의 CLDC와 MIDP 버젼을 지정해준다. 최근 1~2년 사이에 나온 폰들이면 거의 다 CLDC 1.1과 MIDP 2.0을 지원한다. 자세한 내용은 각 폰의 technical specification을 참조하면 된다.

여기까지 하면 모든 설정이 끝나고 모바일 프로세싱을 사용할 수 있다.


테스트를 위해 File->Example에서 예제를 하나 선택해 보겠다. 여기서는 keypad를 선택했다.


화면 위쪽의 아이콘들 중에 가장 왼쪽의 삼각형 버튼을 누르면 프로그램을 컴파일하고 폰 에뮬레이터에서 실행을 해 준다.


실행을 시키면 이런 폰 에뮬레이터 창이 뜨고 프로그램이 로드된 걸 볼 수 있다. 로드된 프로그램을 실행하려면 오른쪽 소프트키(화면 오른쪽 아래 Launch 표시 바로 아래쪽의 '.' 버튼)를 눌러주면 된다.


'keypad' 프로그램이 실행된 화면이다. 프로그램을 종료하려면 왼쪽 소프트키를 눌러주면 된다.


'keypad' 프로그램은 숫자키패드를 누르면 그에 해당하는 수직막대기를 화면에 그려주는 프로그램이다. 몇개의 숫자키를 눌렀을 때 화면이다.

이 런 식으로 작성한 프로그램을 실제 폰이 없는 경우에도 컴퓨터 상에서 테스트가 가능하다. 디버깅이 다 끝났으면 만들어 진 프로그램을 직접 폰에서 실행시킬수도 있다.


File->Export MIDlet 을 선택하면 이 소스코드를 폰에서 실행할 수 있는 JAVA MIDlet으로 만들어준다.


위에서 Export MIDlet을 선택하면 keypad.jar 파일을 만들고 탐색기에서 그 파일이 들어있는 폴더를 자동으로 열어준다.


이제 만들어 진 파일을 폰으로 넣어주기만 하면 된다. MicroSD카드에 복사해서 옮겨도 되지만 여기서는 블루투스를 이용해 옮겨보겠다. (단 폰은 미리 컴퓨터와 페어링 되어 있어야 한다.) 'keypad.jar'파일을 선택한 다음 마우스 오른쪽 클릭해서 Send to->Bluetooth device를 선택한다.


Bluetooth File Transfer 창이 열리고 블루투스 디바이스들을 보여준다. 원하는 폰을 선택해주면 된다.



이렇게 전송이 끝났으면 폰에서 받은 프로그램을 설치할거냐고 물어본다. 설치해 준 다음 프로그램을 실행시키면 위의 시뮬레이터에서 본 것과 동일하게 움직이는걸 볼 수 있을 것이다.

모바일 프로세싱은 이전에 프로세싱이나 아뒤노를 사용해 본 사람이라면 거의 동일한 구조와 문법을 사용하기 때문에 배우기 쉽고 폰 프로그래밍을 할 때 단말기별로 신경써야 하는 것들을 알아서 처리해주기 때문에 매우 편리하다.

또한 단순히 키패드 입력, 화면 제어뿐 아니고 폰의 블루투스 통신도 프로그래밍이 가능하기 때문에 임베디드쪽으로도 다양하게 응용이 가능하다. 아뒤노에 블루투스 모듈을 붙이고 모바일 프로세싱으로 폰과 통신을 하게 해 주면 폰을 아뒤노의 입출력 디바이스 또는 리모컨으로 이용할 수도 있기 때문에 다양한 응용이 가능하다.
Posted by nautes

댓글을 달아 주세요

  1. 2010.03.07 22:52

    아 정말 잘보고 갑니다^^

  2. 2010.03.07 23:12

    mobile processing 을 한번 실행하고
    끄고 다시 실행했을때
    settings issues 라는 경고창이 뜨는데
    어떻게 해야할까요 ?>??

3G iPhone에 추가되었다는 A-GPS에 대해 사람들이 착각을 하는 경우가 많다.


main_maps20080609.jpg

Assisted라는 단어 때문에 그 동안 2G iPhone에서 wifi access point를 통하거나 현재 한국에서 위치찾기에 사용하는 식으로 휴대폰 기지국 신호를 가지고 대강의 현재 위치를 파악하는 pseudo GPS같은 방식이라고 생각하는 사람들이 많이 있다.

하지만 실제로 A-GPS는 정확한 위치를 파악하는데 정지궤도상에 떠 있는 GPS위성의 신호를 사용한다. Assisted라는 단어가 앞에 붙은 이유는 GPS의 성능을 향상시키기 위해 추가적으로 wifi나 기지국의 도움을 받기 때문이다. 실제 A-GPS는 미국 FCC가 휴대폰에서 걸려오는 911(응급전화)의 경우 경찰이나 소방서같은 기관에서 휴대폰의 위치를 자동으로 파악할 수 있도록 하는 E911을 의무화 시킴으로서 개발이 가속화 되었다.


사용자 삽입 이미지

GPS시스템은 약 20,200km 상공의 MEO(Medium Earth Orbit)에 24개의 GPS위성이 운용되고 있다. (참고로 원래 GPS는 군용으로 만들어져서 초기에는 군용으로만 사용되었는데 1983년 KAL007편 격추 사건 이후 레이건이 민간에 사용을 허가하도록 했다. 다만 군용에 비해 민간용 코드는 오차범위가 크다)

사용자 삽입 이미지

위의 그림이 GPS의 동작 원리이다. 현 위치에서 최소 3개 이상의 위성에서부터 신호를 수신해서 자신과 각 위성과의 거리를 계산하고 그 거리를 이용해서 삼각측량 방식으로 자신의 위치를 계산해 낼 수 있다. 위 그림에서처럼 3개 위성과의 정확한 거리를 알 수 있으면 3개의 위성만으로도 자신의 정확한 위치를 계산할 수 있지만 실제로는 여러가지 오차들 때문에 위성과의 거리가 100% 정확하지 않기 때문에 3개의 위성만으로는 위치계산이 힘들고 더 많은 위성이 필요하고 그래도 어느 정도의 오차는 피할 수 없다.

현재 사용되고 있는 GPS의 경우 위성에서 신호를 받아오기 위해서는 수신기와 위성간에 LoS (line-of-sight)가 확보되어야 하는데 커다란 나무나 도심의 빌딩들 사이에 있는 경우, 또는 실내에서는 위성의 신호를 제대로 받아올 수 가 없다. 그리고 꺼져있던 수신기가 이런 상황에서 처음으로 켜지면 위성에서 almanac과 ephemeris정보를 다운받을 수가 없기 때문에 나중에 깨끗한 위성신호를 받을 수 있는 곳으로 나가도 위치를 파악하는데 1분 이상이 걸릴 수 있다.

A-GPS는 이런 문제점들을 해결하기 위해 GPS위성신호에 추가적으로 assistance server를 사용한다.


agps.jpg

* Assistance server는 자신의 정확한 위치를 GPS신호를 수신해서 알고 있고 충분한 컴퓨팅 파워가 있기 때문에 휴대폰 신호를 분석해서 휴대폰의 대강의 위치를 계산할 수 있다. 그러므로 E911같은 경우 휴대폰이 GPS신호를 받지 못해 정확한 위치를 제공해주지 않아도 E911에 대강의 위치를 알려줄 수 있다.

* Assistance server는 휴대폰에게 위성의 궤도정보를 제공해 줄 수 있기 때문에 휴대폰이 그 정보를 이용해 빠르고 정확하게 GPS 위성신호를 잡을 수 있게 해 준다.

* Assistance server에서는 GPS신호의 오차에 영향을 미치는 ionospheric condition등에 대해 정확하게 측정할 수 있기 때문에 그 정보를 휴대폰에 전송해 줘서 휴대폰이 위성에서 수신한 신호를 사용해서 훨씬 정확한 위치를 계산할 수 있게 해 줄 수 있다.

일부 A-GPS는 위치를 파악하기 위해 기지국과의 연결이 필수적인 경우도 있고, 다른 경우는 기지국과 연결되면 좀 더 빠르고 정확하게 위치를 파악할 수 있지만 기지국과 연결이 필수적이지 않은 경우도 있다.

--

애플 사이트의 3G iPhone 페이지에 보면 iPhone 3G에 사용한 위치파악 방법에 대해 설명(http://www.apple.com/iphone/features/gps.html)하고 있다.

빠른 시간내에 가장 정확한 위치를 찾아내기 위해 GPS위성, Wi-fi 핫스팟, 셀타워에서의 신호를 사용한다. GPS 신호를 수신할 수 있으면 아이폰은 파란색의 GPS 인디케이터를 표시한다. 하지만 실내인 경우 (GPS위성과의 LoS가 유지되지 않는 경우) 아이폰은 wifi를 사용해서 위치를 파악한다. Wifi 핫스팟의 범위에도 들어있지 않은 경우는 셀타워를 사용해서 위치를 파악한다. 위치를 알려주는 원의 크기를 통해 아이폰이 계산한 위치가 얼마나 정확한가를 알려준다. 즉 원이 작을수록 더 정확한 위치라는 말이다.

--

즉 3G iPhone에서 위치파악하는 기능이 GPS 위성을 사용하는게 아니라거나 셀타워와 연결되어야만 한다는 말은 모두 잘못된 정보이다.

Posted by nautes

댓글을 달아 주세요

  1. 2008.06.19 18:26

    지구가 평면이라면 이론적으로 3개 위성만으로도 정확한 위치파악이 가능합니다.
    그러나 아시다시피 지구는 평면이 아닙니다. 따라서 4개의 위성이 있어야 위치를 제대로 파악할 수 있습니다.
    물론 기본적으로 GPS를 통해 위치계산을 하기 위해서는 해당 지역의 평균 고도값을 주기 때문에, 크게 오차는 나지 않습니다만...

  2. 2008.06.19 20:15

    휴대용 GPS 맵 단말기를 사용중인데요... 일반 GPS 단말기에서도 wifi나 무선망 신호를 받아서, 초기 위성 찾는 시간을 줄여주면 좋겠어요...

    근데, 생각해 보니 몇 년 지나면, 휴대용 GPS 단말기 보다는 그냥 GPS 기능이 있는 휴대폰을 구입하는 것이 더 좋겠네요.. ^^;; 야외에서 사용할 수 있게 배터리 오래가고 튼튼한 GPS 휴대폰 나오면 좋겠습니다. (12시간 이상, AA 배터리 이용, 간단한 방수, 사림 키 정도에서 떨어뜨려도 괜찮은 정도로.. )

  3. 2008.06.20 14:50

    싸이파이님 께서 생각 안하신게 있네요 위성과 지상의 거리는 정해져있기 때문에 3개여도 괜찮습니다.

  4. 2008.06.23 17:50

    불량불곰님.. 위성과 지상의 거리가 정해져있다.. 하심은 어떤 의미이신지...
    지상 고도에 따라서 위성이 오르락내리락 하신다는 말씀은 아니실 것 같고..

    물론 위성의 고도에서 보자면, 지구 전체 표면의 고도 편차가 그렇게 크지 않은 것은 사실이고,
    그것 때문에, 3차원으로 나타나야할 GPS의 위치값에서, 고도 부분의 에러가 제일 크게 나는 것도 사실이지만,
    '이론적'으로는 4개가 되어야 하는게 맞는 것으로 알고 있습니다.

    괜히 Tech Viator님의 좋은 글에 와서 논쟁하는 것 같아서 좀 죄송스럽습니다만...

  5. 2008.08.25 15:57

    자세한 자료 감사합니다.

  6. 2009.04.01 11:09

    gps 위성이 3개가 fix 되면 2차원적인 좌표를 알수가 있고
    4개가 fix 되면 높이까지 알수가 있습니다.

  7. 2009.07.25 10:52

    아이폰의 경우에는 그닥 오차를 모르겠던데요.. 구글지도 펴놓고 자신위치를 정확하게 표시해주던데...

    빌딩사이에 있을 경우... 정확하게 저의 위치인 큰빌딩으로부터 남동쪽 횡단보도 앞에 있으면 잘 표시를 해주던데요...
    (일본 아이폰기준으로...)

    저기에서 말하는 오차라는 건.. 음 좀더 세부적이고 전문적으로의 오차를 뜻하는 건가요?

    지나가다 흥미로운 글을 발견해서 읽고 글을 남기고 있습니다

  8. 2009.08.10 09:24

    agps 수신받는 코드는 어디서 구하는지 아시나여?

    테스트좀 해보려고

    서치중인데 도대체 안나오네요 ㅎㅎ

    sgps랑 수신받는 코드가 틀리나요?

  9. 2009.12.31 17:34

    GPS에대해서 자세히 알아갑니다~ 감사합니다~

  10. 2010.10.04 22:59

    위성개수에 대해 많이 다르게 알고 계신듯 하여 몇글자 적고 갑니다.
    타원이냐 평면이냐는 무관합니다.
    일단 3차원 세계이므로 미지수가 XYZ 3개 입니다. 이 값을 알기 위해서 3개의 위성이 기본적으로 필요합니다.
    그러나...
    삼각측량을 위해서는 위성과 GPS 수신기 사이의 거리를 알아야 합니다.
    이 거리는 위성에 탑재된 초정밀 시계와 수신기의 시간차이를 통해서 구하게 됩니다
    여기서 문제가 발생합니다
    정밀한 위성시계와 비교적 정밀하지 못한 수신기 시계의 차이를 보정하기 위해서 위성이 하나더 필요하게 됩니다.
    그래서 일반적으로 GPS 위성이 위치를 잡기위해서는 4개의 위성이 필요합니다.

    • 2010.10.05 01:23 신고

      위에 써 놓은 내용은 GPS의 기술적 내용을 잘 모르는 사람들을 위해 동작원리를 설명하기 위한 것이지 아주 세부적인 사항까지 포함하지 않은 것입니다. 말씀하신 부분까지 포함하려면 저 정도 분량으로는 어림도 없죠.
      그리고 4개도 최소한의 갯수일 뿐 실제적으로 어느 정도 정확한 위치를 파악하려면 더 여러개의 위성신호를 트래킹해야 합니다.

이전버튼 1 이전버튼