Back to Course

Quarky 및 파이썬을 사용한 로봇 공학 및 AI - 레벨 1

0% Complete
0/0 Steps
  1. 로봇 공학의 기초
    수업 1: Quarky 로봇의 기초
    5 Topics
  2. 수업 2: 로봇 동작의 기초
    3 Topics
  3. 수업 3: 무선 제어 로봇
    4 Topics
  4. 라인 팔로워
    수업 4: 라인 감지를 위한 IR 센서 보정
    3 Topics
  5. 수업 5: 로봇을 따라가는 라인
    4 Topics
  6. 로봇 공학을 이용한 AI
    수업 6: AI 배달 봇으로서의 Quarky - 파트 1
    3 Topics
  7. 수업 7: AI 배달 봇으로서의 Quarky - 파트 2
    4 Topics
  8. 수업 8: 자율주행차 - 파트 1
    4 Topics
  9. 수업 9: 로봇 애완동물
    4 Topics
  10. 수업 10: 제스처 기반 로봇 제어 - 1부
    3 Topics
  11. 수업 11: 제스처 기반 로봇 제어 - 파트 2
    3 Topics
  12. 캡스톤 프로젝트
    수업 12: 캡스톤 프로젝트
Lesson Progress
0% Complete

로봇 애완동물을 돌봐주세요 – 개요

지난 강의에서는 IR 센서를 보정하는 방법을 이해했습니다.

손으로 만져주면 반응하는 로봇 펫을 만들어보는 건 어떨까요? 로봇은 IR 센서를 사용하여 애지중지하는 것을 감지하고 그에 따라 행동할 수 있습니다.

목표는 로봇이 손을 감지했을 때 특정 동작을 실행하도록 하는 것입니다.

  • 왼쪽 센서에 손이 감지되면 왼쪽으로 돌립니다.
  • Right 센서에 손이 감지되면 우회전합니다.
  • 왼쪽과 오른쪽 센서 모두에서 손이 감지되면 Quarky와 스마일을 소개합니다.
  • 아무것도 감지되지 않으면 아무 것도 하지 마십시오.

코딩하자!

