ข้ามไปยังเนื้อหาหลัก

ตั้งเป้าหมาย

สร้างอัลกอริทึมเพื่อค้นหาทิศทางการยิง Hero Bot ที่อยู่ในตำแหน่งที่กำหนด เพื่อให้แน่ใจว่า Triball จะทำคะแนนเข้าประตูได้สำเร็จ ใช้บล็อก [Drive for] และ [Turn to heading], เซ็นเซอร์ GPS, มอเตอร์แขน และมอเตอร์ดูด เพื่อเขียนโค้ดให้ Hero Bot หยิบ Triball ที่ไฮไลต์ไว้ทั้งสามลูก ขับไปยังตำแหน่งที่ (600, 600) เลี้ยวไปในทิศทางที่เหมาะสม และปล่อย Triball เข้าไปในเป้าหมายของฝ่ายพันธมิตรสีแดง ใครทำเวลาได้เร็วที่สุดเป็นผู้ชนะ!

  • เลือก VRC Virtual Skills - Over Under Playground
  • ใช้เช็คลิสต์ก่อนเริ่มการแข่งขันเพื่อเลือกตำแหน่งเริ่มต้น ทิศทางเริ่ม และค่าการบรรทุกน้ำหนักหุ่นยนต์ (หมายเลข)
  • สร้างอัลกอริทึมเพื่อนำทางหุ่นยนต์ไปยังตำแหน่งที่กำหนด
  • สร้างอัลกอริทึมเพื่อนำทางหุ่นยนต์ไปยังตำแหน่งที่สามารถหยิบลูกบอล Triball ซึ่งวางอยู่ที่ตำแหน่งที่กำหนด
  • สร้างอัลกอริทึมเพื่อหาทิศทางการยิงที่เหมาะสมที่สุดเพื่อให้ลูกบอล Triball เข้าประตู
  • เขียนโปรแกรมให้หุ่นยนต์หมุนมอเตอร์แขนเพื่อลดแขนลงจนสุดเพื่อหยิบลูกบอล Triball บนสนาม
  • เขียนโค้ดให้ Hero Bot เก็บ Triball ที่ไฮไลต์ไว้ที่ตำแหน่ง (0,1500) แล้วทำคะแนนในประตูของฝ่ายพันธมิตรแดง 
    • ใช้อัลกอริทึมเพื่อขับเคลื่อนหุ่นยนต์ไปยังตำแหน่งสำหรับหยิบ Triball ที่ไฮไลต์ไว้ซึ่งอยู่ที่ (0, 1500)
    • เขียนโปรแกรมให้หุ่นยนต์หมุนมอเตอร์ดูดเพื่อหยิบลูกบอล Triball ขึ้นมา
    • ใช้อัลกอริธึมเพื่อนำทางหุ่นยนต์ไปยังพิกัด (600, 600)
    • ใช้อัลกอริทึมเพื่อหาทิศทางการยิงที่เหมาะสมที่สุดสำหรับ Hero Bot เพื่อให้ Triball เข้าประตูได้สำเร็จ หมุนหุ่นยนต์ไปในทิศทางที่จะปล่อยตัว
    • เขียนโปรแกรมให้หุ่นยนต์หมุนมอเตอร์ดูดเพื่อปล่อยลูกบอล Triball ไปยังเป้าหมายของฝ่ายแดง
  • เขียนโค้ดให้ Hero Bot เก็บ Triball ที่ไฮไลต์ไว้ที่พิกัด (1600, 1600) แล้วทำคะแนนให้ทีม Red Alliance ลงประตู
  • เขียนโค้ดให้ Hero Bot เก็บ Triball ที่ไฮไลต์ไว้ที่พิกัด (-125, 1075) แล้วทำคะแนนให้ Red Alliance Goal 
  • ใช้บล็อก [print] เพื่อพิมพ์ค่าตัวจับเวลาไปยังคอนโซลการพิมพ์

คำแนะนำที่เป็นประโยชน์

  • วางแผนเส้นทางการเคลื่อนที่ที่คาดการณ์ไว้สำหรับ Triball เพื่อหาทิศทางการปล่อยที่เหมาะสมที่สุด
    • วางแผนเส้นทางการเคลื่อนที่ของลูกบอล Triball เพื่อหลีกเลี่ยงไม่ให้ลูกบอลชนเสา ประตู หรือลูกบอล Triball อื่นๆ ภายในประตู
    • เลือกตำแหน่งบนเส้นทางที่วางแผนไว้ใน Goal เป็นจุดเล็ง และระบุพิกัด X และ Y ของจุดเล็งนั้น
    • ใช้พิกัดของหุ่นยนต์ (x1,y1) พิกัดของจุดเล็ง (x2,y2) และฟังก์ชัน atan เพื่อหาทิศทางการปล่อย
      • คำนวณมุมทีตา (θ) ของเส้นตรงที่เชื่อมจุดสองจุดนี้ 

        แผนภาพแสดงนิพจน์ทางคณิตศาสตร์สองนิพจน์ นิพจน์แรกอ่านว่า 'theta เท่ากับ atan((y2 - y1) / (x2 - x1))' นิพจน์ที่สองอ่านว่า 'ลบพาย/2 น้อยกว่าทีต้า ซึ่งน้อยกว่าพาย/2'

        แผนภาพทางคณิตศาสตร์แบบมองจากบนลงล่าง แสดงให้เห็นหุ่นยนต์อยู่ที่พิกัด (X1, Y1) และเส้นตรงชี้ไปยังพิกัด (X2, Y2) ระยะทางถูกกำหนดด้วยตัวแปร d และมุมถูกกำหนดด้วยตัวแปร theta ระยะทางในแนวนอนระหว่างจุดแสดงด้วย 'x2 - x1'และระยะทางในแนวตั้งแสดงด้วย 'y2 - y1'

    • แปลงค่ามุมทีต้า (θ) ให้เป็นทิศทางการเคลื่อนที่ของหุ่นยนต์ (Heading)

      ตัวอย่างรหัสเทียมสำหรับนิพจน์ทางคณิตศาสตร์ (ทิศทางเริ่มต้น: ทิศเหนือ):

      ถ้า X1 เท่ากับ X2:
      	ถ้า Y2 > Y1:
      		หัวข้อ = 0
      	มิฉะนั้น:
      		หัวข้อ = 180
      มิฉะนั้น:
      	ถ้า X2 > X1:
      		หัวข้อ = 90 - atan((Y2 - Y1) / (X2 - X1))
      	มิฉะนั้น:
      		หัวข้อ = 270 - atan((Y2 - Y1) / (X2 - X1))

      แผนภาพจากบนลงล่างแสดงให้เห็นหุ่นยนต์อยู่ภายในวงกลมที่มีป้ายกำกับระบุตำแหน่ง'ถึง 360 องศา

    • ใช้บล็อกฟังก์ชัน จากหมวด ตัวดำเนินการ และเลือกฟังก์ชัน atan เพื่อคำนวณมุม theta θ

      บล็อกฟังก์ชัน VEXcode ว่างเปล่าที่อ่านค่า 'แทนค่าว่าง'

      • คำสั่ง Python ที่ตรงกัน:

        math.atan( ) / math.pi * 180

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้เซ็นเซอร์ GPS ในสนามเด็กเล่น VRC Over Under คลิกที่นี่