ISAAC Sim 4. 配置Isaac ROS Dev 和 Isaac Perceptor

续写该topic的原因是通过ISAAC Sim使用Isaac Perceptor Camera-based Perception with Isaac Perceptor in Isaac Sim — isaac_ros_docs documentation

Isaac Perceptor 需要配置Isaac ros

Developer Environment Setup — isaac_ros_docs documentation

Isaac ros 需要使用docker和toolkit

Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.15.0 documentation

本文的主体流程按照Camera-based Perception with Isaac Perceptor in Isaac Sim — isaac_ros_docs documentation

1. 安装NVIDIA Container Toolkit

1. 配置生产存储库

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

2. 从存储库更新包列表

sudo apt-get update

3. 安装toolkit

sudo apt-get install -y nvidia-container-toolkit

 4. 配置nvidia-ctk

配置nvidia-ctk需要具有docker或其他环境。是docker而不是docker-desktop。

卸载docker-desktop后安装docker , 参考 https://docs.docker.com/engine/install/ubuntu/

(卸载docker或许也可以)

安装完成后运行:

sudo nvidia-ctk runtime configure --runtime=docker

5. 应用修改

sudo systemctl restart docker

6. Run a sample CUDA container

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

出现问题是4070ti super的问题,待后续检查。 

2.  配置NVIDIA Isaac ROS

 首先参考Developer Environment Setup — isaac_ros_docs documentation,推荐使用docker环境。

1. clone 对应的包

git clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git

 相关介绍文档:

Isaac ROS Common — isaac_ros_docs documentation

NVIDIA Isaac ROS · GitHub

2. 参考Isaac ROS Dev — isaac_ros_docs documentation编译docker image。

当前使用ubuntu 20.04 foxy。测试开发环境:

$PATH_TO_ISAAC_ROS_COMMON/scripts/run_dev.sh -d $PATH_TO_ROS_WORKSPACE

使用该命令时,会先build出isaac ros 使用的humble docker环境。

./run_dev.sh -d ~/ROS2_WS/isaac_ros_ws

 运行以上命令出现错误:

需要添加用户组:

sudo usermod -aG docker $USER

之后刷新group:

newgrp docker

再次运行测试程序,可以进行编译。 

等待编译完成:

 编译成功后会自动进入container,可以使用exit退出container.

附:Docker命令

检查 Docker 磁盘使用情况:

docker system df

 列出所有 Docker 镜像,包括悬空镜像:

docker images -a

 删除未使用的 Docker 镜像、容器和网络:

docker system prune

在这里不建议删除中途创建的镜像,之后添加传感器时还会用到。

3. 测试 NVIDIA Isaac ROS

Isaac ROS Dev — isaac_ros_docs documentation

3.1. 测试run_dev.sh

“如果您之前已经构建了基础映像,并且不想run_dev.sh尝试重建基础映像并执行任何可能需要互联网连接的操作,则可以使用参数-b/--skip_image_build进行离线运行。“

./run_dev.sh -d ~/ROS2_WS/isaac_ros_ws -b --skip_image_build

第二天运行时报错并未找到image。

重新编译后启动,不挂载工作区的情况:

挂载工作区:

注意,在run_dev.sh中,最后会使用--rm参数运行container,这意味着在使用exit退出container后,所有的操作将会被消除。

docker run -it --rm \
    --privileged \
    --network host \
    ${DOCKER_ARGS[@]} \
    -v $ISAAC_ROS_DEV_DIR:/workspaces/isaac_ros-dev \
    -v /etc/localtime:/etc/localtime:ro \
    --name "$CONTAINER_NAME" \
    --runtime nvidia \
    --user="admin" \
    --entrypoint /usr/local/bin/scripts/workspace-entrypoint.sh \
    --workdir /workspaces/isaac_ros-dev \
    $BASE_NAME \
    /bin/bash

3.2. 测试docker_deploy.sh

脚本docker_deploy.sh会将 ROS 工作区目录、其他目录、tarball 和/或要安装的 Debian 打包到基础映像上。

有待后续测试。

4. 配置 Isaac Perceptor

 此处继续参考Developer Environment Setup — isaac_ros_docs documentation进行了几个配置:

sudo systemctl daemon-reload && sudo systemctl restart docker

安装Git LFS来拉取所有大文件:

sudo apt-get install git-lfs
git lfs install --skip-repo

向bashrc 添加

export ISAAC_ROS_WS=~/ROS2_WS/isaac_ros_ws/

