deploy是为了在仿真环境中部署训练好的模型,先构建docker环境,然后在docker环境中部署

总体部署流程参考官网的readme:
https://gitee.com/leju-robot/kuavo-rl-opensource/blob/master/kuavo-robot-deploy/

建议仔细阅读每一部分的reademe和附录11了解docker文件夹下各文件的作用

目录

1、安装docker

2、拉取镜像

3、下载readme中的镜像文件kuavo_mpc_wbc_img:0.3

4、创建容器kuavo_container并编译humanoid_controllers

1)c和cxx路径设置问题

2)glfw3Config.camke找不到

3)liblcm.so找不到

5、构建镜像kuavo_rl_img:0.1(及报错解决)

6、创建kuavo_rl_container容器

7、按照教程在容器内部进行编译(及报错解决)

9、warning暂且搁置(不影响编译但不确定是否对之后的程序有影响)

10、编译成功之后试运行(失败)

11附、deploy/docker中各文件的作用


1、安装docker

参考我的上一篇博客:https://blog.csdn.net/zhangxr2020/article/details/154729984?spm=1001.2014.3001.5501

2、拉取镜像

docker pull osrf/ros:noetic-desktop-full

拉取中断,检查自己的镜像源(见参考链接),并打开代理(我的clash verge用的tun模式)重新拉取:

拉取成功,进行下一步,构建镜像文件

3、下载readme中的镜像文件kuavo_mpc_wbc_img:0.3

下载在deploy目录中,可以新建一个,也可以放到docker文件夹下,load到docker中

sudo docker load -i kuavo_mpc_wbc_img.tar

查看目前已存镜像(如果缺少权限,前面加sudo)

docker images

此时完成镜像kuavo_mpc_wbc_img:0.3,但是这个可能不是关于rl的镜像,但是下载链接中没有rl的镜像,查看文件后打算构建一个用于强化学习的镜像文件,见下节

4、创建容器kuavo_container并编译humanoid_controllers

运行命令创建docker容器:
 

./run_rl_container.sh

进入容器之后进入主目录  cd ~/kuabo_ws

export ROBOT_VERSION=42
source installed/setup.zsh
catkin build humanoid_controllers

报错及解决:

1)c和cxx路径设置问题

# 检查 gcc 是否安装
which gcc
#/usr/bin/gcc

# 检查 g++ 是否安装
which g++
#/usr/bin/g++

unset CC
unset CXX
rm -rf build devel
catkin build humanoid_controllers

2)glfw3Config.camke找不到

apt-get install -y libglfw3-dev
rm -rf build devel  
catkin build humanoid_controllers

3)liblcm.so找不到

# 手动配置lcm
cd /tmp
git clone https://github.com/lcm-proj/lcm.git
cd lcm

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
make install

cmake报错:

........有兴趣的同学继续摸索吧,我到这儿累了,全是bug服了

5、构建镜像kuavo_rl_img:0.1(及报错解决)

./build_rl_img.sh

解决:打开Dockerfile.RL,将报错的107行,https:改为http:

同理:打开Dockerfile.RL,将报错的178行,https:改为http:

检查过程:检查网络vpn是否存在问题--vpn没问题

构建kuavo_rl_img:0.1 成功!

检查镜像文件:成功!

6、创建kuavo_rl_container容器

chmod +x run_rl_container.sh
./run_rl_container.sh

解决:确保 Docker 能识别 GPU

# 添加 NVIDIA 仓库密钥和源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安装工具包
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

# 重启 Docker 服务使配置生效
sudo systemctl restart docker

安装并重启docker服务之后重新运行,容器创建成功!

7、按照教程在容器内部进行编译(及报错解决)

export ROBOT_VERSION=42
source installed/setup.zsh
catkin build humanoid_controllers

提示报错:

解决报错:

1、使用apt包管理器安装jsoncpp

sudo apt-get install -y libjsoncpp-dev

2、查找系统中是否存在json.h

打开/root/kuavo_ws/src/mujoco_cpp/CMakeLists.txt文件,搜索 include_directories 

将/usr/include/jsoncpp 加进去

然后编译,注意在~/kuavo_ws下编译

catkin build mujoco_cpp

然后重新编译 catkin build humanoid_controllers

catkin build humanoid_controllers

又报错:

功能包 humanoid_interface 在其配置文件中,指定了一个不存在的头文件包含目录

打开/installed/share/humanoid_interface/cmake/humanoid_interfaceConfig.camke

找到94和96行,删掉/opt/ros/noetic/lib/x86_64-linux-gpu/......../include

同理,打开/installed/share/humanoid_wbc/cmake/humanoid_wbcConfig.camke

找到94和96行,删掉/opt/ros/noetic/lib/x86_64-linux-gpu/......../include

重新编译,编译成功!

9、warning暂且搁置(不影响编译但不确定是否对之后的程序有影响)

10、编译成功之后试运行(失败)

source devel/setup.zsh  #或者source devel/setup.bash
```仿真
roslaunch humanoid_controllers load_kuavo_mujoco_sim.launch # 启动rl控制器、wbc、仿真器
```实物
roslaunch humanoid_controllers load_kuavo_real.launch cali:=true cali_arm:=true # 可以选择cali:=true 进行标定,cali_arm:=true 进行机械臂标定。

ok,很好失败了

这个问题,找了很久的,最后发现是动态链接库中的程序报错,没办法解决,踩雷经验就到这里,如果有人解决了,非常真诚的恳求解决方法

11附、deploy/docker中各文件的作用

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