# RobotSample **Repository Path**: luoxianli/RobotSample ## Basic Information - **Project Name**: RobotSample - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-22 - **Last Updated**: 2026-06-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

OrionStar

RobotSample

License Platform minSdk targetSdk Kotlin Java AGP

语言 / Language: 简体中文 · English

--- ## 简体中文 OrionStar 机器人开放平台 Android SDK 官方示例工程。本项目演示了如何通过 `CoreService` 与 `SkillApi` 调用机器人的导航、语音、视觉、运动、充电、机械臂、电动门等核心能力,是接入 OrionStar 机器人 SDK 的最佳起点。 ### 📑 目录 - [✨ 功能特性](#-功能特性) - [🧩 功能模块](#-功能模块) - [📂 项目结构](#-项目结构) - [🛠️ 环境要求](#️-环境要求) - [🚀 快速开始](#-快速开始) - [🔌 核心 API 入口](#-核心-api-入口) - [🔗 URL Scheme 拉起](#-url-scheme-拉起) - [❓ 常见问题](#-常见问题) - [📚 相关文档](#-相关文档) - [📄 许可证](#-许可证) ### ✨ 功能特性 - 🧭 **导航定位**:单点导航、多点巡航、虚拟点定位 - 🗣️ **语音交互**:语音识别、语义理解、TTS 合成、技能注册 - 👁️ **视觉能力**:人脸检测、人形跟随、目标识别 - 🦿 **运动控制**:基础运动、原地转向、跟随模式 - 🔋 **充电管理**:自动回充、电量监控 - 🤖 **机械臂控制**:豹小秘 Pro 机型机械臂动作编排 - 🚪 **电动门控制**:舱门开闭与动作组合 - 🎙️ **音频采集**:麦克风原始音频流采集与 WAV 保存 - 📍 **引领功能**:跨地点路径引领 ### 🧩 功能模块 | 模块 | Fragment | 功能说明 | | :--- | :--- | :--- | | 主页 | `MainFragment` | 场景入口,分发到各业务模块 | | 引领 | `LeadFragment` | 跨地点引领、路径规划演示 | | 运动 | `SportFragment` | 前进后退、转向、停止等基础运动 | | 语音 | `SpeechFragment` | TTS、ASR、技能调用 | | 视觉 | `VisionFragment` | 人脸检测、人形识别 | | 充电 | `ChargeFragment` | 自动回充、桩点管理 | | 定位 | `LocationFragment` | 重定位、地图与坐标 | | 导航 | `NavigationFragment` / `NavFragment` | 单点 / 多点导航 | | 跟随 | `BodyFollowFragment` | 人形跟随 | | 音频 | `AudioFragment` | 麦克风原始音频采集(参见 `audio/AudioManager.java`) | | 电动门 | `ElectricDoorControlFragment` / `ElectricDoorActionControlFragment` | 单次控制 / 动作组控制 | | 机械臂 | `ArmControlFragment` | 机械臂动作(**仅豹小秘 Pro 支持**) | | 失败页 | `FailedFragment` | CoreService 连接失败兜底 | | 基类 | `BaseFragment` | 公共组件、返回栏、结果显示 | ### 📂 项目结构 ```text RobotSample/ ├── app/ │ ├── libs/ │ │ └── robotservice.jar # OrionStar SDK 核心 jar │ └── src/main/ │ ├── AndroidManifest.xml │ ├── java/com/ainirobot/robotos/ │ │ ├── MainActivity.java # 应用入口,处理 splash / scheme / 连接检查 │ │ ├── LogTools.java # 日志收集工具 │ │ ├── application/ │ │ │ ├── RobotOSApplication.java # Application 入口,连接 CoreService 并初始化 SkillApi │ │ │ ├── ModuleCallback.java # CoreService 底层事件回调 │ │ │ └── SpeechCallback.java # SkillApi 语音回调 │ │ ├── audio/ │ │ │ ├── AudioManager.java # 音频采集封装 │ │ │ └── WavHeader.java # WAV 文件头工具 │ │ ├── fragment/ # 各业务场景 Fragment │ │ ├── maputils/ # 地图、坐标、对话等工具集 │ │ └── view/ # BackView / MapView / ResultView 公共控件 │ └── res/ # 资源文件(layout / drawable / values 等) ├── build.gradle # 项目级构建脚本 ├── settings.gradle ├── gradle/wrapper/ ├── LICENSE # Apache License 2.0 └── README.md ``` ### 🛠️ 环境要求 | 项 | 版本 | | :--- | :--- | | JDK | **1.8(Java 8)** | | Android Studio | 4.2 及以上 | | Android Gradle Plugin | 7.0.4 | | Gradle | 与 AGP 7.0.4 匹配的版本 | | Kotlin | 1.7.10 | | compileSdk / targetSdk | 29 | | minSdk | 16 | | 关键依赖 | `app/libs/robotservice.jar`(OrionStar SDK) | ### 🚀 快速开始 #### 1. 克隆项目 ```bash git clone cd RobotSample ``` #### 2. 用 Android Studio 打开 打开 Android Studio → `Open` → 选择项目根目录 → 等待 Gradle Sync 完成。 #### 3. 构建并安装到机器人 将设备(机器人)通过 ADB 连接电脑,然后: ```bash ./gradlew installDebug ``` 或在 Android Studio 中点击 `Run`。 #### 4. ⚠️ 启动方式(重要) > **必须从机器人屏幕上点击应用图标启动**,**不要**直接点 IDE 的 `Debug` 按钮拉起,否则无法获得 `CoreService` 的 API 权限,所有机器人接口都会失败。 启动后若长时间停留在 Splash 页:通常意味着 `CoreService` 未连接,请确认机器人系统正常、SDK 服务在运行。`MainActivity#checkInit` 最多重试 10 次,超过会显示 `FailedFragment`。 ### 🔌 核心 API 入口 #### 连接 CoreService 入口位于 `application/RobotOSApplication.java`: ```java RobotApi.getInstance().connectServer(mContext, new ApiListener() { @Override public void handleApiConnected() { // 注册 ModuleCallback、初始化 SkillApi } @Override public void handleApiDisconnected() { /* 断开重连 */ } @Override public void handleApiDisabled() { /* 服务被禁用 */ } }); ``` #### 注册语音回调 ```java SkillApi mSkillApi = new SkillApi(); mSkillApi.addApiEventListener(apiListener); mSkillApi.connectApi(mContext); // 连接成功后: mSkillApi.registerCallBack(mSkillCallback); ``` #### 检查 API 是否可用 ```java if (RobotApi.getInstance().isApiConnectedService() && RobotApi.getInstance().isActive()) { // 可以放心调用机器人 API } ``` ### 🔗 URL Scheme 拉起 `MainActivity` 已注册 `jerry://` 方案,可由其他应用或 ADB 唤起: ```bash adb shell am start -a android.intent.action.VIEW -d "jerry://main" ``` 支持的 host: | Scheme | 行为 | | :--- | :--- | | `jerry://main` | 直接进入主菜单,等同于点击 Launcher 图标 | ### ❓ 常见问题
Q1:从 IDE 点 Debug 启动后,所有机器人接口都没响应? A:必须从机器人屏幕点击 App 图标启动。从 IDE Debug 启动会绕过授权流程,导致拿不到 `CoreService` 的 API 权限。
Q2:一直停在 Splash 页面进不去主界面? A:`MainActivity#checkInit` 在轮询 `RobotApi#isApiConnectedService` 与 `isActive`,若 10 次后仍未就绪会跳转 `FailedFragment`。请检查: - 机器人系统的 CoreService 是否正在运行 - 应用是否已被授予相关权限 - `robotservice.jar` 与设备系统版本是否匹配
Q3:机械臂相关功能调用失败? A:`ArmControlFragment` 的能力**仅在豹小秘 Pro 机型上支持**,其他机型调用会失败。
Q4:编译时找不到 robotservice.jar A:检查 `app/libs/robotservice.jar` 是否存在;若仓库未携带,请从 OrionStar 开发者平台获取后放入此目录。`app/build.gradle` 中通过 `implementation files('libs\\robotservice.jar')` 引用(Windows 风格路径,macOS/Linux 同样可识别)。
### 📚 相关文档 - [OrionStar 开发者文档(中文)](https://doc.orionstar.com/) - [OrionStar Developer Docs (English)](https://doc.orionstar.com/en/) - [Android Developer Documentation](https://developer.android.com/) ### 📄 许可证 本项目基于 [Apache License 2.0](LICENSE) 开源协议发布。 ``` Copyright (C) 2017 OrionStar Technology Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 ``` --- ## English The official Android SDK sample project from the **OrionStar Robot Open Platform**. This project demonstrates how to access the robot's core capabilities — navigation, speech, vision, motion, charging, robotic arm, and electric door — through `CoreService` and `SkillApi`. It is the best starting point for integrating with the OrionStar Robot SDK. ### 📑 Table of Contents - [✨ Features](#-features) - [🧩 Modules](#-modules) - [📂 Project Structure](#-project-structure) - [🛠️ Requirements](#️-requirements) - [🚀 Getting Started](#-getting-started) - [🔌 Core API Entry Points](#-core-api-entry-points) - [🔗 URL Scheme](#-url-scheme) - [❓ FAQ](#-faq) - [📚 References](#-references) - [📄 License](#-license) ### ✨ Features - 🧭 **Navigation & Localization**: single-point navigation, multi-point patrol, virtual point relocation - 🗣️ **Speech Interaction**: ASR, NLU, TTS, skill registration - 👁️ **Vision**: face detection, person tracking, target recognition - 🦿 **Motion Control**: basic motion, in-place rotation, follow mode - 🔋 **Charging**: auto-recharge, battery monitoring - 🤖 **Robotic Arm**: arm motion sequences (Bao Xiaomi **Pro** only) - 🚪 **Electric Door**: door open/close and action chains - 🎙️ **Audio Capture**: raw mic stream and WAV file saving - 📍 **Leading**: cross-location guided routing ### 🧩 Modules | Module | Fragment | Description | | :--- | :--- | :--- | | Home | `MainFragment` | Scene entry, dispatches to feature modules | | Lead | `LeadFragment` | Cross-location leading and path planning | | Sport | `SportFragment` | Forward/backward, turning, stop, etc. | | Speech | `SpeechFragment` | TTS, ASR, skill invocation | | Vision | `VisionFragment` | Face / person detection | | Charge | `ChargeFragment` | Auto-recharge, dock management | | Location | `LocationFragment` | Relocation, map and coordinates | | Navigation | `NavigationFragment` / `NavFragment` | Single / multi-point navigation | | Body Follow | `BodyFollowFragment` | Human body follow | | Audio | `AudioFragment` | Raw audio capture (see `audio/AudioManager.java`) | | Electric Door | `ElectricDoorControlFragment` / `ElectricDoorActionControlFragment` | Single control / action group | | Robotic Arm | `ArmControlFragment` | Arm actions (**Bao Xiaomi Pro only**) | | Failure | `FailedFragment` | Fallback when CoreService connection fails | | Base | `BaseFragment` | Common widgets, back bar, result view | ### 📂 Project Structure ```text RobotSample/ ├── app/ │ ├── libs/ │ │ └── robotservice.jar # OrionStar SDK core jar │ └── src/main/ │ ├── AndroidManifest.xml │ ├── java/com/ainirobot/robotos/ │ │ ├── MainActivity.java # App entry: splash / scheme / connection check │ │ ├── LogTools.java # Logging utility │ │ ├── application/ │ │ │ ├── RobotOSApplication.java # Application entry, connects CoreService and initializes SkillApi │ │ │ ├── ModuleCallback.java # CoreService low-level callbacks │ │ │ └── SpeechCallback.java # SkillApi speech callbacks │ │ ├── audio/ │ │ │ ├── AudioManager.java # Audio capture wrapper │ │ │ └── WavHeader.java # WAV header utility │ │ ├── fragment/ # Feature scene Fragments │ │ ├── maputils/ # Map / coordinate / dialog utilities │ │ └── view/ # Common widgets: BackView / MapView / ResultView │ └── res/ # Resources (layouts, drawables, values, etc.) ├── build.gradle # Project-level build script ├── settings.gradle ├── gradle/wrapper/ ├── LICENSE # Apache License 2.0 └── README.md ``` ### 🛠️ Requirements | Item | Version | | :--- | :--- | | JDK | **1.8 (Java 8)** | | Android Studio | 4.2+ | | Android Gradle Plugin | 7.0.4 | | Gradle | matching AGP 7.0.4 | | Kotlin | 1.7.10 | | compileSdk / targetSdk | 29 | | minSdk | 16 | | Key dependency | `app/libs/robotservice.jar` (OrionStar SDK) | ### 🚀 Getting Started #### 1. Clone ```bash git clone cd RobotSample ``` #### 2. Open in Android Studio Open Android Studio → `Open` → select the project root → wait for Gradle Sync to finish. #### 3. Build and install on the robot Connect the robot to your computer via ADB, then: ```bash ./gradlew installDebug ``` Or click `Run` in Android Studio. #### 4. ⚠️ Launching (Important) > **The app MUST be launched by tapping its icon on the robot's screen.** Do **NOT** start it via the IDE's `Debug` button — doing so bypasses the authorization flow and the app will fail to obtain the `CoreService` API permission, causing all robot APIs to fail. If the splash screen never goes away: this usually means `CoreService` is not connected. Please verify the robot system is healthy and the SDK service is running. `MainActivity#checkInit` retries up to 10 times before showing `FailedFragment`. ### 🔌 Core API Entry Points #### Connect to CoreService Located in `application/RobotOSApplication.java`: ```java RobotApi.getInstance().connectServer(mContext, new ApiListener() { @Override public void handleApiConnected() { // Register ModuleCallback and initialize SkillApi } @Override public void handleApiDisconnected() { /* reconnect */ } @Override public void handleApiDisabled() { /* service disabled */ } }); ``` #### Register speech callback ```java SkillApi mSkillApi = new SkillApi(); mSkillApi.addApiEventListener(apiListener); mSkillApi.connectApi(mContext); // Once connected: mSkillApi.registerCallBack(mSkillCallback); ``` #### Check API availability ```java if (RobotApi.getInstance().isApiConnectedService() && RobotApi.getInstance().isActive()) { // Safe to call robot APIs } ``` ### 🔗 URL Scheme `MainActivity` registers the `jerry://` scheme, allowing other apps or ADB to launch it: ```bash adb shell am start -a android.intent.action.VIEW -d "jerry://main" ``` Supported hosts: | Scheme | Behavior | | :--- | :--- | | `jerry://main` | Open the main menu, equivalent to tapping the Launcher icon | ### ❓ FAQ
Q1: Robot APIs don't respond when I launch via IDE Debug. A: You must launch the app from the robot's screen. Launching via IDE Debug bypasses authorization, so the app cannot obtain the `CoreService` API permission.
Q2: The splash screen never disappears. A: `MainActivity#checkInit` polls `RobotApi#isApiConnectedService` and `isActive`. If not ready after 10 attempts, it switches to `FailedFragment`. Please check: - Whether CoreService is running on the robot - Whether the app has been granted the required permissions - Whether `robotservice.jar` matches the device system version
Q3: Robotic arm calls fail. A: `ArmControlFragment` works **only on Bao Xiaomi Pro**; calls on other models will fail.
Q4: Build fails because robotservice.jar cannot be found. A: Make sure `app/libs/robotservice.jar` exists; if it isn't checked in, obtain it from the OrionStar developer platform. It is referenced in `app/build.gradle` as `implementation files('libs\\robotservice.jar')` (Windows-style path, also recognized on macOS/Linux).
### 📚 References - [OrionStar Developer Docs (Chinese)](https://doc.orionstar.com/) - [OrionStar Developer Docs (English)](https://doc.orionstar.com/en/) - [Android Developer Documentation](https://developer.android.com/) ### 📄 License This project is released under the [Apache License 2.0](LICENSE). ``` Copyright (C) 2017 OrionStar Technology Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 ```