知之者 不如好之者, 好之者 不如樂之者

기계처럼 살지 말고, 즐기는 인간이 되자

Project/ROS2 + CV + Robot (2023.12~2024.02)

ROS2 기반 Isaac ROS CenterPose Example 수행하기

코방코 2024. 2. 20. 13:33
728x90

 

 

Categorized Object Pose Estimation 이 가능한 CenterPose를 ROS2에서 수행시키기 위해,

NVIDIA에서 이미 만들어둔 Isaac ROS 기반의 CenterPose를 패키지로 붙여

Depth Camera로 Real Time 분석이 가능하도록 하고자 하였습니다.

이전에도 수행했었지만, 이 때는 로컬 환경에서 Python OpenCV를 통해 수행한 것이었고

이번에는 ROS2에 붙이는 것에 초점을 맞췄습니다.

 

CenterPose와 Example에 대한 자세한 내용은 이전 글들을 참조해주시기 바랍니다.

 

[논문 리뷰] CenterPose - Single-Stage Keypoint-Based Category-Level Object Pose Estimation from an RGB Image (2022 ICRA)

최근 Object Pose Estimation 에 관해 연구를 하게 되어 작성하는 글입니다. 2022년 Nvidia Lab과 Georgia Institute of Technology 에서 ICRA에 게제한 논문이며, CAD 모델 없이 Monocular RGB input 만으로 Category Object의 Pose

cobang.tistory.com

 

 

CenterPose 환경 구성 및 shoes 예제 수행

Object Pose Optimization 방식 중 하나인 CenterPose 예제 구동을 위해 환경 구성 및 구현을 수행하는 글입니다. CenterPose는 Category에 존재하는 Monocular RGB Input Source 만으로도 Object의 3D Object Bounding Box를 Outpu

cobang.tistory.com

 

해당 git 을 이용하여 Example을 수행해보도록 하겠습니다.

 

GitHub - NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation: Deep learned, hardware-accelerated 3D object pose estimation

Deep learned, hardware-accelerated 3D object pose estimation - NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation

github.com

 

 

isaac_ros_centerpose — isaac_ros_docs documentation

© Copyright 2023, NVIDIA. Last updated on Feb 08, 2024.

nvidia-isaac-ros.github.io

 

먼저 NVIDIA docker 환경을 내려받아야 합니다.

docker가 설치되어있지 않다면 아래 글을 참조하여 설치하시기 바랍니다.

 

docker 설치 + NVIDIA docker 설치 + docker 사용법

Docker ? Docker는 컨테이너화를 사용하는 오픈 소스 플랫폼으로, 애플리케이션을 가볍고, 격리된 환경인 컨테이너 내에서 실행할 수 있게 해줍니다. 컨테이너는 운영 체제(OS) 레벨의 가상화를 제공

cobang.tistory.com

 

나중에 UR3e와 Intel realsense Depth Camera와 같은 Host 장치를 연결할 것을 염두하여

X서버를 열고 이를 통해 소켓 통신을 수행시킬 것입니다.

일단은 git 을 받고 docker를 다운받아줍니다.

xhost +local:root

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

cd isaac_ros_common

./scripts/run_dev.sh

 

이 때 저는 docker 환경이 다운로드 되고, 실행될 때 오류가 발생했습니다.

따라서 다운로드한 docker container를 새로 활성화하고 다음 과정을 수행해줬습니다.

docker 컨테이너가 host 장치의 자원을 이용하고 네트워킹이 가능하도록 설정하였습니다.

docker run --gpus all -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -it --privileged --net=host isaac_ros_dev-x86_64:latest


cd /workspace

mkdir isaac_ros-dev

cd isaac_ros-dev

mkdir src

cd src

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

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

cd isaac_ros_pose_estimation

git lfs pull -X "" -I "resources/rosbags/"


sudo apt-get update

sudo apt-get install -y ros-humble-isaac-ros-dope ros-humble-isaac-ros-tensor-rt ros-humble-isaac-ros-dnn-image-encoder


mkdir -p /tmp/models/centerpose_shoe/1

cp /workspace/isaac_ros-dev/src/isaac_ros_pose_estimation/isaac_ros_centerpose/test/models/centerpose_shoe.onnx /tmp/models/centerpose_shoe/1/model.onnx

cp /workspace/isaac_ros-dev/src/isaac_ros_pose_estimation/isaac_ros_centerpose/test/models/centerpose_shoe/config.pbtxt /tmp/models/centerpose_shoe/config.pbtxt

/usr/src/tensorrt/bin/trtexec --onnx=/tmp/models/centerpose_shoe/1/model.onnx --saveEngine=/tmp/models/centerpose_shoe/1/model.plan


cd /workspace/isaac_ros-dev

rosdep install --from-paths src --ignore-src -r -y

 

bashrc 를 열고 맨 아래에 source를 추가하고 빌드해줍니다.

그리고 centerpose 노드를 실행해줍니다.

nano ~/.bashrc

# 아래 내용을 bashrc 파일에 추가
source /opt/ros/humble/setup.bash
source /workspace/isaac_ros-dev/install/setup.bash

# bashrc 닫고 빌드
colcon build

source ~/.bashrc

ros2 launch isaac_ros_centerpose isaac_ros_centerpose_triton.launch.py model_name:=centerpose_shoe model_repository_paths:=['/tmp/models']

 

docker ps -a 

명령을 통해 생성된 docker container 의 id를 확인하고

해당 docker container를 새 터미널을 열어 실행시킵니다.

docker exec -it caa1712c501c bash

cd /workspace/isaac_ros-dev

ros2 bag play -l src/isaac_ros_pose_estimation/resources/rosbags/centerpose_rosbag/

 

이제 rosbag을 통해 sample 이미지가 지속적으로 publishing 됩니다.

새 터미널을 열어 결과 토픽이 잘 발행되는지 확인해보겠습니다.

docker exec -it caa1712c501c bash

cd /workspace/isaac_ros-dev

ros2 topic echo /centerpose/detections

 

이제 echo를 종료시키고 GUI를 통해 결과를 확인해보겠습니다.

ros2 run rqt_image_view rqt_image_view

 

docker container 내부의 ROS2에서 성공적으로 CenterPose 분석이 이루어졌습니다.

그럼 다음 글에서는 Realsense camera를 통해 실시간 분석과

정확한 camera coordinate가 발행되도록 해보겠습니다.

 

RealSense 기반 ROS2 에서 Real Time CenterPose 실행

지난 글에서 Isaac ROS CenterPose 를 이용하여 ROS2 docker 환경에서 Object Pose Estimation 이 가능하도록 빌드하였습니다. ROS2 기반 Isaac ROS CenterPose Example 수행하기 Categorized Object Pose Estimation 이 가능한 CenterP

cobang.tistory.com

 

 

728x90
반응형