随后配置Isaac Apt 存储库。由于Isaac Apt 存储库已在 Isaac ROS Dev Docker 容器中配置,故不执行该步骤。

4.1. 可视化设置

参考安装Foxglove Studio并安装其他扩展。

Foxglove Visualization — isaac_ros_docs documentation

安装需要使用的传感器依赖项 RealSense 435i,在ROS2_WS/isaac_ros_ws/src clone

Isaac ROS RealSense Setup — isaac_ros_docs documentation

cd ${ISAAC_ROS_WS}/src
git clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git
git clone https://github.com/IntelRealSense/realsense-ros.git -b 4.51.1

配置创建的容器以包含librealsense。在目录中isaac_ros_common/scripts为realsense2-camera创建配置文件:.isaac_ros_common.config。

cd ${ISAAC_ROS_WS}/src/isaac_ros_common/scripts && \
touch .isaac_ros_common-config && \
echo CONFIG_IMAGE_KEY=ros2_humble.realsense > .isaac_ros_common-config

 注意,此处文档的路径描述与前文中发生了变化,isaac_ros_common和realsense在同一个工作区内。注意下一步启动 Docker 容器之前插入 RealSense 摄像头。

启动 Docker 容器:

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && ./scripts/run_dev.sh -d ${ISAAC_ROS_WS}

出现报错:

进入之前编译的基础镜像搜索发现该版本无法查找到。

apt-cache policy ros-humble-realsense2-camera=4.54.1-1jammy.20240517.191635

 当前可以找到版本4.55.1-1jammy.20240530.085105

 更改Dockerfile.realsense中的

ARG REALSENSE2_CAMERA_ROS_DEB_VERSION=4.55.1-1jammy.20240530.085105

随后可以编译成功。接着在自动进入的container中编译包:

cd ${ISAAC_ROS_WS} && \
colcon build --symlink-install --packages-up-to-regex realsense*

即可启动realsense-viewer进行预览。

Rosbag 可视化

进入docker环境

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && ./scripts/run_dev.sh -d ${ISAAC_ROS_WS} -b --skip_image_build

 安装预构建的 Debian 包

sudo apt-get install -y ros-humble-isaac-ros-data-replayer

 转换 rosbag。由于此处文档没有注明具体的rosbag和input,output文件路径,暂时无法测试Foxglove Studio的预览。此处跳过。

ros2 run isaac_ros_data_replayer foxglove_converter.py <input> <output>

4.2. Isaac Sim 设置

文档中暂时没有发现明确的对上述步骤中docker编译镜像所对应的使用描述,目前参考:

Isaac Sim Setup — isaac_ros_docs documentation中对于 “按照运行本机 ROS 的说明确保安装了 ROS 2 和所需的软件包,以便在 Omniverse Isaac Sim 中成功启用 ROS 2 Bridge“ 的描述在ROS and ROS 2 Installation — Omniverse IsaacSim latest documentation中对于 “在 Docker 容器中运行 ROS“ 中的描述在进行配置。

该部分暂时存疑!!!

安装Rocker:

GitHub - osrf/rocker: A tool to run docker containers with overlays and convenient options for things like GUIs etc.

安装rocker的前提是安装好了docker和NVIDIA toolkit。现在开始安装:

sudo apt-get install python3-rocker

先检查目前的docker conatiner:

docker ps

使用 Rocker 启动 ROS 容器rocker_isaac_sim_container: 

rocker --nvidia --x11 --privileged --network host  --name rocker_isaac_sim_container osrf/ros:humble-desktop-full-jammy

获得Executing command:

docker run --rm -it --name rocker_isaac_sim_container  --network host   --gpus all --privileged  -e DISPLAY -e TERM   -e QT_X11_NO_MITSHM=1   -e XAUTHORITY=/tmp/.dockerawfe3mg_.xauth -v /tmp/.dockerawfe3mg_.xauth:/tmp/.dockerawfe3mg_.xauth   -v /tmp/.X11-unix:/tmp/.X11-unix   -v /etc/localtime:/etc/localtime:ro  2492e002b50b

 修改--rm 命令并运行container,在本机中clone GitHub - isaac-sim/IsaacSim-ros_workspaces: Isaac Sim ROS Workspaces

新建一个terminal将其中的humble_ws发送到运行的container中:

docker cp humble_ws rocker_isaac_sim_container:/root/humble_ws

进入container:

docker exec -it rocker_isaac_sim_container bash
source /opt/ros/humble/setup.sh
cd /root/humble_ws
apt-get update
apt-get install <package name humble version>
rosdep install --from-paths src --ignore-src --rosdistro=humble -y
source /opt/ros/humble/setup.sh
colcon build
source install/local_setup.bash

