Lesson Progress
0% Complete
체크포인트 1로 이동
논리 이해
우리는 줄을 따라가는 로봇을 AI 배송 봇으로 사용할 것입니다. 작동 방식은 다음과 같습니다.
첫 번째 체크포인트에 성공적으로 도달하려면 다음을 수행해야 합니다.
- IR 센서 임계값과 속도 매개변수로 로봇을 초기화하여 라인 팔로어를 준비합니다.
- 그런 다음 라인 추적을 수행하고 두 센서가 모두 활성화되어 있는지 지속적으로 확인하십시오. 두 센서가 모두 활성화되어 있으면 체크포인트에 도달했으며 멈춰야 합니다.
- 그런 다음 숫자에 대한 카메라 피드를 분석하고 숫자를 감지해야 합니다.
- 숫자 1이 감지되면 목적지에 도달했음을 알 수 있습니다.
- 1번이 감지되지 않으면 로봇을 앞으로 이동시켜 현재 체크포인트를 건너뛰고 다시 해당 단계를 수행해야 합니다.
코딩하자!
코드는 매우 간단합니다. 바로 시작하겠습니다. 아래 단계를 따르세요.
- 먼저 Quarky를 PictoBlox에 연결하는 것으로 시작하겠습니다.
- 먼저 USB 케이블을 사용하여 Quarky를 노트북에 연결합니다.
- PictoBlox를 열고 새 파일을 만듭니다. 코딩 환경을 Python Coding으로 선택
- Board를 Quarky로 선택합니다. 그런 다음 Quarky를 연결할 Serial port를 선택하고 Connect을 누릅니다.
- 이제 프로젝트 파일 섹션에서 Tobi.py 파일을 선택하면 기본적으로 구문이 스프라이트에 개체로 작성됩니다.
sprite = Sprite('Tobi')
- 우리는 이 활동에서 확장 RecognitionCards를 사용할 것이므로 카드 관련 함수도 작성하고 해당 함수를 작성하려면 스프라이트에 대해 했던 것과 같은 방식으로 개체 카드를 정의해야 합니다.
card = RecognitionCards()
- 우리는 이 활동에서 Quarky를 사용할 것이므로 quarky 관련 함수도 작성하고 해당 함수를 작성하기 위해 sprite에 대해 수행한 것과 동일한 방식으로 quarky에 대한 객체를 정의해야 합니다.
quarky = Quarky()
- 다음으로 IRL과 IRR 모두에 대한 임계값을 설정하려고 합니다.
# Define Threshold Values quarky.setirthreshold("IRL",3000) quarky.setirthreshold("IRR",2700)
- 그런 다음 매개변수를 설정하여 라인 팔로워를 초기화해야 합니다. 초기화 구문은 다음과 같습니다.
quarky.initializelinefollower([1],[2],[3]) ##where [1],[2] &[3] are the forward, turning1 & turning 2 respectively.
- 여기서 우리는 각각 40,40 및 15로 forward, turning1 및 turning 2를 설정합니다.
quarky.initializelinefollower(40, 40, 15)
- 이제 코드는 다음과 같습니다.
sprite = Sprite('Tobi') card = RecognitionCards() quarky = Quarky() # Define Threshold Values quarky.setirthreshold("IRL", 3500) quarky.setirthreshold("IRR", 3500) quarky.initializelinefollower(40, 40, 15)
- 다음으로 카드 인식기를 초기화하려고 합니다. 첫 번째 단계는 비디오를 켜는 것입니다. 이를 위해 video([1],[2]) 함수를 사용하고 있습니다. 여기서 [1]은 비디오 상태를 나타내고 [2]는 투명도를 나타냅니다.
card.video("on flipped", 0)
- 이제 바운딩 박스는 카드의 위치를 찾는 데 사용되며 아래 기능을 사용합니다.
card.enablebox()
- 임계값을 설정하면 기계가 감지한 물체에 대해 얼마나 확신하는지 알 수 있습니다.
card.setthreshold(0.3)
- quarky의 led 매트릭스에 흰색을 표시하려면 drawpattern(“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”) 함수를 사용합니다.이 함수는 RGB LED 매트릭스를 Pictoblox에 지정된 패턴으로 설정합니다. 전달된 매개변수는 각 문자가 색상 팔레트의 색상에 해당하는 35자 문자열입니다.
quarky.drawpattern("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
- 이제 조건을 while True로 제공하여 while 루프를 작성할 것입니다. 이는 주어진 부울 조건이 False로 평가될 때까지 루프가 계속 실행되어야 함을 의미합니다. while True라고 쓰면 루프가 영원히 실행됩니다.
while True:
- 다음으로 if-else 및 논리 연산자를 사용하여 두 센서가 모두 활성 상태인지 확인합니다. 조건이 참이면 quarky가 중지됩니다.
if (quarky.getirstate("IRL") and quarky.getirstate("IRR")): quarky.stoprobot()
- 이제 카메라에서 숫자 1이 감지되는지 여부를 분석하고 싶습니다. 이를 위해 함수 analysecamera()를 사용합니다.
card.analysecamera()
- 숫자 1이 감지되는지 확인하기 위해 첫 번째 if-else 함수 내부에 다른 if-else를 추가하려고 합니다. 조건이 참이면 쿼키는 매트릭스에 녹색을 표시합니다.
if card.issignaldetected("1"): quarky.drawpattern("ccccccccccccccccccccccccccccccccccc")
- 여기서는 break 문을 사용하여 1이 감지되면 루프를 종료합니다. 파이썬의 모든 루프(while, for 및 nested)에서 break를 사용할 수 있습니다. 중첩 루프에서 사용하는 경우 사용했던 가장 안쪽 루프를 종료하고 프로그램 제어가 외부 루프로 흐릅니다.
break
- 다음으로 내부 및 외부 루프에서 else를 정의할 차례입니다. 내부 else 루프에서 우리는 quarky가 40% 속도로 정방향으로 실행하도록 정의하고 외부 else에서 우리는 quarky가 선을 따라가도록 만들 것입니다.
else: quarky.runrobot("F", 40) else: quarky.dolinefollowing()
- 다음으로 if-else 및 논리 연산자를 사용하여 두 센서가 모두 활성 상태인지 확인합니다. 조건이 참이면 quarky가 중지됩니다.
- 전체 코드는 다음과 같습니다.
sprite = Sprite('Tobi') card = RecognitionCards() quarky = Quarky() # Define Threshold Values quarky.setirthreshold("IRL", 3500) quarky.setirthreshold("IRR", 3500) quarky.initializelinefollower(40, 40, 15) # Initialize the Card Recognizer card.video("on", 0) card.enablebox() card.setthreshold(0.3) quarky.drawpattern("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") # Line Following Code while True: # Both Sensors are Active if (quarky.getirstate("IRL") and quarky.getirstate("IRR")): quarky.stoprobot() card.analysecamera() if card.issignaldetected("1"): quarky.drawpattern("ccccccccccccccccccccccccccccccccccc") break else: quarky.runrobot("F", 40) else: quarky.dolinefollowing()
과제 업로드
과정을 마친 후 수료증을 받으려면 과제를 제출해야 합니다.
과제를 업로드하려면 아래 단계를 따르세요.
- 먼저 Pictoblox 파일을 선택해야 하므로 Browse를 클릭합니다.
- .sb3 파일을 선택합니다.
- 그리고 Upload 버튼을 클릭합니다.
행운을 빕니다! ????