2015년 12월 30일 수요일

12.30 lane-detection 프로젝트 공개


우리의 목표는 안드로이드폰과 아두이노를 통해 길을 찾아가는 자동차(실제크기는 아니에요 ㅠㅠ)를 만드는 것이다.

1.Lane Detection 알고리즘

-사진으로 설명을 하자

이게 안드로이드 핸드폰으로 들어온 사진이라고 하자.

우리는 이 사진을 Gray로 변환시키고 Gaussian Blur를 사용하여 경계를 최대한 없앤 후,
Canny Edge를 통해 경계를 찾아 이를 HoughLines로 경계를 찾아 이를 통해 길을 찾고, 얻은 데이터를 이용하여 Arduino를 Control 하는 것 이다.

Gray Conversion



Gaussian Blur


 Gaussian Blur 5*5
Gaussian Blur 11*11













Gray이미지와 Gaussian Blur 두 이미지의 차이가 육안으로 보기엔 거의 차이가 없어보인다.
하지만 각각의 이미지들에 Canny edges를 적용하면

Canny Edges

Gray에 바로 Canny입힌것
 Gaussian Blur 5*5에 Canny 입힌것
Gaussian Blur 11*11에 Canny입힌것













이처럼 눈에 보이지 않는 차이가 나는 것을 알 수 있다.
그리고 절반 아래의 부분에서의 데이터만 이용해도 길을 찾을 수 있다는 것을 알 수 있다.
이를 기반으로 11*11Blur를 이용하여 HoughLines를 사용하면

HoughLines

이처럼 길을 찾을 수 있다.







2.Android Studio에 적용하기

우선 개발환경은:
Ubuntu 15.10
Android studio 1.5.1
OpenCV 3.1.0

Android studio에서 주로 사용하는 언어가 Java임은 자명하지만 OpenCV는 C++기반의 오픈소스이므로 NDK를 이용하여 개발하는 것이 효율적 이다.
물론 Java의 Class를 사용하는것도 나쁘지 않지만, 알려진 Sample들이 모두 C++기반인 점과 Java의 Class들도 기본적으로 NDK가 적용됨을 고려하면 코드를 NDK로 작성하는게 효율적으로 보인다.

이정도를 참고해서 활용하자

3.시연 동영상

4.개선점

동영상을 보면 알겠지만 카메라가 왼쪽으로 치우쳐 있어서 오른쪽으로 쏠린채로 움직인다
이 점을 개선해야 하고 급한 커브를 돌 수 없는 점을 개선해야한다.


소스코드 GitHub

2015년 12월 10일 목요일

12.11 우분투 15.10 한영키에 super가 같이 입력되는 오류

하드를 다 밀어버리고 우분투를 설치했기에 한영 입력이 잘 설정되어있어 보였다.
그런데 한영키와 Alt-R을 구분 못하는 오류가 있어서 이를 수정했다.

나같은 경우 이 오류만 해결하면 됐기에 그 부분만 올린다.

1.[시스템 설정> 텍스트 입력창]에 들어가서 [다음 소스로 전환] 키 조합을 삭제
2.[시스템 설정> 키보드]에 들어가서 [허드를 표시할 키] 조합을 삭제

이러고 재시작하면 완료

12.10 우분투로 넘어가자

15.04이후로 네트워크 지원된다고 알려졌으므로 넘어가 보자(15.10으로 합니다.)

속았다 지원되기는 개뿔

일단 처음부터 차근차근 시작합시다.

1.저번부터 리눅스 자체가 튕기는 현상이 너무 심했는데 깔끔하게 해결됐다
그냥 커널 업그레이드만 해주면 되는문제

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

를 실행해 주자

2.Qualcomm Atheros Q61x4 wireless 관련

http://askubuntu.com/questions/607707/ath10k-installation/607982
의3번째 답변을 참고하자(커널 업데이트(2번) 하고 하면 확실하다)

2015년 12월 8일 화요일

12.08 OpenCV Visual Studio 2015 x64 환경설정



OpenCV를 전공수업에서 시작했다.
가르쳐주지도 않고 쓰라고 하신다.
이것뿐만이 아니라 안드로이드 개발'정도'는 다들 할 줄 안다고 생각한다...

그런데 이놈이 개발환경을 많이 탄다
심지어 x64, Visual Studio 2015(정확히 나의 개발환경)는 설정 하는 방법도 찾기 힘들다.
그래서 이걸 내 환경기반으로 설정하는 법을 공유하려고 한다.

VS2015, Win10 x64 에서 OpenCV설정법을 알아보자


준비물:


OpenCV 3.0
CMake
(당연하지만)Visual Studio 2015

설정 방법:


1. http://opencv.org/에서 OpenCV 3.0(windows) 다운로드 후
C:\OPENCV폴더에 압축을 풀자.
(새 폴더 생성시켜 압축풀면 OPENCV폴더에 opencv폴더가 생기는데 이대로 압축풀자)

2. https://cmake.org/에서 최신버전 CMake를 .exe버전으로 다운받아서 설치

