[테크월드=김경한 기자] 이전에는 젯봇(Jetbot)의 소프트웨어 설정을 진행하면서 젯봇의 다양한 동작을 활성화해 봤다 이번 기사에서는 젯봇의 AI플랫폼들을 활성화해 다양한 AI 라이브러리를 설정하고자 한다. 

1. 로봇 인스턴스 생성

지난 과정에서 젯봇 개체를 만들었다. 왼쪽과 오른쪽 모터의 회전을 개별적으로 제어하거나 로고 아래의 LED 조명을 제어해 호흡 효과를 생성하는 등 젯봇의 일부 하드웨어를 제어하기 위해 몇 가지 방법을 사용했다. 실제로 여러 제어 방법이 포함돼 있다.

이전 강의에서 사용 된 몇 가지 방법을 검토하고 젯봇 동작을 제어하는 더 많은 새로운 방법을 살펴볼 예정이다.

젯봇 패키지를 가져온 다음 젯봇 로봇 자동차 이동을 제어하는 로봇 인스턴스를 생성해 젯봇을 쉽게 제어할 수 있다.

[그림 1]

[그림 1]의 코드를 실행하면 젯봇 로봇 자동차가 팬/틸트 상승·다운·정지, 최대 속도 1로 전진·후진, 좌회전·0.75로 우회전하는 것을 볼 수 있다. 또한, ‘중지’ 로고 아래의 LED 조명의 밝기가 1임을 알 수 있다.

일정 기간 동안 로봇을 이동하려는 경우. 이 시점에서 우리는 파이썬의 시간 패키지를 사용할 수 있다.

타임(Time) 모듈은 새 스레드가 작은 작업을 처리할 때 시스템 리소스를 절약하는 데 자주 사용된다.

[그림 2] 코드를 실행하면 젯봇 로봇 자동차가 좌회전하고 정지하는 것을 볼 수 있다.

[그림 2]

모터를 별도로 제어해야 한다. 

또한 robot.left_motor.value 값뿐만 아니라 robot.set_motors 설정(Left_Motor_Value, Right_Motor_Value)은 동일한 효과를 달성한다.

하지만, 이 robot.set_motors(Left_Motor_Value, Right_Motor_Value) 방법의 경우에 모터 양측의 속도를 동시에 설정할 수 있기 때문에 더 효율적으로 동작할 수 있다[그림 3].

[그림 3]

해당하는 전체 소스 코드는 다음 위치에 있다. 

 / home / jetbot / Notebook / 9. Jetbot 기본 이동 /Jetbot.ipynb 기본 이동 

 

2. ipywidgets 컨트롤과 트레이들 간의 통합 상호 작용

- Ipywidgets 정보:

Ipywidgets 위젯은 브라우저에 있는 버튼, 드롭 다운 메뉴, 또는 텍스트 상자와 같은 GUI 요소로, 이벤트에 응답하고 지정된 핸들러를 호출해 코드와 데이터를 제어 할 수 있다. 각 위젯에는 고유 한 특정 데이터 정보를 처리하는 속성이 있다.

 

(예)
슬라이더[그림 4]

[그림 4]

프로그레스(Progress) B의 AR[그림 5]

[그림 5]

텍스트 표시 구성 요소[그림 6]

[그림 6]

사진 디스플레이 구성 요소[그림 7]

[그림 7]

그래픽과 슬라이더 의 데이터 시각화[그림 8]

[그림 8]

Traitlet 정보

Traitlet은 파이썬 클래스가 유형 검사, 동적 계산 기본값과 ‘변경 시’ 콜백 속성을 소유할 수 있도록 하는 프레임워크다.

이 패키지에는 파일 또는 명령 줄 인수에서 값을 로드하도록 트레이를 구성하는 메커니즘도 포함돼 있다.

트레이는 맨 위에 있는 고유한 레이어이므로 구성 메커니즘을 사용하지 않고도 코드에서 트레 이를 사용할 수 있다.

젯봇 로봇을 디버깅할 때 Ipywidget과 Traitlet을 통해 구성 요소와 데이터를 인코딩하고 백그라운드에서 실시간으로 새로 고침을 다시 호출할 수 있으므로 디버깅의 효율성을 향상시킬 수 있다.

 

초기화 진행 명령어

먼저 관련 패키지를 가져오고 두 개의 슬라이더를 만들고 슬라이더를 만들 때 속성을 정의한다.

[그림 9]와 같이 코드를 작성한다. 

[그림 9]

[그림 9]의 코드를 실행하면 [그림 10]과 같이 두 개의 수직 슬라이더를 볼 수 있다.

[그림 10]

팁:

주피터 랩(Jupyter Lab)에서 실제로 셀을 두 개의 슬라이더와 같은 다른 창에 표시할 수 있다. 같은 창에 있지는 않지만 노트북에 여전히 연결돼 있다. 특정 작업은 마우스를 셀의 오른쪽 단추(예: 슬라이더)로 이동하고 ‘출력을 위한 새 보기 만들기’를 선택한 다음 원하는 위치로 창을 끌어오는 것이다.

