2015년 11월 29일 일요일

안드로이드 app 개발현황(2015-11-30)

목적지 검색 부분을 수정하고 인터페이스를 새롭게 추가했다.

먼저 '~역' 으로 끝나는 목적지 이름이 거의 없기 때문에 무조건 지하철 역이라고 간주했다.
Tmap API에서는 '~역' 검색 시 그게 지하철역 이름이라면 POI검색에 첫번째에 나타내 주기 때문에 쉽게 가능하다. 그리고 사용자에게 지하철 역이라는 음성안내를 해준다.








그리고 지하철역이 아닌 일반 목적지들은 검색조건을 만족하는 것들 중 현재위치와 근접해 있는 POI들이 거리에 따라 내림차순으로 인덱스에 저장된다. (이 또한 문제가 되는 경우의수가 발생할 것 같다. 다른 방법으로는 POI 전체를 현재 위치와 가까운 순서대로 오름차순으로 인덱스에 저장하는 방법이 있다.)

















인덱스가 만들어지면 현재위치와 가장 가까운 순서대로(인덱스의 역순) 사용자에게 최종
목적지를 음성인식을 통해 확인받는다. checkDes 클래스는 TmapAPI 클래스에서 목적지 안내에 대한 음성이 나온 후 불리게 된다. 만약 원하는 목적지가 맞다면 checkDes에서 1을 리턴하고 아니라면 -1을 리턴하게 되고 그 값을 전달받은 TmapAPI 클래스는 무한루프에서 빠져나오게 되고 userchoose가 1이면 그곳을 최종 목적지로 선정하고 -1이면 다음 인덱스의 목적지를 사용자에게 확인받는다.





















작성자 : 최윤호

2015년 11월 22일 일요일

아두이노(2015-11-22) - 칼만 필터

이번부터 새로 아두이노에 대해서 공부를 했다.

내가 이번에 본 부분은 parsing해야 하는 부분이였다.


이게 현재 잘되는 예시다.
저번에 봣던것처럼 튕기지는 않는다.

우리가 만든 코드를 보면 주로 가속도 센서 + 자이로 센서를 사용하게 된다.
그런데 칼만 필터라는 것을 사용하면 훨씬 더 좋은 값을 가져올 수 있다(위에 처럼)

그래서 이번 주말에 주로 칼만필터에 대해서 공부를 해봤다.

https://ko.wikipedia.org/wiki/%EC%B9%BC%EB%A7%8C_%ED%95%84%ED%84%B0#.EC.B9.BC.EB.A7.8C_.ED.95.84.ED.84.B0.EC.9D.98_.EC.A0.81.EC.9A

위에 주소는 칼만 필터에 대해서 위키백과로 이어지는 하이퍼링크다
굉장히 어렵다.


일단 간단하게, 가속도 센서가 움직이는걸 설명해보면,
가만히 있을때, 센서에 작용하는 '중력가속도'를 X,Y,Z축으로 벡터로 나누어서 크기를 측정하는 것이다. 움직이다가 원래 자리로 오면 값이 '거의'비슷해집니다.

자이로 센서는 센서의 회전에 대해서 각속도 변화량을 측정해줍니다.
문제는 '적분'......
쨋든, 적분을 하면 오차가 계속 누적이 된다.


이 각각의 센서의 장점은 있습니다.
가속도 센서는 오차가 거의 없다는거고,
자이로 센서는 정확도가 좋다는 것입니다.

이 2개를 모아놓은게 칼만필터입니다.


저희가 썻던 '상보필터'보다 좀더 정확하지만
굉장히 난해하다는 단점이 있따..

2015년 11월 2일 월요일

안드로이드 app 개발현황(2015-10-26 ~ 2015-11-01)

이번에 고려했던 app의 기능은 부분집합이다.

예를들어보자.

- 가천대학교

를 검색한다고 해보자

실제로 검색을 하면 가천대학교가 나오지만
이런것도 나온다
- 알촌 가천대점

이번엔 이러한 부분을 좀 더 정확하게 하기 위해서
약간의 부분을 추가하였다.
Source = new TMapPoint(SourLatitude, SourLongitude);int i=0,j=0;double shortest=0.0;Log.d("poi개수", poiItem.size() + "");for(i = 0; i < poiItem.size(); i++) {
    TMapPOIItem item = poiItem.get(i);    Log.d("z","POI Name: " + item.getPOIName().toString() + ", " + "Address: " + item.getPOIAddress().replace("null", ""));}
for (i=0; i<poiItem.size(); i++)
{
    if ( !poiItem.get(i).getPOIName().contains(des))
        continue;    double distance = poiItem.get(i).getDistance(Source);    if (i==0)
        shortest=distance;    else    {
        if (shortest >= distance)
        {
            Log.d("더 가까운 곳 발견", " ");            shortest = distance;            j=i;        }
    }

DB에 있는 데이터를 가져온다
이때 데이터는 내가 말한 위치랑 같은(또는 비슷한) 데이터다
그 데이터의 거리를 가져와서
현재 위치의 위도, 경도와 비교를 해서
가장 가까운 곳의 위치를 찾는다.

그런데, 그 위치가 아까 말했듯이 다른곳일수도 있다
알촌-가천대점 <-- 이곳이 더 가까우면
이곳이 목적지로 잡히는 것이다.
그렇기 때문에 그부분을 보안했다.

여기서 더 보안해야할 점은




이제 '강남역'을 찾을때
'알촌 강남역점'도 나온다.
문제는 강남역<-- 이 단어가 모두 들어갔기때문에
이곳이 더 가까우면 이곳을 찾게 된다.
이것만 해결하면 이 기능은 완벽해질 것이다.




다음은 APP UI에 대해서 고민을 해봤다.
가천대학교 app이다
생각보다 깔끔해 보여서 처음 시작을 이런식으로 놓으면 어떨지 생각을 해보았다.
 
리스트뷰를 생각해보았다.
리스트뷰는 이렇게 이름과 위치를 보여주고
옆에 버튼으로 '바로 찾기', 이런식으로 보여주고
위에 버튼에는 새로 만들기, 찾기 이런 기능을 넣을 생각도 하고 있다.
더 쉽게 옵션으로 넣거나, context menu도 생각하고 있다.
 
 
세번째
아예 매뉴 자체를 다 STT로 하는 것이다.
이 app의 주목적은 시각장애인이 사용 하는 것이다.
시각장애인이 버튼을 누르기는 힘들기 때문에
모든 것을 말로 하는 것을 생각하고 있다.
(사실 이부분을 해봤었는데 실패한 적이 있다.)
 
 
 
점점 더 기능을 추가할 예정이다.