通知
本仓库包含用于SKYSTONE(2019-2020)赛季的公共FTC SDK。
此前该软件项目托管在此处。参加SKYSTONE挑战赛的队伍应使用这个新的SKYSTONE仓库,而不是旧的(且不再更新)ftc_app仓库。
欢迎!
此GitHub仓库包含用于构建Android应用以控制FIRST科技挑战赛竞赛机器人的源代码。要使用此SDK,请将整个项目下载/克隆到本地计算机。
开始使用
如果您是机器人技术新手或FIRST科技挑战赛新手,建议首先查看FTC Blocks教程,以熟悉如何使用控制系统:
FTC Blocks在线教程
即使您是高级Java程序员,从FTC Blocks教程开始也很有帮助,之后再迁移到OnBot Java工具或Android Studio。
下载项目
如果您是Android Studio程序员,有几种方法可以下载此仓库。请注意,如果您使用Blocks或OnBot Java工具编写机器人程序,则无需下载此仓库。
git clone https://github.com/FIRST-Tech-Challenge/SKYSTONE.git
下载并解压(如有必要)文件夹后,您可以使用Android Studio导入该文件夹(“Import project (Eclipse ADT, Gradle, etc.)”)。
获取帮助
用户文档和教程
FIRST维护着在线文档,包含关于如何使用FIRST科技挑战赛软件和机器人控制系统的信息及教程。您可以通过以下链接访问此文档:
SKYSTONE在线文档
请注意,在线文档是一份“常青”文档,会不断更新和编辑。它包含关于FIRST科技挑战赛软件和控制系统的最新信息。
Javadoc参考资料
FTC SDK的Javadoc参考文档现已在线提供。点击以下链接可查看作为实时网站的FTC SDK Javadoc文档:
FTC Javadoc文档
FTC SDK的文档也包含在此仓库中。有一个名为“doc”的子文件夹,其中包含几个子文件夹:
- 文件夹“apk”包含FTC驱动站和FTC机器人控制器应用的.apk文件。
- 文件夹“javadoc”包含FTC SDK的JavaDoc用户文档。
在线用户论坛
有关控制系统或FTC SDK的技术问题,请访问FTC技术论坛:
FTC技术论坛
版本信息
版本 5.2 (20190905-083227)
- 修复了设置活动中过宽的边距以及新配置按钮的位置问题
- 添加了Skystone Vuforia图像目标数据。
- 包含示例Skystone Vuforia导航操作模式(Java)。
- 包含示例Skystone Vuforia导航操作模式(Blocks)。
- 添加了用于Skystone游戏元素的TensorFlow推理模型(.tflite)。
- 包含示例Skystone TensorFlow操作模式(Java)。
- 包含示例Skystone TensorFlow操作模式(Blocks)。
- 移除了较旧的(特定赛季的)示例操作模式。
- 包含64位支持(以符合Google Play要求)。
- 在请求重启机器人时防止操作模式卡住。(感谢FROGbots-4634)(ftc_app issue #709)
- Blocks相关更改:
- 修复了当硬件设备名称为Java或JavaScript保留字时,blocks生成的代码中的错误。
- 即使活动配置中缺少硬件项目,也会显示blocks生成的Java代码。
- 当使用过时的Vuforia和TensorFlow blocks时,显示警告图标 (SkyStone issue #27)
版本信息
版本 5.1 (20190820-222104)
- 为以下电机定义了默认PIDF参数:
- REV Core Hex Motor
- REV 20:1 HD Hex Motor
- REV 40:1 HD Hex Motor
- 在无系统返回键的设备(如Control Hub)上运行时添加返回按钮
- 允许REV Control Hub通过USB更新REV Expansion Hub的固件
- 修复了SkyStone issue #9
- 修复了ftc_app issue #715
- 通过基于当前状态过滤,防止额外的DS用户点击。
- 防止在从RC接收新OpMode列表时出现错误的DS UI状态更改。
- 添加了对REV Color Sensor V3的支持
- 添加了用于远程查看RC摄像头帧的手动刷新DS摄像头流。
- 要在DS上显示流,初始化但不要运行支持流的操作模式,在DS菜单中选择摄像头流选项,然后点击图像刷新。使用Vuforia或TFOD时此功能自动启用——典型用例无需额外RC配置。要隐藏流,再次选择同一菜单项。
- 请注意,作为安全预防措施,当流打开时,游戏手柄被禁用,且无法启动所选操作模式。
- 要使用自定义流,请查阅
CameraStreamServer#setSource和CameraStreamSource的API文档。
- 向RobotController资源添加了许多星球大战音效。
- 添加了SKYSTONE音效选择器示例程序。
- 将启动、连接提示音以及错误/警告音切换为星球大战音效
- 更新OnBot Java以使用WebSocket与机器人通信
- 当用户从编辑一个文件切换到另一个文件时,OnBot Java页面不再需要完全刷新
已知问题:
- 摄像头流
- Vuforia摄像头流继承了手机预览中存在的问题(即ftc_app issue #574)。此问题不影响TFOD摄像头流,尽管它从Vuforia接收帧。
- 流帧的方向可能不总是与手机预览匹配。目前,如果需要,可以通过自定义
CameraStreamSource手动旋转这些帧。
- OnBotJava
- 浏览器返回按钮可能不总是正常工作
- 有可能构建已排队但未开始。如果发生这种情况,OnBot Java构建控制台将显示警告。
- 如果用户无意中从一个文件无缝切换到另一个文件,可能不会意识到正在编辑另一个文件。当前打开的文件名显示在浏览器标签中。
版本信息
版本 5.0 (构建于 19.06.14)
- 支持REV Robotics Control Hub。
- 在Blocks编辑器中添加了Java预览窗格。
- 在Blocks编辑器中添加了新的离线导出功能。
- 在驱动站的网络圈中显示Wi-Fi频道。
- 添加了对Logitech C270的校准
- 更新了构建工具和目标SDK。
- 符合Google的权限基础设施(构建工具更新后必需)。
- 保持活动以缓解摩托罗拉Wi-Fi扫描问题。不再需要遥测替代。
- 改进了Vuforia错误报告。
- 修复了ftctechnh/ftc_app问题621、713。
- 杂项错误修复和改进。
版本信息
版本 4.3 (构建于 18.10.31)
版本信息
版本 4.2 (构建于 18.10.30)
- 包含修复,避免WatchdogMonitor的死锁情况,该情况可能导致USB通信错误。
- 通信错误似乎要求用户断开USB电缆并重新启动Robot Controller应用才能恢复。
- robotControllerLog.txt中可能会出现包含“E RobotCore: lynx xmit lock: #### abandoning lock:”字样的错误消息。
- 包含修复,以正确列出配置(.xml)文件中REV Robotics Expansion Hub的父模块地址。
- 版本4.0和4.1中的错误会将父REV Robotics设备的地址模块错误地列为“1”。
- 如果父模块的地址值高于菊花链模块,则此错误会阻止Robot Controller与下游Expansion Hub通信。
- 添加了对ACCESS_COARSE_LOCATION的要求,以允许运行Android Oreo的驱动站扫描Wi-Fi Direct设备。
- 在build.gradle中添加了google()仓库,因为从Android Gradle Plugin 3.2版本开始,必须从google()仓库下载aapt2。
- 重要说明:Android Studio用户在首次构建ftc_app项目时需要连接到互联网。
- 首次构建时需要互联网连接,以便从Google仓库下载相应文件。
- 后续构建通常不需要用户连接互联网。
- 这还应修复构建问题,即Android Studio会抱怨“Could not find com.android.tools.lint:lint-gradle:26.1.4”(或类似)。
- 在REV Expansion Hub的伺服/PWM端口配置菜单中添加了对REV Spark Mini电机控制器的支持。
- 提供了在操作模式中播放音频文件的示例。
- Block开发工具更改
- 包含对Velocity blocks问题的修复,该问题在FTC技术论坛(Blocks编程子论坛)中被报告。
- 将“保存成功完成。”消息颜色改为白色,以便与绿色背景形成对比。
- 修复了“Download image”功能,使其在有文本块的op mode中也能正常工作。
- 引入对Google TensorFlow Lite技术的支持,用于2018-2019赛季的对象检测。
- TensorFlow Lite可以识别2018-2019赛季的金矿物和银矿物。
- 包含Java和Block操作模式示例,展示如何确定金块的相对位置(左、中、右)。
版本信息
版本 4.1 (发布于 18.09.24)
更改包括:
- 修复以防止使用已弃用的配置注释时崩溃。
- 更改以允许FTC Robot Controller APK使用FIRST Global Control Hub更新脚本自动更新。
- 移除了不再支持/非法的硬件示例。
- 改进了带有“text”插槽的Telemetry.addData block。
- 更新了Blocks示例操作模式列表,包含Rover Ruckus Vuforia示例。
- 更新了SDK库版本号。
版本信息
版本 4.0 (发布于 18.09.12)
更改包括:
发布信息
版本 3.6 (构建于 17.12.18)
变更包括:
- Blockly 变更
- 使用更新的 Google Blockly 软件,允许用户在 Apple iOS 设备(包括 iPad 和 iPhone)上编辑操作模式。
- 改进了 Blockly 工具,以处理损坏的操作模式文件。
- 自主操作模式在重新打开编辑后,不再会被切换回遥控操作模式。
- 系统现在可以在运行时检测类型不匹配,并在驱动站上向用户显示警告消息。
- 更新了 setPower() 方法的 javadoc 文档,以反映正确的数值范围(-1 到 +1)。
- 修改了 VuforiaLocalizerImpl,允许用户自定义帧渲染
- 添加了一个可被用户重写的 onRenderFrame() 方法,该方法由类的 renderFrame() 方法调用。
发布信息
版本 3.5 (构建于 17.10.30)
版本 3.5 的变更包括:
- 引入修复,防止在机器人控制器应用暂停然后恢复后(例如,用户暂时关闭机器人控制器手机的屏幕,然后重新打开屏幕)可能发生的随机操作模式停止。
- 引入修复,防止之前由驱动站上随机对等点断开事件引起的随机操作模式停止。
- 修复了在暂停 RC 或 DS 时日志文件会关闭,但在恢复时不会重新打开的问题。
- 修复了电池处理器(电压)启动/停止竞态条件的问题。
- 修复了在某些情况下 Android Studio 生成的操作模式会从可用列表中消失的问题。
- 修复了 OnBot Java 在 REV Robotics 控制集线器上无法构建的问题。
- 修复了如果机器人控制器设备上的日期和时间被“倒退”(设置为更早的日期/时间),OnBot Java 将无法构建的问题。
- 改进了 OnBot Java 中重命名文件失败时的错误消息。
- 移除了 OnBot Java 使用的 android.jar 二进制文件中不需要的资源,以减小机器人控制器应用的最终大小。
- 为 Blockly 编程工具添加了 MR_ANALOG_TOUCH_SENSOR 块。
发布信息
版本 3.4 (构建于 17.09.06)
版本 3.4 的变更包括:
- 为 BlankLinearOpMode 模板添加了 telemetry.update() 语句。
- 重命名了示例 Block 操作模式,使其与 Java 示例更加一致。
- 添加了一些额外的示例 Block 操作模式。
- 略微修改了 OnBot Java 自述文件的措辞。
版本 3.3 (构建于 17.09.04)
此版本软件包含对 FTC Blockly 编程工具和 OnBot Java 编程工具的改进。
版本 3.3 的变更包括:
- Android Studio ftc_app 项目已更新为使用 Gradle 插件 2.3.3。
- Android Studio ftc_app 项目已使用 gradle 3.5 发行版。
- 机器人控制器日志已重命名为 /sdcard/RobotControllerLog.txt(注意,此更改实际上是在 v3.2 中引入的)。
- 提高了 I2C 可靠性。
- 针对 REV 扩展集线器优化了 I2C 读取,固件版本为 v1.7 或更高。
- 更新了所有外部/示例(可通过 OnBot 获取,也存在于 Android 项目文件夹中)。
- Vuforia
- 增加了对 VuMark 的支持,用于 2017-2018 赛季的比赛。
- Blockly
- 更新到最新的 Google Blockly 版本。
- 创建新操作模式时,可以选择示例操作模式作为模板。
- 修复了当鼠标按钮按住时块会暂时消失的 bug。
- 添加了用于 Range.clip 和 Range.scale 的块。
- 用户现在可以禁用/启用 Block 操作模式。
- 修复以防止偶尔的 Block 死锁。
- OnBot Java
- OnBot Java 编辑器的自动补全功能有显著改进。
- 创建新操作模式时,可以选择示例操作模式作为模板。
- 修复并更改了完整的硬件设置功能。
- 更新了(更有用的)OnBot 欢迎消息。
已知问题:
- Android Studio
- 更新到新的 v3.3 Android Studio 项目文件夹后,如果收到显示“InvalidVirtualFileAccessException”的错误消息,可能需要执行文件->使缓存失效/重新启动来清除错误。
- OnBot Java
- 有时,当按下构建按钮构建所有操作模式时,RC 会返回一条错误消息,提示构建失败。 如果再次按下构建按钮,构建通常会成功。
版本 3.2 (构建于 17.08.02)
此版本软件引入了“OnBot Java”开发工具。 与 FTC Blockly 开发工具类似,FTC OnBot Java 开发工具允许用户仅使用支持 Javascript 的 Web 浏览器动态创建、编辑和构建操作模式。
OnBot Java 开发工具是一个由机器人控制器提供的集成开发环境(IDE)。 操作模式使用支持 Javascript 的浏览器(推荐使用 Google Chrome)创建和编辑。 操作模式直接保存在机器人控制器 Android 设备上。
OnBot Java 开发工具提供了一个不需要 Android Studio 的 Java 编程环境。
版本 3.2 的变更包括:
已知问题:
- 自动补全功能不完整,目前不支持以下内容:
- 通过 this 关键字的访问
- 通过 super 关键字的访问
- 超类中未被类重写的成员
- 当前类中提供的任何方法
- 内部类
- 无法处理强制转换的对象
- 任何来自括号包围表达式的对象
版本 3.10 (构建于 17.05.09)
此版本软件提供了对 REV Robotics 扩展集线器的支持。 此版本还改进了 USB 通信层,以增强系统弹性。 如果您之前使用的是 2.x 版本的软件,更新到版本 3.1 需要在更新机器人控制器软件的同时更新驱动站软件。
另请注意,在版本 3.10 软件中,setMaxSpeed 和 getMaxSpeed 方法不再可用(未弃用,它们已从 SDK 中移除)。另请注意,新的 3.x 软件包含了电机配置文件,用户可以在配置机器人时选择该配置文件。
变更包括:
- Blockly 变更
- 进一步改进了 USB 通信层,以提高系统弹性(能够从更多的通信中断中恢复)。
关于版本 3.00 的附加说明 (构建于 17.04.13)
除了下面列出的发布变更(请参阅标记为“版本 3.00 (构建于 17.04.13)”的部分),版本 3.00 还具有以下重要变更:
- 版本 3.00 软件使用新版本的 FTC Robocol(机器人协议)。 如果您在机器人控制器和/或 Android Studio 端升级到 v3.0,您还必须升级驱动站软件以匹配新的 Robocol。
- 版本 3.00 软件从 DcMotor 类中移除了 setMaxSpeed 和 getMaxSpeed 方法。 如果您有一个之前使用这些方法的操作模式,您将需要移除对这些方法的引用/调用。 相反,v3.0 通过用户在机器人配置期间选择的电机配置文件提供最大速度信息。
- 版本 3.00 软件目前没有禁用额外 i2c 传感器的机制。 我们希望在未来不久的版本中重新引入此功能。
版本 3.00 (构建于 17.04.13)
*** 使用此版本软件,风险自负! ***
此软件作为“alpha”版本发布。 使用此版本,风险自负!
此预发布版本包含重大变更,包括对 Wi-Fi Direct 配对机制的更改、I2C 传感器类的重写、USB/FTDI 层的更改以及引入对 REV Robotics 扩展集线器和 REV Robotics 颜色-距离-光传感器的支持。 这些更改旨在提高 FTC 控制系统的可靠性和弹性。
但请注意,版本 3.00 被视为“alpha”代码。 发布此代码是为了让 FIRST 社区有机会在 5 月推出新的 REV 扩展集线器电子模块时对其进行测试。 开发人员不建议将此代码用于关键应用(例如,比赛使用)。
*** 使用此版本软件,风险自负! ***
变更包括:
- 传感器相关基础设施的重大重新设计。 包括重写传感器类以实现同步 I2C 通信。
- 修复以将自主计时器重置为 30 秒。
- 为经批准的 12V 电机实现了特定的电机配置文件(包括 Tetrix、AndyMark、Matrix 和 REV 型号)。
- 适度的改进以增强 Wi-Fi P2P 配对。
- 修复了遥测日志添加竞态条件。
- 发布所有源代码(不仅仅是少数几个)。
- 包括 Blockly 编程改进
- 添加了优化的 Vuforia 块。
- 项目和声音页面添加了自动滚动条。
- 修复了块粘贴 bug。
- 块在 while-opModeIsActive 循环后执行(以允许在退出操作模式前进行清理)。
- 添加了陀螺仪 integratedZValue 块。
- 修复了 Firefox 浏览器项目页面的 bug。
- 为 AndroidTextToSpeech 添加了 IsSpeaking 块。
- 实现了对 REV Robotics 扩展集线器的支持
- 实现了对集成 REV IMU 的支持(物理安装在 I2C 总线 0 上,使用与 Adafruit 9DOF 绝对方向传感器相同的 Bosch BNO055 9 轴绝对方向传感器)。
- 实现了对 REV 颜色/距离/光传感器的支持。
- 提供通过 FTC SDK 更新扩展集线器固件的支持。
- 检测 REV 固件版本并记录在日志文件中。
- 包括对 REV 控制集线器的支持(注意 REV 控制集线器尚未获准用于 FTC)。
- 实现对 REV 扩展集线器和传感器硬件的 FTC Blockly 编程支持。
- 检测并在 I2C 设备断开时发出警报。
版本 2.62 (构建于 17.01.07)
- 在 ModernRoboticsUsbDcMotorController 类的 finishModeSwitchIfNecessary 方法中,在调用 modeToByte() 之前添加了空指针检查。
- 更改以增强 Modern Robotics USB 协议的健壮性。
版本 2.61 (发布于 16.12.19)
- Blockly 编程模式变更:
- 修复了当 OpticalDistanceSensor 对象在硬件映射中出现两次(第二次作为 LightSensor)时抛出异常的问题。
版本 2.6 (发布于 16.12.16)
- 陀螺仪类修复:
- 改进(减少)传感器刷新延迟。
- 修复 isCalibrating 问题。
- Blockly 编程模式变更:
- Blockly 现在会忽略配置 xml 中名称为空的设备。 配置工作中的其他设备正常工作。
版本 2.5 (内部发布于 16.12.13)
- Blockly 编程模式变更:
- 添加了对 AdafruitBNO055IMU 的块支持。
- 添加了“下载操作模式”按钮到 FtcBlocks.html。
- 添加了在将一个操作模式中的块复制并粘贴到另一个操作模式中的支持。 剪贴板内容存储在手机上,因此编程模式服务器必须正在运行。
- 修改了工具箱的实用工具部分。
- 在编程模式下,显示活动连接的信息。
- 修复了当工作区滚动时粘贴位置的问题。
- 添加了对安卓加速度计的支持。
- 修复了操作模式上传时 Blockly 片段名在第一处点被截断的问题。
- 添加了对安卓 SoundPool 的块支持。
- 为 Acceleration 添加了类型安全支持。
- 为 AdafruitBNO055IMU.Parameters 添加了类型安全支持。
- 为 AnalogInput 添加了类型安全支持。
- 为 AngularVelocity 添加了类型安全支持。
- 为 Color 添加了类型安全支持。
- 为 ColorSensor 添加了类型安全支持。
- 为 CompassSensor 添加了类型安全支持。
- 为 CRServo 添加了类型安全支持。
- 为 DigitalChannel 添加了类型安全支持。
- 为 ElapsedTime 添加了类型安全支持。
- 为 Gamepad 添加了类型安全支持。
- 为 GyroSensor 添加了类型安全支持。
- 为 IrSeekerSensor 添加了类型安全支持。
- 为 LED 添加了类型安全支持。
- 为 LightSensor 添加了类型安全支持。
- 为 LinearOpMode 添加了类型安全支持。
- 为 MagneticFlux 添加了类型安全支持。
- 为 MatrixF 添加了类型安全支持。
- 为 MrI2cCompassSensor 添加了类型安全支持。
- 为 MrI2cRangeSensor 添加了类型安全支持。
- 为 OpticalDistanceSensor 添加了类型安全支持。
- 为 Orientation 添加了类型安全支持。
- 为 Position 添加了类型安全支持。
- 为 Quaternion 添加了类型安全支持。
- 为 Servo 添加了类型安全支持。
- 为 ServoController 添加了类型安全支持。
- 为 Telemetry 添加了类型安全支持。
- 为 Temperature 添加了类型安全支持。
- 为 TouchSensor 添加了类型安全支持。
- 为 UltrasonicSensor 添加了类型安全支持。
- 为 VectorF 添加了类型安全支持。
- 为 Velocity 添加了类型安全支持。
- 为 VoltageSensor 添加了类型安全支持。
- 为 VuforiaLocalizer.Parameters 添加了类型安全支持。
- 为 VuforiaTrackable 添加了类型安全支持。
- 为 VuforiaTrackables 添加了类型安全支持。
- 为 AdafruitBNO055IMU.Parameters 中的枚举添加了类型安全支持。
- 为 AndroidAccelerometer, AndroidGyroscope, AndroidOrientation, 和 AndroidTextToSpeech 添加了类型安全支持。
版本 2.4 (发布于 16.11.13)
- 修复以避免因不存在的资源而崩溃。
- Blockly 编程模式变更:
- 添加了支持 OpenGLMatrix, MatrixF, 和 VectorF 的块。
- 添加了支持 AngleUnit, AxesOrder, AxesReference, CameraDirection, CameraMonitorFeedback, DistanceUnit, 和 TempUnit 的块。
- 添加了支持 Acceleration 的块。
- 添加了支持 LinearOpMode.getRuntime 的块。
- 添加了支持 MagneticFlux 和 Position 的块。
- 修复了拼写错误。
- 使 ElapsedTime 的块与其他对象更加一致。
- 添加了支持 Quaternion, Velocity, Orientation, AngularVelocity 的块。
- 添加了支持 VuforiaTrackables, VuforiaTrackable, VuforiaLocalizer, VuforiaTrackableDefaultListener 的块。
- 修复了一些块。
- 为新增块添加了类型检查。
- 更新到最新的 blockly。
- 为导航和矩阵块添加了默认变量块。
- 修复了 openGLMatrix_rotation_withAxesArgs 的工具箱条目。
- 当用户下载 Blockly 生成的操作模式时,只下载 .blk 文件。
- 当用户上传 Blockly 生成的操作模式 (.blk 文件) 时,会自动生成 Javascript 代码。
- 添加了对 DbgLog 的支持。
- 添加了当块文件被读取/写入时的日志记录。
- 修复了即使配置文件中缺少设备也能正确渲染块的 bug。
- 添加了对块文件名(用于下载和上传)中其他字符(不仅仅是字母数字)的支持。
- 添加了对操作模式类型(“Autonomous”或“TeleOp”)和分组的支持。
- 对示例的更改以防止教程问题。
- 纳入公开拉取请求 216 中建议的更改(“替换 .. 路径”)。
- 在机器人停止时移除舵机抖动。
- 如果用户在编辑配置文件时点击“取消”,则清除未保存的更改并恢复到原始的未修改配置。
- 添加日志信息以帮助诊断机器人控制器应用被终止的原因(例如,被看门狗功能终止)。
- 添加了从控制器传输日志的功能。
- 修复了 AngularVelocity 的不一致性。
- 限制遥测数据的无限制增长。 如果用户没有及时地为 LinearOpMode 调用 telemetry.update(),则添加的遥测数据可能因超出大小限制而丢失。**************************************************************************************
版本 2.35(发布于 16.10.06)
- Blockly 编程模式 - 移除了新项目块中不必要的 idle() 调用。
版本 2.30(发布于 16.10.05)
- Blockly 编程模式:
- 添加了从编程模式服务器将 Blockly 操作模式保存到本地设备的机制
- 为避免杂乱,块按分类文件夹显示
- 添加了对 DigitalChannel 的支持
- 添加了对 ModernRoboticsI2cCompassSensor 的支持
- 添加了对 ModernRoboticsI2cRangeSensor 的支持
- 添加了对 VoltageSensor 的支持
- 添加了对 AnalogInput 的支持
- 添加了对 AnalogOutput 的支持
- 修复了 CompassSensor setMode 块的错误
- Vuforia
- 修复死锁 / 使相机数据在 Vuforia 运行时可用。
- 更新至 Vuforia 6.0.117(Vuforia 和 Google 推荐,以关闭安全漏洞)。
- 修复了自动模式 30 秒计时器错误(计时器实际有效,但显示已超时)。
- opModeIsActive 的更改,允许在操作模式停止后进行清理(强制 2 秒安全超时)。
- 修复了 i2c 读取两次的问题。
- 更新了示例操作模式。
- 改进了日志记录并修复了间歇性冻结。
- 添加了数字 I/O 示例。
- 清理了示例操作模式中的设备名称,使其与 Pushbot 指南一致。
- 修复了允许使用 IrSeekerSensorV3 的问题。
版本 2.20(发布于 16.09.08)
- 支持 Modern Robotics 指南针传感器。
- 支持 Modern Robotics 距离传感器。
- 为 Pushbot 模板修改设备名称,以匹配 Pushbot 指南中使用的名称。
- 修复错误,使 IrSeekerSensorV3 设备在 hardwareMap 中可作为 IrSeekerSensor 访问。
- 修改计算机视觉代码,要求单独的 Vuforia 许可证(根据 PTC 的法律要求)。
- 小修复。
- Blockly 增强:
- 支持电压传感器。
- 支持模拟输入。
- 支持模拟输出。
- 支持光传感器。
- 支持舵机控制器。
版本 2.10(发布于 16.09.03)
- 支持 Adafruit IMU。
- 改进 ModernRoboticsI2cGyro 类
- 在 Z 轴重置时阻塞。
- isCalibrating() 在陀螺仪校准时返回 true。
- 更新了示例陀螺仪程序。
- Blockly 增强
- 支持 android.graphics.Color。
- 添加了对 ElapsedTime 的支持。
- 改善了块的外观和可读性。
- 支持指南针传感器。
- 支持超声波传感器。
- 支持 IrSeeker。
- 支持 LED。
- 支持颜色传感器。
- 支持 CRServo。
- 在使用编程模式前提示用户配置机器人。
- 提供了禁用音频提示的能力。
- 各种错误修复和改进。
版本 2.00(发布于 16.08.19)
- 这是为即将到来的 2016-2017 FIRST 科技挑战赛季发布的新版本。
- 在 FTC 机器人控制器应用中为 Moto G 第二代和第三代手机启用了频道切换。
- 用户现在可以使用注解来注册/禁用他们的操作模式。
- Android SDK、JDK 和构建工具要求的更改(minsdk=19,java 1.7,build tools 23.0.3)。
- 模拟输入的单位标准化。
- 清理了现有模拟传感器类的代码。
- setChannelMode 和 getChannelMode 已从 DcMotorController 类中移除。这很重要——我们不再通过电机控制器设置电机模式。
- setMode 和 getMode 已添加到 DcMotor 类中。
- ContinuousRotationServo 类已添加到 FTC SDK。
- Range.clip() 方法已重载,以支持 int、short 和 byte 整数类型。
- 用户访问硬件映射中项目的方式已发生了一些变化(添加了新方法)。
- 用户现在可以为直流电机设置零功率行为,当功率为零时,电机可以刹车或自由转动。
- 原型 Blockly 编程模式已添加到 FTC 机器人控制器中。用户可以将机器人控制器置于此模式,然后使用支持 JavaScript 浏览器的设备(如笔记本电脑)直接在机器人控制器上编写基于 Blockly 的操作模式。
- 用户现在可以通过 FTC 驱动站应用远程配置机器人。
- Android Studio 项目支持 Android Studio 2.1.x 和编译 SDK 版本 23(Marshmallow)。
- Vuforia 计算机视觉 SDK 已集成到 FTC SDK。用户可以使用样本视觉目标在标准 FTC 赛场上获取定位信息。
- 项目结构已重新组织,现在有一个 TeamCode 包,用户可以将本地/自定义操作模式放入此包。
- 检查功能已集成到 FTC 机器人控制器和驱动站应用中(感谢 HazMat 队… 9277 & 10650!)。
- 音频提示已纳入 FTC SDK。
- 交换机制已添加到 FTC 机器人控制器配置活动中。例如,如果你的机器人上有两个电机控制器,并且你在配置文件中错误地标识了它们,你可以使用交换按钮在配置文件中交换设备(这样你就不必为两个设备手动重新输入配置信息)。
- 修复机制已添加,允许用户轻松更换电子模块。例如,假设你的机器人上的一个舵机控制器坏了。你用一个新的模块替换损坏的模块,新模块的序列号与原始舵机控制器不同。你可以使用修复按钮自动重新配置你的配置文件,以使用新模块的序列号。
- 改进了系统的稳定性和响应性。
- 对于 LinearOpMode,用户现在必须调用 telemetry.update() 来更新驱动站上的遥测数据。这个 update() 机制确保驱动站同时且正确地获取更新的数据。
- 机器人控制器的自动配置功能现在基于模板。如果有常用的机器人配置,可以创建一个模板,以便使用自动配置机制快速配置这种类型的机器人。
- 检测失控操作模式(LinearOpMode 和 OpMode 类型)并中止运行然后自动恢复的逻辑已改进/实现。
- 已修复 Logitech F310 游戏手柄映射在 Marshmallow 用户下不正确的问题。
发布 16.07.08
- 对于 ftc_app 项目,gradle 文件已修改以支持 Android Studio 2.1.x。
发布 16.03.30
- 对于 MIT App Inventor,设计块具有新的图标,更好地代表每个设计组件的功能。
- 对关闭逻辑进行了一些更改,以确保我们部分 USB 服务的稳健关闭。
- 对 LinearOpMode 进行了更改,以允许给定实例执行多次,这是 App Inventor 所需的。
- Javadoc 改进/更新。
发布 16.03.09
- 进行了使 FTC SDK 同步的更改(重大更改!)
- waitOneFullHardwareCycle() 和 waitForNextHardwareCycle() 不再需要,已弃用。
- runOpMode()(对于 LinearOpMode)现在与系统的硬件读/写线程解耦。
- loop()(对于 OpMode)现在与系统的硬件读/写线程解耦。
- 方法是同步的。
- 例如,如果你调用 setMode(DcMotorController.RunMode.RESET_ENCODERS) 为一个电机,当方法调用完成时,编码器保证被复位。
- 对于旧模块(NXT 兼容),用户不再需要在从旧设备读取或写入时在读取和写入模式之间切换。
- 更改以增强 ESD 事件期间的可靠性/健壮性。
- 更改以使代码线程安全。
- 添加了调试密钥库,以便用户生成的机器人控制器 APK 都使用相同的签名密钥(例如,如果团队有多个开发笔记本电脑,以避免冲突)。
- Modern Robotics 模块的固件版本信息现在被记录。
- 改进 USB 通信可靠性和健壮性的更改。
- 为旧(NXT 兼容)电机控制器添加了电压指示器支持。
- 更改以提供操作模式的自动停止能力。
- LinearOpMode 类将在 runOpMode() 中的语句完成时停止。用户不必按下驱动站上的停止按钮。
- 如果操作模式被驱动站停止,但存在一个失控/不可中断的线程持续运行,应用程序将记录错误消息,然后强制自身崩溃以停止失控线程。
- 驱动站 UI 修改为显示当前电压(12V 电池)以下的最低测量电压。
- 驱动站 UI 修改为当前电压有颜色背景(绿色=良好,黄色=警告,红色=危险,极低电压)。
- javadoc 改进(编辑和添加类)。
- 在驱动站和机器人控制器应用的“关于”活动中添加了应用构建时间。
- 在驱动站“关于”活动中显示本地 IP 地址。
- 添加了 I2cDeviceSynchImpl。
- 添加了 I2cDeviceSync 接口。
- 向 ElapsedTime 添加了 seconds() 和 milliseconds() 以提高清晰度。
- 向 I2cDevice 添加了 getCallbackCount()。
- 添加了缺失的 clearI2cPortActionFlag。
- 添加了在等待 LinearOpMode 关闭时创建日志消息的代码。
- 修复了 WiFi Direct 配置活动不再多次启动的问题。
- 添加了在软件中为 Modern Robotics 陀螺仪指定备用 i2c 地址的能力。
发布 16.02.09
- 改进了电池检查功能,使电压值在驱动站(DS)用户界面上定期刷新(每 250 毫秒)。
- 改进了软件,使机器人控制器(RC)对 USB 断开连接更具弹性且“自我修复”:
- 如果用户尝试启动/重启 RC 时缺少一个或多个模块,将显示警告但仍启动。
- 在运行操作模式时,如果一个或多个模块断开连接,RC 和 DS 会显示警告,机器人仍会在缺少模块的情况下继续工作。
- 如果断开的模块被物理重新连接,RC 将自动检测该模块,用户将重新获得对最近连接模块的控制。
- 警告消息更有帮助(标识缺失模块的类型及其 USB 序列号)。
- 代码更改修复了用户在操作模式的 init() 部分引用游戏手柄时的空游戏手柄引用问题。
- NXT 光传感器输出现在正确缩放。请注意,团队可能需要在他们的操作模式中重新调整光阈值。
- 在 DS 用户界面上,如果匹配的游戏手柄断开连接或该游戏手柄被指定为不同的驾驶员,则驾驶员游戏手柄图标将消失。
- 机器人协议(ROBOCOL)版本号信息显示在 RC 和 DS 应用的“关于”屏幕中。
- 在配对屏幕上添加了显示过滤器,以过滤掉不使用 “<队伍编号>-” 格式的设备。此过滤器可以关闭以显示所有 WiFi Direct 设备。
- 更新了 License 文件中的文本。
- 修复了 OpticalDistanceSensor.toString() 中的格式错误。
- 修复了空白(“”)设备名称会中断 WiFi Direct 配对的问题。
- 进行了更改,以便在连接到 RC 后,WiFi 信息和电池信息可以更快地显示在 DS 上。
- 改进 javadoc 生成。
- 修改代码以更便于将来支持语言本地化。
发布 16.01.04
- 更新了应用的 compileSdkVersion
- 防止 WiFi 进入省电模式
- 从驱动站中移除了未使用的导入
- 纠正了“死区”摇杆代码。
- LED.getDeviceName 和 .getConnectionInfo() 返回 null
- 应用程序检查 ROBOCOL_VERSION 不匹配
- 修复遥测数据字符串大小短限制错误中的差一错误
- 用户遥测输出已排序。
- 为 DbgLog 和 RobotLog API 添加了格式化变体
- 代码修改以允许较长的操作模式名称列表。
- 改进 RobocolDatagramSocket 的线程安全性
- 修复“缺失硬件使机器人控制器与驱动站断开连接”的错误
- 修复“快速点击 Init/Start 导致问题”(Toast 现在仅在 UI 线程上实例化)。
- 添加了一些关于线程生命周期的日志语句。
- 将游戏手柄重置逻辑移入 initActiveOpMode() 内以提高健壮性
- 进行了更改以降低公共方法上竞态条件的风险。
- 进行了更改以尝试标记 WiFi Direct 名称包含不可打印字符的情况。
- 修复 ReadWriteRunnableStandard 中 .run() 和 .close() 之间的竞态条件。
- 更新了 FTDI 驱动
- 使 ReadWriteRunnableStanard 接口公开。
- 修复了 Command 构造函数中的差一错误
- 将具体的硬件实现移入自己的包中。
- 将具体的游戏手柄实现移入硬件库。
- 将 LICENSE 文件更改为新的 BSD 版本。
- 修复了关闭 Modern Robotics USB 设备时的竞态条件。
- ColorSensor 类中的方法已同步。
- 修正了 isBusy() 状态以反映运动结束。
- 修正了“后退”按钮键码。
- GyroSensor 类的 notSupported() 方法已更改为 protected(不应为 public)。
发布 15.11.04.001
- 添加了对 Modern Robotics 陀螺仪的支持。
- GyroSensor 类现在支持 MR 陀螺仪传感器。
- 用户可以访问航向数据(绕 Z 轴)
- 用户还可以访问原始陀螺仪数据(X、Y 和 Z 轴)。
- 包含示例 MRGyroTest.java 操作模式。
- 更新了 DcMotor API
- 在 setI2cAddress 中在新地址上启用读取模式
- 修复了驱动站应用在切换操作模式时重置游戏手柄的问题。
- USB 相关代码更改,使 USB 通信更响应并显示更明确的错误消息。
- 修复 USB 在 USB 总线返回垃圾数据时正确恢复的问题。
- 修复 USB 初始化竞态条件。
- 在 FTDI 打开期间提供更好的错误报告。
- USB 故障期间更明确的消息。
- 修复错误,确保在未调用事件循环拆除方法时关闭 USB 设备。
- 修复了计时器 UI 问题
- 修复了重复名称 UI 错误(旧模块配置)。
- 修复了 EventLoopManager 中的竞态条件。
- 修复更新游戏手柄时保持引用稳定的问题。
- 对于旧的 Matrix 电机/舵机控制器,移除了在控制器名称后附加“Motor”和“Servo”的必要性。
- 更新了 HT 颜色传感器驱动,使用 ModernRoboticsUsbLegacyModule 类中的常量。
- 更新了 MR 颜色传感器驱动,使用 ModernRoboticsUsbDeviceInterfaceModule 类中的常量。
- 正确处理所有颜色传感器中的 I2C 地址更改
- 更新/清理了操作模式。
- 更新了 LinearI2cAddressChange.java 示例操作模式中的注释。
- 将对“setChannelMode”的调用替换为“setMode”(以匹配 DcMotor 方法的新名称)。
- 移除了 K9AutoTime.java 操作模式。
- 添加了 MRGyroTest.java 操作模式(演示如何使用 MR 陀螺仪传感器)。
- 添加了 MRRGBExample.java 操作模式(演示如何使用 MR 颜色传感器)。
- 添加了 HTRGBExample.java 操作模式(演示如何使用 HT 旧颜色传感器)。
- 添加了 MatrixControllerDemo.java(演示如何使用旧的 Matrix 控制器)。
- 更新了 javadoc 文档。
- 更新了机器人控制器和驱动站应用的发布 .apk 文件。
T. Eng
2015 年 11 月 5 日
发布 15.10.06.002
- 添加了对旧的 Matrix 9.6V 电机/舵机控制器的支持。
- 清理了 build.gradle 文件。
- 驱动站和机器人控制器应用的微小 UI 和错误修复。
- 如果超声波传感器(NXT)未配置为旧模块端口 4 或 5,则抛出错误。
T. Eng
2015 年 10 月 6 日
在最新版本的 FTC SDK(20150803_001)中,应注意以下更改:
- FTC 驱动站和 FTC 机器人控制器应用的新用户界面。
- 在 OpMode 类中添加了 init() 方法。
- 在此版本中,init() 在 start() 方法之前触发。
- 最终,当用户按下驱动站上的“INIT”按钮时,将触发 init() 方法。
- init() 和 loop() 方法现在是必需的(即需要在用户的操作模式中重写)。
- start() 和 stop() 方法是可选的。
- 引入了新的 LinearOpMode 类。
- 团队可以使用 LinearOpMode 模式创建线性(非事件驱动)的程序模型。
- 团队可以在线性操作模式中使用阻塞语句,如 Thread.sleep()。
- 旧模块和核心设备接口模块的 API 已更新。
- 硬件循环已更新以获得更好的性能。
T. Eng
2015 年 8 月 3 日