Skip to main content

Bài 1: Thuật toán là gì?

Trong Bài học này, bạn sẽ tìm hiểu thuật toán là gì và cách sử dụng thuật toán trong VEXcode VR Python cho phép bạn tạo các dự án có hành vi đa dạng hơn. Các dự án thuật toán hướng dẫn Robot VR phản ứng với môi trường xung quanh, điều này là cần thiết để giải quyết Thử thách Dynamic Castle Crasher.

Kết quả học tập

  • Nhận biết rằng các thuật toán được tạo thành từ trình tự, lựa chọn và lặp lại (vòng lặp).
  • Xác định rằng thuật toán là chuỗi lệnh chính xác, được triển khai bằng ngôn ngữ lập trình để Robot VR thực hiện các quy trình.

Thuật toán

Thuật toán là chuỗi lệnh chính xác, được triển khai bằng ngôn ngữ lập trình, như VEXcode VR Python, để Robot VR thực hiện các quy trình.

Các yếu tố cơ bản của một thuật toán là trình tự, lựa chọn và lặp lại.

  • Trình tự - thứ tự mà các hành vi và lệnh được kết hợp trong một dự án để tạo ra kết quả mong muốn.     
  • Lựa chọn - sử dụng câu lệnh có điều kiện trong một dự án. Các câu lệnh có điều kiện, chẳng hạn như nếuhoặc nếu khácsẽ ảnh hưởng đến luồng công việc của một dự án.
  • Lặp lại - thuật toán thường sử dụng sự lặp lại để thực hiện các bước một số lần nhất định hoặc cho đến khi đáp ứng được một điều kiện nhất định. Điều này còn được gọi là "lặp lại". Lặp lại có thể thay đổi luồng dự án bằng cách lặp lại một hành vi theo số lần nhất định hoặc cho đến khi đáp ứng được một điều kiện.  

Dự án mẫu này từ thử thách Unit 8 là một ví dụ về thuật toán. Nó bao gồm sự kết hợp của các vòng lặp, dữ liệu cảm biến và các lệnh được sắp xếp theo trình tự để giải quyết Thử thách di chuyển đĩa.

def main():
	cho giá trị trong phạm vi (3):
		
		cho giá trị trong phạm vi (3):
			# 1. Truyền dữ liệu vào đĩa bằng Cảm biến Down Eye
			khi không down_eye.near_object():
				drivetrain.drive(FORWARD)
				wait(5, MSEC)
			drivetrain.stop()
			
			# 2. Nhấc đĩa
			nam châm.kích hoạt(BOOST)
			
			# 3. Lái xe đến đích bằng Cảm biến khoảng cách
			drivetrain.turn_to_heading(180, DEGREES)
			while front_distance.get_distance(MM) > 200:
				drivetrain.drive(FORWARD)
				wait(5, MSEC)
			drivetrain.stop()
			
			# 4. Thả đĩa vào mục tiêu
			magnet.energize(DROP)
			drivetrain.drive_for(REVERSE, 100, MM)
			
			# 5. Quay mặt về phía đĩa tiếp theo
			drivetrain.turn_to_heading(0, DEGREES)
			wait(5, MSEC)
			
		# 6. Quay đầu và lái đến mục tiêu tiếp theo
		drivetrain.turn_to_heading(90, DEGREES)
		drivetrain.drive_for(FORWARD, 800, MM)
		
		# 7. Quay sang đĩa
		drivetrain.turn_to_heading(0, DEGREES)
		
	wait(5, MSEC)

Sự liên tiếp

Cách các lệnh được sắp xếp và kết hợp sẽ quyết định hành vi của Robot VR. Trong ví dụ này, mỗi tập hợp hành vi cần thiết để di chuyển đĩa được thực hiện ba lần, sau đó VR Robot di chuyển đến tập hợp đĩa tiếp theo và lặp lại các hành vi cho đến khi tất cả các đĩa được trả về mục tiêu. Sơ đồ dòng chảy hiển thị trình tự thu thập đĩa của robot. Ở bên trái, mã hiển thị vòng lặp chính lặp lại ba lần. Các mũi tên tuần hoàn màu đỏ ở bên phải biểu thị các vòng lặp liên tục chạy cho đến khi đáp ứng được các điều kiện của cảm biến (như tìm hoặc nắm được đĩa), trong khi các mũi tên màu xanh lá cây biểu thị các chuyển đổi giữa việc thu thập đĩa, di chuyển đĩa đến mục tiêu, thả đĩa và định vị lại cho chu kỳ tiếp theo.

