สังเกต
พื้นที่เก็บข้อมูลนี้มี FTC SDK สาธารณะสำหรับฤดูกาลการแข่งขัน INTO THE DEEP (2024-2025)
ยินดีต้อนรับ!
พื้นที่เก็บข้อมูล GitHub นี้มีซอร์สโค้ดที่ใช้ในการสร้างแอป Android เพื่อควบคุมหุ่นยนต์แข่งขัน FIRST Tech Challenge หากต้องการใช้ SDK นี้ ให้ดาวน์โหลด/โคลนโครงการทั้งหมดลงในเครื่องคอมพิวเตอร์ของคุณ
ความต้องการ
หากต้องการใช้โปรเจ็กต์ Android Studio นี้ คุณจะต้องใช้ Android Studio 2021.2 (ชื่อรหัส Chipmunk) หรือใหม่กว่า
หากต้องการตั้งโปรแกรมหุ่นยนต์ของคุณใน Blocks หรือ OnBot Java คุณไม่จำเป็นต้องใช้ Android Studio
เริ่มต้นใช้งาน
หากคุณยังใหม่กับวิทยาการหุ่นยนต์หรือใหม่กับ FIRST Tech Challenge คุณควรพิจารณาทบทวนบทช่วยสอน FTC Blocks เพื่อทำความคุ้นเคยกับวิธีใช้ระบบควบคุม:
FTC บล็อกการสอนออนไลน์
แม้ว่าคุณจะเป็นโปรแกรมเมอร์ Java ขั้นสูง แต่การเริ่มต้นด้วยบทช่วยสอน FTC Blocks ก็มีประโยชน์ จากนั้นจึงย้ายไปยัง OnBot Java Tool หรือ Android Studio ในภายหลัง
กำลังดาวน์โหลดโครงการ
หากคุณเป็นโปรแกรมเมอร์ Android Studio คุณสามารถดาวน์โหลด repo นี้ได้หลายวิธี โปรดทราบว่าหากคุณใช้ Blocks หรือ OnBot Java Tool เพื่อตั้งโปรแกรมหุ่นยนต์ของคุณ คุณไม่จำเป็นต้องดาวน์โหลดพื้นที่เก็บข้อมูลนี้
- หากคุณเป็นผู้ใช้ git คุณสามารถโคลนที่เก็บเวอร์ชันล่าสุดได้:
โคลนคอมไพล์ https://github.com/FIRST-Tech-Challenge/FtcRobotController.git
หรือหากต้องการ คุณสามารถใช้ปุ่ม "ดาวน์โหลด Zip" ได้จากหน้าพื้นที่เก็บข้อมูลหลัก การดาวน์โหลดโปรเจ็กต์เป็นไฟล์ .ZIP จะทำให้ขนาดของการดาวน์โหลดสามารถจัดการได้
คุณยังสามารถดาวน์โหลดโฟลเดอร์โปรเจ็กต์ (เป็นไฟล์เก็บถาวร .zip หรือ .tar.gz) ได้จากส่วนย่อยดาวน์โหลดของหน้าการเผยแพร่สำหรับพื้นที่เก็บข้อมูลนี้
หน้าการเผยแพร่ยังมี APK ที่สร้างไว้ล่วงหน้าด้วย
เมื่อคุณดาวน์โหลดและคลายการบีบอัดโฟลเดอร์ของคุณ (หากจำเป็น) คุณสามารถใช้ Android Studio เพื่อนำเข้าโฟลเดอร์ได้ ("นำเข้าโครงการ (Eclipse ADT, Gradle ฯลฯ)")
การขอความช่วยเหลือ
เอกสารและบทแนะนำผู้ใช้
FIRST เก็บรักษาเอกสารออนไลน์พร้อมข้อมูลและบทช่วยสอนเกี่ยวกับวิธีการใช้ซอฟต์แวร์ FIRST Tech Challenge และระบบควบคุมหุ่นยนต์ คุณสามารถเข้าถึงเอกสารนี้โดยใช้ลิงก์ต่อไปนี้:
เอกสาร FIRST Tech Challenge
โปรดทราบว่าเอกสารออนไลน์เป็นเอกสารที่ "สม่ำเสมอ" ซึ่งได้รับการปรับปรุงและแก้ไขอยู่ตลอดเวลา ประกอบด้วยข้อมูลล่าสุดเกี่ยวกับซอฟต์แวร์และระบบควบคุม FIRST Tech Challenge
วัสดุอ้างอิง Javadoc
เอกสารอ้างอิง Javadoc สำหรับ FTC SDK พร้อมใช้งานออนไลน์แล้ว คลิกลิงก์ต่อไปนี้เพื่อดูเอกสาร FTC SDK Javadoc ในรูปแบบเว็บไซต์ที่ใช้งานจริง:
เอกสาร FTC Javadoc
ฟอรั่มผู้ใช้ออนไลน์
สำหรับคำถามทางเทคนิคเกี่ยวกับระบบควบคุมหรือ FTC SDK โปรดไปที่ไซต์ชุมชน FIRST Tech Challenge:
ชุมชนท้าทายเทคโนโลยีครั้งแรก
ตัวอย่าง OpMode
โปรเจ็กต์นี้มีตัวเลือก OpModes ตัวอย่างจำนวนมาก (ตัวอย่างโค้ดโรบอต) ซึ่งสามารถตัดและวางลงในโฟลเดอร์ /teamcode ของคุณเพื่อใช้ตามสภาพที่เป็นอยู่ หรือแก้ไขให้เหมาะกับความต้องการของทีมของคุณ
โฟลเดอร์ตัวอย่าง: /FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples
ไฟล์ readme.md ที่อยู่ในโฟลเดอร์ /TeamCode/src/main/java/org/firstinspires/ftc/teamcode มีคำอธิบายหลักการตั้งชื่อตัวอย่าง และคำแนะนำเกี่ยวกับวิธีการคัดลอกไฟล์เหล่านี้ไปยังพื้นที่โปรเจ็กต์ของคุณเอง
ข้อมูลการเผยแพร่
เวอร์ชัน 10.1 (20240919-122750)
การปรับปรุง
- เพิ่ม
VisionProcessor
ที่ใช้ OpenCV ใหม่ (ซึ่งอาจแนบกับ VisionPortal ใน Java หรือ Blocks) เพื่อช่วยให้ทีมนำการประมวลผลสีไปใช้ผ่านคอมพิวเตอร์วิทัศน์ในเกม INTO THE DEEP-
ColorBlobLocatorProcessor
ใช้การตรวจจับ "blob" สี OpenCV โปรแกรมตัวอย่างใหม่ ConceptVisionColorLocator
สาธิตการใช้งาน- มีตัวเลือกให้เลือกระหว่างช่วงสีที่กำหนดไว้ล่วงหน้า หรือสร้างสีแบบกำหนดเองในพื้นที่สี RGB, HSV หรือ YCrCb
- ความสามารถในการจำกัดการตรวจจับไปยังภูมิภาคที่สนใจที่ระบุบนหน้าจอ
- มีฟังก์ชันสำหรับการใช้การปรับเปลี่ยนการกัดเซาะ / การขยายตัวกับมาสก์ขีดจำกัด
- มีฟังก์ชันสำหรับการเรียงลำดับและการกรองข้อมูลที่ส่งคืน
-
PredominantColorProcessor
อนุญาตให้ใช้บริเวณของกล้องเป็น "เซ็นเซอร์สีระยะไกล" เพื่อกำหนดสีเด่นของบริเวณนั้น โปรแกรมตัวอย่างใหม่ ConceptVisionColorSensor
สาธิตการใช้งาน- สีเด่นที่กำหนดจะถูกเลือกจากชุด "ตัวอย่าง" สีที่แยกจากกัน ซึ่งคล้ายกับเซ็นเซอร์สี MINDSTORMS NXT
- คุณสามารถดูเอกสารเกี่ยวกับคุณสมบัติการประมวลผลสีได้ที่นี่: https://ftc-docs.firstinspires.org/color-processing
- เพิ่มโปรแกรมตัวอย่าง Blocks สำหรับเซ็นเซอร์สี: RobotAutoDriveToLine และ SensorColor
- อัปเดตการตรวจสอบตัวเองเพื่อระบุเวอร์ชันซอฟต์แวร์ RC/DS ที่ไม่ตรงกันว่าเป็น "ข้อควรระวัง" แทนที่จะเป็น "ความล้มเหลว"
แก้ไขข้อบกพร่อง
- แก้ไขการถดถอยการแปลง AngularVelocity
เวอร์ชัน 10.0 (20240828-111152)
ทำลายการเปลี่ยนแปลง
- คลาส Java และ Blocks สำหรับ TensorFlow Object Detection ถูกลบออกแล้ว
-
AngularVelocity.unit
ซึ่งเป็นประเภท AngleUnit
ได้รับการเปลี่ยนชื่อเป็น AngularVelocity.angleUnit
ประเภท UnnormalizedAngleUnit
การปรับปรุง
- เพิ่มตัวอย่างสำหรับตัวบ่งชี้ดิจิทัล REV แล้ว - ConceptRevLED
- เพิ่มการรองรับ Sparkfun QWIIC LED Stick
- หากต้องการเชื่อมต่อโดยตรง คุณต้องใช้สายเคเบิลนี้
- เพิ่ม ConceptLEDStick OpMode
- เพิ่มบล็อกสำหรับสีดำ น้ำเงิน ฟ้า dkgray เทา เขียว ltgray ม่วงแดง แดง ขาว และเหลือง
- เพิ่มบล็อก "ประเมินแต่ละเว้นผลลัพธ์" ที่ดำเนินการบล็อกที่เชื่อมต่อและละเว้นผลลัพธ์ ช่วยให้คุณสามารถเรียกใช้ฟังก์ชันและละเว้นค่าที่ส่งคืน
- เพิ่มไดรเวอร์ I2C สำหรับเครื่องวัดระยะโซนาร์ Maxbotix Maxsonar I2CXL
- เพิ่มบล็อกสำหรับ setPwmEnable, setPwmDisable และ isPwmEnabled สำหรับเซอร์โวและเซอร์โว CR
- ในตัวแก้ไข Blocks: n ในช่องความคิดเห็นของคำอธิบายประกอบ ExportToBlocks จะแสดงเป็นตัวแบ่งบรรทัด
- Telemetry มีเมธอดใหม่ setNumDecimalPlaces
- Telemetry ตอนนี้จัดรูปแบบเป็นสองเท่าและลอย (ไม่ใช่ภายในวัตถุเพียงตัวมันเอง)
- เพิ่มการรองรับ Limelight 3A
- เพิ่มการสนับสนุนเริ่มต้นสำหรับ REV Servo Hub
- ทั้ง Robot Controller และ Driver Station จำเป็นต้องได้รับการอัปเดตเป็นเวอร์ชัน 10.0 เพื่อให้สามารถกำหนดค่าเซอร์โวฮับเป็นเซอร์โวฮับได้ หากแอปบนอุปกรณ์ใดอุปกรณ์หนึ่งล้าสมัย Servo Hub จะแสดงเป็น Expansion Hub และฟังก์ชันบางอย่างจะไม่ทำงานตามที่คาดไว้ คุณควรรอเพื่อสร้างการกำหนดค่าที่มี Servo Hub จนกว่าทั้งแอป Driver Station และ Robot Controller จะได้รับการอัปเดตเป็นเวอร์ชัน 10.0
- การอัปเดตเฟิร์มแวร์ของ Servo Hub และการเปลี่ยนที่อยู่สามารถทำได้โดยใช้ REV Hardware Client เท่านั้นในขณะนี้
- เพิ่มการรองรับ REV 9-Axis IMU (REV-31-3332)
- REV 9-Axis IMU รองรับเฉพาะอินเทอร์เฟซ Universal IMU เท่านั้น
- เพิ่มคลาส Java
Rev9AxisImuOrientationOnRobot
- หากคุณเปลี่ยนพอร์ต I2C ของ IMU นี้ให้เป็นพอร์ต USB ของ Control Hub ทางจิตใจ
RevHubOrientationOnRobot
ก็เข้ากันได้กับเซ็นเซอร์นี้เช่นกัน - เพิ่มบล็อกสำหรับ Rev9AxisImuOrientationOnRobot รวมถึง RevHubImuOrientationOnRobot.xyzOrientation และ RevHubImuOrientationOnRobot.zyxOrientation
- เพิ่มตัวอย่างบล็อก SensorRev9AxisIMUOorthogonal และ SensorRev9AxisIMUNonOrthogonal
- ปรับปรุงการรองรับ Blocks สำหรับ RevHubImuOrientationOnRobot
- เพิ่มบล็อกสำหรับ RevHubImuOrientationOnRobot.xyzOrientation และ RevHubImuOrientationOnRobot.zyxOrientation
- เพิ่มตัวอย่างบล็อก SensorHubIMUOOrthogonal (แทนที่ SensorIMU) และ SensorHubIMUNonOrthogonal
- อัปเดตเวอร์ชัน EasyOpenCV, AprilTag, OpenCV และ
libjpeg-turbo
- เพิ่มบล็อกสำหรับค่าสูงสุดและต่ำสุดที่รับตัวเลขสองตัว
- เพิ่มบล็อก OpModes ConceptRevSPARKMini, RobotAutoDriveByEncoder, RobotAutoDriveByGyro, RobotAutoDriveByTime, RobotAutoDriveToAprilTagOmni และ RobotAutoDriveToAprilTagTank
- ตอนนี้ OpModes สองตัวที่มีชื่อเดียวกันจะถูกเปลี่ยนชื่อโดยอัตโนมัติด้วยชื่อที่ตามด้วย "-" และชื่อคลาสที่อนุญาตให้ทั้งคู่อยู่ในอุปกรณ์
- แสดงชื่อของการกำหนดค่าที่ใช้งานอยู่บนหน้าจัดการของ Robot Controller Console
- อัปเดตไลบรารี AprilTag สำหรับ INTO THE DEEP โดยเฉพาะอย่างยิ่งตอนนี้
getCurrentGameTagLibrary()
ส่งคืนแท็ก INTO THE DEEP - เพิ่มบล็อกสำหรับ Telemetry.setMsTransmissionInterval และ Telemetry.getMsTransmissionInterval
- เพิ่มบล็อกตัวอย่าง SensorOctoQuad
แก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาดที่ RevBlinkinLedDriver Blocks อยู่ภายใต้ Actuators ในกล่องเครื่องมือแก้ไข Blocks ตอนนี้พวกเขาเป็นอุปกรณ์อื่น ๆ
- แก้ไขข้อผิดพลาดที่
Exception
ถูกโยนลงในรหัสผู้ใช้หลังจากที่สถานีคนขับร้องขอให้หยุดจะถูกกินอย่างเงียบ ๆ - แก้ไขข้อผิดพลาดที่หากคุณขอ
AngularVelocity
ในหน่วยที่แตกต่างจากอุปกรณ์ที่รายงานมา มันจะปรับให้เป็นมาตรฐานระหว่าง -PI และ PI สำหรับเรเดียน และ -180 และ 180 สำหรับองศา
เวอร์ชัน 9.2 (20240701-085519)
หมายเหตุสำคัญ
- คลาส Java และบล็อกสำหรับ TensorFlow Object Detection เลิกใช้แล้วและจะถูกลบออกในเวอร์ชัน 10.0
- ตัวอย่างที่ใช้ TensorFlow Object Detection ได้ถูกลบออกแล้ว
การปรับปรุง
- เพิ่มข้อความอธิบายให้กับรายการที่ล้มเหลวในกิจกรรมการตรวจสอบ หากต้องการดูข้อความอธิบาย ให้แตะไอคอนคำเตือนสีแดงสำหรับรายการที่ล้มเหลว
- ในตัวแก้ไข Blocks: เพิ่มบล็อกชุดตัวแปรชนิดใหม่ที่ตั้งค่าตัวแปรและส่งคืนค่าใหม่ด้วย
- เปลี่ยนวิธีการทำงานของตัวควบคุมกล้องสำหรับ SwitchableCamera ในตอนนี้ แต่ละวิธี (เช่น getExposure, getMinExposure, getMaxExposure, setExposure สำหรับ ExposureControl) จะทำหน้าที่ในกล้องที่ใช้งานอยู่ในปัจจุบัน
- เพิ่มการรองรับเกมแพดที่เข้ากันได้กับ REV USB PS4 (REV-31-2983)
- เพิ่ม ConceptAprilTagMultiPortal OpMode
- เพิ่มการรองรับ OctoQuad Quadrature Encoder และโมดูลอินเทอร์เฟซความกว้างพัลส์
- เพิ่มคำอธิบายประกอบ ExportAprilTagLibraryToBlocks ที่ระบุว่าวิธีการคงที่ที่ส่งคืน AprilTagLibrary จะถูกส่งออกไปยังสภาพแวดล้อมการเขียนโปรแกรม Blocks บล็อกที่เกี่ยวข้องจะปรากฏในกล่องเครื่องมือ Blocks พร้อมกับไลบรารีแท็กในตัว
- เพิ่มบล็อก OpMode ConceptAprilTagOptimizeExposure
- เพิ่มการรองรับเซ็นเซอร์ SparkFun Optical Tracking Odometry
แก้ไขข้อบกพร่อง
- แก้ไข #942 โดยที่ VisionPortal.close() อาจทำให้เกิด IndexOutOfBoundsError
- แก้ไขข้อบกพร่องในตัวแก้ไขบล็อกที่บล็อกฟังก์ชันที่ยุบแสดงคำเตือน "บล็อกที่ยุบมีคำเตือน" เมื่อ Blocks OpMode ถูกเปิดอีกครั้ง
- แก้ไขข้อบกพร่องที่ตัวแก้ไขบล็อกไม่เตือนคุณว่าคุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึกเมื่อคุณพยายามออก ข้อบกพร่องนี้เกิดขึ้นเนื่องจากการเปลี่ยนแปลงพฤติกรรมใน Chrome 119
- ปัญหา #764 - รับการควบคุมการรับส่งกลับตัวชี้ null สำหรับกล้องที่สลับได้
- แก้ไขข้อผิดพลาดที่ไม่สามารถใช้เดดโซนที่ถูกต้องสำหรับเกมแพดบางตัวเมื่อเปิดใช้งานคุณสมบัติเกมแพดขั้นสูง
เวอร์ชัน 9.1 (20240215-115542)
การปรับปรุง
- แก้ไขปัญหาเกี่ยวกับบล็อก: หากผู้ใช้ปิดบอลลูนคำเตือนของบล็อก จะยังคงปิดในครั้งต่อไปที่เปิดโปรเจ็กต์ในตัวแก้ไขบล็อก
- ในตัวแก้ไข Blocks การแจ้งเตือนเกี่ยวกับอุปกรณ์ฮาร์ดแวร์ที่หายไปจะไม่แสดงหากบล็อกทั้งหมดที่ใช้อุปกรณ์ฮาร์ดแวร์ที่หายไปถูกปิดใช้งาน
- เพิ่มบล็อกเพื่อรองรับการเปรียบเทียบค่าคุณสมบัติ CRServo.Direction, DCMotor.Direction, DCMotor.Mode, DCMotor.ZeroPowerBehavior, DigitalChannel.Mode, GyroSensor.HeadingMode, IrSeekerSensor.Mode และ Servo.Direction กับบล็อก enum ที่สอดคล้องกัน
- ปรับปรุงการนำเข้าอัตโนมัติของ OnBotJava เพื่อนำเข้าคลาสอย่างถูกต้องเมื่อใช้ในบางสถานการณ์
- ปรับปรุงการเติมข้อความอัตโนมัติของ OnBotJava เพื่อให้ตัวเลือกการเติมข้อความสมบูรณ์ที่ดีขึ้นในกรณีส่วนใหญ่
- วิธีนี้แก้ไขปัญหาที่การเติมข้อความอัตโนมัติจะล้มเหลวหากมีการกำหนดวิธีการที่มีพารามิเตอร์ที่เป็นทางการตั้งแต่สองตัวขึ้นไป
- ใน OnBotJava มีการเพิ่มการรองรับการพับโค้ดเพื่อขยายและยุบส่วนของโค้ด
- ใน OnBotJava ส่วนหัวลิขสิทธิ์จะถูกยุบโดยอัตโนมัติเพื่อโหลดไฟล์ใหม่
- สำหรับตัวอย่าง Blocks OpMode ทั้งหมด ความคิดเห็นเกริ่นนำจะถูกย้ายไปยังบอลลูนความคิดเห็น RunOpMode
- คำสั่ง Clean up Blocks ในตัวแก้ไข Blocks จะวางตำแหน่งฟังก์ชัน Blocks เพื่อให้บอลลูนความคิดเห็นไม่ทับซ้อนกับฟังก์ชัน Blocks อื่นๆ
- เพิ่ม SensorTouch ตัวอย่าง OpMode ของบล็อก
- เพิ่มตัวอย่าง Java OpMode SensorDigitalTouch
- การปรับปรุง VisionPortal หลายประการ
- เพิ่มตัวเลือกเพื่อควบคุมว่าสตรีมจะเริ่มโดยอัตโนมัติหลังจากการเรียก
.build()
บน VisionPortal Builder หรือไม่ - เพิ่มตัวเลือกเพื่อควบคุมว่าจะแสดงผลการซ้อนทับสถิติการประมวลผลการมองเห็นหรือไม่
- ขณะนี้ VisionPortals ใช้อินเทอร์เฟซ
CameraStreamSource
ซึ่งช่วยให้ผู้ใช้หลายพอร์ทัลสามารถเลือกพอร์ทัลที่จะกำหนดเส้นทางไปยัง DS ใน INIT โดยการเรียก CameraStreamServer.getInstance().setSource(visionPortal) สามารถเลือกได้ผ่านแป้นเกมระหว่างเซสชัน Camera Stream - เพิ่มตัวเลือกให้กับ
AprilTagProcessor
เพื่อระงับคำเตือนการปรับเทียบ - ปรับปรุงคำเตือนการปรับเทียบกล้อง
- หากมีการปรับขนาดการสอบเทียบ ความละเอียดที่ใช้ปรับขนาดจะแสดงรายการไว้
- หากมีการปรับเทียบด้วยอัตราส่วนภาพที่ไม่ถูกต้อง ความละเอียดที่ปรับเทียบแล้วจะแสดงในรายการ
- แก้ไขสภาวะการแข่งขันซึ่งทำให้แอปหยุดทำงานเมื่อเรียก
stopStreaming()
ตามด้วย close()
บน VisionPortal ทันที - แก้ไข IllegalStateException เมื่อเรียก
stopStreaming()
ทันทีหลังจากสร้าง VisionPortal - เพิ่มคู่ FTC Blocks ให้กับวิธีการ Java ใหม่:
- VisionPortal.Builder.setAutoStartStreamOnBuild
- VisionPortal.Builder.setShowStatsOverlay
- AprilTagProcessor.Builder.setSuppressCalibrationWarnings
- CameraStreamServer.setSource
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ OnBotJava ไม่ใช้การตั้งค่าขนาดแบบอักษรกับตัวแก้ไข
- อัปเดตการพึ่งพา EasyOpenCV เป็น v1.7.1
- แก้ไขการไม่สามารถใช้ EasyOpenCV CameraFactory ใน OnBotJava
- แก้ไขข้อขัดข้องของแอป RC ทั้งหมดเมื่อไปป์ไลน์ผู้ใช้ส่งข้อยกเว้น
- แก้ไขข้อขัดข้องของแอป RC ทั้งหมดเมื่อคำอธิบายประกอบ Canvas ของผู้ใช้ส่งข้อยกเว้น
- ใช้จอแสดงผล Stacktrace ที่ทันสมัยเมื่อจัดการกับข้อยกเว้นของผู้ใช้แทนข้อความการวัดและส่งข้อมูลทางไกล ESTOP แบบเดิม
เวอร์ชัน 9.0.1 (20230929-083754)
การปรับปรุง
- อัปเดตตัวอย่าง AprilTag เพื่อรวม Decimation และความคิดเห็นเพิ่มเติม แก้ไขคำเตือนรหัสแท็กที่ทำให้เข้าใจผิดด้วย
- เพิ่มขนาดสูงสุดของความคิดเห็นแบบอินไลน์ของ Blocks เป็น 140 อักขระ
- เพิ่มตัวอย่างบล็อก BasicOmniOpMode
- อัปเดตไลบรารี CENTERSTAGE การวางแนว AprilTag quaternions
- อัปเดต Java Sample ConceptTensorFlowObjectDetection.java เพื่อรวมองค์ประกอบที่ขาดหายไปที่จำเป็นสำหรับการสนับสนุนโมเดลแบบกำหนดเอง
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่หลังจากวันที่ 1 ตุลาคม Driver Station จะรายงานว่าล้าสมัยในเวอร์ชัน 9.0 และแจ้งให้ผู้ใช้อัปเดต
เวอร์ชัน 9.0 (20230830-154348)
ทำลายการเปลี่ยนแปลง
- กำจัดวูโฟเรีย
- ช่องในออบเจ็กต์
AprilTagDetection
และ AprilTagPose(ftc/raw)
ถือเป็นที่ final
แล้ว - เมธอดตัวสร้าง VisionPortal
setCameraMonitorViewId()
ได้รับการเปลี่ยนชื่อเป็น setLiveViewContainerId()
และ enableCameraMonitoring()
ได้รับการเปลี่ยนชื่อเป็น enableLiveView()
การปรับปรุง
- เพิ่มการรองรับสำหรับ DFRobot HuskyLens Vision Sensor
- ขณะนี้ทีมบล็อกสามารถทำการปรับเทียบเว็บแคมได้แล้ว
- เพิ่มบล็อกสำหรับ System.currentTimeMillis (ภายใต้ยูทิลิตี้/เวลา)
- เพิ่มบล็อกสำหรับ VisionPortal.saveNextFrameRaw (ภายใต้ Vision/VisionPortal)
- เพิ่มตัวอย่าง Blocks OpMode ใหม่ที่เรียกว่า UtilityCameraFrameCapture
- ตัวอย่าง RobotDriveByGyro ได้รับการอัปเดตเพื่อใช้อินเทอร์เฟซ IMU สากลใหม่ ตอนนี้รองรับ IMU ทั้งสองประเภทแล้ว
- ลบ ElapsedTime Blocks ที่อาจเกิดข้อผิดพลาดบางส่วนออกจากกล่องเครื่องมือของตัวแก้ไข Blocks นี่ไม่ใช่การเปลี่ยนแปลงครั้งใหญ่: Blocks OpModes เก่าที่ใช้ Blocks เหล่านี้จะยังคงทำงานอยู่ ทั้งในโปรแกรมแก้ไข Blocks และขณะรันไทม์
- สร้างมาตรฐานในรูปแบบ "OpMode" สำหรับคำว่า OpMode
- วิธีที่ต้องการในการอ้างถึง OpModes ที่ขยาย
LinearOpMode
โดยเฉพาะ (รวมถึง Blocks OpModes) คือ "linear OpMode" - วิธีที่ต้องการในการอ้างถึง OpModes ที่ขยาย
OpMode
โดยเฉพาะโดยตรงคือ "opMode ซ้ำ"
- ยกเครื่องความคิดเห็น
OpMode
และ LinearOpMode
Javadoc เพื่อให้อ่านง่ายขึ้นและมีรายละเอียดมากขึ้น - ทำการปรับปรุงเล็กน้อยกับตัวอย่าง Java
- ความคิดเห็น Javadoc ในตัวอย่างที่แสดงผลได้ไม่ดีใน Android Studio ได้ถูกแปลงเป็นความคิดเห็นหลายบรรทัดมาตรฐาน
- ความสอดคล้องระหว่างตัวอย่างได้รับการปรับปรุงแล้ว
- ตัวอย่าง SensorDigitalTouch ถูกแทนที่ด้วยตัวอย่าง SensorTouch ใหม่ที่ใช้อินเทอร์เฟซ
TouchSensor
แทน DigitalChannel
- ตัวอย่าง ConceptCompassCalibration, SensorMRCompass และ SensorMRIRSeeker ได้ถูกลบแล้ว เนื่องจากไม่มีประโยชน์สำหรับการแข่งขัน FTC สมัยใหม่
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ PlayStation gamepads ไม่สามารถใช้งานได้ในโหมด Bluetooth บลูทูธไม่ถูกกฎหมายสำหรับการแข่งขัน แต่อาจมีประโยชน์ในการอนุญาตให้ใช้อุปกรณ์ DS ขณะชาร์จหรือในงานเผยแพร่ประชาสัมพันธ์
- แก้ไขข้อบกพร่องที่ค่าวันที่แก้ไขของ Blocks OpMode สามารถเปลี่ยนเป็น 31 ธันวาคม 1969 ได้ หากศูนย์กลางการควบคุมถูกรีบูตในขณะที่ Blocks OpMode กำลังแก้ไข
- แก้ไขคุณสมบัติการเลือกล่วงหน้า TeleOp อัตโนมัติ (ใช้งานไม่ได้ใน 8.2)
- แก้ไขข้อบกพร่องที่ส่งผ่านหมายเลขจำนวนเต็ม เช่น 123 ไปยังบล็อก Telemetry.addData ที่รับตัวเลขแสดงเป็น 123.0 ในการวัดทางไกล
- แก้ไขปัญหาการเติมข้อความอัตโนมัติของ OnBotJava:
- การเติมข้อความอัตโนมัติจะระบุค่าสำหรับคลาสปัจจุบันอย่างไม่ถูกต้องเมื่อเติมตัวแปรท้องถิ่นโดยอัตโนมัติ
- การเติมข้อความอัตโนมัติ
hardwareMap
จะรวมรายการคลาสแลมบ์ดาอย่างไม่ถูกต้อง
- แก้ไข OnBotJava ไม่นำเข้าคลาสโดยอัตโนมัติ
- แก้ไขแท็บ OnBotJava ที่ไม่สามารถปิดเมื่อไฟล์ถูกลบ
- แก้ไขการรีเฟรชมุมมองโครงการที่ไม่เกิดขึ้นเมื่อเปลี่ยนชื่อไฟล์ใน OnBotJava
- แก้ไขรายการเมนูบริบท "ดาวน์โหลด" สำหรับไลบรารีภายนอกในอินเทอร์เฟซ OnBotJava
- แก้ไขปัญหาที่การตรวจวัดระยะไกลของ Driver Station หยุดทำงานเป็นระยะๆ เมื่อตั้งค่าเป็นโหมด Monospace
- แก้ไขการถดถอยประสิทธิภาพสำหรับการดำเนินงาน REV Hub บางอย่างที่นำมาใช้ในเวอร์ชัน 8.2
- แก้ไขตรรกะการเปรียบเทียบ TagID ในตัวอย่าง DriveToTag
เวอร์ชัน 8.2 (20230707-131020)
ทำลายการเปลี่ยนแปลง
- OpModes ที่ไม่ใช่เชิงเส้น (วนซ้ำ) จะไม่ได้รับอนุญาตให้จัดการแอคชูเอเตอร์ในเมธอด
stop()
อีกต่อไป ความพยายามในการดำเนินการดังกล่าวจะถูกละเว้นและบันทึกไว้- เมื่อ OpMode พยายามควบคุมแอคทูเอเตอร์อย่างผิดกฎหมาย ตัวควบคุมหุ่นยนต์จะพิมพ์ข้อความบันทึกรวมทั้งข้อความ
CANCELLED_FOR_SAFETY
- นอกจากนี้ LinearOpModes จะไม่สามารถฟื้นความสามารถในการจัดการตัวกระตุ้นโดยการลบการขัดจังหวะของเธรดออกหรือใช้เธรดอื่นอีกต่อไป
- ยกเลิกการรองรับ Android เวอร์ชัน 6.0 (Marshmallow) minSdkVersion ตอนนี้เป็น 24
- เพิ่มเวอร์ชัน Robocol
- ซึ่งหมายความว่า Robot Controller หรือ Driver Station เวอร์ชัน 8.2 หรือใหม่กว่า จะไม่สามารถสื่อสารกับ Driver Station หรือ Robot Controller เวอร์ชัน 8.1 หรือก่อนหน้าได้
- หากคุณลืมอัปเดตทั้งสองแอปพร้อมกัน ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นเพื่ออธิบายว่าแอปใดเก่ากว่าและควรอัปเดต
- FTC_FieldCoordinateSystemDefinition.pdf ถูกย้ายแล้ว ยังอยู่ในประวัติคอมไพล์ แต่ถูกลบออกจากสแน็ปช็อตคอมไพล์ที่สอดคล้องกับแท็ก 8.2 เวอร์ชันอย่างเป็นทางการใช้งานได้ที่ Field Coordinate System
-
LynxUsbDevice.addConfiguredModule()
และ LynxUsbDevice.getConfiguredModule()
ถูกแทนที่ด้วย LynxUsbDevice.getOrAddModule()
- บล็อกเก่าสำหรับ Vuforia และ TensorFlow Object Detection ล้าสมัยและถูกลบออกจากกล่องเครื่องมือของตัวแก้ไข Blocks OpModes บล็อกที่มีอยู่ซึ่งมี Blocks เก่าสำหรับ Vuforia หรือ TensorFlow Object Detection สามารถเปิดได้ในตัวแก้ไข Blocks แต่การเรียกใช้บล็อกเหล่านั้นจะไม่ทำงาน
คุณสมบัติใหม่
- เพิ่ม
VisionPortal
API ใหม่สำหรับคอมพิวเตอร์วิทัศน์- API นี้อาจมีการเปลี่ยนแปลงสำหรับการเปิดตัวครั้งสุดท้าย!
- มีการเพิ่มตัวอย่างใหม่หลายรายการ
- เพิ่มการรองรับการตรวจจับ AprilTags
-
VisionPortal
เป็นจุดเริ่มต้นใหม่สำหรับการประมวลผล AprilTag และ TFOD - Vuforia จะถูกลบออกในรุ่นต่อๆ ไป
- อัปเดตการพึ่งพา TensorFlow
- เพิ่มการรองรับการควบคุมกล้องเว็บแคมในการบล็อก
- กล่องเครื่องมือของตัวแก้ไข Blocks มีหมวดหมู่ Vision อยู่เหนือหมวดหมู่ Utilities พอดี
- เอกสารที่เกี่ยวข้องกับเทคโนโลยีที่เกี่ยวข้องสามารถดูได้ที่
- บทนำ AprilTag
- คู่มือ AprilTag SDK
- ค่าการตรวจจับ AprilTag
- รูปภาพการทดสอบแท็ก April
- การปรับเทียบกล้อง
- เพิ่มการรองรับ Driver Station สำหรับเกมแพด Logitech Dual Action และ Sony PS5 DualSense
- นี่ ไม่ รวมถึงการรองรับเกมแพด Sony PS5 DualSense Edge
- โปรดดูคู่มือเกม 1 เสมอเพื่อพิจารณาความถูกต้องตามกฎหมายของเกมแพดในการแข่งขัน
- เพิ่มการรองรับการสตรีมเพย์โหลด MJPEG ไปยังไดรเวอร์ UVC (รูทีนการบีบอัด JPEG ภายนอกที่จำเป็นสำหรับการใช้งาน)
- แสดงคำใบ้บน Driver Station UI เกี่ยวกับวิธีการผูกเกมแพดเมื่อกดปุ่มหรือย้ายแท่งบนเกมแพดที่ไม่ได้ผูกไว้
- เพิ่มตัวเลือกสำหรับ "Camera Stream" แบบเต็มหน้าจอบน Driver Station
- ซอร์สโค้ด OnBotJava จะถูกบันทึกเป็นไฟล์ ZIP โดยอัตโนมัติในทุกบิลด์โดยมีหน้าต่างกลิ้งของ 30 บิลด์ล่าสุดเก็บไว้ อนุญาตให้กู้คืนซอร์สโค้ดจากบิวด์ก่อนหน้าหากโค้ดถูกลบหรือเสียหายโดยไม่ตั้งใจ
- เพิ่มการรองรับสำหรับการเปลี่ยนที่อยู่ของ Expansion Hub ที่ไม่ได้เชื่อมต่อโดยตรงผ่าน USB
- ตอนนี้หน้าจอเปลี่ยนที่อยู่ของฮับส่วนขยายมีปุ่มใช้ซึ่งเปลี่ยนที่อยู่โดยไม่ต้องออกจากหน้าจอ
- ที่อยู่ที่กำหนดให้กับฮับอื่นที่เชื่อมต่อกับการเชื่อมต่อ USB หรือฮับควบคุมเดียวกันจะไม่สามารถเลือกได้อีกต่อไป
- เพิ่มขนาดสูงสุดของความคิดเห็นแบบอินไลน์ของ Blocks เป็น 100 อักขระ
- บันทึกตำแหน่งของบอลลูนแสดงความคิดเห็นของ Blocks ที่เปิดอยู่
- เพิ่มตัวอย่างการขับขี่ AprilTag ใหม่: RobotDriveToAprilTagTank & RobotDriveToAprilTagOmni
- เพิ่มตัวอย่างเพื่อแสดงการปรับการรับแสงของกล้องให้เหมาะสมสำหรับ AprilTags: ConceptAprilTagOptimizeExposure
แก้ไขข้อบกพร่อง
- แก้ไขหน้าจอการตรวจสอบเพื่อรายงานเวอร์ชันของแอปโดยใช้เวอร์ชัน SDK ที่กำหนดไว้ในไลบรารี แทนที่จะเป็นเวอร์ชันที่ระบุใน
AndroidManifest.xml
วิธีนี้จะช่วยแก้ไขกรณีที่แอปสามารถแสดงหมายเลขเวอร์ชันที่ตรงกันให้กับผู้ใช้แต่ยังคงระบุว่าเวอร์ชันไม่ตรงกัน- หากเวอร์ชันที่ระบุใน
AndroidManifest.xml
ไม่ตรงกับเวอร์ชัน SDK รายการเวอร์ชัน SDK จะแสดงบนหน้าเว็บจัดการ
- แก้ไขข้อผิดพลาดที่ไม่แสดงเมื่อบันทึกไฟล์การกำหนดค่าที่มีชื่อซ้ำกันจากสถานีไดร์เวอร์
- แก้ไขการหยุดชะงักในไดรเวอร์ UVC ซึ่งปรากฏใน OpenFTC/EasyOpenCV#57
- แก้ไขการหยุดชะงักในไดรเวอร์ UVC ที่อาจเกิดขึ้นเมื่อกล้องเสียบปลั๊กร้อน
- แก้ไขความเข้ากันได้ของไดรเวอร์ UVC กับกล้องชัตเตอร์ทั่วโลก Arducam OV9281
- แก้ไขเงื่อนไขการหยุดฉุกเฉินเมื่อ OnBotJava บิลด์ที่มีชื่อ OpMode ซ้ำกันเกิดขึ้น
- แก้ไขสาเหตุที่ทราบของบันทึกสแปม "พยายามใช้อินสแตนซ์ LynxModule ที่ปิด"
- แก้ไขรูปแบบ LED ระบุด้วยภาพเมื่อกำหนดค่าฮับขยายที่เชื่อมต่อผ่าน RS-485
เวอร์ชัน 8.1.1 (20221201-150726)
นี่คือการแก้ไขข้อบกพร่องที่เผยแพร่เพื่อแก้ไขปัญหาสี่ประการต่อไปนี้เท่านั้น
- ปัญหา #492 - ไม่สามารถสร้าง opmode บล็อกใหม่ได้
- ปัญหา #495 - ลบตัวปรับแต่งสุดท้ายออกจากวัตถุ Telemetry ของ OpMode
- ปัญหา #500 - อุปกรณ์บางตัวไม่สามารถกำหนดค่าได้เมื่อแอป Driver Station ได้รับการอัพเดตเป็น 8.1
- การอัปเดตแอป Robot Controller หรือแอป Driver Station เป็น 8.1.1 หรือใหม่กว่า จะช่วยแก้ไขปัญหานี้ได้
- เซ็นเซอร์สัมผัส Modern Robotics สามารถกำหนดค่าให้เป็นอุปกรณ์ดิจิทัลได้ สามารถใช้เป็นอุปกรณ์อนาล็อกเท่านั้น
เวอร์ชัน 8.1 (20221121-115119)
ทำลายการเปลี่ยนแปลง
- เลิกใช้ฟิลด์
OpMode
msStuckDetectInit
, msStuckDetectInitLoop
, msStuckDetectStart
, msStuckDetectLoop
และ msStuckDetectStop
- OpModes ไม่มีการจำกัดเวลาอีกต่อไปสำหรับ
init()
, init_loop()
, start()
หรือ loop()
ดังนั้นจึงไม่มีการใช้ฟิลด์ที่สอดคล้องกับวิธีการเหล่านั้นอีกต่อไป -
stop()
ยังคงมีเวลาจำกัด แต่ตอนนี้ฮาร์ดโค้ดเป็น 1 วินาที และไม่สามารถเปลี่ยนแปลงได้โดยใช้ msStuckDetectStop
- เลิกใช้งานเมธอด
OpMode
internalPreInit()
, internalPostInitLoop()
และ internalPostLoop()
-
OpMode
แบบวนซ้ำจะยังคงเรียกใช้เมธอดเหล่านี้ต่อไป ในกรณีที่ถูกแทนที่ - วิธีการเหล่านี้จะไม่ถูกเรียกใช้เลยสำหรับ
LinearOpMode
- เลิกใช้ (และหยุดใช้)
DeviceProperties.xmlTagAliases
การปรับปรุง
- เพิ่มอินเทอร์เฟซ
IMU
ใหม่ให้กับ Blocks และ Java ที่สามารถใช้ได้กับทั้ง BNO055 IMU ดั้งเดิมที่รวมอยู่ใน Control Hub และ Expansion Hub รุ่นเก่าทั้งหมด และ BHI260AP IMU ทางเลือกใหม่- คุณสามารถระบุประเภท IMU ที่อยู่ในศูนย์ควบคุมของคุณได้โดยไปที่หน้าจัดการของอินเทอร์เฟซเว็บ
- หากต้องการเรียนรู้วิธีใช้อินเทอร์เฟซ
IMU
ใหม่ โปรดดู https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html ตัวอย่าง SensorIMU
Blocks ได้รับการอัปเดตเพื่อใช้อินเทอร์เฟซ IMU
ใหม่ และมีการเพิ่มตัวอย่าง Java ต่อไปนี้:-
SensorIMUOrthogonal
- ใช้ตัวอย่างนี้หากติดตั้ง REV Hub ของคุณเพื่อให้ขนานหรือตั้งฉากกับด้านล่างของหุ่นยนต์
-
SensorIMUNonOrthogonal
- ใช้ตัวอย่างนี้หากติดตั้ง REV Hub เข้ากับหุ่นยนต์ของคุณในทิศทางอื่น
-
ConceptExploringIMUOrientations
- OpMode นี้เป็นเครื่องมือที่จะช่วยให้คุณเข้าใจวิธีการทำงานของการวางแนวมุมฉาก และทิศทางใดที่ใช้กับหุ่นยนต์ของคุณ
- BHI260AP IMU สามารถเข้าถึงได้ผ่านอินเทอร์เฟซ
IMU
ใหม่เท่านั้น สามารถตั้งโปรแกรม BNO055 IMU ได้โดยใช้อินเทอร์เฟซ IMU
ใหม่ หรือคุณสามารถตั้งโปรแกรมต่อไปได้โดยใช้อินเทอร์เฟซ BNO055IMU
เก่า หากคุณต้องการสลับไปใช้ฮับควบคุมใหม่ที่อาจมี BHI260AP IMU ได้อย่างรวดเร็ว คุณควรย้ายโค้ดของคุณเพื่อใช้อินเทอร์เฟซ IMU
ใหม่ - ต่างจากอินเทอร์เฟซ
BNO055IMU
แบบเก่า ซึ่งทำงานได้อย่างถูกต้องเฉพาะเมื่อติดตั้ง REV Hub บนหุ่นยนต์ของคุณเท่านั้น อินเทอร์เฟซ IMU
ช่วยให้คุณสามารถระบุการวางแนวของ REV Hub บนหุ่นยนต์ของคุณ โดยจะคำนึงถึงสิ่งนี้ และให้ทิศทางของคุณในระบบพิกัดหุ่นยนต์ แทนที่จะเป็นระบบพิกัดพิเศษสำหรับ REV Hub ผลที่ได้คือ ระยะพิทช์และการหันของคุณจะเป็น 0 เมื่อ หุ่นยนต์ ของคุณอยู่ในแนวระดับ แทนที่จะเป็นเมื่อ REV Hub อยู่ในแนวระดับ ซึ่งจะส่งผลให้ค่ามุมการวางแนวที่เชื่อถือได้มากขึ้นสำหรับการวางแนวการติดตั้งส่วนใหญ่ - เนื่องจากระบบพิกัดหุ่นยนต์เป็นศูนย์กลางแบบใหม่ มุมพิทช์และมุมม้วนที่ส่งคืนโดยอินเทอร์เฟซ
IMU
จะแตกต่างจากมุมที่ส่งคืนโดยอินเทอร์เฟซ BNO055IMU
เมื่อคุณย้ายรหัสของคุณ โปรดใส่ใจกับเอกสารประกอบอย่างระมัดระวัง - หากคุณได้ปรับเทียบ BNO055 ของคุณแล้ว คุณสามารถให้ข้อมูลการปรับเทียบนั้นกับอินเทอร์เฟซ
IMU
ใหม่ได้โดยส่งอินสแตนซ์ BNO055IMUNew.Parameters
ไปที่ IMU.initialize()
- อินเทอร์เฟซ
IMU
ยังเหมาะสำหรับการนำไปใช้โดยผู้จำหน่ายบุคคลที่สามสำหรับ IMU ที่รองรับการวางแนวในรูปแบบของควอเทอร์เนียน
- Iterative
OpMode
s (ตรงข้ามกับ LinearOpMode
s) ตอนนี้ทำงานบนเธรดเฉพาะ- รอบเวลาไม่ควรได้รับผลกระทบจากทุกอย่างที่เกิดขึ้นในระบบ
-
OpMode
ที่ช้าไม่สามารถเพิ่มระยะเวลาที่ใช้ในการประมวลผลคำสั่งเครือข่ายได้อีกต่อไป และในทางกลับกัน - เมธอด
init()
, init_loop()
, start()
และ loop()
ไม่จำเป็นต้องส่งคืนภายในกรอบเวลาที่กำหนดอีกต่อไป
- ไดรเวอร์ดั้งเดิมของ BNO055 IMU: คืนค่าความสามารถในการเริ่มต้นใน OpMode เดียว จากนั้นให้ OpMode อื่นนำการกำหนดค่าเริ่มต้นนั้นกลับมาใช้ใหม่ วิธีนี้ช่วยให้คุณรักษาตำแหน่ง 0-yaw ระหว่าง OpModes ได้ หากต้องการ
- อนุญาตให้ไดรเวอร์อุปกรณ์เวอร์ชันที่กำหนดเองใน FTC SDK ใช้แท็ก XML เดียวกัน
- ก่อนหน้านี้ หากคุณต้องการปรับแต่งไดรเวอร์อุปกรณ์ คุณต้องคัดลอกไดรเวอร์นั้นไปยังคลาสใหม่ และ มอบแท็ก XML ใหม่ให้กับมัน การให้แท็ก XML ใหม่หมายความว่าหากต้องการสลับไดรเวอร์ที่ใช้อยู่ คุณต้องแก้ไขไฟล์การกำหนดค่าของคุณ
- ตอนนี้ หากต้องการใช้ไดรเวอร์แบบกำหนดเองของคุณ สิ่งที่คุณต้องทำคือระบุคลาสของไดรเวอร์แบบกำหนดเองของคุณเมื่อเรียกใช้
hardwareMap.get()
หากต้องการกลับไปใช้ไดร์เวอร์เดิม ให้ระบุคลาสไดร์เวอร์เดิม หากคุณระบุอินเทอร์เฟซที่ใช้งานโดยทั้งไดรเวอร์ดั้งเดิมและไดรเวอร์แบบกำหนดเอง ไม่มีการรับประกันว่าการใช้งานใดจะถูกส่งกลับ
แก้ไขข้อบกพร่อง
- แก้ไขการเข้าถึงลิงก์ "จัดการ TensorFlow Lite Models" และ "จัดการเสียง" และดำเนินการดาวน์โหลด Blocks และ OnBotJava OpMode จาก REV Hardware Client
- แก้ไขปัญหาที่ไดรเวอร์อุปกรณ์ I2C จะเริ่มต้นอัตโนมัติโดยใช้พารามิเตอร์ที่กำหนดในการรัน OpMode ก่อนหน้า
- ปรับปรุงตำแหน่งเมนูป๊อปอัป Driver Station ในรูปแบบแนวนอน
- แก้ไข NullPointerException เมื่อพยายามรับ BNO055 IMU ที่ไม่ได้กำหนดค่าใน Blocks OpMode บนโทรศัพท์ RC
- แก้ไขปัญหาเกี่ยวกับบล็อกหากตัวแปรชื่อ
orientation
เวอร์ชัน 8.0 (20220907-131644)
ทำลายการเปลี่ยนแปลง
- เพิ่มเวอร์ชัน Robocol
- ซึ่งหมายความว่า Robot Controller หรือ Driver Station เวอร์ชัน 8.0 หรือใหม่กว่า จะไม่สามารถสื่อสารกับ Driver Station หรือ Robot Controller เวอร์ชัน 7.2 หรือก่อนหน้าได้
- หากคุณลืมอัปเดตทั้งสองแอปพร้อมกัน ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นเพื่ออธิบายว่าแอปใดเก่ากว่าและควรอัปเดต
- การเริ่มต้นอุปกรณ์ I2C จะเกิดขึ้นเมื่อคุณดึงข้อมูลจาก
HardwareMap
เป็นครั้งแรก- ก่อนหน้านี้ อุปกรณ์ I2C ทั้งหมดจะเริ่มต้นได้ก่อนที่ OpMode จะเริ่มทำงาน ไม่ว่าคุณจะใช้งานจริงหรือไม่ก็ตาม ซึ่งอาจส่งผลให้ประสิทธิภาพลดลงและมีคำเตือนที่ไม่จำเป็น
- ด้วยการเปลี่ยนแปลงนี้ ผู้ใช้ Java จะต้องดึงข้อมูลอุปกรณ์ที่จำเป็นทั้งหมดจาก
HardwareMap
ในระหว่างระยะเริ่มต้นของ OpMode เป็นสิ่งสำคัญมาก กล่าวคือ ประกาศตัวแปรสำหรับอุปกรณ์ฮาร์ดแวร์แต่ละตัวที่ OpMode จะใช้ และกำหนดค่าให้กับอุปกรณ์ฮาร์ดแวร์แต่ละตัว อย่าทำเช่นนี้ในระหว่างระยะเรียกใช้ มิฉะนั้น OpMode ของคุณอาจหยุดทำงานชั่วคราวในขณะที่อุปกรณ์ที่คุณกำลังดึงข้อมูลเริ่มต้นใช้งาน - OpModes ที่ไม่ได้ใช้อุปกรณ์ I2C ทั้งหมดที่ระบุในไฟล์การกำหนดค่าควรใช้เวลาในการเริ่มต้นน้อยลง OpModes ที่ใช้อุปกรณ์ I2C ที่ระบุทั้งหมดควรใช้เวลาเท่าเดิม
- แก้ไขปัญหา #251 โดยการเปลี่ยนลำดับการอ่านอัตราการหมุนของแกนจากเวกเตอร์ความเร็วเชิงมุมในไดรเวอร์ BNO055 IMU
- เลิกใช้
pitchMode
ใน BNO055IMU.Parameters
- การตั้งค่า
pitchMode
เป็น PitchMode.WINDOWS
จะทำลายรูปแบบพิกัดที่คนขับใช้
- ย้าย
OpModeManagerImpl
ไปยังแพ็คเกจ com.qualcomm.robotcore.eventloop.opmode
- สิ่งนี้จะทำลายไลบรารีของบุคคลที่สาม EasyOpenCV (เวอร์ชัน 1.5.1 และก่อนหน้า) และ FTC Dashboard (เวอร์ชัน 0.4.4 และก่อนหน้า)
- ลบเมธอด
OpMode
ที่เลิกใช้งานแล้ว resetStartTime()
(ใช้ resetRuntime()
แทน) - ลบคลาส
LinearOpMode.LinearOpModeHelper
ที่ได้รับการป้องกัน (ซึ่ง OpModes ไม่ได้มีไว้สำหรับการใช้งาน) - ลบประเภทการกำหนดค่าอุปกรณ์ I2C (ซิงโครนัส) (เลิกใช้แล้วตั้งแต่ปี 2018)
การปรับปรุง
- ข้อยกเว้นที่ไม่ถูกตรวจจับใน OpModes ไม่จำเป็นต้องใช้ Restart Robot อีกต่อไป
- หน้าจอสีน้ำเงินที่ปรากฏขึ้นพร้อมกับ stacktrace ไม่ใช่ข้อผิดพลาดของ SDK ซึ่งจะแทนที่ข้อความสีแดงในพื้นที่การวัดและส่งข้อมูลทางไกล
- นับตั้งแต่การเปิดตัว SDK ครั้งแรก การขัดข้องของ OpMode ทำให้หุ่นยนต์เข้าสู่สถานะ "หยุดฉุกเฉิน" โดยแสดงเฉพาะบรรทัดแรกของข้อยกเว้น และกำหนดให้ผู้ใช้กด "รีสตาร์ทหุ่นยนต์" เพื่อดำเนินการต่อ
- ข้อยกเว้นในระหว่าง OpMode จะเปิดหน้าต่างป๊อปอัปที่มีโทนสีเดียวกับโปรแกรมดูบันทึก โดยมีสแต็กเทรซข้อยกเว้น 15 บรรทัดเพื่อให้สามารถติดตามบรรทัดที่ละเมิดได้อย่างง่ายดายโดยไม่จำเป็นต้องเชื่อมต่อเพื่อดูบันทึกผ่าน ADB หรือเลื่อนดูบันทึกจำนวนมาก ในโปรแกรมดูบันทึก
- ข้อความข้อยกเว้นในหน้าต่างป๊อปอัปมีทั้งแบบซูมและเลื่อนได้เหมือนกับหน้าเว็บ
- การกดปุ่ม "ตกลง" ในหน้าต่างป๊อปอัปจะกลับไปที่หน้าจอหลักของ Driver Station และอนุญาตให้ OpMode ทำงานอีกครั้งทันที โดยไม่จำเป็นต้องดำเนินการ "Restart Robot"
- เพิ่มตัวอย่าง Java ใหม่เพื่อสาธิตการใช้คลาสฮาร์ดแวร์กับแอคชูเอเตอร์หุ่นยนต์เชิงนามธรรม และแบ่งปันพวกมันผ่าน OpModes หลายตัว
- ตัวอย่าง OpMode คือ ConceptExternalHardwareClass.java
- คลาสฮาร์ดแวร์ที่เป็นนามธรรมคือ RobotHardware.java
- อัปเดตตัวอย่าง RobotAutoDriveByGyro_Linear Java เพื่อใช้ REV Control/Expansion hub IMU
- อัปเดตตัวอย่าง Vuforia เพื่ออ้างอิงเนื้อหา PowerPlay และมีชื่อและตำแหน่งฟิลด์ของเป้าหมายรูปภาพที่ถูกต้อง
- อัปเดตตัวอย่าง TensorFlow เพื่ออ้างอิงเนื้อหา PowerPlay
- เพิ่มการสนับสนุนการเลือกรับคุณสมบัติภาษา Java 8 ให้กับโปรแกรมแก้ไข OnBotJava
- หากต้องการเลือกใช้ ให้เปิดการตั้งค่า OnBotJava และทำเครื่องหมาย
Enable beta Java 8 support
- โปรดทราบว่าโค้ด Java 8 จะคอมไพล์เมื่อ Robot Controller รัน Android 7.0 Nougat หรือใหม่กว่าเท่านั้น
- กรุณารายงานปัญหาที่นี่
- ใน OnBotJava การคลิกข้อผิดพลาดของบิลด์จะข้ามไปยังตำแหน่งที่ถูกต้องอย่างถูกต้อง
- ปรับปรุงพฤติกรรมการเติมข้อความอัตโนมัติของ OnBotJava เพื่อให้ตัวเลือกการเติมข้อความสมบูรณ์ดีขึ้นในกรณีส่วนใหญ่
- เพิ่มรหัส QR ลงในรายงานการตรวจสอบคอนโทรลเลอร์หุ่นยนต์เมื่อดูจากสถานีไดรเวอร์สำหรับการสแกนโดยผู้ตรวจการในการแข่งขัน
- ปรับปรุงประสิทธิภาพและความน่าเชื่อถือของ I2C ในบางสถานการณ์
เวอร์ชัน 7.2 (20220723-130006)
ทำลายการเปลี่ยนแปลง
- อัปเดตเครื่องมือสร้าง สำหรับผู้ใช้ Android Studio การเปลี่ยนแปลงนี้ต้องการ Android Studio Chipmunk 2021.2.1
- ลบการสนับสนุนสำหรับอุปกรณ์ที่ไม่ได้เป็นกฎหมายการแข่งขันรวมถึงโมดูลควบคุมหลักหุ่นยนต์สมัยใหม่ตัวควบคุมเมทริกซ์และคอนโทรลเลอร์และเซ็นเซอร์ Hitechnic/NXT การสนับสนุนยังคงอยู่สำหรับเซ็นเซอร์ I2C หุ่นยนต์สมัยใหม่
การปรับปรุง
- เพิ่มความสูงของพื้นที่สัมผัสเมนูภูมิทัศน์ 3 จุดบนสถานีขับรถทำให้ง่ายต่อการเลือกมาก
- เพิ่มเมธอด
terminateOpModeNow()
เพื่อให้ opmodes สามารถออกจากตัวเองได้อย่างหมดจดทันที - เพิ่มเมธอด
opModeInInit()
ไปยัง LinearOpMode
เพื่ออำนวยความสะดวกในการเริ่มต้น คล้ายกับ opModeIsActive()
แต่สำหรับเฟส init - เตือนผู้ใช้ว่าพวกเขามี logitech F310 gamepad เชื่อมต่อที่ตั้งค่าเป็นโหมด DirectInput
- ช่วยให้ตัวควบคุมมอเตอร์ Sparkmini ตอบสนองได้เร็วขึ้นเพื่อเพิ่มความเร็วในการเปลี่ยนแปลง
- ซ่อนหมายเลขเวอร์ชันของแอพน้องสาวที่ติดตั้งไม่ถูกต้อง (เช่น DS ติดตั้งบนอุปกรณ์ RC หรือในทางกลับกัน) บนหน้าจอการตรวจสอบ
- เพิ่มการสนับสนุนสำหรับการอนุญาตให้ผู้ใช้แก้ไขความคิดเห็นสำหรับบล็อก RunopMode
- เพิ่มฟิลด์ ParameterDefaultValues ไปยัง @ExportToblocks สิ่งนี้ให้ความสามารถสำหรับวิธี Java ที่มีคำอธิบายประกอบ @ExportToblocks เพื่อระบุค่าเริ่มต้นสำหรับพารามิเตอร์เมธอดเมื่อแสดงในตัวแก้ไขบล็อก
- ทำให้ LinearopMode บล็อกอ่านได้มากขึ้น ชื่อ OpMode จะแสดงบนบล็อก RunopMode แต่ไม่ได้อยู่ในบล็อก LinearOpMode อื่น ๆ
- เพิ่มการสนับสนุนไปยังการตรวจจับวัตถุ Tensorflow สำหรับการใช้เครื่องกำเนิดเฟรมที่แตกต่างกันแทนที่จะเป็น Vuforia การใช้ Vuforia เพื่อผ่านเฟรมกล้องไปยัง TFOD ยังคงรองรับ
- ลบการใช้งานของ Renderscript
- แก้ไข logspam บนแอปเริ่มต้นของ stacktraces ซ้ำที่เกี่ยวข้องกับ
"Failed resolution of: Landroid/net/wifi/p2p/WifiP2pManager$DeviceInfoListener"
- อนุญาตให้ปิดการใช้งานวิทยุบลูทู ธ จากหน้าจอตรวจสอบ
- ปรับปรุงข้อความเตือนเมื่ออุปกรณ์ I2C ไม่ตอบสนอง
- เพิ่มการสนับสนุนสำหรับการควบคุม LED RGB ที่มีอยู่ใน ps4/etpark gamepads จาก opmodes
- ลบการอ้างอิง pushbot แบบดั้งเดิมจากตัวอย่าง opmode เปลี่ยนชื่อ "pushbot" ตัวอย่างเป็น "หุ่นยนต์" ทิศทางมอเตอร์ย้อนกลับไปใช้งานร่วมกับรถไฟขับเคลื่อน "ไดรฟ์ไดรฟ์"
แก้ไขข้อบกพร่อง
- แก้ไขปัญหา #316 (matrixf.inverted () ส่งคืนเมทริกซ์ขนาดไม่ถูกต้องสำหรับเมทริกซ์ 1x1 และ 2x2)
- การตรวจสอบตนเองในขณะนี้ช่วยให้สถานีไดรเวอร์และความเข้ากันได้ของตัวควบคุมหุ่นยนต์ระหว่างการเปิดตัวจุด
- แก้ไขข้อผิดพลาดที่หากอินสแตนซ์ของวัตถุ
RumbleEffect
เดียวกันถูกจัดคิวสำหรับ gamepads หลายตัวมันอาจเกิดขึ้นได้ว่าคำสั่ง Rumble ทั้งสองจะถูกส่งไปยัง Gamepad เพียงหนึ่งเดียว - แก้ไขข้อผิดพลาดในสถานีไดรเวอร์ที่อยู่ในศูนย์กลางไดรเวอร์หากคุณสมบัติ GamePad ขั้นสูงถูกปิดใช้งานและเชื่อมต่อ gamepad อย่างเป็นทางการแล้วเปิดคุณสมบัติ GamePad ขั้นสูงหรือ GamePad Type Overrides หน้าจอ คุณสมบัติ GamePad ขั้นสูงถูกปิดใช้งาน
- ป้องกันข้อยกเว้นตัวชี้ว่าง (ไม่น่าจะเป็นไปได้) ใน Vuforia Localizer
- Harden onbotjava และบล็อกช่วยป้องกันการป้องกันปัญหาเมื่อตัดการเชื่อมต่อจากโปรแกรมและจัดการ
- แก้ไขปัญหาที่แอป RC จะแขวนไว้หากการเขียน Rev Hub I2C ล้มเหลวเนื่องจากการดำเนินการ I2C ก่อนหน้านี้ยังอยู่ในระหว่างดำเนินการ การแขวนนี้เกิดขึ้นบ่อยที่สุดในระหว่างการเริ่มต้นเซ็นเซอร์ระยะทางรอบ 2 ม.
- ลบโปรแกรมตัวอย่าง Conceptwebcam.java ตัวอย่างนี้เข้ากันไม่ได้กับ onbotjava
- แก้ไขข้อผิดพลาดโดยใช้แท็ก HTML ในฟิลด์ความคิดเห็น @ExportToblocks ป้องกันไม่ให้ตัวแก้ไขบล็อกไม่ให้โหลด
- แก้ไขตัวแก้ไขบล็อกดังนั้นจึงไม่ขอให้คุณบันทึกเมื่อคุณยังไม่ได้แก้ไขอะไรเลย
- แก้ไขการอัปโหลดโครงการบล็อกขนาดใหญ่มากไปยังตัวแก้ไขบล็อกออฟไลน์
- แก้ไขข้อผิดพลาดที่ทำให้บล็อกสำหรับ DCMotorex ถูกตัดออกจากกล่องเครื่องมือตัวแก้ไขบล็อก
- แก้ไขโปรแกรมบล็อกที่ถอดออกจากบล็อก (เนื่องจากการใช้บล็อกฉลาก Tensorflow)
เวอร์ชัน 7.1 (20211223-120805)
- แก้ไขข้อผิดพลาดเมื่อโทร
isPwmEnabled()
(ฉบับที่ 223) - แก้ไขข้อผิดพลาดผ้าสำลี (ปัญหา #4)
- แก้ไขความผิดพลาดของสถานีไดรเวอร์เมื่อพยายามใช้ DualShock4 V1 GamePad พร้อมคุณสมบัติ GamePad ขั้นสูงที่เปิดใช้งาน (ฉบับที่ 173)
- แก้ไขสถานีไดรเวอร์ที่เป็นไปได้ (แต่ไม่น่าเป็นไปได้) เมื่อเชื่อมต่อ gamepads ทุกประเภท
- แก้ไขข้อผิดพลาดที่สถานีไดรเวอร์จะใช้ Deadzone 20% สำหรับ Xbox360 และ Logitech F310 gamepads เมื่อคุณสมบัติ GamePad ขั้นสูงถูกปิดใช้งาน
- เพิ่ม simpleomnidrive ตัวอย่าง opmode
- เพิ่ม UVC สีขาวควบคุม API
- แก้ไขปัญหา #259 ตัวอย่างบล็อกส่วนใหญ่สำหรับ TensorFlow ไม่สามารถใช้สำหรับรุ่นอื่นได้
- บล็อกก่อนหน้านี้ที่มีป้ายกำกับ TensorFlowObjectDetectionFreightFrenzy (จากหมวดหมู่ย่อยที่ชื่อ "ปรับให้เหมาะสมสำหรับ Freight Frenzy") และ TensorFlowObjectDetectionCustectionel (จากหมวดหมู่ย่อยที่ชื่อ "โมเดลแบบกำหนดเอง") บล็อกใน OPModes ที่มีอยู่จะได้รับการอัปเดตโดยอัตโนมัติเป็นบล็อกใหม่เมื่อเปิดในตัวแก้ไขบล็อก
- แก้ไขปัญหา #260 บล็อกไม่สามารถโทรหาวิธี Java ที่มีพารามิเตอร์ vuforialocalizer
- บล็อกตอนนี้มีบล็อกที่มีป้ายกำกับ Vuforiafreightfrenzy.getVuforialocalizer สำหรับสิ่งนี้
- เพิ่มหน้าเพื่อจัดการรุ่น Tensorflow Lite ใน/sdcard/first/tflitemodels เพื่อไปยังหน้ารุ่น tflite:
- คุณสามารถคลิกที่ลิงค์ที่ด้านล่างของหน้าจัดการ
- คุณสามารถคลิกที่ลิงก์ที่หน้าโครงการบล็อกขวาบนขวา
- แก้ไข logspam เมื่อ
isBusy()
เรียกว่ามอเตอร์ไม่ได้อยู่ในโหมด RTP - ซ่อนรายการ "รหัสผ่าน RC" บนหน้าจอการตรวจสอบสำหรับคอนโทรลเลอร์หุ่นยนต์ที่ใช้โทรศัพท์ (ใช้ได้เฉพาะกับฮับควบคุมเท่านั้น)
- เพิ่ม Channel 165 ไปยังเมนูการเลือกช่องสัญญาณ Direct Direct ในหน้าจอการตั้งค่า (165 ก่อนหน้านี้มีให้บริการผ่าน Web UI แต่ไม่ได้อยู่ในแอพ)
เวอร์ชัน 7.0 (20210915-141025)
การปรับปรุงและคุณสมบัติใหม่
- เพิ่มการสนับสนุนสำหรับไลบรารีภายนอกไปยัง onbotjava และบล็อก
- อัปโหลดไฟล์. jar และ. aar ใน onbotjava
- ข้อ จำกัด ที่รู้จัก - อุปกรณ์ RobotController จะต้องเรียกใช้ Android 7.0 หรือมากกว่า
- ข้อ จำกัด ที่รู้จัก - ไฟล์. AAR ที่มีสินทรัพย์ไม่ได้รับการสนับสนุน
- ไลบรารีภายนอกสามารถให้การสนับสนุนอุปกรณ์ฮาร์ดแวร์โดยใช้คำอธิบายประกอบใน com.qualcomm.robotcore.hardware.configuration.annotations แพ็คเกจ
- ไลบรารีภายนอกสามารถรวมไฟล์. ดังนั้นไฟล์สำหรับรหัสเนทีฟ
- ห้องสมุดภายนอกสามารถใช้ได้จาก OnBotJava OpModes
- ไลบรารีภายนอกที่ใช้คำอธิบายประกอบต่อไปนี้สามารถใช้ได้จากบล็อก opmodes
- org.firstinspires.ftc.robotcore.external.exportclasstoblocks
- org.firstinspires.ftc.robotcore.external.exporttoblocks
- ไลบรารีภายนอกที่ใช้คำอธิบายประกอบต่อไปนี้สามารถเพิ่มอุปกรณ์ฮาร์ดแวร์ใหม่ได้:
- com.qualcomm.robotcore.hardware.configuration.annotations.analogsensortype
- com.qualcomm.robotcore.hardware.configuration.annotations.deviceProperties
- com.qualcomm.robotcore.hardware.configuration.annotations.digitaliodevicetype
- com.qualcomm.robotcore.hardware.configuration.annotations.i2cdevicetype
- com.qualcomm.robotcore.hardware.configuration.annotations.motortype
- com.qualcomm.robotcore.hardware.configuration.annotations.servotype
- ไลบรารีภายนอกที่ใช้คำอธิบายประกอบต่อไปนี้สามารถเพิ่มฟังก์ชั่นใหม่ให้กับคอนโทรลเลอร์หุ่นยนต์:
- org.firstinspires.ftc.ftcommon.external.oncreate
- org.firstinspires.ftc.ftcommon.external.oncreateVentloop
- org.firstinspires.ftc.ftcommon.external.oncreatemenu
- org.firstinspires.ftc.ftcommon.external.ondestroy
- org.firstinspires.ftc.ftcommon.external.webhandlerregistrar
- เพิ่มการสนับสนุนศูนย์กลางไดรเวอร์ REV Robotics
- เพิ่มไดรเวอร์ USB Gamepad Userspace ที่กำหนดเองอย่างสมบูรณ์ไปยังสถานีไดรเวอร์ (ดู "เมนู" คุณสมบัติ GamePad ขั้นสูง "ในการตั้งค่า DS)
- อนุญาตให้ gamepads ทำงานบนอุปกรณ์ที่ไม่มีการสนับสนุนเคอร์เนล Linux ดั้งเดิม (เช่นอุปกรณ์โมโตโรล่าโรมาเนียบางตัว)
- อนุญาตให้ DS อ่านหมายเลขซีเรียลที่ไม่ซ้ำกันของแต่ละ gamepad ทำให้สามารถกู้คืนอัตโนมัติของ gamepads ที่ลดลงได้แม้ว่าจะมี gamepads สองรุ่นที่ลดลง (หมายเหตุ: น่าเสียดายที่สิ่งนี้ไม่ได้ใช้กับ gamepads etpark เพราะพวกเขาไม่มีอนุกรมที่ไม่ซ้ำกัน)
- การอ่านหมายเลขซีเรียลที่ไม่ซ้ำกันยังให้ความสามารถในการกำหนดค่า DS เพื่อกำหนด gamepads ให้กับตำแหน่งที่แน่นอนโดยค่าเริ่มต้น (ดังนั้นไม่จำเป็นต้องเริ่ม+A/B เลย)
- วงแหวน LED บน Xbox360 gamepad และแถบ LED RGB บน PS4 gamepad ใช้เพื่อระบุตำแหน่งไดรเวอร์ที่ gamepad ถูกผูกไว้
- มอเตอร์ Rumble บน Xbox360, PS4 และ Etpark Gamepads สามารถควบคุมได้จาก OpModes
- ทัชแพด 2 จุดบน PS4 gamepad สามารถอ่านได้จาก opmodes
- ปุ่ม "ย้อนกลับ" และ "คู่มือ" บน Gamepad สามารถผูกพันกับการควบคุมหุ่นยนต์ได้อย่างปลอดภัย (ก่อนหน้านี้บนอุปกรณ์หลายเครื่อง Android จะสกัดกั้นปุ่มเหล่านี้เป็นปุ่มโฮมกดและปิดแอป)
- คุณสมบัติ GamePad ขั้นสูงถูกเปิดใช้งานโดยค่าเริ่มต้น แต่อาจถูกปิดใช้งานผ่านเมนูการตั้งค่าเพื่อเปลี่ยนกลับไปใช้การสนับสนุน gamepad ที่ให้โดย Android
- ปรับปรุงความแม่นยำของการวัด Ping
- แก้ไขปัญหาที่เวลา ping แสดงให้เห็นว่าสูงกว่าความเป็นจริงเมื่อเริ่มเชื่อมต่อหรือเริ่มต้นหุ่นยนต์ใหม่
- หากต้องการดูการปรับปรุงเต็มรูปแบบคุณต้องอัปเดตทั้งแอพคอนโทรลเลอร์หุ่นยนต์และแอพสถานีไดรเวอร์
- อัปเดตตัวอย่างที่อยู่ที่/ftcrobotcontroller/src/main/java/org/firstInspires/ftc/robotcontroller/ภายนอก/ตัวอย่าง
- เพิ่มตัวอย่าง ConceptGamePadrumble และ ConceptGamePadTouchPad เพื่อแสดงให้เห็นถึงการใช้ความสามารถของ Gampad ใหม่เหล่านี้
- ตัวอย่าง Vuforia ที่มีอยู่ในตัวอย่างเพียง 2 ตัวอย่าง (ConceptVuforifieldNavigation & ConceptVuforifieldNavigationWebcam) แสดงวิธีกำหนดตำแหน่งของหุ่นยนต์บนสนามโดยใช้ Vuforia สิ่งเหล่านี้ใช้ภาพเป้าหมายของฤดูกาลปัจจุบัน
- เพิ่ม ConceptVuforiadriveTotargetWebCam เพื่อแสดงวิธีง่ายๆในการขับรถไปยังเป้าหมาย Vuforia ที่มองเห็นได้โดยตรง
- ทำให้การปรับปรุงหลายอย่างกับระบบเตือนและคำเตือนของแต่ละบุคคล
- ตอนนี้คำเตือนมีระยะห่างมากขึ้นเพื่อให้อ่านง่ายขึ้น
- มีการเพิ่มคำเตือนใหม่สำหรับเงื่อนไขที่ควรแก้ไขก่อนการแข่งขัน
- คำเตือนแอพที่ไม่ตรงกันในขณะนี้ใช้แอพพลิเคชั่นหลักและรุ่นรองไม่ใช่รหัสเวอร์ชัน
- คำเตือนจะถูกเปิดใช้งานอีกครั้งโดยอัตโนมัติเมื่อมีการติดตั้งแอปหุ่นยนต์คอนโทรลเลอร์จากฤดูกาล FTC ใหม่
- เพิ่มการสนับสนุนสำหรับการทำธุรกรรม I2C ในศูนย์กลางการขยาย / ศูนย์ควบคุมโดยไม่ต้องระบุที่อยู่ลงทะเบียน
- ดูส่วนที่ 3 ของข้อมูลจำเพาะ Ti I2C
- การเรียกใช้วิธีการใหม่เหล่านี้เมื่อใช้ฮาร์ดแวร์หุ่นยนต์สมัยใหม่จะส่งผลให้เกิดการไม่ใช้งาน
- การเปลี่ยนแปลงวิธี Vuforialocalizer
close()
ที่จะเปิดเผยต่อสาธารณะ - เพิ่มการรองรับแบบจำลองการตรวจจับวัตถุ Tensorflow V2
- ลดความคลุมเครือของภาษาตรวจสอบตนเองและกราฟิก
- ตอนนี้ Onbotjava เตือนเกี่ยวกับไฟล์ที่ไม่ได้ตั้งใจเขียนทับ
- ปรับปรุงพฤติกรรมของวง Wi-Fi และตัวเลือกช่องทางบนหน้าเว็บจัดการ
แก้ไขข้อบกพร่อง
- แก้ไขแอพคอนโทรลเลอร์หุ่นยนต์บน Android 9+ เมื่อสถานีไดรเวอร์เชื่อมต่อ
- แก้ไขปัญหาที่ opmode รับผิดชอบการโทรปิดบน TensorFlow TfObjectDetector ตอนนี้จะทำโดยอัตโนมัติ
- แก้ไขบล็อกการเริ่มต้น Vuforia เพื่อให้ผู้ใช้สามารถเลือกแกน อัปเดตบล็อกตัวอย่าง opmodes ที่เกี่ยวข้อง
- แก้ไขปัญหา FTCrobotController #114 บล็อก LED และคลาส Java ไม่ทำงาน
- แก้ไขการบันทึกการจับคู่สำหรับ opmodes ที่มีอักขระพิเศษในชื่อของพวกเขา
- แก้ไขการควบคุม OpMode ของสถานีไดรเวอร์จะไม่ตอบสนองหากสถานีไดรเวอร์ถูกตั้งค่าเป็นเค้าโครงแนวนอนและการสร้าง onbotjava ถูกกระตุ้นในขณะที่ opmode กำลังทำงานอยู่
- แก้ไขแอปสถานีไดรเวอร์ปิดตัวเองเมื่อมันถูกสลับออกไปหรือปิดหน้าจอ
- แก้ไข "Black Swirl of Doom" (Infinite "การกำหนดค่าข้อความ Wi-Fi Direct") บนอุปกรณ์เก่า
- อัปเดตความคิดเห็นของวิกิในหน้าอินโทร OnBotJava
เวอร์ชัน 6.2 (20210218-074821)
การปรับปรุง
- ความพยายามในการแก้ไขเงื่อนไขโดยอัตโนมัติเมื่อศูนย์กลางการขยายตัวของฮับควบคุมไม่ทำงานโดยการส่งเฟิร์มแวร์อีกครั้ง
- ทำให้การปรับปรุงที่หลากหลายของหน้าจอการจับคู่โดยตรงของ Wi-Fi โดยเฉพาะในโหมด Landscape
- ทำให้บริการคอนโทรลเลอร์หุ่นยนต์ไม่ได้เริ่มต้นใหม่อีกต่อไปเมื่อกิจกรรมหลักถูกนำไปเบื้องหน้า
- (เช่นบริการจะไม่เริ่มต้นใหม่อีกต่อไปโดยการดูหน้าจอตรวจสอบตัวเองและกดปุ่มย้อนกลับ)
- มันยังคงรีสตาร์ทหากเมนูการตั้งค่าหรือกำหนดค่าเมนูหุ่นยนต์เปิด
แก้ไขข้อบกพร่อง
- แก้ไขปัญหา ftcrobotcontroller #71 ไม่สามารถเปิด opmodes ใน v6.1 บล็อกตัวแก้ไขออฟไลน์
- แก้ไขปัญหา ftcrobotcontroller #79 6.1 ทำให้การรีบูตอ่อนนุ่มในการเล่น Motorola E5
- แก้ไขปัญหาที่ Watchdog ของศูนย์ควบคุมระบบควบคุมจะรีสตาร์ทแอพ Robot Controller หากศูนย์ควบคุมไม่สามารถสื่อสารกับศูนย์กลางการขยายตัวภายในได้
- แก้ไขอุปกรณ์ I2C บางอย่างที่ไม่ปรากฏในฟิลด์
HardwareMap
ที่เหมาะสม (เช่น hardwareMap.colorSensor
) - แก้ไขปัญหาที่การดำเนินการรีเซ็ตโรงงาน Wi-Fi บนฮับควบคุมจะไม่ตั้งค่าวง Wi-Fi เป็น 2.4 GHz
- แก้ไขปัญหาที่ onbotjava อาจล้มเหลวในการสร้างไฟล์ใหม่หากเลือกตัวเลือกในการ "เลือกรหัสการตั้งค่าสำหรับฮาร์ดแวร์ที่กำหนดค่า"
- แก้ไขปัญหาที่การดำเนินการบางอย่างหลังจากการล่มของ opmode จะทำลายการควบคุมการควบคุม/ขยายการสื่อสารชั่วคราว
- แก้ไขปัญหาที่ศูนย์ควบคุมที่มีฮับขยายที่เชื่อมต่อกับ USB ที่กำหนดค่า
- แก้ไขปัญหาที่อาจเกิดขึ้นจากการมีเวอร์ชันเฟิร์มแวร์ฮับควบคุม/ขยายที่ไม่ตรงกัน
- แก้ไขปัญหา ftc_app 673 matchlog ล่าสุดกำลังถูกลบแทนที่จะเป็นเก่าโดย robotlog
- แก้ไขแนวคิด OpMode ตัวอย่าง OpMode โดยการปรับทิศทางอย่างถูกต้องบนหุ่นยนต์
- แก้ไขปัญหาที่ LogCat จะถูกสแปมด้วยการขัดจังหวะการรับรู้เมื่อมีการร้องขอ Stop จากสถานีขับรถ (พฤติกรรมนี้ถูกนำมาใช้โดยไม่ได้ตั้งใจใน V5.3) การเปลี่ยนแปลงนี้ไม่มีผลกระทบต่อการทำงาน
- แก้ไขปัญหาที่ตัวแก้ไขบล็อกไม่สามารถโหลดได้หากชื่อของ teleop opmode ใด ๆ มีเครื่องหมายอะโพสโทรฟี
เวอร์ชัน 6.1 (20201209-113742)
- ทำให้ปุ่มสแกนบนหน้าจอการกำหนดค่าอัปเดตรายการฮับส่วนขยายที่เชื่อมต่อผ่าน RS-485
- ปรับปรุงความเข้ากันได้ของเว็บอินเตอร์เฟสกับเบราว์เซอร์รุ่นเก่าและเวอร์ชัน WebView ระบบ Android
- แก้ไขปัญหาในไดรเวอร์ UVC ที่กล้องบางตัว (เช่น MS Lifecams บางตัว) ซึ่งรายงานช่วงเวลาของเฟรมเป็นแบบโค้งมนมากกว่าค่าที่ถูกตัดทอน (เช่น
666667*100ns
แทนที่จะเป็น 666666*100ns
สำหรับ 15FPS) จะไม่เริ่มสตรีมมิ่ง - เพิ่มการสนับสนุนในไดรเวอร์ UVC สำหรับการควบคุม PTZ เสมือนจริง
- เพิ่มการสนับสนุนในไดรเวอร์ UVC เพื่อการควบคุม Gain (ISO)
- เพิ่มการสนับสนุนในไดรเวอร์ UVC สำหรับการเปิดใช้งาน/ปิดการใช้งานลำดับความสำคัญ AE การตั้งค่านี้ให้วิธีการบอกเฟิร์มแวร์กล้องเช่นกัน
- A) สามารถรองรับอัตราเฟรมที่ร้องขอเพื่อให้ภาพที่ดีขึ้นในทางทฤษฎี (เช่นการเปิดรับแสงนานกว่าระยะเวลาระหว่างเฟรมของอัตราเฟรมที่เลือกอนุญาต)
- b) มัน จะต้อง เป็นไปตามกำหนดเวลาระหว่างเฟรมสำหรับอัตราเฟรมที่เลือกแม้ว่าภาพอาจไม่ได้รับแสง
- เพิ่มการสนับสนุนสำหรับศูนย์ควบคุม OS 1.1.2 หุ่นยนต์คอนโทรลเลอร์ Watchdog
- แอพคอนโทรลเลอร์หุ่นยนต์จะเริ่มต้นใหม่หากหยุดตอบสนองนานกว่า 10 วินาที
- เพิ่มการสนับสนุนสำหรับการใช้แอพไดรเวอร์สถานีบน Android 10+
- แนะนำคุณสมบัติการเลือกล่วงหน้าทางโทรศัพท์อัตโนมัติ
- สำหรับรายละเอียดและคู่มือการใช้งานโปรดดูรายการวิกินี้
- แสดงไอคอนถัดจากชื่อ OpMode ใน Dropdown รายการ OpMode บนสถานีไดรเวอร์เพื่อระบุแหล่งที่มาของ OpMode (เช่นเครื่องมือการเขียนโปรแกรมที่ใช้ในการสร้าง)
- แก้ไขปัญหาที่แอปสถานีไดรเวอร์จะออกหลังจากแสดงการกำหนดค่าหน้าจอ Direct Wi-Fi
- แก้ไขบล็อกและ onbotjava แจ้งเมื่อเข้าถึงผ่านไคลเอนต์ฮาร์ดแวร์ Rev
เวอร์ชัน 6.0 (20200921-085816)
หมายเหตุสำคัญ
- เวอร์ชัน 6.0 เป็นเวอร์ชันสำหรับฤดูกาลเป้าหมายสูงสุด
- ต้องใช้ Android Studio 4.0
- ผู้ใช้ Android Studio จำเป็นต้องเชื่อมต่อกับอินเทอร์เน็ตในครั้งแรกที่พวกเขาสร้างแอพ (เพื่อดาวน์โหลดแพ็คเกจที่จำเป็นสำหรับการสร้าง)
- เวอร์ชัน 5.5 เป็นนอกฤดูที่มีขนาดใหญ่พอสมควรในเดือนสิงหาคม 2563 ลดลง มันคุ้มค่าที่จะตรวจสอบบันทึกการเปิดตัวเหล่านั้นด้านล่างด้วย
- เวอร์ชัน 5.5 และ Greater จะไม่ทำงานบนโทรศัพท์ Android 4.x และ 5.x รุ่นเก่า ผู้ใช้จะต้องอัพเกรดเป็นอุปกรณ์ Android 6.X ที่ได้รับอนุมัติหรือใหม่กว่า
- ค่า PIDF เริ่มต้นสำหรับมอเตอร์ Rev ได้รับการเปลี่ยนกลับเป็นค่า PID เริ่มต้นที่ใช้ในฤดูกาล 2018-2019
- การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากค่า 2018-2019 กลายเป็นกลไกที่ดีขึ้นสำหรับกลไกหลายอย่าง
- สิ่งนี้นำพฤติกรรมของมอเตอร์ Rev ให้สอดคล้องกับพฤติกรรมของมอเตอร์อื่น ๆ ทั้งหมด
- หากคุณต้องการพฤติกรรมของฤดูกาล 2019-2020 สำหรับมอเตอร์ Rev นี่คือค่า PIDF ที่มีอยู่ในสถานที่เพื่อให้คุณสามารถตั้งค่าด้วยตนเองใน OpModes ของคุณ:
HD Hex Motors (กระปุกเกียร์ทั้งหมด): Velocity PIDF ค่า: P = 1.17
, I = 0.117
, F = 11.7
ตำแหน่ง PIDF ตำแหน่ง: P = 5.0
Core Hex Motor: Velocity PIDF ค่า: P = 4.96
, I = 0.496
, F = 49.6
ตำแหน่งตำแหน่ง ค่า PIDF: P = 5.0
คุณสมบัติใหม่
- รวมถึงโมเดลการอนุมาน Tensorflow และตัวอย่าง opmodes เพื่อตรวจจับสแต็คเริ่มต้นเป้าหมายสูงสุด (สี่แหวนกับสแต็คแหวนเดี่ยว)
- รวมถึงเป้าหมายการมองเห็นเป้าหมายสูงสุดของ Vuforia และตัวอย่าง opmodes
- แนะนำคุณสมบัติการซูมดิจิตอลสำหรับการตรวจจับวัตถุ TensorFlow (เพื่อตรวจจับวัตถุที่แม่นยำยิ่งขึ้นในระยะทางไกล)
- เพิ่มรายการการกำหนดค่าสำหรับมอเตอร์ rev ultraplanetary hd hex
การปรับปรุง
- เพิ่มวิธีการ setgain () และ getgain () ไปยังอินเตอร์เฟส NormalizedColorSensor
- โดยการตั้งค่าการขยายของเซ็นเซอร์สีคุณสามารถปรับสำหรับสภาพแสงที่แตกต่างกัน ตัวอย่างเช่นหากคุณตรวจพบค่าสีที่ต่ำกว่าที่คาดไว้คุณสามารถเพิ่มอัตราขยายได้
- ค่ากำไรจะถูกนำไปใช้กับวิธี argb () และ getNormalizedColors () เท่านั้นไม่ใช่วิธีการสีดิบ แนะนำวิธีการ getNormalizedColors () เพื่อความสะดวกในการใช้งานและความชัดเจนเนื่องจากต้องเปลี่ยน argb ()
- อัปเดตตัวอย่าง SensorColor Java เพื่อแสดงให้เห็นถึงการใช้งานที่ได้รับ
- รวม SensorrevColordistance Java ตัวอย่างเข้ากับตัวอย่าง SensorColor Java ซึ่งแสดงแนวทางปฏิบัติที่ดีที่สุดสำหรับเซ็นเซอร์สีทั้งหมด
- ปรับปรุงการดึงค่าจากเซ็นเซอร์สี Rev V3
- อัปเดตการคำนวณการทำให้เป็นมาตรฐานของช่อง RGB
- ปรับปรุงการคำนวณของช่องอัลฟา (สามารถใช้เป็นตัวบ่งชี้ความสว่างโดยรวม)
- แก้ไขความละเอียดเซ็นเซอร์เริ่มต้นซึ่งทำให้เกิดปัญหาเกี่ยวกับสภาพแวดล้อมที่สดใส
- เพิ่มการสนับสนุนสำหรับการเปลี่ยนความละเอียดและอัตราการวัดของชิปเซ็นเซอร์ Broadcom
- ลบการอ่านและการคำนวณ IR ไม่ได้มีไว้สำหรับชิปเซ็นเซอร์ Broadcom
แก้ไขข้อบกพร่อง
- ปรับปรุงความน่าเชื่อถือของการเริ่มต้น BNO055IMU IMU เพื่อป้องกันความล้มเหลวในการเริ่มต้นแบบสุ่ม (ซึ่งปรากฏเป็น
Problem with 'imu'
)
เวอร์ชัน 5.5 (20200824-090813)
เวอร์ชัน 5.5 ต้องการ Android Studio 4.0 หรือใหม่กว่า
คุณสมบัติใหม่
- เพิ่มการสนับสนุนสำหรับการเรียกคลาส Java ที่กำหนดเองจาก blocks opmodes (แก้ไขปัญหา Skystone #161)
- คลาสจะต้องอยู่ในแพ็คเกจ org.firstinspires.ftc.teamcode
- เพื่อให้สามารถเข้าถึง OpMode, HardWaremap, Telemetry, GamePad1 และ GamePad2 ได้อย่างง่ายดายชั้นเรียนสามารถขยาย org.firstinspires.ftc.robotcore.external.blocksopmodecompanion
- วิธีการจะต้องเป็นแบบคงที่สาธารณะและมีพารามิเตอร์ไม่เกิน 21 พารามิเตอร์
- วิธีการจะต้องใส่คำอธิบายประกอบด้วย org.firstinspires.ftc.robotcore.external.exporttoblocks
- พารามิเตอร์ที่ประกาศว่าเป็น opmode, linearopmode, telemetry และ hardwareMap ได้รับการสนับสนุนและอาร์กิวเมนต์จะถูกจัดเตรียมโดยอัตโนมัติโดยไม่คำนึงถึงลำดับของพารามิเตอร์ ในบล็อกซ็อกเก็ตสำหรับพารามิเตอร์เหล่านั้นจะถูกกรอกข้อมูลโดยอัตโนมัติ
- พารามิเตอร์ที่ประกาศว่าเป็นถ่านหรือ java.lang.Character จะยอมรับบล็อกใด ๆ ที่ส่งคืนข้อความและจะใช้อักขระตัวแรกในข้อความเท่านั้น
- พารามิเตอร์ที่ประกาศว่าเป็นบูลีนหรือ java.lang.boolean จะยอมรับบล็อกใด ๆ ที่ส่งคืนบูลีน
- พารามิเตอร์ประกาศเป็นไบต์, java.lang.byte, สั้น, java.lang.short, int, java.lang.integer, ยาวหรือ java.lang.long จะยอมรับบล็อกใด ๆ ที่ส่งคืนตัวเลข จำนวนทั้งหมดที่ใกล้ที่สุด
- พารามิเตอร์ที่ประกาศเป็นลอย, java.lang.float, double, java.lang.double จะยอมรับบล็อกใด ๆ ที่ส่งคืนตัวเลข
- เพิ่มวิธีการ telemetry API สำหรับการตั้งค่ารูปแบบการแสดงผล
- คลาสสิค
- monospace
- HTML (แท็กบางอย่างเท่านั้น)
- เพิ่มการรองรับบล็อกสำหรับการสลับกล้อง
- เพิ่มการรองรับบล็อกสำหรับการตรวจจับวัตถุ TensorFlow ด้วยโมเดลที่กำหนดเอง
- เพิ่มการสนับสนุนสำหรับการอัปโหลดรูปแบบการตรวจจับวัตถุ TensorFlow ที่กำหนดเองในหน้าจัดการซึ่งมีประโยชน์อย่างยิ่งสำหรับผู้ใช้บล็อกและผู้ใช้ OnBotJava
- แสดงรหัส Blink ฮับควบคุมใหม่เมื่อสวิตช์ Wi-Fi Band โดยใช้ปุ่มควบคุมฮับ (เป็นไปได้เฉพาะในศูนย์ควบคุม OS 1.1.2)
- เพิ่มคำเตือนใหม่ที่สามารถปิดใช้งานได้ในการตั้งค่า RC ขั้นสูง
- คำเตือนเวอร์ชันแอพที่ไม่ตรงกัน
- ไม่จำเป็น 2.4 GHz Wi-Fi คำเตือนการใช้งาน
- Rev Hub กำลังใช้เฟิร์มแวร์ที่ล้าสมัย (เก่ากว่าเวอร์ชัน 1.8.2)
- เพิ่มการสนับสนุนสำหรับ Sony PS4 GamePad และกลับมาทำงานอย่างไร GamePads ทำงานบนสถานีไดรเวอร์
- ลบการตั้งค่าซึ่งตั้งค่าประเภท gamepad ตามตำแหน่งไดรเวอร์ แทนที่ด้วยเมนูที่อนุญาตให้ระบุประเภทสำหรับ gamepads ด้วย VID และ PID ที่ไม่รู้จัก
- ความพยายามในการตรวจจับประเภท gamepad โดยอัตโนมัติตาม USB VID และ PID
- หากไม่ทราบ Gamepad VID และ PID ให้ใช้ประเภทที่ระบุโดยผู้ใช้สำหรับ VID และ PID นั้น
- หากไม่ทราบ GamePad VID และ PID และผู้ใช้ไม่ได้ระบุประเภทสำหรับ VID และ PID นั้นการคาดเดาที่มีการศึกษาจะทำเกี่ยวกับวิธีการทำแผนที่ gamepad
- ตอนนี้สถานีไดรเวอร์จะพยายามกู้คืนจาก gamepad โดยอัตโนมัติและลดการเชื่อมต่อใหม่ไปยังตำแหน่งที่ได้รับมอบหมายเมื่อมันลดลง
- หากมีการกำหนด gamepad เพียงอันเดียวและลดลง: สามารถกู้คืนได้
- หากมีการกำหนด gamepads สองตัวและมีลายเซ็น VID/PID ที่แตกต่างกัน และมีเพียงหยดเดียวเท่านั้น: มันจะถูกกู้คืน
- หากมีการกำหนด gamepads สองตัวและมีลายเซ็น VID/PID ที่แตกต่างกัน และทั้งสองหยด: ทั้งสองจะถูกกู้คืน
- หากมีการกำหนด gamepads สองตัวและมีลายเซ็น VID/PID เดียวกัน และมีเพียงหยดเดียวเท่านั้น: มันจะถูกกู้คืน
- หากมีการกำหนด gamepads สองตัวและมีลายเซ็น VID/PID เดียวกัน และทั้งสองหยด: จะ ไม่ ถูกกู้คืนเนื่องจากความกำกวมของ gamepads เมื่อพวกเขาปรากฏตัวบนรถบัส USB อีกครั้ง
- ขณะนี้มีกรณีขอบหนึ่งที่รู้จัก: หากมี gamepads สองตัว ที่มีลายเซ็น VID/PID เดียวกัน เสียบปลั๊ก แต่มีเพียงหนึ่งเดียวเท่านั้นที่ได้รับมอบหมาย และพวกเขาทั้งคู่ก็ลดลง ตำแหน่งที่ได้รับมอบหมาย: จะถูกกำหนดโดยที่ใดก็ตามที่ได้รับการจัดสรรใหม่อีกครั้งโดยคอนโทรลเลอร์บัส USB
- เพิ่มอินเทอร์เฟซผู้ใช้ภูมิทัศน์ไปยังสถานีไดรเวอร์
- ฟีเจอร์ใหม่: Timer ฝึกซ้อมด้วยตัวชี้นำเสียง
- คุณสมบัติใหม่ (ศูนย์ควบคุมเท่านั้น): ตัวบ่งชี้ความแข็งแรงการเชื่อมต่อเครือข่ายไร้สาย (0-5 บาร์)
- คุณสมบัติใหม่ (ศูนย์ควบคุมเท่านั้น): แตะที่หน้าจอ Ping/Channel จะสลับไปที่การแสดงผลสำรองที่แสดงวิทยุ RX DBM และความเร็วลิงก์ (แตะอีกครั้งเพื่อสลับกลับ)
- เค้าโครงจะไม่ autorotate คุณสามารถสลับเค้าโครงจากเมนูการตั้งค่าสถานีไดรเวอร์
ทำลายการเปลี่ยนแปลง
- ลบการสนับสนุนสำหรับ Android เวอร์ชัน 4.4 ถึง 5.1 (KitKat และ Lollipop) Minsdkversion ตอนนี้ 23
- ลบวิธี
LinearOpMode
ที่เลิกใช้แล้ว waitOneFullHardwareCycle()
และ waitForNextHardwareCycle()
การปรับปรุง
- จัดการที่อยู่ RS485 ของศูนย์ควบคุมโดยอัตโนมัติ
- ศูนย์ควบคุมจะได้รับที่อยู่ที่สงวนไว้โดยอัตโนมัติ
- ไฟล์การกำหนดค่าที่มีอยู่จะทำงานต่อไป
- ที่อยู่ทั้งหมดในช่วง 1-10 ยังคงมีอยู่สำหรับฮับขยาย
- ไฟฮับควบคุมโดยปกติจะเป็นสีเขียวทึบโดยไม่กระพริบเพื่อระบุที่อยู่
- ศูนย์ควบคุมจะไม่แสดงในหน้าการเปลี่ยนที่อยู่ฮับส่วนขยาย
- ปรับปรุงตัวอัปเดตเฟิร์มแวร์ Rev Hub
- ขณะนี้ผู้ใช้สามารถเลือกระหว่างไฟล์อัปเดตเฟิร์มแวร์ทั้งหมดที่มีอยู่ทั้งหมด
- เวอร์ชัน 1.8.2 ของเฟิร์มแวร์ Rev Hub ถูกรวมเข้ากับแอพ Robot Controller
- มีการเพิ่มข้อความเพื่อชี้แจงว่าฮับการขยายตัวสามารถอัปเดตผ่าน USB เท่านั้น
- ความเร็วการอัปเดตเฟิร์มแวร์ลดลงเพื่อปรับปรุงความน่าเชื่อถือ
- อนุญาตให้อัปเดตเฟิร์มแวร์ Rev Hub โดยตรงจากเว็บเพจการจัดการโดยตรง
- ปรับปรุงการดูบันทึกบนคอนโทรลเลอร์หุ่นยนต์
- การรองรับการเลื่อนแนวนอน (ไม่มีการห่อด้วยคำอีกต่อไป)
- รองรับ Pinch-to-zoom
- ใช้แบบอักษร monospaced
- ข้อความแสดงข้อผิดพลาดจะถูกเน้น
- โทนสีใหม่
- ความพยายามที่จะบังคับให้หยุดการหลบหนี/ติด unpt โดยไม่ต้องรีสตาร์ทแอปทั้งหมด
- เงื่อนไขการหลบหนีบางประเภทไม่สามารถหยุดได้ แต่ถ้ารหัสผู้ใช้พยายามพูดคุยกับฮาร์ดแวร์ในระหว่างการหลบหนีระบบควรจะสามารถจับภาพได้
- ทำให้การปรับแต่งต่างๆไปยังหน้าจอตรวจสอบตนเอง
- เปลี่ยนชื่อ "เวอร์ชัน OS" เป็น "เวอร์ชัน Android"
- เปลี่ยนชื่อ "Wi-Fi Direct Name" เป็น "Wi-Fi Name"
- เพิ่มรุ่นควบคุมฮับระบบปฏิบัติการเมื่อดูรายงานของศูนย์ควบคุม
- ซ่อนรายการโหมด Airplane เมื่อดูรายงานของศูนย์ควบคุม
- ลบการตรวจสอบ zte channel changer
- แสดงเวอร์ชันเฟิร์มแวร์สำหรับการขยายและควบคุมฮับ ทั้งหมด
- การตั้งค่าเครือข่ายซ้ำส่วนของหน้าจัดการ
- ขณะนี้การตั้งค่าเครือข่ายทั้งหมดถูกนำไปใช้ด้วยการคลิกเพียงครั้งเดียว
- ช่อง Wi-Fi Direct ของตัวควบคุมหุ่นยนต์ที่ใช้โทรศัพท์สามารถเปลี่ยนได้จากหน้าจัดการ
- ช่อง Wi-Fi ถูกกรองโดย Band (2.4 เทียบกับ 5 GHz) และไม่ว่าจะทับซ้อนกับช่องอื่น ๆ
- ช่อง Wi-Fi ปัจจุบันถูกเลือกล่วงหน้าบนตัวควบคุมหุ่นยนต์ที่ใช้โทรศัพท์และฮับควบคุมที่ใช้ OS 1.1.2 หรือใหม่กว่า
- บนฮับควบคุมที่ใช้ OS 1.1.2 หรือใหม่กว่าคุณสามารถเลือกที่จะให้ระบบเลือกช่องโดยอัตโนมัติบนแถบ 5 GHz
- ปรับปรุง onbotjava
- ธีมแสงใหม่และความมืดแทนที่ธีมเก่า (ความโกลาหล, gitHub, chrome, ... )
- ชุดรูปแบบเริ่มต้นใหม่คือ
light
และจะใช้เมื่อคุณอัปเดตเป็นรุ่นนี้เป็นครั้งแรก
- OnBotJava ตอนนี้มีตัวแก้ไขแท็บ
- โหมดออฟไลน์แบบอ่านอย่างเดียว
- ปรับปรุงฟังก์ชั่นของรายการเมนู "Exit" บนตัวควบคุมหุ่นยนต์และสถานีไดรเวอร์
- ตอนนี้รับประกันว่าจะหยุดอย่างเต็มที่และขนถ่ายจากหน่วยความจำ
- แสดงข้อความเตือนหาก LinearopMode มีอยู่ก่อนกำหนดเนื่องจากความล้มเหลวในการตรวจสอบสำหรับเงื่อนไขการเริ่มต้น
- ปรับปรุงข้อความแสดงข้อผิดพลาดที่แสดงเมื่อสถานีไดรเวอร์และคอนโทรลเลอร์หุ่นยนต์ไม่เข้ากันซึ่งกันและกัน
- แผงควบคุม OpMode ของสถานีไดรเวอร์ตอนนี้ปิดใช้งานในขณะที่หุ่นยนต์รีสตาร์ทกำลังดำเนินการอยู่
- ปิดใช้งานการตั้งค่าขั้นสูงที่เกี่ยวข้องกับ Wi-Fi Direct เมื่อตัวควบคุมหุ่นยนต์เป็นศูนย์กลางควบคุม
- ไอคอนแบตเตอรี่โทรศัพท์สีบนสถานีไดรเวอร์เมื่อต่ำ/วิกฤต
- ใช้ชื่อ "พอร์ทัลควบคุมฮับ" และ "ควบคุมฮับ" (เมื่อเหมาะสม) ในไฟล์กำหนดค่าใหม่
- ปรับปรุงประสิทธิภาพการอ่าน I2C
- การปรับปรุงที่มีขนาดใหญ่มากในศูนย์ควบคุม อ่านเร็วกว่า ~ 2x โดยมีขนาดเล็ก (เช่น 6 ไบต์) อ่าน
- ไม่ชัดเจนในฮับการขยายตัวที่เชื่อมต่อกับโทรศัพท์
- อัปเดต/รีเฟรชโครงสร้างพื้นฐาน
- อัปเดตเป็นห้องสมุดสนับสนุน 'Androidx' จาก 'com.android.support:AppCompat' ซึ่งเป็นจุดสิ้นสุดของชีวิต
- อัปเดต targetsdkversion และ compilesdkversion เป็น 28
- อัปเดตปลั๊กอิน Android ของ Android Studio เป็นล่าสุด
- แก้ไขการรายงานการประทับเวลาสร้างในหน้าจอ 'เกี่ยวกับ'
- เพิ่มตัวอย่างภาพประกอบการใช้เว็บแคมด้วยตนเอง: ConceptWebCam
แก้ไขข้อบกพร่อง
- แก้ไขปัญหา Skystone #248
- แก้ไขปัญหา Skystone #232 และปรับเปลี่ยนความหมายแคชจำนวนมากเพื่อให้สามารถใช้การเปลี่ยนด้วยตนเอง/การเปลี่ยนอัตโนมัติ
- ปรับปรุงประสิทธิภาพเมื่อเซ็นเซอร์ระยะทางรอบ 2m ถูกถอดปลั๊ก
- ปรับปรุงการอ่านข้อความขนมปังปิ้งบนอุปกรณ์บางอย่าง
- อนุญาตให้สถานีไดรเวอร์เชื่อมต่อกับคอนโทรลเลอร์หุ่นยนต์หลังจากที่มีการตัดการเชื่อมต่ออื่น
- ปรับปรุงการสร้างหมายเลขซีเรียลปลอมสำหรับกล้อง UVC ซึ่งไม่มีหมายเลขซีเรียลที่แท้จริง
- ก่อนหน้านี้อุปกรณ์บางตัวจะกำหนดกล้องดังกล่าวเป็นอนุกรม
0:0
และไม่สามารถเปิดและเริ่มสตรีมมิ่งได้ - แก้ไขปัญหา FTC_App #638
- แก้ไขข้อบกพร่องจำนวนหนึ่งด้วยจอมอนิเตอร์ Vuforia Camera รวมถึง::
- แก้ไขข้อผิดพลาดที่สามารถแสดงตัวอย่างได้ด้วยอัตราส่วนภาพที่ไม่ดี
- แก้ไขข้อผิดพลาดที่สามารถตัดตัวอย่างได้ในแนวนอน
- แก้ไขข้อผิดพลาดที่ Preview ได้รับความยุ่งเหยิงอย่างสมบูรณ์เมื่อหมุนโทรศัพท์
- แก้ไขข้อผิดพลาดที่ Crosshair สามารถล่องลอยเป้าหมายเมื่อใช้เว็บแคม
- แก้ไขปัญหาในไดรเวอร์ UVC บนอุปกรณ์บางตัว (FTC_App 681) หากการสตรีมเริ่ม/หยุดหลายครั้งติดต่อกัน
- ปัญหาที่ปรากฏเป็นเคอร์เนลตื่นตระหนกบนอุปกรณ์ที่ไม่มีแพทช์เคอร์เนลนี้
- บนอุปกรณ์ที่ได้รับผลกระทบ ที่ มีแพตช์ปัญหานั้นปรากฏเป็นเพียงความล้มเหลวในการเริ่มสตรีมมิ่ง
- ทีมงานเทคโนโลยีเชื่อว่าสาเหตุที่แท้จริงของปัญหาคือข้อผิดพลาดในไดรเวอร์ Linux Kernel XHCI วิธีแก้ปัญหาถูกนำไปใช้ในไดรเวอร์ SDK UVC
- แก้ไขข้อผิดพลาดในไดรเวอร์ UVC ซึ่งมักจะครึ่งเฟรมจากกล้องจะลดลง (เช่นเพียง 15fps ที่ส่งมอบในระหว่างการสตรีมเซสชันที่กำหนดค่าสำหรับ 30fps)
- แก้ไขปัญหาที่การตรวจจับวัตถุ Tensorflow จะแสดงผลลัพธ์ที่มีความมั่นใจต่ำกว่าพารามิเตอร์ความเชื่อมั่นขั้นต่ำ
- แก้ไขปัญหาการแสวงหาผลประโยชน์ที่อาจเกิดขึ้นของ CVE-2019-11358 ใน onbotjava
- แก้ไขการเปลี่ยนที่อยู่ของฮับขยายด้วยฮับขยายเพิ่มเติมที่เชื่อมต่อกับมัน
- เก็บรักษาการเชื่อมต่อเครือข่ายของฮับควบคุมเมื่อเลือก "รีสตาร์ทหุ่นยนต์"
- แก้ไขปัญหาที่การสแกนอุปกรณ์จะล้มเหลวในขณะที่หุ่นยนต์เริ่มต้นใหม่
- แก้ไขการใช้งาน renderscript
- ใช้ Androidx.renderscript ตัวแปร: ความเข้ากันได้เพิ่มขึ้น
- ใช้ RendERScript ในโหมด Java ไม่ใช่ Native: ทำให้การสร้างง่ายขึ้น
- แก้ไขปัญหาการแปลงเว็บแคมเฟรมเป็นบิตแมป: ช่องอัลฟ่าไม่ได้เริ่มต้นเพียง R, G, & B
- แก้ไขการคำนวณทางคณิตศาสตร์ที่เป็นไปได้ในกำหนดส่ง
- แก้ไขการหยุดชะงักในการสนับสนุนเว็บแคม Vuforia ซึ่งอาจทำให้เกิดความล่าช้า 5 วินาทีเมื่อหยุด opmode
เวอร์ชัน 5.4 (20200108-101156)
- แก้ไขปัญหา Skystone #88
- เพิ่มรายการการตรวจสอบที่บันทึกเมื่อตัวควบคุมหุ่นยนต์ (ศูนย์ควบคุม) ใช้รหัสผ่านเริ่มต้นจากโรงงาน
- แก้ไขปัญหา Skystone #61
- แก้ไขปัญหา Skystone #142
- แก้ไขปัญหา FTC_App #417 โดยการเพิ่มความสามารถในการตรวจสอบปัจจุบันและแรงดันไฟฟ้าสำหรับฮับ Rev
- แก้ไขความผิดพลาดบางครั้งที่เกิดจากกิจกรรม onbotjava
- ปรับปรุงฟังก์ชั่น AutoSave OnBotJava FTC_App #738
- แก้ไขปัญหาการตอบสนองของระบบเมื่อมีการตัดการเชื่อมต่อศูนย์กลางการขยายตัว
- แก้ไขปัญหาที่การเริ่มต้น IMU สามารถป้องกันไม่ให้ OpModes หยุด
- แก้ไขปัญหาที่ AndroidTextTospeech.speak () จะล้มเหลวหากเรียกว่าเร็วเกินไป
- เพิ่มวิธีการและบล็อก telemetry.speak () ซึ่งทำให้สถานีไดรเวอร์ (หากอัปเดตด้วย) เพื่อพูดข้อความ
- เพิ่มและปรับปรุงคำเตือนที่เกี่ยวข้องกับการขยายตัวของฮับ
- ปรับปรุงการขยายฮับคำเตือนแบตเตอรี่ต่ำ
- แสดงคำเตือนทันทีหลังจากที่ฮับรายงาน
- ระบุว่าเงื่อนไขเป็นกระแสหรือเกิดขึ้นชั่วคราวในระหว่างการรัน opmode
- แสดงฮับที่รายงานแบตเตอรี่ต่ำ
- แสดงคำเตือนเมื่อฮับสูญเสียและฟื้นฟูพลังงานในระหว่างการรัน opmode
- แก้ไขรูปแบบ LED ของฮับหลังจากเงื่อนไขนี้
- แสดงคำเตือนเมื่อฮับขยายไม่ตอบสนองต่อคำสั่ง
- ระบุว่าเงื่อนไขเป็นกระแสหรือเกิดขึ้นชั่วคราวในระหว่างการรัน opmode
- ชี้แจงคำเตือนเมื่อศูนย์กลางการขยายตัวไม่ปรากฏเมื่อเริ่มต้น
- ระบุว่าเงื่อนไขนี้ต้องใช้หุ่นยนต์รีสตาร์ทก่อนที่จะใช้ฮับ
- ไฟฮับจะสะท้อนสถานะนี้อย่างถูกต้อง
- ปรับปรุงการบันทึกและลดสแปมบันทึกในระหว่างเงื่อนไขเหล่านี้
- ซิงค์เวลาฮับควบคุมและเขตเวลากับการเขียนโปรแกรมเว็บเบราว์เซอร์ที่เชื่อมต่อกับหุ่นยนต์หากไม่มีสถานีไดรเวอร์
- เพิ่มฟังก์ชั่นการอ่านจำนวนมากสำหรับฮับ Rev
- ต้องตั้งค่าโหมดแคชจำนวนมากที่ระดับฮับด้วย
LynxModule#setBulkCachingMode()
สิ่งนี้ใช้กับคลาสฮาร์ดแวร์ SDK ที่เกี่ยวข้องทั้งหมดที่อ้างอิงฮับนั้น - มีโหมดการแคชกลุ่มฮับต่อไปนี้ต่อไปนี้:
-
BulkCachingMode.OFF
(ค่าเริ่มต้น): การโทรฮาร์ดแวร์ทั้งหมดทำงานตามปกติ ข้อมูลจำนวนมากสามารถอ่านผ่าน LynxModule#getBulkData()
และประมวลผลด้วยตนเอง -
BulkCachingMode.AUTO
: การโทรฮาร์ดแวร์ที่ใช้งานได้นั้นเสิร์ฟจากแคชอ่านจำนวนมากที่ถูกล้าง/รีเฟรชโดยอัตโนมัติเพื่อให้แน่ใจว่าคำสั่งที่เหมือนกันไม่ได้ตีแคชเดียวกัน แคชยังสามารถล้างด้วยตนเองด้วย LynxModule#clearBulkCache()
แม้ว่าจะไม่แนะนำ - (ผู้ใช้ขั้นสูง)
BulkCachingMode.MANUAL
: เหมือนกับ BulkCachingMode.AUTO
ยกเว้นแคชจะไม่ถูกล้างโดยอัตโนมัติ To avoid getting stale data, the cache must be manually cleared at the beginning of each loop body or as the user deems appropriate.
- Removes PIDF Annotation values added in Rev 5.3 (to AndyMark, goBILDA and TETRIX motor configurations).
- The new motor types will still be available but their Default control behavior will revert back to Rev 5.2
- Adds new
ConceptMotorBulkRead
sample Opmode to demonstrate and compare Motor Bulk-Read modes for reducing I/O latencies.
Version 5.3 (20191004-112306)
- Fixes external USB/UVC webcam support
- Makes various bugfixes and improvements to Blocks page, including but not limited to:
- Many visual tweaks
- Browser zoom and window resize behave better
- Resizing the Java preview pane works better and more consistently across browsers
- The Java preview pane consistently gets scrollbars when needed
- The Java preview pane is hidden by default on phones
- Internet Explorer 11 should work
- Large dropdown lists display properly on lower res screens
- Disabled buttons are now visually identifiable as disabled
- A warning is shown if a user selects a TFOD sample, but their device is not compatible
- Warning messages in a Blocks OpMode are now visible by default.
- Adds goBILDA 5201 and 5202 motors to Robot Configurator
- Adds PIDF Annotation values to AndyMark, goBILDA and TETRIX motor configurations. This has the effect of causing the RUN_USING_ENCODERS and RUN_TO_POSITION modes to use PIDF vs PID closed loop control on these motors. This should provide more responsive, yet stable, speed control. PIDF adds Feedforward control to the basic PID control loop. Feedforward is useful when controlling a motor's speed because it "anticipates" how much the control voltage must change to achieve a new speed set-point, rather than requiring the integrated error to change sufficiently. The PIDF values were chosen to provide responsive, yet stable, speed control on a lightly loaded motor. The more heavily a motor is loaded (drag or friction), the more noticable the PIDF improvement will be.
- Fixes startup crash on Android 10
- Fixes ftc_app issue #712 (thanks to FROGbots-4634)
- Fixes ftc_app issue #542
- Allows "A" and lowercase letters when naming device through RC and DS apps.
Version 5.2 (20190905-083277)
- Fixes extra-wide margins on settings activities, and placement of the new configuration button
- Adds Skystone Vuforia image target data.
- Includes sample Skystone Vuforia Navigation OpModes (Java).
- Includes sample Skystone Vuforia Navigation OpModes (Blocks).
- Adds TensorFlow inference model (.tflite) for Skystone game elements.
- Includes sample Skystone TensorFlow OpModes (Java).
- Includes sample Skystone TensorFlow OpModes (Blocks).
- Removes older (season-specific) sample OpModes.
- Includes 64-bit support (to comply with Google Play requirements).
- Protects against Stuck OpModes when a Restart Robot is requested. (Thanks to FROGbots-4634) (ftc_app issue #709)
- Blocks related changes:
- Fixes bug with blocks generated code when hardware device name is a java or javascript reserved word.
- Shows generated java code for blocks, even when hardware items are missing from the active configuration.
- Displays warning icon when outdated Vuforia and TensorFlow blocks are used (SkyStone issue #27)
Version 5.1 (20190820-222104)
- Defines default PIDF parameters for the following motors:
- REV Core Hex Motor
- REV 20:1 HD Hex Motor
- REV 40:1 HD Hex Motor
- Adds back button when running on a device without a system back button (such as a Control Hub)
- Allows a REV Control Hub to update the firmware on a REV Expansion Hub via USB
- Fixes SkyStone issue #9
- Fixes ftc_app issue #715
- Prevents extra DS User clicks by filtering based on current state.
- Prevents incorrect DS UI state changes when receiving new OpMode list from RC
- Adds support for REV Color Sensor V3
- Adds a manual-refresh DS Camera Stream for remotely viewing RC camera frames.
- To show the stream on the DS, initialize but do not run a stream-enabled opmode, select the Camera Stream option in the DS menu, and tap the image to refresh. This feature is automatically enabled when using Vuforia or TFOD—no additional RC configuration is required for typical use cases. To hide the stream, select the same menu item again.
- Note that gamepads are disabled and the selected opmode cannot be started while the stream is open as a safety precaution.
- To use custom streams, consult the API docs for
CameraStreamServer#setSource
and CameraStreamSource
.
- Adds many Star Wars sounds to RobotController resources.
- Added Skystone Sounds Chooser Sample Program.
- Switches out startup, connect chimes, and error/warning sounds for Star Wars sounds
- Updates OnBot Java to use a WebSocket for communication with the robot
- The OnBot Java page no longer has to do a full refresh when a user switches from editing one file to another
Known issues:
- Camera Stream
- The Vuforia camera stream inherits the issues present in the phone preview (namely ftc_app issue #574). This problem does not affect the TFOD camera stream even though it receives frames from Vuforia.
- The orientation of the stream frames may not always match the phone preview. For now, these frames may be rotated manually via a custom
CameraStreamSource
if desired.
- OnBotJava
- Browser back button may not always work correctly
- It's possible for a build to be queued, but not started. The OnBot Java build console will display a warning if this occurs.
- A user might not realize they are editing a different file if the user inadvertently switches from one file to another since this switch is now seamless. The name of the currently open file is displayed in the browser tab.
Version 5.0 (built on 19.06.14)
- Support for the REV Robotics Control Hub.
- Adds a Java preview pane to the Blocks editor.
- Adds a new offline export feature to the Blocks editor.
- Display Wi-Fi channel in Network circle on Driver Station.
- Adds calibration for Logitech C270
- Updates build tooling and target SDK.
- Compliance with Google's permissions infrastructure (Required after build tooling update).
- Keep Alives to mitigate the Motorola Wi-Fi scanning problem. Telemetry substitute no longer necessary.
- Improves Vuforia error reporting.
- Fixes ftctechnh/ftc_app issues 621, 713.
- Miscellaneous bug fixes and improvements.
Version 4.3 (built on 18.10.31)
- Includes missing TensorFlow-related libraries and files.
Version 4.2 (built on 18.10.30)
- Includes fix to avoid deadlock situation with WatchdogMonitor which could result in USB communication errors.
- Comm error appeared to require that user disconnect USB cable and restart the Robot Controller app to recover.
- robotControllerLog.txt would have error messages that included the words "E RobotCore: lynx xmit lock: #### abandoning lock:"
- Includes fix to correctly list the parent module address for a REV Robotics Expansion Hub in a configuration (.xml) file.
- Bug in versions 4.0 and 4.1 would incorrect list the address module for a parent REV Robotics device as "1".
- If the parent module had a higher address value than the daisy-chained module, then this bug would prevent the Robot Controller from communicating with the downstream Expansion Hub.
- Added requirement for ACCESS_COARSE_LOCATION to allow a Driver Station running Android Oreo to scan for Wi-Fi Direct devices.
- Added google() repo to build.gradle because aapt2 must be downloaded from the google() repository beginning with version 3.2 of the Android Gradle Plugin.
- Important Note: Android Studio users will need to be connected to the Internet the first time build the ftc_app project.
- Internet connectivity is required for the first build so the appropriate files can be downloaded from the Google repository.
- Users should not need to be connected to the Internet for subsequent builds.
- This should also fix buid issue where Android Studio would complain that it "Could not find com.android.tools.lint:lint-gradle:26.1.4" (or similar).
- Added support for REV Spark Mini motor controller as part of the configuration menu for a servo/PWM port on the REV Expansion Hub.
- Provide examples for playing audio files in an OpMode.
- Block Development Tool Changes
- Includes a fix for a problem with the Velocity blocks that were reported in the FTC Technology forum (Blocks Programming subforum).
- Change the "Save completed successfully." message to a white color so it will contrast with a green background.
- Fixed the "Download image" feature so it will work if there are text blocks in the OpMode.
- Introduce support for Google's TensorFlow Lite technology for object detetion for 2018-2019 game.
- TensorFlow lite can recognize Gold Mineral and Silver Mineral from 2018-2019 game.
- Example Java and Block OpModes are included to show how to determine the relative position of the gold block (left, center, right).
Version 4.1 (released on 18.09.24)
Changes include:
- Fix to prevent crash when deprecated configuration annotations are used.
- Change to allow FTC Robot Controller APK to be auto-updated using FIRST Global Control Hub update scripts.
- Removed samples for non supported / non legal hardware.
- Improvements to Telemetry.addData block with "text" socket.
- Updated Blocks sample OpMode list to include Rover Ruckus Vuforia example.
- Update SDK library version number.
Version 4.0 (released on 18.09.12)
Changes include:
Initial support for UVC compatible cameras
- If UVC camera has a unique serial number, RC will detect and enumerate by serial number.
- If UVC camera lacks a unique serial number, RC will only support one camera of that type connected.
- Calibration settings for a few cameras are included (see TeamCode/src/main/res/xml/teamwebcamcalibrations.xml for details).
- User can upload calibration files from Program and Manage web interface.
- UVC cameras seem to draw a fair amount of electrical current from the USB bus.
- This does not appear to present any problems for the REV Robotics Control Hub.
- This does seem to create stability problems when using some cameras with an Android phone-based Robot Controller.
- FTC Tech Team is investigating options to mitigate this issue with the phone-based Robot Controllers.
- Updated sample Vuforia Navigation and VuMark OpModes to demonstrate how to use an internal phone-based camera and an external UVC webcam.
Support for improved motor control.
- REV Robotics Expansion Hub firmware 1.8 and greater will support a feed forward mechanism for closed loop motor control.
- FTC SDK has been modified to support PIDF coefficients (proportional, integral, derivative, and feed forward).
- FTC Blocks development tool modified to include PIDF programming blocks.
- Deprecated older PID-related methods and variables.
- REV's 1.8.x PIDF-related changes provide a more linear and accurate way to control a motor.
ไร้สาย
- Added 5GHz support for wireless channel changing for those devices that support it.
- Tested with Moto G5 and E4 phones.
- Also tested with other (currently non-approved) phones such as Samsung Galaxy S8.
Improved Expansion Hub firmware update support in Robot Controller app
- Changes to make the system more robust during the firmware update process (when performed through Robot Controller app).
- User no longer has to disconnect a downstream daisy-chained Expansion Hub when updating an Expansion Hub's firmware.
- If user is updating an Expansion Hub's firmware through a USB connection, he/she does not have to disconnect RS485 connection to other Expansion Hubs.
- The user still must use a USB connection to update an Expansion Hub's firmware.
- The user cannot update the Expansion Hub firmware for a downstream device that is daisy chained through an RS485 connection.
- If an Expansion Hub accidentally gets "bricked" the Robot Controller app is now more likely to recognize the Hub when it scans the USB bus.
- Robot Controller app should be able to detect an Expansion Hub, even if it accidentally was bricked in a previous update attempt.
- Robot Controller app should be able to install the firmware onto the Hub, even if if accidentally was bricked in a previous update attempt.
Resiliency
- FTC software can detect and enable an FTDI reset feature that is available with REV Robotics v1.8 Expansion Hub firmware and greater.
- When enabled, the Expansion Hub can detect if it hasn't communicated with the Robot Controller over the FTDI (USB) connection.
- If the Hub hasn't heard from the Robot Controller in a while, it will reset the FTDI connection.
- This action helps system recover from some ESD-induced disruptions.
- Various fixes to improve reliability of FTC software.
Blocks
- Fixed errors with string and list indices in blocks export to java.
- Support for USB connected UVC webcams.
- Refactored optimized Blocks Vuforia code to support Rover Ruckus image targets.
- Added programming blocks to support PIDF (proportional, integral, derivative and feed forward) motor control.
- Added formatting options (under Telemetry and Miscellaneous categories) so user can set how many decimal places to display a numerical value.
- Support to play audio files (which are uploaded through Blocks web interface) on Driver Station in addition to the Robot Controller.
- Fixed bug with Download Image of Blocks feature.
- Support for REV Robotics Blinkin LED Controller.
- Support for REV Robotics 2m Distance Sensor.
- Added support for a REV Touch Sensor (no longer have to configure as a generic digital device).
- Added blocks for DcMotorEx methods.
- These are enhanced methods that you can use when supported by the motor controller hardware.
- The REV Robotics Expansion Hub supports these enhanced methods.
- Enhanced methods include methods to get/set motor velocity (in encoder pulses per second), get/set PIDF coefficients, etc..
Modest Improvements in Logging
- Decrease frequency of battery checker voltage statements.
- Removed non-FTC related log statements (wherever possible).
- Introduced a "Match Logging" feature.
- Under "Settings" a user can enable/disable this feature (it's disabled by default).
- If enabled, user provides a "Match Number" through the Driver Station user interface (top of the screen).
- The Match Number is used to create a log file specifically with log statements from that particular OpMode run.
- Match log files are stored in /sdcard/FIRST/matlogs on the Robot Controller.
- Once an OpMode run is complete, the Match Number is cleared.
- This is a convenient way to create a separate match log with statements only related to a specific OpMode run.
New Devices
- Support for REV Robotics Blinkin LED Controller.
- Support for REV Robotics 2m Distance Sensor.
- Added configuration option for REV 20:1 HD Hex Motor.
- Added support for a REV Touch Sensor (no longer have to configure as a generic digital device).
เบ็ดเตล็ด
- Fixed some errors in the definitions for acceleration and velocity in our javadoc documentation.
- Added ability to play audio files on Driver Station
- When user is configuring an Expansion Hub, the LED on the Expansion Hub will change blink pattern (purple-cyan) to indicate which Hub is currently being configured.
- Renamed I2cSensorType to I2cDeviceType.
- Added an external sample OpMode that demonstrates localization using 2018-2019 (Rover Ruckus presented by QualComm) Vuforia targets.
- Added an external sample OpMode that demonstrates how to use the REV Robotics 2m Laser Distance Sensor.
- Added an external sample OpMode that demonstrates how to use the REV Robotics Blinkin LED Controller.
- Re-categorized external Java sample OpModes to "TeleOp" instead of "Autonomous".
Known issues:
Version 3.6 (built on 17.12.18)
Changes include:
- Blocks Changes
- Uses updated Google Blockly software to allow users to edit their OpModes on Apple iOS devices (including iPad and iPhone).
- Improvement in Blocks tool to handle corrupt OpMode files.
- Autonomous OpModes should no longer get switched back to tele-op after re-opening them to be edited.
- The system can now detect type mismatches during runtime and alert the user with a message on the Driver Station.
- Updated javadoc documentation for setPower() method to reflect correct range of values (-1 to +1).
- Modified VuforiaLocalizerImpl to allow for user rendering of frames
- Added a user-overrideable onRenderFrame() method which gets called by the class's renderFrame() method.
Version 3.5 (built on 17.10.30)
Changes with version 3.5 include:
- Introduced a fix to prevent random OpMode stops, which can occur after the Robot Controller app has been paused and then resumed (for example, when a user temporarily turns off the display of the Robot Controller phone, and then turns the screen back on).
- Introduced a fix to prevent random OpMode stops, which were previously caused by random peer disconnect events on the Driver Station.
- Fixes issue where log files would be closed on pause of the RC or DS, but not re-opened upon resume.
- Fixes issue with battery handler (voltage) start/stop race.
- Fixes issue where Android Studio generated OpModes would disappear from available list in certain situations.
- Fixes problem where OnBot Java would not build on REV Robotics Control Hub.
- Fixes problem where OnBot Java would not build if the date and time on the Robot Controller device was "rewound" (set to an earlier date/time).
- Improved error message on OnBot Java that occurs when renaming a file fails.
- Removed unneeded resources from android.jar binaries used by OnBot Java to reduce final size of Robot Controller app.
- Added MR_ANALOG_TOUCH_SENSOR block to Blocks Programming Tool.
Version 3.4 (built on 17.09.06)
Changes with version 3.4 include:
- Added telemetry.update() statement for BlankLinearOpMode template.
- Renamed sample Block OpModes to be more consistent with Java samples.
- Added some additional sample Block OpModes.
- Reworded OnBot Java readme slightly.
Version 3.3 (built on 17.09.04)
This version of the software includes improves for the FTC Blocks Programming Tool and the OnBot Java Programming Tool.
Changes with verion 3.3 include:
- Android Studio ftc_app project has been updated to use Gradle Plugin 2.3.3.
- Android Studio ftc_app project is already using gradle 3.5 distribution.
- Robot Controller log has been renamed to /sdcard/RobotControllerLog.txt (note that this change was actually introduced w/ v3.2).
- Improvements in I2C reliability.
- Optimized I2C read for REV Expansion Hub, with v1.7 firmware or greater.
- Updated all external/samples (available through OnBot and in Android project folder).
- Vuforia
- Added support for VuMarks that will be used for the 2017-2018 season game.
- Blocks
- Update to latest Google Blockly release.
- Sample OpModes can be selected as a template when creating new OpMode.
- Fixed bug where the blocks would disappear temporarily when mouse button is held down.
- Added blocks for Range.clip and Range.scale.
- User can now disable/enable Block OpModes.
- Fix to prevent occasional Blocks deadlock.
- OnBot Java
- Significant improvements with autocomplete function for OnBot Java editor.
- Sample OpModes can be selected as a template when creating new OpMode.
- Fixes and changes to complete hardware setup feature.
- Updated (and more useful) onBot welcome message.
Known issues:
- Android Studio
- After updating to the new v3.3 Android Studio project folder, if you get error messages indicating "InvalidVirtualFileAccessException" then you might need to do a File->Invalidate Caches / Restart to clear the error.
- OnBot Java
- Sometimes when you push the build button to build all OpModes, the RC returns an error message that the build failed. If you press the build button a second time, the build typically suceeds.
Version 3.2 (built on 17.08.02)
This version of the software introduces the "OnBot Java" Development Tool. Similar to the FTC Blocks Development Tool, the FTC OnBot Java Development Tool allows a user to create, edit and build OpModes dynamically using only a Javascript-enabled web browser.
The OnBot Java Development Tool is an integrated development environment (IDE) that is served up by the Robot Controller. OpModes are created and edited using a Javascript-enabled browser (Google Chromse is recommended). OpModes are saved on the Robot Controller Android device directly.
The OnBot Java Development Tool provides a Java programming environment that does NOT need Android Studio.
Changes with version 3.2 include:
Enhanced web-based development tools
- Introduction of OnBot Java Development Tool.
- Web-based programming and management features are "always on" (user no longer needs to put Robot Controller into programming mode).
- Web-based management interface (where user can change Robot Controller name and also easily download Robot Controller log file).
- OnBot Java, Blocks and Management features available from web based interface.
Blocks Programming Development Tool:
- Changed "LynxI2cColorRangeSensor" block to "REV Color/range sensor" block.
- Fixed tooltip for ColorSensor.isLightOn block. Added blocks for ColorSensor.getNormalizedColors and LynxI2cColorRangeSensor.getNormalizedColors.
Added example OpModes for digital touch sensor and REV Robotics Color Distance sensor.
User selectable color themes.
Includes many minor enhancements and fixes (too numerous to list).
Known issues:
- Auto complete function is incomplete and does not support the following (for now):
- Access via this keyword
- Access via super keyword
- Members of the super cloass, not overridden by the class
- Any methods provided in the current class
- Inner classes
- Can't handle casted objects
- Any objects coming from an parenthetically enclosed expression
Version 3.10 (built on 17.05.09)
This version of the software provides support for the REV Robotics Expansion Hub. This version also includes improvements in the USB communication layer in an effort to enhance system resiliency. If you were using a 2.x version of the software previously, updating to version 3.1 requires that you also update your Driver Station software in addition to updating the Robot Controller software.
Also note that in version 3.10 software, the setMaxSpeed and getMaxSpeed methods are no longer available (not deprecated, they have been removed from the SDK). Also note that the new 3.x software incorporates motor profiles that a user can select as he/she configures the robot.
Changes include:
- Blocks changes
- Added VuforiaTrackableDefaultListener.getPose and Vuforia.trackPose blocks.
- Added optimized blocks support for Vuforia extended tracking.
- Added atan2 block to the math category.
- Added useCompetitionFieldTargetLocations parameter to Vuforia.initialize block. If set to false, the target locations are placed at (0,0,0) with target orientation as specified in https://github.com/gearsincorg/FTCVuforiaDemo/blob/master/Robot_Navigation.java tutorial OpMode.
- Incorporates additional improvements to USB comm layer to improve system resiliency (to recover from a greater number of communication disruptions).
Additional Notes Regarding Version 3.00 (built on 17.04.13)
In addition to the release changes listed below (see section labeled "Version 3.00 (built on 17.04.013)"), version 3.00 has the following important changes:
- Version 3.00 software uses a new version of the FTC Robocol (robot protocol). If you upgrade to v3.0 on the Robot Controller and/or Android Studio side, you must also upgrade the Driver Station software to match the new Robocol.
- Version 3.00 software removes the setMaxSpeed and getMaxSpeed methods from the DcMotor class. If you have an OpMode that formerly used these methods, you will need to remove the references/calls to these methods. Instead, v3.0 provides the max speed information through the use of motor profiles that are selected by the user during robot configuration.
- Version 3.00 software currently does not have a mechanism to disable extra i2c sensors. We hope to re-introduce this function with a release in the near future.
Version 3.00 (built on 17.04.13)
*** Use this version of the software at YOUR OWN RISK!!! -
This software is being released as an "alpha" version. Use this version at your own risk!
This pre-release software contains SIGNIFICANT changes, including changes to the Wi-Fi Direct pairing mechanism, rewrites of the I2C sensor classes, changes to the USB/FTDI layer, and the introduction of support for the REV Robotics Expansion Hub and the REV Robotics color-range-light sensor. These changes were implemented to improve the reliability and resiliency of the FTC control system.
Please note, however, that version 3.00 is considered "alpha" code. This code is being released so that the FIRST community will have an opportunity to test the new REV Expansion Hub electronics module when it becomes available in May. The developers do not recommend using this code for critical applications (ie, competition use).
*** Use this version of the software at YOUR OWN RISK!!! -
Changes include:
- Major rework of sensor-related infrastructure. Includes rewriting sensor classes to implement synchronous I2C communication.
- Fix to reset Autonomous timer back to 30 seconds.
- Implementation of specific motor profiles for approved 12V motors (includes Tetrix, AndyMark, Matrix and REV models).
- Modest improvements to enhance Wi-Fi P2P pairing.
- Fixes telemetry log addition race.
- Publishes all the sources (not just a select few).
- Includes Block programming improvements
- Addition of optimized Vuforia blocks.
- Auto scrollbar to projects and sounds pages.
- Fixed blocks paste bug.
- Blocks execute after while-opModeIsActive loop (to allow for cleanup before exiting OpMode).
- Added gyro integratedZValue block.
- Fixes bug with projects page for Firefox browser.
- Added IsSpeaking block to AndroidTextToSpeech.
- Implements support for the REV Robotics Expansion Hub
- Implements support for integral REV IMU (physically installed on I2C bus 0, uses same Bosch BNO055 9 axis absolute orientation sensor as Adafruit 9DOF abs orientation sensor). - Implements support for REV color/range/light sensor.
- Provides support to update Expansion Hub firmware through FTC SDK.
- Detects REV firmware version and records in log file.
- Includes support for REV Control Hub (note that the REV Control Hub is not yet approved for FTC use).
- Implements FTC Blocks programming support for REV Expansion Hub and sensor hardware.
- Detects and alerts when I2C device disconnect.
Version 2.62 (built on 17.01.07)
- Added null pointer check before calling modeToByte() in finishModeSwitchIfNecessary method for ModernRoboticsUsbDcMotorController class.
- Changes to enhance Modern Robotics USB protocol robustness.
Version 2.61 (released on 16.12.19)
- Blocks Programming mode changes:
- Fix to correct issue when an exception was thrown because an OpticalDistanceSensor object appears twice in the hardware map (the second time as a LightSensor).
Version 2.6 (released on 16.12.16)
- Fixes for Gyro class:
- Improve (decrease) sensor refresh latency.
- fix isCalibrating issues.
- Blocks Programming mode changes:
- Blocks now ignores a device in the configuration xml if the name is empty. Other devices work in configuration work fine.
Version 2.5 (internal release on released on 16.12.13)
- Blocks Programming mode changes:
- Added blocks support for AdafruitBNO055IMU.
- Added Download OpMode button to FtcBocks.html.
- Added support for copying blocks in one OpMode and pasting them in an other OpMode. The clipboard content is stored on the phone, so the programming mode server must be running.
- Modified Utilities section of the toolbox.
- In Programming Mode, display information about the active connections.
- Fixed paste location when workspace has been scrolled.
- Added blocks support for the android Accelerometer.
- Fixed issue where Blocks Upload OpMode truncated name at first dot.
- Added blocks support for Android SoundPool.
- Added type safety to blocks for Acceleration.
- Added type safety to blocks for AdafruitBNO055IMU.Parameters.
- Added type safety to blocks for AnalogInput.
- Added type safety to blocks for AngularVelocity.
- Added type safety to blocks for Color.
- Added type safety to blocks for ColorSensor.
- Added type safety to blocks for CompassSensor.
- Added type safety to blocks for CRServo.
- Added type safety to blocks for DigitalChannel.
- Added type safety to blocks for ElapsedTime.
- Added type safety to blocks for Gamepad.
- Added type safety to blocks for GyroSensor.
- Added type safety to blocks for IrSeekerSensor.
- Added type safety to blocks for LED.
- Added type safety to blocks for LightSensor.
- Added type safety to blocks for LinearOpMode.
- Added type safety to blocks for MagneticFlux.
- Added type safety to blocks for MatrixF.
- Added type safety to blocks for MrI2cCompassSensor.
- Added type safety to blocks for MrI2cRangeSensor.
- Added type safety to blocks for OpticalDistanceSensor.
- Added type safety to blocks for Orientation.
- Added type safety to blocks for Position.
- Added type safety to blocks for Quaternion.
- Added type safety to blocks for Servo.
- Added type safety to blocks for ServoController.
- Added type safety to blocks for Telemetry.
- Added type safety to blocks for Temperature.
- Added type safety to blocks for TouchSensor.
- Added type safety to blocks for UltrasonicSensor.
- Added type safety to blocks for VectorF.
- Added type safety to blocks for Velocity.
- Added type safety to blocks for VoltageSensor.
- Added type safety to blocks for VuforiaLocalizer.Parameters.
- Added type safety to blocks for VuforiaTrackable.
- Added type safety to blocks for VuforiaTrackables.
- Added type safety to blocks for enums in AdafruitBNO055IMU.Parameters.
- Added type safety to blocks for AndroidAccelerometer, AndroidGyroscope, AndroidOrientation, and AndroidTextToSpeech.
Version 2.4 (released on 16.11.13)
- Fix to avoid crashing for nonexistent resources.
- Blocks Programming mode changes:
- Added blocks to support OpenGLMatrix, MatrixF, and VectorF.
- Added blocks to support AngleUnit, AxesOrder, AxesReference, CameraDirection, CameraMonitorFeedback, DistanceUnit, and TempUnit.
- Added blocks to support Acceleration.
- Added blocks to support LinearOpMode.getRuntime.
- Added blocks to support MagneticFlux and Position.
- Fixed typos.
- Made blocks for ElapsedTime more consistent with other objects.
- Added blocks to support Quaternion, Velocity, Orientation, AngularVelocity.
- Added blocks to support VuforiaTrackables, VuforiaTrackable, VuforiaLocalizer, VuforiaTrackableDefaultListener.
- Fixed a few blocks.
- Added type checking to new blocks.
- Updated to latest blockly.
- Added default variable blocks to navigation and matrix blocks.
- Fixed toolbox entry for openGLMatrix_rotation_withAxesArgs.
- When user downloads Blocks-generated OpMode, only the .blk file is downloaded.
- When user uploads Blocks-generated OpMode (.blk file), Javascript code is auto generated.
- Added DbgLog support.
- Added logging when a blocks file is read/written.
- Fixed bug to properly render blocks even if missing devices from configuration file.
- Added support for additional characters (not just alphanumeric) for the block file names (for download and upload).
- Added support for OpMode flavor (“Autonomous” or “TeleOp”) and group.
- Changes to Samples to prevent tutorial issues.
- Incorporated suggested changes from public pull 216 (“Replace .. paths”).
- Remove Servo Glitches when robot stopped.
- if user hits “Cancels” when editing a configuration file, clears the unsaved changes and reverts to original unmodified configuration.
- Added log info to help diagnose why the Robot Controller app was terminated (for example, by watch dog function).
- Added ability to transfer log from the controller.
- Fixed inconsistency for AngularVelocity
- Limit unbounded growth of data for telemetry. If user does not call telemetry.update() for LinearOpMode in a timely manner, data added for telemetry might get lost if size limit is exceeded.
Version 2.35 (released on 16.10.06)
- Blockly programming mode - Removed unnecesary idle() call from blocks for new project.
Version 2.30 (released on 16.10.05)
- Blockly programming mode:
- Mechanism added to save Blockly OpModes from Programming Mode Server onto local device
- To avoid clutter, blocks are displayed in categorized folders
- Added support for DigitalChannel
- Added support for ModernRoboticsI2cCompassSensor
- Added support for ModernRoboticsI2cRangeSensor
- Added support for VoltageSensor
- Added support for AnalogInput
- Added support for AnalogOutput
- Fix for CompassSensor setMode block
- Vuforia
- Fix deadlock / make camera data available while Vuforia is running.
- Update to Vuforia 6.0.117 (recommended by Vuforia and Google to close security loophole).
- Fix for autonomous 30 second timer bug (where timer was in effect, even though it appeared to have timed out).
- opModeIsActive changes to allow cleanup after OpMode is stopped (with enforced 2 second safety timeout).
- Fix to avoid reading i2c twice.
- Updated sample OpModes.
- Improved logging and fixed intermittent freezing.
- Added digital I/O sample.
- Cleaned up device names in sample OpModes to be consistent with Pushbot guide.
- Fix to allow use of IrSeekerSensorV3.
Version 2.20 (released on 16.09.08)
- Support for Modern Robotics Compass Sensor.
- Support for Modern Robotics Range Sensor.
- Revise device names for Pushbot templates to match the names used in Pushbot guide.
- Fixed bug so that IrSeekerSensorV3 device is accessible as IrSeekerSensor in hardwareMap.
- Modified computer vision code to require an individual Vuforia license (per legal requirement from PTC).
- Minor fixes.
- Blockly enhancements:
- Support for Voltage Sensor.
- Support for Analog Input.
- Support for Analog Output.
- Support for Light Sensor.
- Support for Servo Controller.
Version 2.10 (released on 16.09.03)
- Support for Adafruit IMU.
- Improvements to ModernRoboticsI2cGyro class
- Block on reset of z axis.
- isCalibrating() returns true while gyro is calibration.
- Updated sample gyro program.
- Blockly enhancements
- support for android.graphics.Color.
- added support for ElapsedTime.
- improved look and legibility of blocks.
- support for compass sensor.
- support for ultrasonic sensor.
- support for IrSeeker.
- support for LED.
- support for color sensor.
- support for CRServo
- prompt user to configure robot before using programming mode.
- Provides ability to disable audio cues.
- various bug fixes and improvements.
Version 2.00 (released on 16.08.19)
- This is the new release for the upcoming 2016-2017 FIRST Tech Challenge Season.
- Channel change is enabled in the FTC Robot Controller app for Moto G 2nd and 3rd Gen phones.
- Users can now use annotations to register/disable their OpModes.
- Changes in the Android SDK, JDK and build tool requirements (minsdk=19, java 1.7, build tools 23.0.3).
- Standardized units in analog input.
- Cleaned up code for existing analog sensor classes.
- setChannelMode and getChannelMode were REMOVED from the DcMotorController class. This is important - we no longer set the motor modes through the motor controller.
- setMode and getMode were added to the DcMotor class.
- ContinuousRotationServo class has been added to the FTC SDK.
- Range.clip() method has been overloaded so it can support this operation for int, short and byte integers.
- Some changes have been made (new methods added) on how a user can access items from the hardware map.
- Users can now set the zero power behavior for a DC motor so that the motor will brake or float when power is zero.
- Prototype Blockly Programming Mode has been added to FTC Robot Controller. Users can place the Robot Controller into this mode, and then use a device (such as a laptop) that has a Javascript enabled browser to write Blockly-based OpModes directly onto the Robot Controller.
- Users can now configure the robot remotely through the FTC Driver Station app.
- Android Studio project supports Android Studio 2.1.x and compile SDK Version 23 (Marshmallow).
- Vuforia Computer Vision SDK integrated into FTC SDK. Users can use sample vision targets to get localization information on a standard FTC field.
- Project structure has been reorganized so that there is now a TeamCode package that users can use to place their local/custom OpModes into this package.
- Inspection function has been integrated into the FTC Robot Controller and Driver Station Apps (Thanks Team HazMat… 9277 & 10650!).
- Audio cues have been incorporated into FTC SDK.
- Swap mechanism added to FTC Robot Controller configuration activity. For example, if you have two motor controllers on a robot, and you misidentified them in your configuration file, you can use the Swap button to swap the devices within the configuration file (so you do not have to manually re-enter in the configuration info for the two devices).
- Fix mechanism added to all user to replace an electronic module easily. For example, suppose a servo controller dies on your robot. You replace the broken module with a new module, which has a different serial number from the original servo controller. You can use the Fix button to automatically reconfigure your configuration file to use the serial number of the new module.
- Improvements made to fix resiliency and responsiveness of the system.
- For LinearOpMode the user now must for a telemetry.update() to update the telemetry data on the driver station. This update() mechanism ensures that the driver station gets the updated data properly and at the same time.
- The Auto Configure function of the Robot Controller is now template based. If there is a commonly used robot configuration, a template can be created so that the Auto Configure mechanism can be used to quickly configure a robot of this type.
- The logic to detect a runaway OpMode (both in the LinearOpMode and OpMode types) and to abort the run, then auto recover has been improved/implemented.
- Fix has been incorporated so that Logitech F310 gamepad mappings will be correct for Marshmallow users.
Release 16.07.08
- For the ftc_app project, the gradle files have been modified to support Android Studio 2.1.x.
Release 16.03.30
- For the MIT App Inventor, the design blocks have new icons that better represent the function of each design component.
- Some changes were made to the shutdown logic to ensure the robust shutdown of some of our USB services.
- A change was made to LinearOpMode so as to allow a given instance to be executed more than once, which is required for the App Inventor.
- Javadoc improved/updated.
Release 16.03.09
- Changes made to make the FTC SDK synchronous (significant change!)
- waitOneFullHardwareCycle() and waitForNextHardwareCycle() are no longer needed and have been deprecated.
- runOpMode() (for a LinearOpMode) is now decoupled from the system's hardware read/write thread.
- loop() (for an OpMode) is now decoupled from the system's hardware read/write thread.
- Methods are synchronous.
- For example, if you call setMode(DcMotorController.RunMode.RESET_ENCODERS) for a motor, the encoder is guaranteed to be reset when the method call is complete.
- For legacy module (NXT compatible), user no longer has to toggle between read and write modes when reading from or writing to a legacy device.
- Changes made to enhance reliability/robustness during ESD event.
- Changes made to make code thread safe.
- Debug keystore added so that user-generated robot controller APKs will all use the same signed key (to avoid conflicts if a team has multiple developer laptops for example).
- Firmware version information for Modern Robotics modules are now logged.
- Changes made to improve USB comm reliability and robustness.
- Added support for voltage indicator for legacy (NXT-compatible) motor controllers.
- Changes made to provide auto stop capabilities for OpModes.
- A LinearOpMode class will stop when the statements in runOpMode() are complete. User does not have to push the stop button on the driver station.
- If an OpMode is stopped by the driver station, but there is a run away/uninterruptible thread persisting, the app will log an error message then force itself to crash to stop the runaway thread.
- Driver Station UI modified to display lowest measured voltage below current voltage (12V battery).
- Driver Station UI modified to have color background for current voltage (green=good, yellow=caution, red=danger, extremely low voltage).
- javadoc improved (edits and additional classes).
- Added app build time to About activity for driver station and robot controller apps.
- Display local IP addresses on Driver Station About activity.
- Added I2cDeviceSynchImpl.
- Added I2cDeviceSync interface.
- Added seconds() and milliseconds() to ElapsedTime for clarity.
- Added getCallbackCount() to I2cDevice.
- Added missing clearI2cPortActionFlag.
- Added code to create log messages while waiting for LinearOpMode shutdown.
- Fix so Wi-Fi Direct Config activity will no longer launch multiple times.
- Added the ability to specify an alternate i2c address in software for the Modern Robotics gyro.
Release 16.02.09
- Improved battery checker feature so that voltage values get refreshed regularly (every 250 msec) on Driver Station (DS) user interface.
- Improved software so that Robot Controller (RC) is much more resilient and “self-healing” to USB disconnects:
- If user attempts to start/restart RC with one or more module missing, it will display a warning but still start up.
- When running an OpMode, if one or more modules gets disconnected, the RC & DS will display warnings,and robot will keep on working in spite of the missing module(s).
- If a disconnected module gets physically reconnected the RC will auto detect the module and the user will regain control of the recently connected module.
- Warning messages are more helpful (identifies the type of module that's missing plus its USB serial number).
- Code changes to fix the null gamepad reference when users try to reference the gamepads in the init() portion of their OpMode.
- NXT light sensor output is now properly scaled. Note that teams might have to readjust their light threshold values in their OpModes.
- On DS user interface, gamepad icon for a driver will disappear if the matching gamepad is disconnected or if that gamepad gets designated as a different driver.
- Robot Protocol (ROBOCOL) version number info is displayed in About screen on RC and DS apps.
- Incorporated a display filter on pairing screen to filter out devices that don't use the “-“ format. This filter can be turned off to show all Wi-Fi Direct devices.
- Updated text in License file.
- Fixed formatting error in OpticalDistanceSensor.toString().
- Fixed issue on with a blank (“”) device name that would disrupt Wi-Fi Direct Pairing.
- Made a change so that the Wi-Fi info and battery info can be displayed more quickly on the DS upon connecting to RC.
- Improved javadoc generation.
- Modified code to make it easier to support language localization in the future.
Release 16.01.04
- Updated compileSdkVersion for apps
- Prevent Wi-Fi from entering power saving mode
- removed unused import from driver station
- Corrrected "Dead zone" joystick code.
- LED.getDeviceName and .getConnectionInfo() return null
- apps check for ROBOCOL_VERSION mismatch
- Fix for Telemetry also has off-by-one errors in its data string sizing / short size limitations error
- User telemetry output is sorted.
- added formatting variants to DbgLog and RobotLog APIs
- code modified to allow for a long list of OpMode names.
- changes to improve thread safety of RobocolDatagramSocket
- Fix for "missing hardware leaves robot controller disconnected from driver station" error
- fix for "fast tapping of Init/Start causes problems" (toast is now only instantiated on UI thread).
- added some log statements for thread life cycle.
- moved gamepad reset logic inside of initActiveOpMode() for robustness
- changes made to mitigate risk of race conditions on public methods.
- changes to try and flag when Wi-Fi Direct name contains non-printable characters.
- fix to correct race condition between .run() and .close() in ReadWriteRunnableStandard.
- updated FTDI driver
- made ReadWriteRunnableStanard interface public.
- fixed off-by-one errors in Command constructor
- moved specific hardware implmentations into their own package.
- moved specific gamepad implemnatations to the hardware library.
- changed LICENSE file to new BSD version.
- fixed race condition when shutting down Modern Robotics USB devices.
- methods in the ColorSensor classes have been synchronized.
- corrected isBusy() status to reflect end of motion.
- corrected "back" button keycode.
- the notSupported() method of the GyroSensor class was changed to protected (it should not be public).
Release 15.11.04.001
- Added Support for Modern Robotics Gyro.
- The GyroSensor class now supports the MR Gyro Sensor.
- Users can access heading data (about Z axis)
- Users can also access raw gyro data (X, Y, & Z axes).
- Example MRGyroTest.java OpMode included.
- More descriptive error messages for exceptions in user code.
- Updated DcMotor API
- Enable read mode on new address in setI2cAddress
- Fix so that driver station app resets the gamepads when switching OpModes.
- USB-related code changes to make USB comm more responsive and to display more explicit error messages.
- Fix so that USB will recover properly if the USB bus returns garbage data.
- Fix USB initializtion race condition.
- Better error reporting during FTDI open.
- More explicit messages during USB failures.
- Fixed bug so that USB device is closed if event loop teardown method was not called.
- Fixed timer UI issue
- Fixed duplicate name UI bug (Legacy Module configuration).
- Fixed race condition in EventLoopManager.
- Fix to keep references stable when updating gamepad.
- For legacy Matrix motor/servo controllers removed necessity of appending "Motor" and "Servo" to controller names.
- Updated HT color sensor driver to use constants from ModernRoboticsUsbLegacyModule class.
- Updated MR color sensor driver to use constants from ModernRoboticsUsbDeviceInterfaceModule class.
- Correctly handle I2C Address change in all color sensors
- Updated/cleaned up OpModes.
- Updated comments in LinearI2cAddressChange.java example OpMode.
- Replaced the calls to "setChannelMode" with "setMode" (to match the new of the DcMotor method).
- Removed K9AutoTime.java OpMode.
- Added MRGyroTest.java OpMode (demonstrates how to use MR Gyro Sensor).
- Added MRRGBExample.java OpMode (demonstrates how to use MR Color Sensor).
- Added HTRGBExample.java OpMode (demonstrates how to use HT legacy color sensor).
- Added MatrixControllerDemo.java (demonstrates how to use legacy Matrix controller).
- Updated javadoc documentation.
- Updated release .apk files for Robot Controller and Driver Station apps.
Release 15.10.06.002
- Added support for Legacy Matrix 9.6V motor/servo controller.
- Cleaned up build.gradle file.
- Minor UI and bug fixes for driver station and robot controller apps.
- Throws error if Ultrasonic sensor (NXT) is not configured for legacy module port 4 or 5.
Release 15.08.03.001
- New user interfaces for FTC Driver Station and FTC Robot Controller apps.
- An init() method is added to the OpMode class.
- For this release, init() is triggered right before the start() method.
- Eventually, the init() method will be triggered when the user presses an "INIT" button on driver station.
- The init() and loop() methods are now required (ie, need to be overridden in the user's OpMode).
- The start() and stop() methods are optional.
- A new LinearOpMode class is introduced.
- Teams can use the LinearOpMode mode to create a linear (not event driven) program model.
- Teams can use blocking statements like Thread.sleep() within a linear OpMode.
- The API for the Legacy Module and Core Device Interface Module have been updated.
- Support for encoders with the Legacy Module is now working.
- The hardware loop has been updated for better performance.