
สารบัญ:
- ขั้นตอนที่ 1:
- ขั้นตอนที่ 2: สร้างโครงการหุ่นยนต์ใหม่
- ขั้นตอนที่ 3: สร้าง/กรอกข้อมูลใน RobotMap
- ขั้นตอนที่ 4: ลบคำสั่งตัวอย่างและระบบย่อยตัวอย่าง
- ขั้นตอนที่ 5: สร้าง DriveTrainSubSystem
- ขั้นตอนที่ 6: สร้าง DriveTrainCommand
- ขั้นตอนที่ 7: ข้ามไปที่ Robot
- ขั้นตอนที่ 8: กลับไปที่ DriveTrainCommand
- ขั้นตอนที่ 9: ไปที่ DriveTrainSub
- ขั้นตอนที่ 10: ต่อไปเราจะสร้างรหัส OI
- ขั้นตอนที่ 11: ไปที่ DriveTrainCommand
- ขั้นตอนที่ 12: ในที่สุดรวบรวมและอัปโหลดรหัสไปยัง Robot
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

นี่คือบทช่วยสอนเกี่ยวกับวิธีการสร้างระบบขับเคลื่อนอย่างง่ายสำหรับหุ่นยนต์ FRC บทช่วยสอนนี้อนุมานว่าคุณรู้ว่าพื้นฐานของ java, eclipse และได้ติดตั้ง wpilib แล้ว เช่นเดียวกับไลบรารี CTRE
ขั้นตอนที่ 1:

เปิด Eclipse
ขั้นตอนที่ 2: สร้างโครงการหุ่นยนต์ใหม่




- คลิกขวาที่ตัวสำรวจแพ็คเกจ คลิกใหม่ จากนั้นคลิกอื่นๆ
- เลื่อนลงมาจนกว่าคุณจะเห็น WPILib Robot Java Development (หากคุณไม่เห็น แสดงว่าคุณไม่ได้ติดตั้งทรัพยากร wpilib)
- คลิกที่ Robot Java Project
- จากนั้นกรอกชื่อโปรเจ็กต์และคลิกประเภทโปรเจ็กต์หุ่นยนต์ตามคำสั่ง (ควรกรอกแพ็คเกจแล้วและเหมือนกับโลกจำลอง)
ขั้นตอนที่ 3: สร้าง/กรอกข้อมูลใน RobotMap


สร้างตัวแปรสุดท้ายที่มีจำนวนพอร์ตกรงเล็บต่างๆ
ขั้นตอนที่ 4: ลบคำสั่งตัวอย่างและระบบย่อยตัวอย่าง


ขั้นตอนที่ 5: สร้าง DriveTrainSubSystem



- สร้างคอนสตรัคเตอร์ใหม่ในระบบย่อยระบบขับเคลื่อนที่สร้างขึ้นใหม่ จากนั้นสร้างวัตถุ CANTalon ที่สอดคล้องกับกรงเล็บบนระบบขับเคลื่อน
- สร้าง RobotDrive ชื่อ Drive
- สร้างอินสแตนซ์ Objects เหล่านี้ในตัวสร้าง (ตรวจสอบให้แน่ใจว่าใช้ค่าสำหรับกรงเล็บที่เราสร้างขึ้นในแผนที่หุ่นยนต์) สำหรับ Robot Drive เราจะใช้ตัวสร้างที่ใช้ตัวควบคุมมอเตอร์ 4 ตัว (RobotDrive(SpeedController frontLeftMotor, SpeedController rearLeftMotor, SpeedController frontRightMotor, SpeedController rearRightMotor))
- จากนั้นสร้างวิธีอาร์เคดไดรฟ์ () โดยมีตัวแปรอินพุตสองตัวคือ x ไปข้างหน้าและข้างหลังและ y อยู่ทางขวาและซ้าย ข้างในคุณจะเรียก drive.arcade ด้วยค่าไปข้างหน้าและหมุน
- จากนั้นเปลี่ยน initDefaultCommand() เพื่อให้มีบรรทัด setDefaultCommand(new DriveTrainCommand());
- ไม่ต้องกังวลกับข้อผิดพลาดทั้งหมดเลย
ขั้นตอนที่ 6: สร้าง DriveTrainCommand