3.CMake GUI버전 실행



Where is the source code에 C:/OPENCV/opencv/sources를 넣자

Where to build the binaries에 C:/OPENCV/op_builds 넣고

Configure 실행

Configure 끝나면 Generate

(나중에 build과정에서 오류가 난다면 여기서 고쳐야 하는 경우가 대부분이다. Configure하고 Generate하기 전에 항목에서 build과정에서 오류난 부분 제외하고 다시 Configure->Generate 해주자. 필자는 링크와 같이설정했다.)

Generate를 누르면 Generator선택에서 VS2015 x64를 선택하여 finish눌러주자


4.Visual Studio 2015로 C:/OPENCV/op_builds/OpenCV.sln를 열고 F7

5.환경변수 설정에서 시스템 변수, 사용자 변수에서 PATH에 C:\OPENCV\op_builds\bin\Debug,C:\OPENCV\op_builds\bin\Release를 추가
(그냥 bin폴더에 Debug, Release안에 있는 모든 파일 꺼내서 넣어놓고 C:\OPENCV\op_builds\bin만 추가해도 괜찮다.)

---------------여기까지가 항상 갖고가는 환경설정-----------------
이제부터는 하나의 프로젝트 만들때 마다 해줘야 하는 설정이다
1.Project 생성(빈프로젝트), project 속성 들어가자(그림처럼)
2.오른쪽 상단의 구성관리자 들어가서
그림과같이 바꿔준다.

3.구성관리자 나와서 C/C++->일반 에서
추가 포함 디렉터리에 
C:\OPENCV\opencv\build\include
C:\OPENCV\opencv\build\include\opencv
C:\OPENCV\opencv\build\include\opencv2
추가


4. 링커 -> 일반 추가 라이브러리 디렉터리에
C:\OPENCV\op_builds\lib\Debug
C:\OPENCV\op_builds\lib\Release
추가
5. 링커 -> 입력 추가 종속성에
opencv_calib3d300d.lib
opencv_core300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_highgui300d.lib
opencv_photo300d.lib
opencv_stitching300d.lib
opencv_videostab300d.lib
opencv_superres300d.lib
opencv_videoio300d.lib
opencv_imgcodecs300d.lib
opencv_shape300d.lib
opencv_hal300d.lib
추가
--------------------------------------이제 끝----------------------------------
테스트 해보자
소스코드를 방금 만든 프로젝트 파일에 넣어서 실행시켜본다
(*프로젝트 폴더 안에 프로젝트 파일이 있는 폴더에 사진을 넣고, 소스코드의 27번째줄 Koala.jpg를 사진 이름으로 바꿔준다.)

또한 OpenCV.org에 Tutorial들로 공부합시다.

12.08 아두이노 프로젝트 소스



범퍼카 소스

앞뒤로 초음파센서 달고
라인트레이서 달아서 정사각형 박스 안에서 싸우는 범퍼카
ENA,ENB출력을 analog가 아닌 digital로 하면 더 빨리 움직인다고 함
















라인트레이서 소스

앞에 라인트레이서 3개달아서 하는 소스(Left-Handed)
5개 달면 훨씬 쉽다
3개가 라인보다 더 넓은 간격으로 배치되는게 핵심
좁은간격으로 하는 방법도 있다고 한다

이걸로 각각 1등함

그리고 이상적인 상황에서 구현하려고 했던 라인트레이서 소스
**한번 left-handed로 가서 완주한 뒤에는 최단거리로 가는 방식
**디버깅이 좀 더 필요하다

아 그리고 이제 우분투에서 Atheros qca61x4 지원이 된다고 한다

빨리 넘어가야겠다.

2015년 10월 26일 월요일

10.26 리눅스 현상황

와이파이 인식 문제와 usb 인식 문제가 너무 심각하여 포기...

이제 리눅스 전용 컴퓨터 구입 전까지 C/Python 관련해서 공부하는걸로 하자

snuon에서 프로그래밍 방법론 강의가 있다 여기서 심도있게 하자


문제 출제/채점 사이트
http://59.23.113.171/index.php

https://algospot.com/

https://www.acmicpc.net/

2015년 9월 30일 수요일

09.30 Kali Linux 2.0 [START]

9.30 no Hangul Tlqkf, still no wifi :(

You should login by username "root" for the first-time use

In Kali Linux 2.0, Hangul crashes.
So you need to download 'nanum' font

For google chrome use:
Install
You can't use chrome even after installing it
So you need a new user by looking here

오 이제 한글 됨

뭐로되는건지 모르겠음

제일 마지막으로 한건 fcitx

2015년 9월 29일 화요일

Node.js 입문 - (5) post 방식을 이용한 간단한 로그인

GET방식은 주소창에 모든 parameter의 값이 뜨는 방식이므로 로그인에는 적합하지 않다 따라서 주소창에 뜨지않는 POST 방식을 이용해 보자 우선 main.js 파일을 module.exports = function(app){ a...