test(finals): add tests/README.md and the board’s akars build tests/ now holds the addendum the layout asks for: akars: the robot program as actually run on the board (RISC-V64, musl dynamic against /lib/ld-musl-riscv64v0p7_xthead.so.1, 2.6 MB), built from src/akars README.md: what is in this directory plus the verification paths for the three core functions — eBPF tracing (kernel build, static tool build, QEMU end-to-end with the 5.986 ms / 20.620 ms session, board run), voice recognition (host verify.py, QEMU validate.sh → VOICE_COMMANDS_TEST_PASSED, board listen.sh with the measured 0.64–0.65 s/s and 120 s capture), and the kernel-side four-arch compile plus per-patch regression cases This also makes the three tests/README.md references in the root README resolve again.
test(finals): add tests/README.md and the board’s akars build
tests/ now holds the addendum the layout asks for:
This also makes the three tests/README.md references in the root README resolve again.
参赛队伍:DWC | 赛题:面向智能机器人的 AIOS(高校赛题) | 完成日期:2026 年 10 月
一台网球捡球机器人的操作系统改造。机器人跑在 LicheeRV Nano 开发板(SG2002,RISC-V C906 + 片上 TPU)上, 外接 USB 摄像头、麦克纳姆轮底盘、三关节机械臂与板载麦克风。作品把它的内核整体换成 Rust 组件化内核 (StarryOS / ArceOS),补齐系统调用、文件接口与外设驱动,打通板上的视觉推理与语音识别,再用内核级的 调度与内存优化缩短热路径;内核侧改动以补丁形式回流上游公共仓库。
src/tgoskits/kprobe-local/
src/tgoskits/os/StarryOS/kernel/src/{perf,uprobe}/
src/tgoskits/apps/starry/ebpf/akars_trace/
src/tgoskits/drivers/audio/
src/tgoskits/apps/starry/sg2002-voice-commands/
机器人程序(视觉伺服抓取、串口引脚复用、摄像头采集路径)见 src/akars/。
src/akars/
├── README.md ← 本文件 ├── src/ ← 项目源代码 │ ├── tgoskits/ ← StarryOS/ArceOS 内核树(含 kprobe-local、akars_trace、语音指令应用) │ └── akars/ ← 机器人用户态程序(抓球主程序) ├── docs/ ← 决赛文档(4 份 PDF)+ 底稿与生成脚本(docs/drafts/) ├── tests/ ← 测试及验证材料(构建/验证方法与预期结果) ├── demo/ ← 可验证交付物(内核镜像 + 静态追踪工具) ├── presentation/ ← 决赛现场演示 PPT ├── 演示视频/ ← 决赛演示视频 └── 作品原创承诺书.pdf
所有源码均已直接纳入仓库(非 submodule),克隆后即可查看与构建。src/akars/ 构建时需要 TPU SDK(toolchains/tpu-sdk-sg200x,见其 .gitmodules),该 SDK 未随仓库分发。
toolchains/tpu-sdk-sg200x
.gitmodules
环境:Linux x86_64,rustup 工具链 nightly-2026-09-04(src/tgoskits/rust-toolchain.toml), RISC-V 交叉工具链。详细步骤与预期输出见 tests/README.md。
nightly-2026-09-04
src/tgoskits/rust-toolchain.toml
tests/README.md
内核(在 src/tgoskits/ 下执行):
src/tgoskits/
cargo run -p tg-xtask -- starry build --config os/StarryOS/configs/board/licheerv-nano-sg2002.toml
追踪工具(静态链接 RISC-V64):
cd src/tgoskits/apps/starry/ebpf/akars_trace CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Ctarget-feature=+crt-static -Clink-arg=-fuse-ld=lld" \ CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_MUSL_LINKER=riscv64-unknown-linux-musl-gcc \ cargo build --release --target riscv64gc-unknown-linux-musl -Zbuild-std=std,panic_abort
机器人程序:
cd src/akars ./akars <model.cvimodel> --camera /dev/cvi-usb-camera0 --motor /dev/ttyS1 --arm /dev/ttyS2
运行:烧写 demo/starryos-licheerv-nano-sg2002.uimg 后按 demo/README.md 操作。
demo/starryos-licheerv-nano-sg2002.uimg
demo/README.md
docs/
docs/drafts/
文档与脚本中的命令、设备名和文件路径来自比赛期间的实际开发环境。在其他主机或开发板环境中 复现时,请根据本地磁盘设备、工具链路径与仓库位置进行调整。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
面向智能机器人的 AIOS
参赛队伍:DWC | 赛题:面向智能机器人的 AIOS(高校赛题) | 完成日期:2026 年 10 月
一台网球捡球机器人的操作系统改造。机器人跑在 LicheeRV Nano 开发板(SG2002,RISC-V C906 + 片上 TPU)上, 外接 USB 摄像头、麦克纳姆轮底盘、三关节机械臂与板载麦克风。作品把它的内核整体换成 Rust 组件化内核 (StarryOS / ArceOS),补齐系统调用、文件接口与外设驱动,打通板上的视觉推理与语音识别,再用内核级的 调度与内存优化缩短热路径;内核侧改动以补丁形式回流上游公共仓库。
四条技术线
src/tgoskits/kprobe-local/、src/tgoskits/os/StarryOS/kernel/src/{perf,uprobe}/、src/tgoskits/apps/starry/ebpf/akars_trace/src/tgoskits/drivers/audio/、src/tgoskits/apps/starry/sg2002-voice-commands/机器人程序(视觉伺服抓取、串口引脚复用、摄像头采集路径)见
src/akars/。仓库结构
所有源码均已直接纳入仓库(非 submodule),克隆后即可查看与构建。
src/akars/构建时需要 TPU SDK(toolchains/tpu-sdk-sg200x,见其.gitmodules),该 SDK 未随仓库分发。构建与运行
环境:Linux x86_64,rustup 工具链
nightly-2026-09-04(src/tgoskits/rust-toolchain.toml), RISC-V 交叉工具链。详细步骤与预期输出见tests/README.md。内核(在
src/tgoskits/下执行):追踪工具(静态链接 RISC-V64):
机器人程序:
运行:烧写
demo/starryos-licheerv-nano-sg2002.uimg后按demo/README.md操作。文档
docs/;docs/drafts/(修改底稿后可重新生成 PDF);tests/README.md;可验证交付物见demo/README.md。已知限制
说明
文档与脚本中的命令、设备名和文件路径来自比赛期间的实际开发环境。在其他主机或开发板环境中 复现时,请根据本地磁盘设备、工具链路径与仓库位置进行调整。