- เริ่มแรกโดยไปที่เมนูที่เราเคยใช้สร้างระบบย่อยและหุ่นยนต์ฉายภาพตัวเอง (นี่เป็นครั้งสุดท้ายที่ฉันจะแสดงขั้นตอนจริงนี้ในขั้นตอนต่อไป ฉันจะพูดเพียงเพื่อสร้างคำสั่งหรือสร้าง ระบบย่อยและคุณจะถือว่ามันอยู่ในเมนูนี้) คลิกคำสั่งและกรอกชื่อคลาสด้วย DriveTrainCommand (ถ้าคุณเปลี่ยนชื่อไฟล์เหล่านี้ คุณจะไม่สามารถมีชื่อเดียวกันได้)
- ใน DriveTrainCommand ใหม่ คุณจะเห็นว่ามี 6 วิธี วิธีแรกคือตัวสร้าง และอีก 5 วิธีคือส่วนหนึ่งของรหัสที่หุ่นยนต์จะเรียกเมื่อคำสั่งทำงาน เรารู้ว่าคอนสตรัคเตอร์ทำอะไร เรามาอธิบาย Initialize, Run, isFinished, end และ Interrupted Initialize ถูกเรียกหนึ่งครั้งทุกครั้งที่มีการเรียกคำสั่ง วิธี execute จะถูกเรียกอย่างต่อเนื่องจนกว่าคำสั่งจะสิ้นสุด ซึ่งเกิดจากการที่ isFinished คืนค่า true คำสั่งจะหยุดทำงาน วิธี end จะถูกเรียกหนึ่งครั้งหลังจาก isFinished เมธอดถูกเรียก และอินเตอร์รัปต์จะถูกเรียกเมื่อรีซอร์สคำสั่งถูกใช้โดยคำสั่งอื่นและคำสั่งจะสิ้นสุด (โดยไม่เรียกเมธอด end)
- ก่อนอื่นใน DriveTrainCommand ใน Constructor คุณต้องเพิ่มบรรทัดที่ต้องใช้ (requires(Robot. DriveTrainSub)) ให้สังเกตว่า DriveTrainSub ไม่เหมือนกับชื่อระบบย่อยและมีจุดประสงค์
ขั้นตอนที่ 7: ข้ามไปที่ Robot




- ต่อไปเราจะข้ามไปที่ Robot Class
- จากนั้นเราจะเปลี่ยนบรรทัด (public static ExampleSubsystem exampleSubsystem = new ExampleSubsystem();) เป็น (public static final DriveTrainSubsystem DriveTrainSub = new DriveTrainSubsystem();) สังเกตว่าชื่อหลัง final เหมือนกับชื่อระบบย่อยและ name after new ให้สังเกตด้วยว่า DriveTrainSub เหมือนกับชื่อที่เราใส่ในขั้นตอนสุดท้าย และไม่เหมือนกับชื่อระบบย่อย (คุณต้องมีชื่ออ็อบเจกต์ (DriveTrainSub) ที่ไม่เหมือนกับระบบย่อย ชื่อ).
- จากนั้นนำเข้า DriveTrainSubSystem ของเรา
- ต่อไปเราจะลบบรรทัด (chooser.addDefault("Default Auto", new ExampleCommand());)
- จากนั้นลบการนำเข้าที่ไม่ได้ใช้
- จากนั้นบันทึก
ขั้นตอนที่ 8: กลับไปที่ DriveTrainCommand

- นำเข้า Robot (อันที่สองในภาพ)
- จากนั้นบันทึก
ขั้นตอนที่ 9: ไปที่ DriveTrainSub

- นำเข้า DriveTrainCommand
- จากนั้นบันทึก
ขั้นตอนที่ 10: ต่อไปเราจะสร้างรหัส OI

- ไปที่ ออย.
- สร้างวัตถุจอยสติ๊กสาธารณะใหม่ด้วยพอร์ต 0
- และลบการนำเข้าที่ไม่ได้ใช้
- บันทึก.
ขั้นตอนที่ 11: ไปที่ DriveTrainCommand