코드는 매우 간단합니다. 바로 시작하겠습니다. 아래 단계를 따르세요.

  1. 먼저 Quarky를 PictoBlox에 연결하는 것으로 시작하겠습니다.
    1. 먼저 USB 케이블을 사용하여 Quarky를 노트북에 연결합니다.
    2. PictoBlox를 열고 새 파일을 만듭니다. 코딩 환경을 Python Coding으로 선택
    3. Board를 Quarky로 선택합니다. 다음으로 Quarky를 연결할 Bluetooth port를 선택하고 Connect 을 누릅니다.
  2. 우리는 이 활동에서 Quarky를 사용할 것이므로 quarky 관련 함수도 작성하고 이러한 함수를 작성하려면 quarky에 대한 객체를 정의해야 합니다.
    quarky = Quarky()
  3. 우리는 파이썬에서 시간 모듈을 사용해야 합니다. Quarky에서 두 가지 감정을 표시하는 사이에 특정 시간 간격을 두고 싶기 때문입니다. Python 시간 모듈을 사용하면 Python에서 시간 작업을 수행할 수 있습니다 . 따라서 이 모듈을 시작하기 전에 모듈을 가져와야 합니다.
    import time
  4. 다음으로 quarky 로봇의 방향을 설정하려고 합니다. Quarky는 가로 또는 세로 방향으로 설정할 수 있습니다. 여기서는 세로 방향을 설정합니다. 이를 위해 setorientation(“VERTICAL”) 함수를 사용합니다.
    quarky.setorientation("VERTICAL")
  5. 이제 왼쪽 및 오른쪽 IR 센서의 임계값을 설정하려고 합니다. 이전 활동에서 임계값을 찾는 방법을 이미 배웠습니다.
    quarky.setirthreshold("IRL", 3500) 
    quarky.setirthreshold("IRR", 3500)
    
  6. 이제 조건을 while True로 제공하여 while 루프를 작성할 것입니다. 이는 주어진 부울 조건이 False로 평가될 때까지 루프가 계속 실행되어야 함을 의미합니다. while True라고 쓰면 루프가 영원히 실행됩니다.
    while True:
    1. 우리의 목표는 if-else 루프, 논리 연산자 및 getirstate(“IR”) 함수를 사용하여 왼쪽 IR 센서와 오른쪽 IR 센서가 활성화되어 있는지 확인하는 것입니다. 왼쪽과 오른쪽 센서 모두에서 손이 감지되면 Quarky와 스마일을 소개합니다. 이를 위해 showemotion()playsound(“QuarkyIntro”) 함수를 사용합니다. if 루프는 다음과 같습니다.
      if (not (quarky.getirstate("IRL")) and  not (quarky.getirstate("IRR"))):
      		quarky.showemotion("happy")
      		quarky.playsound("QuarkyIntro")
      		time.sleep(2)
    2. 여기서는 time.sleep() 함수를 사용하여 2초의 지연을 제공합니다.
    3. 이제 else 부분을 정의합니다. 위의 조건이 거짓이면 else 루프가 실행됩니다.
    4. pass 함수는 사용자가 어떤 코드를 작성해야 할지 모를 때 사용하므로 사용자는 단순히 해당 줄에 pass를 배치합니다. 경우에 따라 사용자가 코드 실행을 원하지 않을 때 패스가 사용됩니다.
    5. 이제 Right 센서에 손이 감지되면 매트릭스에 오른쪽 화살표 패턴을 표시하여 쿼키가 오른쪽으로 회전하도록 합니다. 올바른 IR 센서가 활성화되었는지 확인하기 위해 else 루프 내부에 또 다른 if-else 루프를 사용할 수 있습니다.
      else:
      		pass
      		if  not (quarky.getirstate("IRR")):
    6. 조건이 참이면 쿼키의 행렬에 표시할 오른쪽 화살표 패턴을 만듭니다. 패턴을 표시하기 위해 drawpattern(pattern = “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”) 함수를 사용합니다.
      이 함수는 RGB LED 매트릭스를 Pictoblox에 지정된 패턴으로 설정합니다. 전달된 매개변수는 각 문자가 색상 팔레트의 색상에 해당하는 35자 문자열입니다.
      구문: drawpattern((pattern = “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”)
      quarky.drawpattern("jjjjijjjjjjiijiiiiiiijjjjiijjjjjijj")
    7. 다음으로 우리는 쿼키가 60% 속도로 오른쪽으로 회전하기를 원합니다. runrobot(“RIGHT”,60) 함수를 사용합니다.
      quarky.runrobot("RIGHT",60)
    8. 0.5 초의 시간 지연을 추가한 다음 stoprobot() 함수를 호출하여 쿼키 정지를 만듭니다.
      time.sleep(0.5)
           quarky.stoprobot()
    9. 우리의 외부 else는 다음과 같습니다.
      else:
      		pass
      		if  not (quarky.getirstate("IRR")):
      			quarky.drawpattern("jjjjijjjjjjiijiiiiiiijjjjiijjjjjijj")
      			quarky.runrobot("RIGHT",60)
      			time.sleep(0.5)
      			quarky.stoprobot()
    10. 마찬가지로 else 부분에서 왼쪽 IR 센서의 상태를 확인해야 합니다. 왼쪽 센서에 손이 감지되면 매트릭스에 왼쪽 화살표 패턴을 표시하여 쿼키가 왼쪽으로 회전하도록 합니다. else 루프 내에서 또 다른 if-else 루프를 사용할 수 있습니다.
                      else:
      			pass
      			if  not (quarky.getirstate("IRL")):
      				quarky.drawpattern("jjijjjjjiijjjjiiiiiiijiijjjjjjijjjj")
      				quarky.runrobot("LEFT",60)
      				time.sleep(0.5)
      				quarky.stoprobot()
    11. 마지막으로 else 루프 내에서 cleardisplay() 함수를 호출하여 quarky의 디스플레이를 지웁니다.
      	                else:
      				pass
      				quarky.cleardisplay()
    12. 전체 코드는 다음과 같습니다.
      quarky = Quarky()
      
      import time
      
      quarky.setorientation("VERTICAL")
      
      quarky.setirthreshold("IRL",2000)
      quarky.setirthreshold("IRR",2000)
      
      while True:
        # When both sensors are active
      	if (not (quarky.getirstate("IRL")) and  not (quarky.getirstate("IRR"))):
      		quarky.showemotion("happy")
      		quarky.playsound("QuarkyIntro")
      		time.sleep(2)
      	
      	else:
      		pass
      		# When Right IR sensor is active
      		if  not (quarky.getirstate("IRR")):
      			quarky.drawpattern("jjjjijjjjjjiijiiiiiiijjjjiijjjjjijj")
      			quarky.runrobot("RIGHT",60)
      			time.sleep(0.5)
      			quarky.stoprobot()
      		
      		else:
      			pass
      		# When Left IR sensor is active
      			if  not (quarky.getirstate("IRL")):
      				quarky.drawpattern("jjijjjjjiijjjjiiiiiiijiijjjjjjijjjj")
      				quarky.runrobot("LEFT",60)
      				time.sleep(0.5)
      				quarky.stoprobot()
      			
      			else:
      				pass
      				quarky.cleardisplay()
      

과제 업로드

과정을 마친 후 수료증을 받으려면 과제를 제출해야 합니다.

과제를 업로드하려면 아래 단계를 따르세요.

  1. 먼저 Pictoblox 파일을 선택해야 하므로 Browse를 클릭합니다.
  2. .sb3 파일을 선택합니다.
  3. 그리고 Upload 버튼을 클릭합니다.

행운을 빕니다! ????