RMVL  2.4.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
Run In —— 一键进入全功能 RMVL 编译镜像

上一篇教程:通过 gcc 和 CMake 使用 RMVL
下一篇教程:为基于 ARM 的 Linux 系统手动配置交叉编译


基本用法

Run In 是一个用于快速进入 RMVL 编译镜像的工具,它可以根据 RMVL 项目根目录下的 platforms 文件中的 images.yml 文件,自动生成能够运行 Docker 编译镜像的目标。首先需要再 CMake 中开启该功能,使用

cmake -D ENABLE_RUNIN=ON ..

即可开启 Run In 功能。

注解
后文假设使用 Makefile 作为构建工具,其他构建工具也一样使用。

开启 Run In 功能后,在终端输入 make run_in_list 即可列出所有可用的编译镜像。在终端输入 make run_in_<name> 即可运行对应的容器,并 自动 执行以下命令

docker run -it –rm \
  -v /path/to/rmvl:/path/to/rmvl \
  -v /path/to/rmvl/build/docker_images/<name>:/path/to/rmvl/build \
  -w /path/to/rmvl [options] <image> [cmd]

上文的 nameoptionsimagecmd 都需要在 images.yml 的编译镜像 YAML 配置文件中定义,其中

  • name 是必需参数,类型为 str,表示 YAML 文件中定义的名称
  • image 是必需参数,类型为 str,表示 Docker 镜像的完整 URL
  • options 是可选参数,类型为 list[str],表示 Docker 运行时的选项,其中已经包含了 -it 以及 --rm 选项
  • cmd 是可选参数,类型为 str,表示容器内执行的命令,默认为 /bin/bash

例如,YAML 配置文件中包含有

- name: dev
  image: xxx/xxx/dev:v1
  options:
  - –gpus all
  - -v /usr/local/cuda:/usr/local/cuda
  - -e LD_LIBRARY_PATH=/usr/local/cuda/lib64
  cmd: /bin/zsh

的内容,在终端输入 make run_in_dev 时,会执行

docker run -it –rm \
  -v /path/to/rmvl:/path/to/rmvl \
  -v /path/to/rmvl/build/docker_images/dev:/path/to/rmvl/build \
  -w /path/to/rmvl \
  –gpus all \
  -v /usr/local/cuda:/usr/local/cuda \
  -e LD_LIBRARY_PATH=/usr/local/cuda/lib64 \
  xxx/xxx/dev:v1 /bin/zsh

一个最简单的配置项仅包含 nameimage 两个字段,例如

- name: u22
  image: ubuntu:22.04

使用示例

在进入编译镜像前,可以执行

make run_in_list

来查看当前可用的编译镜像,部分编译镜像会提示可用功能、交叉编译支持等信息,例如

3. run_in_tlt507: Tronlong T507 的 EtherCAT 环境支持,请使用 ~/LinuxSDK/toolchain.cmake 进行交叉编译
image: registry.cn-hangzhou.aliyuncs.com/cv-rmvl/ethercat:latest
options: -e LANG=C.UTF-8
cmd: /bin/bash

然后可以使用

make run_in_tlt507

来进入该编译镜像,进入后即可使用提示的交叉编译工具链文件进行交叉编译,例如

cmake -D CMAKE_TOOLCHAIN_FILE=~/LinuxSDK/toolchain.cmake ..
make

即可完成针对 Tronlong T507 平台的交叉编译,构建完成后,生成的文件会保存在宿主机的 build/docker_images/tlt507 目录下,可自行查看。