- ไปที่ DriveTrainCommand
- ตอนนี้เราจะทำส่วนที่ใช้จอยสติ๊กและนำไปใช้เพื่อเคลื่อนย้ายหุ่นยนต์ ภายในการดำเนินการ (เพราะมันทำงานอย่างต่อเนื่อง) ให้เพิ่มบรรทัด (Robot. DriveTrainSub.arcadeDrive(Robot.oi. Driver.getRawAxis(1), Robot.oi. Driver.getRawAxis(4));) ที่เราเรียก arcadeDrive ในของเรา ระบบย่อยที่มีค่าของ Robot.io. Driver.getRawAxis(1) ซึ่งจะคืนค่าของจอยสติกและโดยที่ 1 คือแกนของแกน y ด้านซ้าย และเหมือนกันสำหรับค่าที่สอง ยกเว้น 4 คือแกน x ขวา นี่หมายความว่าไม้เท้าซ้ายจะไปข้างหน้าและข้างหลังและไม้ขวาจะไปขวาและซ้าย (ถ้าคุณต้องการ คุณสามารถกลับไปที่ RobotMap และสร้างค่าใหม่สำหรับแกนจอยสติ๊ก จากนั้นเรียกพวกมันด้วย RobotMap (ชื่อแกน) และอย่าลืมทำให้มันมีค่าที่สุดหากคุณทำเช่นนี้)
- ถัดไป ลบการนำเข้าที่ไม่ได้ใช้ออกจากทั้งโปรเจ็กต์
ขั้นตอนที่ 12: ในที่สุดรวบรวมและอัปโหลดรหัสไปยัง Robot
แนะนำ:
การพัฒนา Java อย่างมีประสิทธิภาพสำหรับ Raspberry Pi: 11 ขั้นตอน (พร้อมรูปภาพ)

การพัฒนา Java อย่างมีประสิทธิภาพสำหรับ Raspberry Pi: คำแนะนำนี้อธิบายแนวทางที่มีประสิทธิภาพมากสำหรับการพัฒนาโปรแกรม Java สำหรับ Raspberry Pi ฉันได้ใช้วิธีนี้ในการพัฒนาความสามารถของ Java ตั้งแต่การรองรับอุปกรณ์ระดับต่ำไปจนถึงโปรแกรมแบบมัลติเธรดและบนเครือข่าย แอปพ
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)

Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
2019 FRC การเขียน Simple Drive Train (Java): 5 ขั้นตอน

2019 FRC การเขียน Simple Drive Train (Java): คำแนะนำนี้ล้าสมัยแล้ว! โปรดติดตามคำแนะนำต่อไปของฉันในการเขียนโปรแกรม 2019 ปัจจุบัน แม้ว่ามันจะล้าสมัย แต่ก็ยังมีบางสิ่งที่คุณสามารถเรียนรู้เกี่ยวกับมันได้ เช่น วิธีการสร้างชั้นเรียนจริง ๆ และเขียนโค้ด
Walking Strandbeest, Java/Python และการควบคุมแอป: 4 ขั้นตอน (พร้อมรูปภาพ)

Walking Strandbeest, Java/Python และ App Controlled: ชุด Strandbeest นี้เป็นงาน DIY จาก Strandbeest ที่ Theo Jansen ประดิษฐ์ขึ้น ฉันรู้สึกทึ่งกับการออกแบบกลไกอัจฉริยะ ฉันต้องการติดตั้งให้มีความคล่องแคล่วอย่างเต็มที่ และต่อไปคือความฉลาดทางคอมพิวเตอร์ ในคำแนะนำนี้ เราทำงานในส่วนแรก
Arduino Baby Monitor พร้อม Java Viewer: 8 ขั้นตอน (พร้อมรูปภาพ)

Arduino Baby Monitor พร้อม Java Viewer: สร้างหน่วยเซ็นเซอร์หลายตัวที่ใช้ Arduino เพื่อสังเกตสภาพในห้อง เครื่องนี้สามารถตรวจจับความชื้น อุณหภูมิ การเคลื่อนไหว และเสียงได้ สิ่งที่แนบมาคือโปรแกรมดูที่ใช้จาวาซึ่งรับข้อมูลอนุกรมจาก arduino