RasberryPiTerabee 사용

 

( 환경 : Raspbian(Linux환경) , RasberryPi 2 B+ )

 

 

모형


구성

                             

                        TOF Sensor                                                                                             USB Adopter




면적

핀 구성

PIN

Function

1

+5V out

(use only to provide voltage levels to programming devices, max. 10mA!)

2

+5V out

(use only to provide voltage levels to programming devices, max. 10mA!)

3

SCLK (for SPI or flashing)

4

MISO

5

MOSI

6

Reset in

(pull to GND to reset)

7

Arduino compatible reset in

(to DTR)

8

User I/O 2

9

User I/O 1

10

SCL

11

SDA

12

RX(5V Lev)

13

TX(5V Lev)

14

Vcc(10V-20V)

15

GND



드라이버 구성



윈도우에서 사용 할 때는 드라이버를 직접 깔아서 사용했지만 Ubuntu 기반인 라즈비안은 인식되어있다.

보통은 /dev/ttyUSB0 혹은 1,2 .... 로 되어있다.



screen 명령어를 통해서 Access하게 되면



이런식으로 결과 값이 주르륵 나온다.

무슨소릴까... Binary 모드이기 때문이다.

모드를 바꿔봐야겠다.



사용 Mode

(Shift + Key)

Key

Mode

Function

P

정밀모드

정확한 값을 내기위해 내부 파라미터를 적용한다.

이 기능은 반복율과 반응속도를 줄여준다

F

속도모드

빠른 반복율과 반응속도가 보장되지만 판독의 정확성이 줄어든다.

B

바이너리 모드

출력상태를 Binary형태로 출력

T

텍스트 모드

출력상태를 Text형태로 출력

 


Shift + T (Text 모드로 변경해보면...)

우리가 원하든 mm 단위로 출력된다!


 

최근 들어 로보틱스 분야에서 플랫폼 붐이 일고 있다. 플랫폼은 소프트웨어 플랫폼과 하드웨어 플랫폼으로 나뉠 수 있다. 로봇 소프트웨어 플랫폼이란 로봇 응용프로그램을 개발할 때 필요한 하드웨어 추상화, 하위 디바이스 제어, 로보틱스에서 많이 사용되는 센싱, 인식, 자기 위치 추정과 지도 작성(SLAM), 모션 플래닝(Motion Planning) 등의 기능 구현은 물론이고, 패키지 관리, 개발 환경에 필요한 라이브러리와 다양한 개발/디버깅 도구 등을 포함하는 것을 말한다. 로봇 하드웨어 플랫폼의 경우 모바일 로봇, 드론, 휴머노이드 형태의 연구용 하드웨어 플랫폼뿐만 아니라 소프트뱅크의 페퍼, MIT 미디어랩의 지보 등 상업성 제품들도 출시를 코앞에 두고 있다. 

주목할 점은 이 하드웨어들도 앞서 말한 소프트웨어 플랫폼과 연계되어 추상화가 이루어지고 있다는 점이다. 이는 하드웨어에 대한 전문 지식이 없어도 소프트웨어 플랫폼을 이용하여 응용 프로그램을 작성할 수 있다는 것을 의미한다. 이는 최신 스마트폰의 하드웨어 구성이나 세부 내용을 몰라도 애플리케이션(앱)을 작성할 수 있는 것과 마찬가지이다. 또한, 로봇 개발자가 하드웨어 설계부터 소프트웨어 설계까지 도맡아 하던 이전 작업 프로세스와 달리, 더 많은 소프트웨어 인력들이 로봇 응용 프로그램 개발에 참여할 수 있다. 즉, 소프트웨어 플랫폼 덕분에 많은 이들이 로봇 개발에 동참할 수 있게 되었고, 소프트웨어 플랫폼에서 제안하는 인터페이스에 맞춰 로봇 하드웨어가 설계되고 있다.

이러한 소프트웨어 플랫폼에는 대표적으로 로봇 운영체제라 불리는 ROS(Robot Operating System)와 일본의 오픈 로보틱스 미들웨어(OpenRTM), 유럽의 실시간 제어 중심의 OROCOS, 한국의 OPRoS 등이 있다. 각자 이름은 다르지만 로봇 소프트웨어 플랫폼이 만들어진 근본적인 이유는 로봇 소프트웨어가 너무 다양하고 복잡해서 발생하는 여러 문제들을 전 세계의 로봇 연구자가 서로 협업하여 해결하려는 것이다. 

