1.카미봇파이
링크로 접속하여 카미봇 파이 라이브러리를 참고해주세요.https://pypi.org/project/pyKamipi/
(1)LED 제어 함수
kamibot.turn_led(R,G,B)
R: Red 값, 0~255
G: Green 값, 0~255
B: Blue 값, 0~255
시간지연 함수 - delay(t) : (t)지연시간, 초 단위
for 문 - ① for 변수 in range(반복횟수)
- ② for 변수 in range(시작숫자,마지막숫자,증가값)
(2)예제1 빨간 LED 8번 깜빡이기
(ex)kamibot.turn_led(255,0,0) // 빨간색 LED
(ex)kamibot.delay(0.5) // 0.5초 지연
1 2 3 4 5 6 7 8 9 10 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) for i in range(8): kamibot.trun_led(255,0,0) kamibot.delay(0.5) kamibot.trun_led(0,255,0) kamibot.delay(0.5) #카미봇 연결 해제 kamibot.close() | cs |
(3)예제2 RGB LED 밝기를 최소 - 최대 - 최소로 변경(최소로 변경되면 색상이 변경되도록)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) while True: for i in range(0,255,5): kamibot.trun_led(i,0,0) for i in range(255,0,-5): kamibot.trun_led(i,0,0) for i in range(0,255,5): kamibot.trun_led(0,i,0) for i in range(255,0,-5): kamibot.trun_led(0,i,0) for i in range(0,255,5): kamibot.trun_led(0,0,i) for i in range(255,0,-5): kamibot.trun_led(0,0,i) #카미봇 연결 해제 kamibot.close() | cs |
(1)피에조 부저 제어함수
kamibot.melody(scale,sec)
scale: 건반숫자
sec: 연주시간
(2)건반숫자
(3)예제 학교종이 땡땡땡 연주
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) #3옥타브 도 → 48 #학교종이 땡땡땡 melody = [55,55,57,57,55,55,52,55,55,52,52,50,55,55,57,57,55,55,52,55,52,50,52,48] for i in melody: kamibot.melody(i,0.5) #카미봇 연결 해제 kamibot.close() | cs |
(1)머리 회전 제어 함수
- 상대 각도 이동 제어
kamibot.top_motor_degree(dir,value,speed)
dir: 회전방향 "L"(왼쪽),"R"(오른쪽)
value: 각도값 0 ~ 360
speed: 회전속도 1 ~ 9
- 절대 각도 이동 제어
kamibot.top_motor_abspos(degree,speed)
degree: 각도값 0 ~ 360
speed: 회전속도 1~ 9
(1)이동 제어 함수
- 왼쪽, 오른쪽 모터 속도, 방향제어 함수
kamibot.go_dir_speed(ldir,lspeed,rdir,rspeed)
ldir: 왼쪽 모터방향 "f"앞으로 회전, "b"뒤로 회전
lspeed: 왼쪽 모터 속도 조절 0 ~ 255
rdir: 오른쪽 모터방향 "f"앞으로 회전, "b"뒤로 회전
rspeed:오른쪽 모터 속도 조절 0 ~ 255
ex)kamibot.go_dir_speed("f",10,"f",10)
- 이동 단위 설정 후 앞/뒤로 이동 함수
move_forward_unit(value,opt,speed)
value : 이동할 값
opt : "-l" → cm, "-t" → 초단위, "-s" → step 단위(1step=0.0471cm)
speed : 0 ~ 255
ex)kamibot.move_forward_unit(10,"-l",50) // 50속도로 10cm 이동
move_backward_unit(value,opt,speed)
ex)kamibot.move_backward_unit(10,"-l",50) //50속도로 10cm 이동
- 제자리 각도 회전 함수(오른쪽,왼쪽)
turn_right_speed(value,speed)
value : 회전각 0 ~ 360
speed : 0 ~ 255
ex)kamibot.turn_right_speed(45,100) // 100 속도로 오른쪽 제자리 45도 회전하기
turn_left_speed(value,speed)
value : 회전각 0 ~ 360
speed : 0 ~ 255
ex)kamibot.turn_left_speed(45,100) // 100 속도로 왼쪽 제자리 45도 회전하기
- 원호 그리기
draw_arc(len,time,mode)
len : 반지름
time : 시간(mode=0 일때), 각도(mode=1 일때)
mode : 0이면 시간(초), 1이면 각도(0 ~ 360)
ex)kammibot.draw_arc(3,60,1) // 반지름 3인 원을 60도 만큼만 그리기
(2)예제1 삼각형 그리기
1 2 3 4 5 6 7 8 9 10 11 12 13 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) #삼각형 그리기 for i in range(0,3): kamibot.move_forward_unit(7,"-l",70) #속도 70으로 앞으로 7cm 이동 kamibot.move_right_unit(120,"-l") #오른쪽을 120도 회전 #카미봇 연결 해제 kamibot.close() | cs |
(2)예제2 꽃 그리기
1 2 3 4 5 6 7 8 9 10 11 12 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) kamibot.draw_arc(3,60,1) kamibot.trun_right_speed(120,150) kamibot.draw_arc(3,60,1) #카미봇 연결 해제 kamibot.close() | cs |
(1)근접센서
- 적외선 센서로 구성
- 적외선이 반사되는 양을 측정하여 장애물 유무를 판단
- 적외선 센서 값을 반환(물체가 가까울수록 값이 높아진다.)
get_object_detect()
ex)Left,Right = kamibot.get_object_detect() // 왼쪽,오른쪽 센서 값을 left, right 변수에 저장
- printf, F-string
print(f"문자") // 기본원형
print(f"문자{변수}") // 변수 값을 출력 할 때
ex) from pyKamipi.pibot import *
kammibot = KamibotPi('COM3',57600)
while True :
# 근접센서 왼쪽, 오른쪽 값 일기
left, right = kamibot.get_object_detect()
print(f"left={left}, right={right}")
- 조건문 if
if 조건1 : // and, or, 부등호 등등
elif 조건2 :
else : // 조건1,2가 아닐 때
ex) if left 20 : // left 변수 값이 20보다 크면
kamibot.stop() // 정지
(2)예제 장애물이 감지되면 멈추는 로봇 코딩을 해보세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) while True: left, right = kamibot.get_object_detect() #근접센서 왼쪽, 오른쪽 센서 값 읽기 print(f"left={left}, right={right}") #근접센서 값 출력하기 if left > 20: kamibot.stop() else: kamibot.go_forward_speed(50,50) #카미봇 연결 해제 kamibot.close() | cs |
(3)예제 손을 따라다니는 로봇 코딩을 해보세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) while True: left, right = kamibot.get_object_detect() #근접센서 왼쪽, 오른쪽 센서 값 읽기 print(f"left={left}, right={right}") #근접센서 값 출력하기 if left > 20 or right > 20: kamibot.go_backward_speed(50,50) else: kamibot.go_forward_speed(50,50) #카미봇 연결 해제 kamibot.close() | cs |
(1)컬러센서함수(인덱스값)
- 컬러 색상 인덱스 값을 반환
인덱스 : 1 ~ 8 빨강,오렌지,노랑,초록,파랑,하늘,보라,흰색
get_color_sensor()
color = kamibot.get_color_sensor()
print(f"color={color}") // 컬러 센서 값을 color 리스트에 저장 후 출력
- 컬러센서 값 확인하기
from pyKamipi.pibot import *
kamibot = KamibotPi('COM3',57600)
while True :
color = kamibot.get_color_sensor()
print(f"color={color}")
#센서닫기
kamibot.get_color_sensor(False)
#카미봇 연결해제
kamibot.close()
(2)컬러센서함수(R,G,B 값)
- 컬러색상 R,G,B 값을 반환하는 함수
R,G,B 값 반환 범위 : 0 ~ 255
get_color_elements()
color = kamibot.get_color_elements()
print(f"color={color}") // 컬러 센서 값을 color 리스트에 저장 후 출력
- 컬러센서 값 확인하기
from pyKamipi.pibot import *
kamibot = KamibotPi('COM3',57600)
while True :
color = kamibot.get_color_elements()
print(f"color={color}")
#센서닫기
kamibot.get_color_sensor(False)
#카미봇 연결해제
kamibot.close()
(3)예제 빨간색을 만나면 정지하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) while True: color = kamibot.get_color_sensor() print(f"color={color}") if color == 1: kamibot.stop() eles: kamibot.go_forward_speed(50,50) #센서닫기 kamibot.get_color_sensor(False) #카미봇 연결 해제 kamibot.close() | cs |
(4)예제 빨간색을 만나면 정지, 파란색을 만나면 유턴, 초록색을 만나면 90도 우회전 후 직진하는 로봇 코딩하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) while True: color = kamibot.get_color_sensor() print(f"color={color}") if color == 1: kamibot.stop() elif == 5: kamibot.trun_right_speed(90,50) kamibot.go_forward_speed(50,50) elif == 4: kamibot.trun_right_speed(180,50) kamibot.go_forwad_speed(50,50) else: kamibot.go_foeward_speed(50,50) #센서닫기 kamibot.get_color_sensor(False) #카미봇 연결 해제 kamibot.close() | cs |
(1)라인센서함수
- 왼쪽, 중앙, 오른쪽 센서 값을 반환 : left, center,right
검은색 = 1, 흰색 = 0
get_line_sensor()
ex)left,center,right = kamibot.get_line_sensor()
print(f"left={left}, center={center}, right={right}")
- 라인센서 값 확인하기
from pyKamipi.pibot import *
kamibot = KamibotPi('COM3',57600)
while True:
left,center,right = kamibot.get_line_sensor() #왼쪽,중앙,오른쪽 센서 값 읽기
print(f"left={left}, center={center}, right={right}") #왼쪽,중앙,오른쪽 센서 값 출력
#카미봇 연결해제
kamibot.close()
(2)예제 라인트레이서 로봇 코딩하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from pyKamipi.pibot import * #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) while True: left, center, right = kamibot.get_line_sensor() #왼쪽, 중앙, 오른쪽 센서 값 읽기 print(f"left={left}, center={center}, right={right}") #왼쪽, 중앙, 오른쪽 센서 값 출력하기 if center == 1: kamibot.go_foeward_speed(30,30) elif left == 1: kamibot.go_forward_speed(0,30) elif right == 1: kamibot.go_forward_speed(30,0) #카미봇 연결 해제 kamibot.close() | cs |
1)마스크착용 확인시스템 만들기
- 이미지 분류 : 사람얼굴, 도형, 손글씨, 동물, 꽃 등 이미지 데이터 기반으로 분류하는 딥러닝기술
◎목표 - 마스크 착용으로 분류 시 → 문 열기 → 카미봇파이 LED 파란색으로 바꾸기 - 마스크 미착용으로 분류 시 → 문 닫기 → 카미봇파이 LED 빨간색으로 바꾸기
(1)머리 모터 함수
- 머리 스텝모터를 절대 각도(위치)로 회전
top_motor_abspos(degee,speed,torque)
degee : 각도 0 ~ 360
speed : 회전속도 1 ~ 9
torque : 회전토크(힘) 1 ~ 5
ex)kamibot.top_motor_abspos(0,1,1) // 0도 위치로 1속도, 1힘으로 회전
- Hello AI 구조
def setup() : # 프로그램 실행 시 먼저 실행되며 한 번 호출됨
def loop() : # 반복적으로 실행되는 함수
if_name_=='_main_' : #helloAI 실행
run()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | from helloai import * from pyKamipi.pibot import KamibotPi #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) wnd = Window('main') #windows 창 Model = TMImageProject() #티처블머신 프로젝트 설정 camera = Camera(num=0, crop=True, flip=1) #카메라 객체 생성 def setup(): #티처블머신 학습 모델 불러오기 modle.load_model('c:/workspace/model/mask') model.summary() def loop(): img = camera.read() #카메라 이미지 읽기 lbl = model.process(img) #모델에 이미지 입력하고 분류 값 받기 print(lbl) #결과 값 출력 wnd.show(img) #카메라 이미지 Window 출력 if lbl == "마스크착용": #분류된 값이 "마스크착용"이면 파란색 kamibot.trun_led(0,0,255) elif lbl == "마스크미착용": #분류된 값이 "마스크미착용"이면 빨간색 kamibot.trun_led(255,0,0) #HelloAI의 기능을 사용하기 위한 실행 방법 if __name__ == '__main__': run() | cs |
2)자세인식
- 자세인식 : 사람의 얼굴, 어깨, 손목, 무릅, 발목 등의 정보를 알 수 있으며 낙상감지, 위험 행동 감지 등 행동을 예측 및 파악하는데 사용할 수 있다.
(1)예제1 기본 사용법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | from helloai import * from pyKamipi.pibot import KamibotPi #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) wnd = Window('wnd') camera = Camera() #카메라 객체 생성 detector = PoseDetector() #포즈를 인식하기 위한 객체 def loop(): img = camera.read() #카메라 영상 읽기 img, landmarks = detector.process(img, draw=True) #인식하기 print(landmarks) #인식된 포즈 정보 표시 wnd.show(img) #이미지 if __name__ == '__main__': run() | cs |
(2)예제2 오른손을 들면 앞으로 이동, 내리면 정지하는 로봇 코딩하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | from helloai import * from pyKamipi.pibot import KamibotPi #객체생성, 동글 COM 포트 설정, 통신속도 57600 kamibot = KamibotPi('COM3',57600) wnd = Window('wnd') camera = Camera() #카메라 객체 생성 detector = PoseDetector() #포즈를 인식하기 위한 객체 def loop(): img = camera.read() #카메라 영상 읽기 img, landmarks = detector.process(img, draw=True) #인식하기 x1, y1 = landmarks[15][1:3] #오른쪽 손목 좌표 받기 x2, y2 = landmarks[11][1:3] #오른쪽 어깨 좌표 받기 print(f"오른손 X좌표:{x1} Y좌표:{y1}") if y1<y2: kamibot.go_forward_speed(50,50) else: kamibot.stop(); wnd.show(img) #이미지 표시 if __name__ == '__main__': run() | cs |
- 인식률을 높이기 위해 도로 양쪽의 색상을 다르게 했으므로 주행 방향은 한쪽으로만 합니다.
- 반시계 방향으로 정했을 때, 좌회전은 직진도로와 코너 부분의 도로(더 좌측으로 많이 휘어 움직여야하는 곳)로 나누어서 학습합니다.