完成测试docker创建

 
ISAAC SIM设定ROS2 bridge

由于使用的是docker环境中的ros2 humble,而本机native安装的只有noetic和foxy,所以参考ROS and ROS 2 Installation — Omniverse IsaacSim latest documentation中的“无需系统级安装即可运行 ROS“和“启用 ROS Bridge 扩展”部分内容。

首先在本机设定bashrc:

# >>> docker humble and isaac sim initialize >>>
export ISAAC_ROS_COMMON=~/NVIDIA_Omniverse/ISAAC_ROS/isaac_ros_common
export ISAAC_ROS_WS=~/ROS2_WS/isaac_ros_ws

export isaac_sim_package_path=$HOME/.local/share/ov/pkg/isaac_sim-2023.1.1
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$isaac_sim_package_path/exts/omni.isaac.ros2_bridge/humble/lib

# <<< docker humble and isaac sim initialize <<<

由于启用 ROS Bridge 扩展需要在所有的运行ros2的终端中运行以下代码,所以向本机bashrc添加:

export FASTRTPS_DEFAULT_PROFILES_FILE=~/NVIDIA_Omniverse/ISAAC_ROS/IsaacSim-ros_workspaces/humble_ws/fastdds.xml

 同时在isaac sim中修改如下:

ISAAC SIM向ros2发送clock测试信号

点击open in terminal 启动terminal,运行命令 $isaac_sim_package_path/isaac-sim.sh

在ISAAC SIM中确认ros2_bridge正常运行,随后传建测试示例:

点击运行以向ros2发送clock测试信号。

在container中运行监听clock测试信号 

在container中运行(这一步不运行好像也可以

export FASTRTPS_DEFAULT_PROFILES_FILE=root/humble_ws/fastdds.xml

随后启动

cd /root/humble_ws
source /opt/ros/humble/setup.sh
source install/local_setup.bash
ros2 topic echo /clock

 完成向本机sim和docker环境的信号传输。

到此,确认了sim和docker的通行。接下来对最开始创建的isaac_ros_dev-x86_64镜像的测试。

5. 测试 Isaac Perceptor

首先在${ISAAC_ROS_WS}/src中clone

git clone https://github.com/NVIDIA-ISAAC-ROS/nova_carter.git

进入container安装用于rosdep安装软件包的依赖项:

sudo apt update
rosdep update
rosdep install -i -r --from-paths ${ISAAC_ROS_WS}/src/nova_carter/nova_carter_bringup/ --rosdistro humble -y
sudo apt-get install -y ros-humble-isaac-ros-peoplesemseg-models-install ros-humble-isaac-ros-ess-models-install
source /opt/ros/humble/setup.bash
    
ros2 run isaac_ros_ess_models_install install_ess_models.sh --eula
ros2 run isaac_ros_peoplesemseg_models_install install_peoplesemsegnet_vanilla.sh --eula
ros2 run isaac_ros_peoplesemseg_models_install install_peoplesemsegnet_shuffleseg.sh --eula

 在Docker 容器中构建 ROS 包

colcon build --symlink-install --packages-up-to nova_carter_bringup  
source install/setup.bash

开启sim测试场景。启动terminal,运行./isaac-sim.sh,在以下目录加载场景 

localhost/NVIDIA/Assets/Isaac/2023.1.1/Isaac/Samples/NvBlox/perceptor_sample_scene.usd

点击运行后sim会启动与ros的连接。目前还在测试

容器内,启动示例:

source /opt/ros/humble/setup.bash
source /workspaces/isaac_ros-dev/install/setup.bash
ros2 launch nova_carter_bringup navigation.launch.py \
mode:=simulation run_rviz:=True

 

  • 在 RViz

    1. 点击2D 目标姿势按钮。您应该看到机器人使用基于摄像头的 3D 感知Isaac Perceptor生成的代价地图向目标位置移动。

可以使用以下代码进入realsense docker

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && ./scripts/run_dev.sh -d ${ISAAC_ROS_WS} -b --skip_image_build
cd ${ISAAC_ROS_COMMON} && ./scripts/run_dev.sh -d ${ISAAC_ROS_WS} -b --skip_image_build

或使用norm进入container,不清除。

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && ./scripts/run_dev_norm.sh -d ${ISAAC_ROS_WS} -b --skip_image_build

启动一个已有的容器:

docker start rocker_isaac_sim_container

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值