예를 들어, 로봇이 주변 상황을 인식하는 기능을 구현할 때 하드웨어가 다양하고 실생활에 직접 사용된다는 점은 어려움으로 작용한다. 사람의 입장에서는 매우 사소한 일이라고 하더라도 로봇의 입장에서는 센싱, 인식, 지도 작성, 모션 플래닝 등의 기능을 구현해야 하는데 개별 연구실, 회사에서는 이 모든 부분을 처리하기 힘들다. 하지만 전 세계의 관련 종사자가 각자 자신 있는 부분을 공유하여 다른 그룹에서 이를 사용할 수 있게 한다면 이야기는 달라진다. 

소셜펀드 킥스타터와 CES2015에서 주목받은 로봇베이스(Robotbase)라는 로봇 전문기업은 최근에 로봇베이스 퍼스널 로봇(Robotbase Personal Robot)을 개발하여 소셜펀드에서 론칭에 성공하였다. 로봇베이스사의 경우 자신들이 강한 얼굴인식과 물체인식에 집중하고, 모바일 로봇은 유진로봇의 거북이, 액추에이터로는 로보티즈의 다이나믹셀을 이용하였고 장애물 인식, 내비게이션, 모터 드라이브 등은 모두 ROS의 공개 패키지를 사용했다는 점에서 협업 가능성에 대한 실례를 보여주었다.

그럼 “왜 로봇 소프트웨어 플랫폼을 써야 하는가?” 몇가지 예를 들며 알아보도록 하겠다. 

첫째, 프로그램의 재사용성이다. 자신이 개발하고자 하는 부분에 집중하고 나머지 기능에 대해서는 관련 패키지를 다운로드하여 사용할 수 있다. 마찬가지로 자신이 개발한 프로그램은 다른 이들이 사용할 수 있도록 공유할 수도 있다. 예를 들어, 미국 NASA의 경우 국제 우주 정거장에서 사용하는 로보노트2(Robonaut2) 로봇 제어를 위하여 자체 프로그램 이외에도 다양한 드라이버 기능과 멀티 플랫폼에서 사용 가능한 ROS와 실시간 제어, 메시지 통신 복구, 신뢰성을 갖춘 OROCOS를 혼용함으로써 우주에서 임무를 수행할 수 있었다고 한다. 앞서 소개한 로봇베이스사의 경우도 재사용성을 충분히 살린 예이다.

둘째, 통신 기반 프로그램이다. 흔히, 하나의 서비스를 제공하기 위하여 센서나 액추에이터 단의 드라이브부터 센싱, 인식, 동작까지 하나의 프레임에서 프로그램을 작성하는 것이 많은데 로봇 소프트웨어의 재사용을 위해서는 이를 각각 처리 프로세서의 목적에 따라 작게 나누게 된다. 플랫폼마다 이를 컴포넌트화 혹은 노드 패키지화라고 한다. 최소 실행 단위로 나뉜 프로그램은 나누어진 컴포넌트(노드)끼리 데이터를 주고받아야 하는데 플랫폼들은 이 데이터 통신에 대한 전반적인 사항을 모두 갖추고 있다. 각 컴포넌트는 하드웨어 의존성을 떠나 네트워크에서 통신을 제공함으로써 네트워크 프로그래밍이 가능하게 되고 로보틱스에서 흔히 다루는 원격제어에서 매우 유용하다. 또한, 최소 실행 단위로 프로그램을 나누게 되면 작은 단위로 디버깅할 수 있어서 오류를 찾아낼 때도 매우 유용하다.

셋째, 개발도구 지원이다. ROS의 경우 디버깅 관련 툴, 2차원 플롯과 3차원 시각화 툴을 제공함으로써 로봇 개발에 필요한 개발 도구를 사용할 수 있다. 예를 들어, 로봇 개발에 있어서 로봇의 모델을 시각화하는 경우가 많은데 이를 정해진 포맷에 맞추기만 하면 로봇의 모델을 직접 확인할 수 있을 뿐만 아니라 3차원 시뮬레이터도 제공하기 때문에 시뮬레이션으로의 확장도 용이하다. 또한, 요즘 주목받는 마이크로소프트사의 키넥트 등으로 얻은 3차원 거리 정보는 점 군을 나타내는 포인트 클라우드 형태로 쉽게 변환하여 보여준다. 그 이외에도 실험에서 사용된 데이터는 녹화할 수 있으므로 언제든지 필요할 때 재생하여 실험할 때의 상황을 그대로 재현할 수도 있다. 이처럼 로봇 개발에 꼭 필요한 소프트웨어 도구를 제공하여 개발 편의성을 극대화한 점이 중요한 원인 중의 하나이다. 

