本地安装总是报错

参考官网说明,使用Conda等构建Python虚拟环境安装,总是报错,网页搜索与AI辅助均未成功完成安装。这个路径不太容易打通。于是考虑用Docker镜像。首先考虑本地构建镜像,如下

部署工具代码、配置

文件夹IsaacLab/docker下的如下文件,
Dockerfile.base:基于 Isaac Sim 镜像构建 Isaac Lab 基础镜像的Dockerfile
Dockerfile.ros2:在base基础上添加ROS2-Humble软件
docker-compose.yaml:容器定义、挂载目录、卷、环境变量
.env.base:默认环境变量
.env.ros2 加ros2的镜像的环境变量
container.py:封装 docker compose 的常用命令
docker-compose.cloudxr-runtime.patch.yaml:CloudXR Runtime 扩展
.env.cloudxr-runtime:CloudXR 环境变量配置

docker/Dockerfile.base 调用 isaaclab.sh --install

while [[ $# -gt 0 ]]; do
    # read the key
    case "$1" in
        -i|--install)
            # install system dependencies first
            install_system_deps
            # install the python packages in IsaacLab/source directory
            echo "[INFO] Installing extensions inside the Isaac Lab repository..."
            python_exe=$(extract_python_exe)
            pip_command=$(extract_pip_command)
            pip_uninstall_command=$(extract_pip_uninstall_command)

            # force install setuptools <82.0.0 to avoid pkg_resources issues
            echo "[INFO] Installing setuptools<82.0.0..."
            ${pip_command} "setuptools<82.0.0"

            # if on ARM arch, temporarily clear LD_PRELOAD
            # LD_PRELOAD is restored below, after installation
            begin_arm_install_sandbox

            # install pytorch (version based on arch)
            ensure_cuda_torch
            # recursively look into directories and install them
            # this does not check dependencies between extensions
            export -f extract_python_exe
            export -f extract_pip_command
            export -f extract_pip_uninstall_command
            export -f install_isaaclab_extension
            # source directory
            find -L "${ISAACLAB_PATH}/source" -mindepth 1 -maxdepth 1 -type d -exec bash -c 'install_isaaclab_extension "{}"' \;
            # install the python packages for supported reinforcement learning frameworks
            echo "[INFO] Installing extra requirements such as learning frameworks..."
            # check if specified which rl-framework to install
            if [ -z "$2" ]; then
                echo "[INFO] Installing all rl-frameworks..."
                framework_name="all"
            elif [ "$2" = "none" ]; then
                echo "[INFO] No rl-framework will be installed."
                framework_name="none"
                shift # past argument
            else
                echo "[INFO] Installing rl-framework: $2"
                framework_name=$2
                shift # past argument
            fi
            # install the learning frameworks specified
            ${pip_command} -e "${ISAACLAB_PATH}/source/isaaclab_rl[${framework_name}]"
            ${pip_command} -e "${ISAACLAB_PATH}/source/isaaclab_mimic[${framework_name}]"

            # in some rare cases, torch might not be installed properly by setup.py, add one more check here
            # can prevent that from happening
            ensure_cuda_torch

            # restore LD_PRELOAD if we cleared it
            end_arm_install_sandbox

            # check if we are inside a docker container or are building a docker image
            # in that case don't setup VSCode since it asks for EULA agreement which triggers user interaction
            if is_docker; then
                echo "[INFO] Running inside a docker container. Skipping VSCode settings setup."
                echo "[INFO] To setup VSCode settings, run 'isaaclab -v'."
            else
                # update the vscode settings
                update_vscode_settings
            fi

             # unset local variables
            unset extract_python_exe
            unset extract_pip_command
            unset extract_pip_uninstall_command
            unset install_isaaclab_extension
            shift # past argument
            ;;

容器挂载的卷

文件docker-compose.yaml设置共享卷,这些卷把容器内的数据保存在 Docker 卷里,即使容器删掉了,数据仍然保留。

  1. 持久化数据
    这些卷把容器内的数据保存在 Docker 卷里,即使容器删掉了,数据仍然保留。

isaac-cache-kit / isaac-cache-ov / isaac-cache-pip / isaac-cache-gl / isaac-cache-compute
保存 Isaac Sim 的缓存文件,避免每次重启重新下载或重新编译
isaac-logs / isaac-carb-logs
保存 Isaac Sim 和 Carb 的日志
isaac-data / isaac-docs
保存 Omniverse 运行时数据和文档
isaac-lab-docs / isaac-lab-logs / isaac-lab-data
保存 Isaac Lab 的文档构建产物、日志和用户数据
2. 防止权限问题
isaac-lab-docs、isaac-lab-logs、isaac-lab-data 用卷映射,避免容器内 root 用户生成的文件直接落到主机目录,减少权限冲突。

部署操作

构建基础镜像,并进入镜像,

python docker/container.py start
python docker/container.py enter

或者启用增加ROS2的镜像,

python docker/container.py start ros2
python docker/container.py stop ros2

也可加参数做镜像名后缀,

# start base container named isaac-lab-base-custom
./docker/container.py start base --suffix custom
# stop base container named isaac-lab-base-custom
./docker/container.py stop base --suffix custom
# start ros2 container named isaac-lab-ros2-custom
./docker/container.py start ros2 --suffix custom
# stop ros2 container named isaac-lab-ros2-custom
./docker/container.py stop ros2 --suffix custom

实际构建镜像中报错,软件版本有矛盾,导致上述思路暂未成功。

用构建好的镜像

实在无解,只得选用构建好的镜像。官网参考命令缺少参数,需增加--runtime=nvidia

docker run --runtime=nvidia --name isaac-lab --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
   -e "PRIVACY_CONSENT=Y" \
   -e NVIDIA_DRIVER_CAPABILITIES=all \
   -v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
   -v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
   -v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
   -v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
   -v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
   -v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
   -v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
   -v ~/docker/isaac-sim/documents:/root/Documents:rw \
   nvcr.io/nvidia/isaac-lab:2.3.2

测试,

./isaaclab.sh -p scripts/tutorials/00_sim/log_time.py --headless

这个脚本用于演示在 Isaac Sim 中运行仿真并将仿真时间记录到日志文件。

主要功能:

  1. 使用 AppLauncher 启动 Isaac Sim 应用
  2. 创建一个 SimulationContext
  3. 设置相机视角
  4. 重置仿真并开始循环仿真
  5. 每步写入当前仿真时间到 logs/docker_tutorial/log.txt
  6. 持续运行直到仿真应用关闭.
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