Chuyển đến nội dung chính

Định vị GPS

Hãy tạo thuật toán để điều khiển Robot Anh hùng di chuyển đến vị trí cụ thể trên chiến trường. Sử dụng các khối lệnh [Lái xe đến] và [Quay theo hướng], Cảm biến GPS, Động cơ tay và Động cơ hút để điều khiển Robot Anh hùng đến vị trí (1380, -1380) để nhặt Triball được đánh dấu màu đỏ. Sau đó điều khiển robot đến vị trí (600, -300) và ghi bàn Triball vào khung thành của Liên minh Đỏ.

  • Chọn Sân chơi Kỹ năng ảo VRC - Trên và Dưới.
  • Sử dụng danh sách kiểm tra Trước trận đấu để chọn Vị trí bắt đầu “H”, SHướng bắt đầu “Bắc”, và Tải trước robot “Không” cho robot.
  • Hãy lập trình thuật toán để điều khiển robot di chuyển đến vị trí cụ thể.
  • Lập trình cho robot quay động cơ cánh tay để hạ thấp hoàn toàn cánh tay xuống nhằm nhặt quả bóng Triball trên sân.
  • Sử dụng thuật toán để điều hướng robot đến tọa độ (1380, -1380) và xoay robot theo hướng 135 độ.
  • Lập trình cho robot quay động cơ hút để nhặt quả bóng ba mặt màu xanh lá cây được đánh dấu màu đỏ.
  • Sử dụng thuật toán để điều hướng robot đến tọa độ (600, -300) và xoay robot theo hướng 90 độ.
  • Lập trình cho robot quay động cơ hút khí để phóng quả bóng ba cạnh đến mục tiêu của Liên minh Đỏ. 

Mẹo hữu ích

  • Sử dụng cảm biến GPS để xác định tọa độ X và Y của Robot Anh hùng trên chiến trường. Để biết thêm thông tin về cách sử dụng Cảm biến GPS trong Sân chơi VRC Over Under, vui lòng vào đây.
  • Sử dụng các khối Reporter từ danh mục Sensing để lấy giá trị vị trí từ cảm biến GPS.

    Khối định vị GPS VEXcode đọc vị trí GPS X ') tính bằng mm'.

    Khối định vị GPS VEXcode đọc vị trí GPS 'Y tính bằng mm'.

    • Lệnh Python tương ứng:

      gps.x_position(MM)
      gps.y_position(MM)
  • Sử dụng các khối set từ danh mục Biến để khai báo hai biến lưu trữ tọa độ X và Y ban đầu của Robot Anh hùng.

    Tập hợp các khối biến VEXcode Set. Khối lệnh đầu tiên đọc ', đặt X1 thành vị trí GPS X tính bằng mm'. Khối lệnh thứ hai đọc ', đặt Y1 thành vị trí GPS Y tính bằng mm'.

    • Lệnh Python tương ứng:

      X1 = gps.x_position(MM)
      Y1 = gps.y_position(MM)
  • Để được trợ giúp về việc khai báo biến và lưu trữ dữ liệu trong dự án, vui lòng chọn nút “HƯỚNG DẪN” trong VEXcode VR và chọn Hướng dẫn Lưu trữ dữ liệu.

    Biểu tượng hướng dẫn từ thanh công cụ VEXcode VR.

    Biểu tượng hướng dẫn lưu trữ dữ liệu trong VEXcode VR.

  • Để biết thêm thông tin về các quy tắc đặt tên biến trong VEXcode VR, vui xem bài viết.
  • Sử dụng tọa độ của robot (x1, y1), tọa độ vị trí mục tiêu (x2, y2) và hàm atan để tìm hướng di chuyển.
    • Tính góc theta θ của đường thẳng nối hai điểm này.

      Sơ đồ minh họa hai biểu thức toán học. Biểu thức đầu tiên có dạng 'theta bằng atan((y2 - y1) / (x2 - x1))'. Biểu thức thứ hai có nghĩa là '-pi / 2 nhỏ hơn theta, nhỏ hơn pi / 2'.

      Sơ đồ toán học từ trên xuống cho thấy robot ở tọa độ (X1, Y1) và một đường thẳng hướng về tọa độ (X2, Y2). Khoảng cách được ký hiệu bằng biến d, góc được ký hiệu bằng biến theta. Khoảng cách ngang giữa hai điểm được biểu diễn là 'x2 - x1', và khoảng cách dọc được biểu diễn là 'y2 - y1'.

    • Chuyển đổi góc theta θ thành hướng điều khiển.

      Ví dụ mã giả cho biểu thức toán học (Hướng bắt đầu: Bắc):

      nếu X1 bằng X2:
      	nếu Y2 > Y1:
      		hướng = 0
      	ngược lại:
      		hướng = 180
      ngược lại:
      	nếu X2 > X1:
      		hướng = 90 - atan((Y2 - Y1) / (X2 - X1))
      	ngược lại:
      		hướng = 270 - atan((Y2 - Y1) / (X2 - X1))
    • Sơ đồ nhìn từ trên xuống cho thấy robot nằm bên trong một vòng tròn có các nhãn đánh dấu vị trí'đến 360 độ.
  • Sử dụng khối hàm từ danh Toán tử và chọn hàm atan để tính góc theta θ.

    Khối chức năng VEXcode trống đọc 'atan của blank'.

    • Lệnh Python tương ứng:

      math.atan() / math.pi * 180
  • Sử dụng tọa độ của robot (x1, y1), tọa độ vị trí mục tiêu (x2, y2) và định lý Pitago để tìm quãng đường di chuyển.

    Biểu thức toán học có dạng 'd = sqrt((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)'

    Sơ đồ nhìn từ trên xuống tương tự như trước, thể hiện sự khác biệt giữa hai hệ tọa độ. Robot đang ở tọa độ (X1, Y1) và một đường thẳng đang chỉ về phía tọa độ (X2, Y2). Khoảng cách được ký hiệu bằng biến d, góc được ký hiệu bằng biến theta. Khoảng cách ngang giữa hai điểm được biểu diễn là 'x2 - x1', và khoảng cách dọc được biểu diễn là 'y2 - y1'.

  • Sử dụng khối chức năng khối từ danh mục Toán tử và chọn chức năng , căn bậc để tính khoảng cách lái xe.

    Khối hàm VEXcode trống đọc giá trị 'căn bậc hai của khoảng trắng'.

    • Lệnh Python tương ứng:

      math.sqrt()