Skip to content

Commit 8e9dbc8

Browse files
committed
doc
1 parent 1e0d180 commit 8e9dbc8

5 files changed

Lines changed: 457 additions & 18 deletions

File tree

‎CMakeLists.txt‎

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
cmake_minimum_required(VERSION 3.16)
22
project(robotcpp VERSION 0.1.0 LANGUAGES C CXX)
33

4-
option(ROBOT_CPP_BUILD_ROBOT_SERVER "Build model-cli and model-server targets" ON)
4+
option(ROBOT_CPP_BUILD_ROBOT_SERVER "Build model-server target" ON)
5+
option(ROBOT_CPP_BUILD_MODEL_CLI "Build model-cli target" OFF)
56
option(ROBOT_CPP_BUILD_ROBOT_CLIENT "Build C++ robot client targets" OFF)
67

78
set(CMAKE_CXX_STANDARD 17)
@@ -155,15 +156,6 @@ if(ROBOT_CPP_BUILD_ROBOT_SERVER)
155156
target_link_libraries(robot_server_core PUBLIC robot_server_common robotcpp)
156157
target_compile_features(robot_server_core PUBLIC cxx_std_17)
157158

158-
add_executable(model-cli src/model-cli.cpp)
159-
set_target_properties(model-cli PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
160-
target_include_directories(model-cli PRIVATE
161-
${CMAKE_CURRENT_SOURCE_DIR}/src
162-
${ROBOTCPP_LLAMA_INCLUDE_DIRS}
163-
)
164-
target_link_libraries(model-cli PRIVATE robotcpp)
165-
target_compile_features(model-cli PRIVATE cxx_std_17)
166-
167159
add_executable(model-server ${ROBOT_SERVER_DIR}/model-server.cpp)
168160
set_target_properties(model-server PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
169161
target_include_directories(model-server PRIVATE
@@ -180,3 +172,14 @@ if(ROBOT_CPP_BUILD_ROBOT_SERVER)
180172
target_link_libraries(smolvla-raw-predict PRIVATE smolvla_runtime)
181173
target_compile_features(smolvla-raw-predict PRIVATE cxx_std_17)
182174
endif()
175+
176+
if(ROBOT_CPP_BUILD_MODEL_CLI)
177+
add_executable(model-cli src/model-cli.cpp)
178+
set_target_properties(model-cli PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
179+
target_include_directories(model-cli PRIVATE
180+
${CMAKE_CURRENT_SOURCE_DIR}/src
181+
${ROBOTCPP_LLAMA_INCLUDE_DIRS}
182+
)
183+
target_link_libraries(model-cli PRIVATE robotcpp)
184+
target_compile_features(model-cli PRIVATE cxx_std_17)
185+
endif()

‎README_zh.md‎

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ Robot.cpp是一个轻量化的on-device机器人模型推理框架,在llama.cp
1919

2020
## 快速使用
2121

22+
```bash
23+
git clone https://github.com/Robot-cpp/robot.cpp
24+
cd robot.cpp
25+
git submodule update --init --recursive
26+
```
27+
2228
我们介绍三类使用案例来帮助你快速了解本仓库:
2329

2430
* model-server的启动,其与最小dummy model-client通信的案例
@@ -106,7 +112,7 @@ bash robot_client/shell/cpp_client_example.sh
106112

107113
### model-server在真机平台上的使用(以SO-101为例)
108114

109-
链接
115+
详见link,亦可参考视频教程(bilibili link)
110116

111117
## 性能
112118

@@ -123,12 +129,12 @@ bash robot_client/shell/cpp_client_example.sh
123129

124130
> `bf16*`:在 Mac上使用 f16 结果替代 bf16,因为当前 Mac对 bf16 的支持不够好。
125131
126-
## Repository Structure
132+
## 仓库架构
127133

128134
关键目录如下:
129135

130136
```text
131-
vla.cpp/
137+
robot.cpp/
132138
├── src/
133139
│ ├── model-cli.cpp # 直接从命令行调用 Model 层的调试 / smoke 入口
134140
│ └── models/
@@ -153,23 +159,36 @@ vla.cpp/
153159
│ └── shell/ # client 编译与运行脚本
154160
├── tools/
155161
│ ├── hf2gguf/ # Hugging Face checkpoint -> GGUF 转换工具
156-
│ │ ├── smolvla/
157-
│ │ └── pi0/
158162
│ └── quant/ # 基于 YAML plan 的 GGUF tensor 选择性量化工具
159163
├── eval/
164+
│ ├── base_platform.py # 真机 platform 的统一基类
160165
│ ├── libero/ # LIBERO 仿真评测
161166
│ └── lerobot_so101/ # SO-101 真机相关脚本与示例
162167
└── third_party/
163168
├── llama.cpp/ # ggml / llama.cpp 后端
164169
└── lerobot/ # LeRobot 相关依赖或参考代码
165170
```
166171

167-
## Contributing
172+
## 扩展与贡献
173+
174+
robot.cpp 欢迎社区贡献新的模型 runtime、平台适配、评测流程、模型转换工具与性能优化。我们希望保持核心推理框架轻量、跨平台、易于复现,同时让不同机器人模型和平台能够以统一接口接入。
175+
176+
如果你希望扩展本项目,可以先阅读以下文档:
168177

169-
如何新增一个新的model
178+
* [如何新增一个新的模型](src/readme_zh.md):在 `src/models/<model_name>` 下实现 runtime,并在 `model_factory.cpp` 中接入 `--model-type`。
179+
* [如何接入一个新的平台](eval/readme_zh.md):基于 `eval/base_platform.py` 实现平台侧 observation 采集、action 下发与可选的 reset/home 流程。
170180

171-
新增模型时,优先在 `src/models/<model_name>` 下实现 runtime,并在 `model_factory.cpp` 接入
181+
欢迎通过 issue 讨论设计,也欢迎提交 PR。对于较大的模型结构、协议变更或平台抽象调整,建议先开 issue 对齐接口边界。
172182

173183
## License
174184

185+
175186
## Acknowledgements
187+
188+
robot.cpp 的设计与实现受益于多个优秀的开源项目:
189+
190+
* [llama.cpp](https://github.com/ggerganov/llama.cpp):提供了轻量化本地推理、GGML/GGUF 生态与跨平台后端基础,本项目在其工程哲学和底层能力上继续构建机器人模型推理框架。
191+
* [LeRobot](https://github.com/huggingface/lerobot):提供了机器人数据、策略训练与真实机器人接入的参考实现,本项目的 SO-101 真机示例与部分评测流程参考了 LeRobot 生态。
192+
* [OpenPI](https://github.com/Physical-Intelligence/openpi):提供了通用机器人策略模型与相关开源实现,本项目的 pi0 相关 runtime、转换与评测工作参考了 OpenPI 的模型设计。
193+
194+
感谢这些项目和社区为机器人学习与端侧推理生态做出的贡献。

‎eval/readme_zh.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
介绍eval/文件夹,然后讲一下如何新增一个新的platform

‎robot_server/README_zh.md‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,42 @@ bash robot_server/shell/launch_robot_server_linux_cuda.sh
6464
```
6565

6666
Windows 的 `.bat` 脚本:
67+
68+
## 方法2:直接下载预编译发布
69+
70+
从release page下载之后,运行以下命令
71+
72+
### 启动 SmolVLA
73+
74+
```bash
75+
./model-server \
76+
--model-type smolvla \
77+
--llm /path/to/smolvla-llm.gguf \
78+
--mmproj /path/to/mmproj-smolvla.gguf \
79+
--state-proj /path/to/state-proj-smolvla.gguf \
80+
--action-expert /path/to/action-expert-smolvla.gguf \
81+
--host 127.0.0.1 \
82+
--port 5555
83+
```
84+
85+
### 启动 pi0
86+
87+
```bash
88+
GGUF_DIR=ckpts/pi0-libero-finetuned-v044/robotcpp-split
89+
MODEL=robotcpp-pi0-libero-finetuned-v044
90+
91+
./model-server \
92+
--model-type pi0 \
93+
--vit "${GGUF_DIR}/${MODEL}.vit.gguf" \
94+
--mmproj "${GGUF_DIR}/${MODEL}.mmproj.gguf" \
95+
--llm "${GGUF_DIR}/${MODEL}.llm.gguf" \
96+
--tokenizer "${GGUF_DIR}/${MODEL}.tokenizer.gguf" \
97+
--state-gguf "${GGUF_DIR}/${MODEL}.state.gguf" \
98+
--action-decoder "${GGUF_DIR}/${MODEL}.action_decoder.gguf" \
99+
--host 127.0.0.1 \
100+
--port 5555
101+
```
102+
103+
其中 `/path/to/...`、`GGUF_DIR` 和 `MODEL` 需要替换为本地实际的 GGUF 模型文件路径。`model-server` 当前仅监听 `127.0.0.1`。
104+
105+
## 方法3:docker

0 commit comments

Comments
 (0)