编程语言选择#

团队在编程机器人执行各种任务时,我们推荐以下三种:图形化编程、OnBot Java和Android Studio。

图形化编程#

图形化编程工具是一种为机器人编写简单动作的简单方法。它有一个彩色的乐高式设计,包括块块合在一起的声音。

使用设备和机器人控制器,点击 RC 右上方的三个点,选择 “编程和管理”,将设备连接到手机的 Wi-Fi。这将显示供你连接的 WiFi SSID 和密码。打开浏览器(最好是 Chrome 浏览器,不过其他现代浏览器也可以),输入 RC 上显示的地址。

优势#

  • 适合初学者:最简单易用的选项之一。

  • 易于设置:需要设备(笔记本电脑、chromebook、平板电脑)和运行“程序和管理”屏幕的手机

  • 程序可以直接保存到手机

    • 可快速进行更改

  • 不需要外部Wi-Fi连接

缺点#

  • 如果你已经熟悉某种语言的编程,则不建议使用

    • 主要是为没有编程经验的人提供的教学工具

  • 这将把你的主 Wi-Fi 网络更改为 Robot Controller’s 直接 Wi-Fi 网络,因此,当你连接到这个特定网络时,将无法访问互联网。

    • 团队可以通过购买允许计算机同时运行2个Wi-Fi网络的外部Wi-Fi模块来解决这个问题。

  • 牺牲灵活性和应用程序以求简单

  • 永远不要在手机上使用它,除非你别无选择。(不适合手机)

    • 如果你试图这样做,你可能会制造更大的混乱。

OnBot Java#

OnBot Java使用类似的方法,使用浏览器进行编码并直接保存到手机上。不同之处在于使用了一种称为Java的编程语言。

优势#

  • 如果你正在学习或已经学习了一些编程,推荐你使用;如果你懂一点Java,那就更好了。

  • 比图形化编程有着更大的灵活性

  • 有很多可用的资源以防你需要帮助

  • 比图形化编程更适用于实际情况

  • 保持图形化编程的大部分优势

缺点#

  • 连接到机器人控制器的Wi-Fi网络将阻止你使用任何在互联网上包括视频教程和在线通信

  • 使用外部库很困难,几乎不可能

  • 比起图形化编程需要在短期内掌握更多全新的知识

Android Studio#

Android Studio是一个全面的集成开发环境(IDE),它使用Java来对手机进行编程。Android Studio不会使用浏览器上传代码,而是将你的机器人控制器代码编译为.apk文件(应用程序安装程序),并将其安装在手机上。

优势#

  • 如果你正在学习或已经学习了一些编程,推荐你使用;如果你懂一点Java,那就更好了。

  • 比图形化编程有更大的灵活性。

  • 更容易集成库,如 EasyOpenCV, FTC Dashboard, FTCLibRoad Runner

  • 可以使用插件,如 Road Runner

  • 可使用 USB 连接到 RC 手机,或使用无线连接上传代码。

    备注

    使用 OpenRC Turbo 可以加快部署时间。

  • 可以实时调试

  • Java、Android Studio和IDEA的许多资源

  • 可以使用其他编程语言

缺点#

  • 连接到机器人控制器的Wi-Fi网络将阻止你使用互联网上的任何内容,包括视频教程和在线通信,除非你有第二个Wifi适配器(便宜且简单)

  • 相对容易的安装过程,但耗时,有一个庞大的安装量(Android Studio,ftc_app和其他库之间的3GB文件)

  • 问题可能难以诊断和解决

其他编程语言#

Kotlin静态编程语言#

Kotlin静态编程语言是一种相对较新且发展迅速的编程语言,来自Jetbrains,它是IntelliJIDE的创建者,Android Studio就是基于它。Kotlin静态编程语言被设计成与Java完全兼容,但更容易使用。谷歌最近宣布它为官方安卓语言,然后宣布他们将“使Kotlin静态编程语言优先”,但仍保持Java支持。

优势#

  • 简洁、易读、易于编辑的代码

    • 易于编写,因为做同样的事情所需的代码要少得多

  • 可选类型推断和比Java更强大的类型系统

  • Null安全

  • 线程安全

  • 函数式编程

  • 与Java代码和库无缝衔接

  • 很容易从Java转移过来

缺点#

  • 尚未广泛应用于FTC®

  • 是新加入的语言,用于培训的社区资源较少

  • 不推荐给需要其他团队大量帮助的程序员

C 和 C++#

C和C++是与Android兼容的本地编程语言。很少有团队使用C++。这通常仅用于部分代码,大多数是Java或Kotlin静态编程语言。

优势#

  • 快速执行资源密集型应用程序。

  • 支持更多库

缺点#

  • 很少需要或使用

  • 设置起来非常困难

  • 难以调试代码

  • 很少有团队可以帮助你

  • 很少的在线资源