넷째, 생태계 조성이다. 스마트폰 혁명은 안드로이드와 iOS 등 소프트웨어 플랫폼이 만든 생태계가 있기 때문이라고 한다. 로봇 분야도 마찬가지 흐름으로 이어 가고 있다. 처음에는 각종 하드웨어 기술들이 넘쳐흘렀으나, 이를 통합해 줄 운영체제가 전무했다. 이 상황에서 앞서 설명했던 것과 같이 다양한 소프트웨어 플랫폼이 등장했고, 가장 주목 받은 ROS의 경우 이제 그 생태계의 틀을 갖추기 시작했다. 그리고 로봇과 센서 회사처럼 로봇 관련 하드웨어 분야의 개발자, ROS 개발 운용팀, 응용 소프트웨어 개발자, 사용자 모두가 웃을 수 있는 생태계를 만들어 가고 있다. 아직 그 시작은 미미하지만, 점점 늘고 있는 사용자들과 로봇 관련 회사들 그리고 급격히 늘고 있는 관련 툴 및 라이브러리를 볼 때 머지않아 생태계가 원만하게 돌아갈 것이라고 기대해본다. 

다섯째, 활성화된 커뮤니티이다. 이 부분이 가장 중요하지 않을까 싶다. 지금까지 닫혀 있던 로봇 학계, 로봇 업계는 위에서 언급한 기능들로 인하여 서로 협업을 중시하는 방향으로 나아가고 있고 그 목적이야 서로 다를 수 있겠지만 이러한 소프트웨어 플랫폼을 통하여 협업이 실제로 이루어지고 있다. 이 중심에는 오픈 소스 소프트웨어 플랫폼의 커뮤니티가 있다. 예를 들어 ROS의 경우에는 자발적으로 1,600개 이상의 패키지들이 개발되어 공유되고 있고, 그 사용 방법을 설명한 위키 페이지가 사용자들의 개별적인 참여로 14,600페이지를 넘어서고 있다. 그리고 커뮤니티에서 매우 중요한 질의응답의 경우 18,000건 이상이 오고 가며 상생의 커뮤니티를 만들어 가고 있다. 이는 단순히 사용법에 대한 토론을 넘어서 로보틱스 소프트웨어에서 필요한 구성요소를 찾아내고 규칙을 만들고 있다. 나아가 로보틱스의 발전을 위해 로봇의 소프트웨어가 갖추어야 할 부분에 대해서 고민하고 부족한 부분은 서로 협업을 통하여 다수가 하나의 퍼즐을 맞추는 식으로 발전하고 있다.

로봇공학은 미래 산업, 차세대 성장 동력이라는 이름으로 산업용 로봇을 제외한 어떠한 비즈니스 모델도 없음에도 불구하고 장밋빛 미래를 바라며 기대만을 한껏 받고 있다. 문제는 이러한 이야기는 10년 전이나 지금이나 마찬가지지만 이렇다 할 답을 못 얻고 있다는 것이다. 그 이유는 무엇일까? 다양한 의견들이 있겠지만 로봇공학은 아직 비즈니스 모델로 만들기에는 부족한 부분이 많다는 것이고 아직 풀어야 할 숙제가 많다고 생각한다. 이 해결책으로 국가를 뛰어넘는 초월적인 협업이 이루어져야 한다고 생각하고 이는 소프트웨어 플랫폼과 이를 지탱하는 커뮤니티가 해결할 수 있다고 생각한다. ROS의 경우 학계 연구자, 산업현장의 개발자, 그리고 취미로 활동하는 하비스트(hobbyist)까지 개발에 참여하고 있다. 더욱이 로봇 전공자뿐만 아니라 네트워크 전문가, 컴퓨터 사이언스, 컴퓨터 비전 분야의 사람들도 대거 참여하고 있어서 로봇 분야뿐만 아니라 다양한 배경의 지식이 모여 융합을 이루고 있어서 로봇공학이 지금까지와는 다른 양상으로 발전할 것으로 예상되며, 개방과 협업을 통하여 지금까지 풀지 못한 숙제들을 풀 수 있을 것으로 생각한다. 또한, 이는 로봇 개발이 급속도로 발전할 수 있는 계기가 될 수 있을 것이다. 


▒  표윤석ㆍ일본 큐슈대학 JSPS 연구원

http://www.irobotnews.com/news/articleView.html?idxno=4436

리눅스에서 콘솔 프로그램을 백그라운드로 실행해야 할 경우 screen 명령어가 굉장히 유용하다.

