Opportunity

실시간 영상 전송과 블루투스 통신을 동시 수행하는 주행 및 장애물 탐지.

프로젝트 개요

Tom Clancy’s Rainbow Six Siege 게임에서 영감을 받았다.

침투 조 임무를 수행할 때 감시카메라가 달린 정찰 드론을 활용해 상대 적의 위치를 파악하고 침투하면 아군의 손실을 최대한 피할 수 있으며 방어 조 임무를 수행할 때에는, 드론을 시야의 사각지대에 놓으면 아군이 확인하지 못하는 지역에서 적이 침투하는 모습을 보고 신속하게 반응할 수 있다. 실시간으로 영상을 전송 받으면서 상태를 파악하여 장치를 통제할 수 있도록 하는 것이 목표이다.

SmartCAR 장비를 이용하는데 카메라, 리모트, 무선 인터넷 등의 추가 장치가 없기 때문에 스마트 폰을 이용하여 부족한 점을 채웠다.

기능1

Bluetooth used gyroscope & acceleration

안드로이드 플랫폼은 손쉽게 다른 블루투스 장치와의 무선 데이터 교환이 가능함 블루투스 연결을 사용하기 위해 응용 프로그램은 안드로이드의 블루투스 API를 사용한다. 블루투스 API 는 android.bluetooth 패키지에 포함되어 있다. 

블루투스 통신 과정

1. Bluetooth 지원확인 – 활성화

2. 외부 Bluetooth Device 검색

  • 통신 영역 범위 내에 존재하는 Bluetooth Device를 탐색한다.
  • 현재 장치의 Bluetooth Pairing 목록에 등록된 장치만 탐색한다.

3. 두 개의 장치에서 데이터를 주고 받을 때

  • Bluetooth Socket을 사용하여 하나는 서버로 다른 하나는 클라이언트로 설정해야 한다.

4. 서버가 성공적으로 네트워크로 연결되었을 때

  • 개별 Bluetooth는 각각의 Bluetooth 객체를 가지게 된다.
  • Bluetooth Socket 객체를 통해 Bluetooth 장치 간에 데이터를 교환할 수 있다.
  • BluetoothSocket 객체를 사용해서 스트림을 생성하여 데이터의 전송과 수신을 하게 된다.
  • 절차 : Socket 클래스에서 제공하는 getinputStream() 과 getoutputstream() 메소드를 사용.
  • 데이터의 전송, 수신 처리과정 : inputStream 과 outputstream을 얻는다 -> 읽을떄 read 쓸때는 write을 사용하여 데이터를 읽고 쓴다.

회전각 측정 및 원격 조작

기능2

실시간 영상 전송 (used RTSP library)

실제 프로그래밍 과정에서 고려해야 할 점은

1. 라이브러리에서 서버 구축방식과 클라이언트의 접속 방식을 어떻게 구현하였는지

2. 라이브러리에서 멀티미디어 데이터 전송과 control 기능을 어떻게 구현하였는지

3. 영상 전송과 음성 전송에서는 어떤 차이점을 가지는지.

4. 라이브러리에서 스트림 데이터를 어떻게 관리하게 되는지.

기능3

자율주행 코드 및 초음파 센서를 이용한 장애물 탐지.