具身智能开发系列:1 安装Issac Lab
本地安装总是报错
参考官网说明,使用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 卷里,即使容器删掉了,数据仍然保留。
- 持久化数据
这些卷把容器内的数据保存在 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 中运行仿真并将仿真时间记录到日志文件。
主要功能:
- 使用 AppLauncher 启动 Isaac Sim 应用
- 创建一个 SimulationContext
- 设置相机视角
- 重置仿真并开始循环仿真
- 每步写入当前仿真时间到 logs/docker_tutorial/log.txt
- 持续运行直到仿真应用关闭.
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)