Lựa chọn

Dự án này cũng bao gồm phần lựa chọn xác định các phần của dự án được chạy dựa trên các điều kiện cảm biến. Đầu tiên, Cảm biến mắt hướng xuống được sử dụng để xác định thời điểm Robot VR ở gần đĩa để có thể nhặt đĩa lên. Sau đó, Cảm biến khoảng cách được sử dụng để xác định thời điểm Robot VR vượt qua mục tiêu để có thể thả đĩa xuống.  Đoạn mã từ Đơn vị 8 bao gồm hai điều kiện được tô sáng để điều khiển chuyển động của robot dựa trên dữ liệu cảm biến. Điều kiện được tô sáng đầu tiên, mặc dù không phải là down_eye.near_object(), sẽ hướng dẫn robot tiến về phía trước cho đến khi Cảm biến mắt xuống phát hiện ra một vật thể gần đó, cho phép robot tiếp cận đĩa trước khi dừng lại. Điều kiện được tô sáng thứ hai, trong khi front_distance.get_distance(MM) > 200, chỉ đạo robot tiến về phía trước cho đến khi cách mục tiêu trong vòng 200 mm, sử dụng cảm biến khoảng cách phía trước để đo khoảng cách. Những điều kiện while này tạo ra các vòng lặp khiến robot chỉ dừng lại khi từng điều kiện cảm biến cụ thể được đáp ứng.

Trong vòng lặpwhileđầu tiên, việc lựa chọn lệnh nào sẽ được chạy dựa trên các giá trị cảm biến được báo cáo bởi Cảm biến mắt xuống.

  • Khi không phát hiện thấy vật thể nào, VR Robot sẽ di chuyển về phía trước.
  • Khi phát hiện thấy vật thể, Robot VR sẽ dừng lại.

Trong vòng lặpwhile thứ hai, việc lựa chọn lệnh nào sẽ được chạy dựa trên các giá trị cảm biến được báo cáo bởi Cảm biến khoảng cách.

  • Trong khi khoảng cách được báo cáo lớn hơn 200 milimét (mm), Robot VR sẽ di chuyển về phía trước.
  • Trong khi khoảng cách được báo cáo là dưới 50 milimét (mm), Robot VR sẽ dừng lái và di chuyển đến phần tiếp theo của dự án để cung cấp năng lượng cho Nam châm điện.

Lặp lại

Dự án sử dụng phép lặp hoặc “vòng lặp” để lặp lại các hành động và kiểm tra nhiều lần các giá trị cảm biến được báo cáo. Dự án này bao gồm các vòng lặp lồng nhau – một vòng lặp để Robot VR có thể thu thập cả ba đĩa cùng một màu; và vòng lặp thứ hai để lặp lại quá trình đó nhằm thu thập tất cả các đĩa trên Sân chơi. Mã này sử dụng hai vòng lặp lồng nhau để điều khiển quá trình thu thập đĩa của robot. Vòng lặp bên ngoài, được gắn nhãn là Vòng lặp để thu thập các đĩa có mọi màu, lặp qua từng màu đĩa. Bên trong, vòng lặp bên trong, được dán nhãn là Vòng lặp để thu thập 3 đĩa cùng màu, lặp lại ba lần để thu thập và đặt ba đĩa cùng màu hiện tại. Thiết lập này đảm bảo robot thu thập ba đĩa của mỗi màu trước khi chuyển sang màu tiếp theo, trong đó mỗi vòng lặp tập trung vào việc thu thập và sắp xếp một cách có hệ thống.

Thuật toán này được thiết kế để thu thập và trả lại ba đĩa, ba lần, để hoàn thành Thử thách di chuyển đĩa. Logic tương tự được áp dụng để thu thập và di chuyển đĩa nhiều lần bằng cách sử dụng trình tự, lựa chọn và lặp lại cũng có thể được áp dụng cho các thử thách khác, như Thử thách Dynamic Castle Crasher.

Câu hỏi

Vui lòng chọn liên kết bên dưới để truy cập bài kiểm tra bài học.

Google Doc / .docx / .pdf