원격 작업하다보면 여러창을 보고 싶을때도 있어 보통 터미널을 여러개 띄워 사용한다. 하지만 왔다갔다하기 귀찮아 많이 이용한다.

간단히 nohup으로 사용할수 있지만 screen명령어가 더 강력하고 유연하므로 많이 사용된다.


우선 사용하기 위해 screen 명령어를 써보니 라즈비안에선 깔려 있지 않다.


라즈비안은 Ubuntu 기반이므로

sudo apt-get install screen 명령어로 손쉽게 깔 수 있다.


CentOS

yum install screen 으로 설치하면 된다.



=========================================================================

screen 명령어의 메뉴얼로는


1. 쉘모드 명령어
  screen
   : screen 을 시작 하는 기본 명령입니다.
   : 기본 세션명으로 시작합니다.
  screen -S 세션명
   : -S 다음에 주는 세션명으로 시작합니다.
  screen -list
   : -list 옵션을 주고 실행하면 이전에 작업했었던 screen 리스트가 있으면 세션명과 함께 리스트를 보여줍니다.
  screen -R 세션명
   : 이전에 세션이 있을 경우 -R 다음에 오는 세션명으로 이전 작업을 불러옵니다.
   : -R 다음에 세션명을 주지 않았을 경우에는 이전 세션이 한개만 있을 경우 그 작업을 불러옵니다.
   : 이전 작업이 여러개 있을 경우에는 이전 작업 리스트를 보여줍니다.
   : 이 경우에는 원하는 세션명을 주고 시작 하면 되겠죠. ^__^
   
2. screen 실행후 명령어
  screen 실행후의 명령어는 Ctrl-a로 시작합니다:

Ctrl-a, c       : (create) 새로운 쉘이 생기면서 그 쉘로 이동
Ctrl-a, a       : 바로 전 창으로 이동
Ctrl-a, n       : (next) 다음 창으로 이동
Ctrl-a, p       : (previous) 이전 창으로 이동
Ctrl-a, 숫자    : 숫자에 해당하는 창으로 이동
Ctrl-a, '       : 창번호 또는 창이름으로 이동 ( ' => 싱글 쿼테이션 )
Ctrl-a, "       : 창번호를 보여준다. ( " => 더블 쿼테이션 )
Ctrl-a, A       : 현재 창의 title을 수정
Ctrl-a, w       : 창 리스트 보여주기
Ctrl-a, esc     : Copy 모드로 전환. Copy 모드에서는 vi의 이동키로 이동을 할 수 있다.
Crtl-a, [         커서 이동을 할 수 있고 특정 블럭을 복사하는 기능으로 사용한다.
                 먼저 시작 위치에서 space 바를 누르고 끝 위치에서 space 바를 누르면 해당 부분이 buffer로 복사된다.
Ctrl-a, ]       : buffer의 내용을 stdin으로 쏟아 넣는다.
                 이 기능은 vi의 입력모드에서 사용하면 유용하다.
Ctrl-a, :(콜론) : 명령행 모드로 전환
Ctrl-a, d       : (detach) 현재 작업을 유지하면서 screen 세션에서 빠져나옴
                 세션이 종료 되지 않습니다.
Ctrl-a, x       : lock screen

아래 부분은 창을 나눠서 사용하는 명령입니다.

Ctrl-a, S       : (split) 창을 나눔 (region)
Ctrl-a, Tab     : 다른 region으로 이동
Ctrl-a, Q       : 현재 region을 제외한 나머지 숨기기


그리고 마지막 명령으로 세션을 완전히 빠져 나오는 명령입니다.

exit : screen 의 쉘상에서 exit 를 치고 엔터를 하면 세션이 완전히 종료 됩니다.


이상 위의 명령어 들만 알고 있으면 screen 사용시 불편하지 않게 screen 을 사용 할 수 있을 겁니다.

참 고
다른 사용자 분들의 의견을 보면 screen 화면을 2, 3 개정도 띄우고 사용하는게 가장 적당하다고 합니다.
4개 이상 띄우고 사용하다보면 불편하다고 하네요.
여러분들은 어느정도가 적당한지 한번 사용해보시고 판단 하시기 바랍니다.


기타 더욱 자세한 내용을 아시고 싶으시면 man 페이지나 /usr/doc/screen 을 참고하시기 바랍니다. 


참고 : KLTP( http://kltp.kldp.org/ )
      리눅스 사랑넷 ( http://linux-sarang.net )

      [펌] http://blog.naver.com/xinfra/80007388674


+ Recent posts