슬라이더를 클릭하고 위아래로 드래그해 값의 변화를 확인한다. 

 

[참고]

젯봇의 모터는 아직 모터에 연결하지 않았기 때문에 슬라이더를 움직일 때 응답하지 않는다!

[그림 11]에서는 traitlets 패키지의 링크 기능을 사용해 달성한다. [그림 11]과 같이 코드를 작성한다. 

[그림 11]

슬라이더를 드래그하면(먼저 천천히 드래그해 젯봇이 갑자기 경계 밖으로 튀어나와 손상을 입히지 않도록 한다), 카메라에 부착된 서보가 회전하는 것을 확인할 수 있다.

위에서 만든 링크 함수는 실제로 양방향 링크를 만든다. 즉, 모터 값을 다른 곳에 설정하면 슬라이더가 업데이트된다.

[그림 12]에 표시된 코드를 작성하면 된다. 

[그림 12]

[그림 12]의 코드를 실행하면 슬라이더도 변경되고 모터의 속도 값도 변경되는 것을 볼 수 있다. 이 연결을 끊으려면 언링크(Unlink) 메서드를 호출해 하나씩 연결을 끊을 수 있다.

[그림 13]에 표시된 코드를 작성한다. 

[그림 13]

연결을 끊으면 무접촉 상태로 돌아간다.

그러나 양방향 연결을 원하지 않는 경우, 예를 들어 슬라이더를 사용해 모터의 속도 값을 표시하고 제어하지 않으려는 경우, 이 기능을 수행하려면 [그림 14]와 같은 코드를 사용할 수 있다. DLINK의 오른쪽 함수의 왼쪽에 있는 소스(데이터는 모터로부터 오는 타깃에 적용) 대상이다.

코드는 [그림 14]와 같다.

[그림 14]

다른 방법:

트레이를 사용하는 또 다른 방법은 이벤트에 함수를 연결하는 것이다(예: 전달). 개체가 변경되자 마자 함수가 호출되고, 이전 값이 새 값과 같은 변경된 일부 정보가 전달된다.

노트북에 표시할 로봇을 제어하기 위해 [그림 15]과 같이 코드를 작성한 후 [그림 16]과 같은 몇 가지 버튼을 만든다.

[그림 15]
[그림 16]

[그림 15]의 코드를 실행하면 [그림 16]에 표시된 로봇 제어 버튼 세트를 볼 수 있지만 이제 버튼을 클릭해도 아무런 반응이 없다.

제어를 시작하려면 버튼 on_click 이벤트에 연결된 몇 가지 함수를 만들어야 한다.
[그림 17]의 코드를 작성한다. 

[그림 17]

개발자는 이런 기능을 정의했으며, 이 기능을 각 버튼의 on_click 이벤트에 연결한다.
[그림 18]의 코드를 작성한다. 

[그림 18]

[그림 18]의 코드를 실행한 후 여기에서 만든 버튼 구성 요소를 클릭해 젯봇을 전진, 후진, 좌회전, 우회전, 정지할 수 있다.

연결된 젯봇 신호가 끊어지면 젯봇이 제어 불능으로 손상이 발생한다. 이를 해결하기 위해 젯봇은 ‘하트 비트’ 전환 기능을 제공하고 있다.

[그림 19]의 코드 블록은 하트 비트 패키지를 사용해 젯봇의 이동을 중지하는 방법에 대한 것이다.

이것은 젯봇과 브라우저 간의 연결이 여전히 존재하는지 확인하는 방법이다. 코드가 실행된 후 슬라이더를 실행해 하트 비트 기간(초)을 조정할 수 있다. 하트 비트가 브라우저 간에 앞뒤로 통신할 수 없는 경우 하트 비트 '상태' 속성 값은 연결이 복원되면 상태 속성이 활성으로 설정된다. 

[그림 19]

해당하는 전체 소스 코드는 다음 위치에 있다.

 / home / jetbot / Notebook / 9. Jetbot 기본 이동 /Jetbot.ipynb 기본 이동 

 

마치며

이번 기사에서는 AI 플랫폼 기반의 젯봇의 기능을 깨우는 과정의 첫발을 내딛는 형태를 소개했으며, 이 과정은 생소하거나 어려운 편에 속한다. 이 젯봇은 여러 가지 기능을 가지고 있지만 이 기능을 활성화하기 위해서는 많은 부분 플랫폼 준비와 설정이 필요하다. 초보자가 하기에는 어려운 형태의 스마트 RC카지만 본인 AI 플랫폼, 이미지 분류, 객체 감지 분야를 배우거나 개발 계획이 있다면, 이 RC카 만큼의 좋은 교육자료와 완제품 형태는 없다고 생각한다. 초기에는 어렵지만 여기에 나와있는 정보를 운용해서 개발을 진행한다면 어려움 없이 개발할 수 있을 것이다. 

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지
이 기사와 관련된 기사