为快速部署并使用 RoboDriver-Server,以下为 外部使用者提供专属部署指南,智源研究院内部开发者请切换到baai分支,按需选择操作即可高效完成配置:
具身一体化平台:https://roboxstudio.baai.ac.cn/
首先拉取 RoboDriver-Server 源码至本地:
git clone https://github.com/FlagOpen/RoboDriver-Server.git
cd ./RoboDriver-Server
git checkout main
cd ./setup
bash setup.bash运行脚本后,按提示完成 4 项核心操作,其余步骤将自动执行:
- 输入机器人类型(支持 aloha/pika/realman 等预定义类型,也可自定义);
- 确认或输入当前用户名(将自动同步到数据集存储路径
/home/$CURRENT_USER/DoRobot/dataset/); - 选择是否安装 Docker:
- 安装 Docker:选择从 Docker Hub 拉取镜像,并启动 RoboDriver-Server 容器;
- 不安装 Docker:需后续手动完成运行环境部署(详见下方「环境部署」步骤);
- 注意:RoboDriver-Server 源码默认存放于
/opt/目录,项目目录结构如下:
├── arm/ # arm架构相关文件
│ ├── docker/ # Docker配置目录
│ ├── environment.yml # 环境配置文件
│ ├── requirements.txt # 依赖清单
│ ├── setup.yaml # 服务配置文件
│ ├── start_server_docker.sh # 容器启动脚本
│ └── operating_platform_server_test.py # 服务启动入口
├── logtail/ # 日志相关配置
├── setup/ # 安装脚本目录
├── ui/ # 前端相关资源
├── update/ # 版本更新工具
└── x86/ # x86架构相关文件(结构同arm目录)
安装完成后,通过以下地址直接访问本地采集平台:
http://localhost:5805/hmi/
- 若RoboDriver提示
127.0.0.1:8088连接失败:RoboDriver-Server 服务未启动,需重新执行启动命令; - 访问
http://localhost:5805/hmi/失败:重启 Nginx 服务,命令:orsudo systemctl restart nginx
sudo systemctl start nginx - 数据集路径权限问题:重新设置目录权限:
sudo chown -R $USER:$USER /home/$CURRENT_USER/DoRobot/dataset/ sudo chmod -R 777 /home/$CURRENT_USER/DoRobot/dataset/
若选择不安装 Docker,需手动部署运行环境,步骤如下:
- 基于 Conda 创建并激活虚拟环境(支持 Python 3.10/3.11):
conda create -n robodriverserver python=3.11 # 以Python 3.11为例 conda activate robodriverserver - 进入对应架构的服务目录:
# x86架构 cd /opt/RoboDriver-Server/x86/
# 或 arm架构 cd /opt/RoboDriver-Server/arm/ - 安装依赖并启动服务:
pip install -r requirements.txt # 安装Python依赖 python operating_platform_server_test.py # 启动RoboDriver-Server
若通过一键容器部署,需调试服务可按以下步骤操作:
- 查看并停止当前容器:
docker ps -a # 查看容器状态(容器名:robodriver_server) docker stop robodriver_server && docker rm robodriver_server # 停止并删除容器
- 进入对应架构目录,启动调试容器:
# x86架构 cd /opt/RoboDriver-Server/x86/
# 或 arm架构 cd /opt/RoboDriver-Server/arm/bash debug_server_docker.sh # 启动调试容器并进入 - 容器内启动服务并查看日志:
python operating_platform_server_test.py # 查看服务实时输出 - 调试完成后退出并重启正式服务:
exit # 退出调试容器(按提示选择N删除容器)
bash start_server_docker.sh # 重启正式服务容器 - 日志查看路径:
/opt/RoboDriver-log/log/server/
采集数据的上传规则与视频编码可通过 setup.yaml 配置,核心参数说明如下:
# 机器人类型配置
robot_type: franka # 已通过脚本自动设置,可手动修改
# 服务端地址配置
device_server_ip: http://localhost:8088 # 本地服务地址配置
device_server_port: 8088 # 端口号
# 上传开关与模式
is_upload: True # 是否开启自动上传
upload_immadiately_gpu: False # 开启GPU实时编码上传(需NVIDIA显卡)
is_collect_upload_at_sametime: False # 采集与上传异步执行(默认False,开启GPU实时编码上传时,需改成True)
# 上传类型与时间(外部用户仅支持ks3)
upload_type: ks3 # 固定为ks3,无需修改
upload_time: '20:00' # 定时上传时间(仅is_upload=True时生效)-
当RoboDriver
use_video=False时,采集的相机数据将以图片形式存储;触发上传操作后,系统会自动将图片编码为视频文件,并存入指定的video目录。 -
若需实现采集、编码、上传同步完成(实时处理流程),需同时满足以下所有条件:
- 硬件要求:主机必须配备 NVIDIA 显卡(需支持 NVENC 视频编码功能,主流 Kepler 架构及以上显卡均支持);
- 依赖安装:需在主机安装 NVIDIA 容器运行时依赖
nvidia-container-runtime;- 安装方式(Ubuntu 系统示例):
- 配置 NVIDIA 软件源:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
- 更新并安装:
sudo apt update && sudo apt install -y nvidia-container-runtime - 重启 Docker 服务使配置生效:
sudo systemctl restart docker
- 配置 NVIDIA 软件源:
- 安装方式(Ubuntu 系统示例):
- 配置要求:在配置文件中设置
upload_immadiately_gpu: True并且is_collect_upload_at_sametime: True; - 启动方式:通过
start_server_docker_gpu.sh脚本启动容器; - 关键配置修正:
start_server_docker_gpu.sh脚本中存在 NVIDIA 编码库的挂载配置,需根据主机实际安装的 NVIDIA 驱动版本修改文件路径中的版本号:-
原始配置示例:
-v /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.535.230.02:/usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1 \
-
修改说明:将路径中的
535.230.02替换为主机实际的 NVIDIA 驱动对应版本号(需确保主机/usr/lib/x86_64-linux-gnu/目录下存在libnvidia-encode.so.XXX.XX格式的文件); -
版本查询方法:在主机终端执行命令
nvidia-smi,输出结果中「Driver Version」字段对应的数值即为需替换的版本号(例如驱动版本为 550.54.14,则替换为libnvidia-encode.so.550.54.14)。 -
补充说明
-
若未安装
nvidia-container-runtime,容器将无法识别主机 GPU 及挂载的编码库,同步处理流程会直接失效,需优先完成该依赖安装; -
若未正确匹配 NVIDIA 驱动版本号,会导致容器内无法加载
libnvidia-encode.so.1编码库,进而出现编码失败、程序报错或同步流程卡死; -
若主机无 NVIDIA 显卡、不支持 NVENC 编码,或未按上述要求安装依赖/配置/启动,将无法使用同步处理流程,仅支持「先采集图片→触发上传时编码视频」的异步模式(即
use_video=False对应的基础功能);
-
