[ROS] 얼굴인식(face recognition): Raspberry Pi + face_recognition

지난 글에서는 얼굴 탐지에 대한 기능을 구현해 보았습니다: [ROS] 얼굴탐지(face detection) 얼굴 탐지는 카메라(이미지)에서 얼굴에 해당하는 부분을 사각형 부분으로 탐지하는 기술을 말합니다. 이번 글에서는 같은 환경에서 누구인지 판별할 수 있는 얼굴 인식(face recognition) 기능을 구현해 보도록 하겠습니다. Step 1. Main Structure 얼굴 인식 기능은 연산 처리가 많기 때문에 computing resources를 많이 사용하는 기능입니다. 그래서 이번에는 cloud…

[ROS] 얼굴탐지(face detection): Raspberry Pi + libfacedetection

라즈베리파이의 카메라를 통해서 얼굴 인식을 하는 기능을 ROS로 구현해 봅시다.   Step 1. Camera Module 필자는 라즈베리파이용 카메라인 “파이카메라”를 구입하였습니다. 파이카메라는 라즈베리파이의 가운데 부분에 연결해야 합니다. 라즈베리파이 보드를 잘 보면 하얀 글씨로 “CAMERA”라고 printing 되어 있는 부분입니다.  라즈베리파이와 카메라 모듈을 안정적으로 연결하면 성공입니다. ROS에서 카메라 입력을 위하여 “uvc_camera”를 사용하였습니다.   Step 2. face detection 필자의…

[ROS] 설치하기: Raspberry Pi + Ubuntu Mate + ROS Kinetic

Start: ROS를 시작해 봅시다 재료(설치 환경)는 다음과 같습니다. Raspberry Pi 3 Model B Ubuntu Mate 16.04.2 (Xenial) ROS kinetic version ROS의 버전은, 2007년 스탠포드 대학 인공지능 연구소에서 시작된 “Switchyard”가 초기 버전이며, 그 이후 2010년 “Box Turtle”을 기점으로 알파벳 순서로 버전이 업데이트 되고 있습니다. 필자는 “Kinetic” 버전을 설치하였습니다.   공식 홈페이지에서 버전에 관한 정보를 제공하고 있습니다. (http://wiki.ros.org/Distributions)…

[ROS] 설치하기: Raspberry Pi + Ubuntu Mate + ROS Lunar

Start: ROS를 시작해 봅시다 재료(설치 환경)는 다음과 같습니다. Raspberry Pi 3 Model B Ubuntu Mate 16.04.2 (Xenial) ROS lunar version ROS의 버전은, 2007년 스탠포드 대학 인공지능 연구소에서 시작된 “Switchyard”가 초기 버전이며, 그 이후 2010년 “Box Turtle”을 기점으로 알파벳 순서로 버전이 업데이트 되고 있습니다. 필자는 “Lunar” 버전을 설치하였습니다. 공식 홈페이지에서 버전에 관한 정보를 제공하고 있습니다. (http://wiki.ros.org/Distributions) 혹시…

[Android] UPnP IGD 올리기 (upnp igd porting, cross compile)

  UPnP 기능은 어떤 장치를 연결할 때, 사용자가 설정을 해 주지 않아도 알아서 편리하게 연결이 되도록 하는 자동 연결 지원 프로토콜이다. UPnP 기능은 하위 여러 기능들을 포함하고 있는데, 그 중 IGD(Internet Gateway Device)는 장치들 간의 UPnP 연결에 있어서 중간다리 역활을 하는 기능이다. 아래는 Wikipedia의 내용이다. 유니버설 플러그 앤 플레이 위키백과, 우리 모두의 백과사전. 유니버설 플러그…

[Android] Key Layout

Android에서는 Key Event처리를 위해  Key Layout 을 사용한다. Key Event가 처리되는 순서는 보통 다음과 같다. Hardware 적으로 Key Event가 발생함. Interrupt 등으로 Kernel로 전달됨. Kernel의 Keyboard Driver 에서는 Key Event를 감지 후, 상위로(Android 쪽으로) 이벤트를 전달함. 이 때, Hardware에 mapping 되어 있는 Key Event Code를 전달함. (<linux>/include/linux/ 하위에 정의되어있음) Android Framework에서 Kernel의 Key Event를 전달받음….

btrfs – full error (No space left on device)

btrfs는 filesystem의 한 종류이다, wiki에서는 다음과 같이 소개하고 있다. Btrfs(B-tree file system 또는 Butter file system, Better F S)는 파일 시스템 가운데 하나로 현재 페이스북의 크리스 메이슨이 개발을 지휘하고 있다. 꽤 안정화되어 시험적으로 사용하는곳들이 생기고 있다. (B-tree file system, pronounced as “butter F S”, “better F S”, “b-tree F S”, “butterface”, or simply by spelling it out) B-Tree…

name mangling, android ndk jni symbol name problem

간혹 android ndk 를 만들다 보면 name mangling 때문에 문제를 만나게 된다. Linux 혹은 Android 에서 ndk 를 만들기 위해 library 를 빌드할 일이 있을 경우 symbol name 을 주의해야 한다.   해당 library source 는 c 혹은 cpp 형태로 작성할 수 있다. 그런데 Android NDK 를 위해서는 cpp 구조가 아닌 c 구조가 되어야 하며,…

Android booting Process/Sequence (안드로이드 부팅 과정)

안드로이드 부팅과정을 정리해 보았습니다.   Step 1. Power On and System Startup (Boot ROM) 시스템에 전원이 공급되면 Boot ROM 코드가 시작된다. Root ROM Code의 주요 기능은 Boot Loader를 RAM에 적재하는 것이다.   Setp 2. Boot Loader Boot Loader는 안드로이드 구동 전 시작하는 작은 프로그램이며, 안드로이드와는 별개의 프로그램이다. Boot Loader는 두개의 스테이지로 나뉘어져 있다. First Stage…

Semapore, Mutex, Spin-Lock 차이점

Spin-lock, Semapore, Mutex는 모두 Thread/Process의 병행성을 보장하기 위한 상호배제 기법(Mutual Exclusion Techniques)이다. 이 셋의 차이점을 한번 알아보자 Mutex 하나의 자원을 통제하는데 사용 된다. 외부 변수를 두어 그 변수의 값을 조정하여(0 or 1) 자원의 접근을 제어한다. 그래서 이진 세마포어(binary semaphore)라고도 불린다. 만약, 임계 구역(Critical Section)이 잠겨있어서 진입을 하지 못하게 되면 풀릴때까지 기다린다. 이 때 문맥 교환(Context Change)이 일어난다….