Categorized Object Pose Estimation 이 가능한 CenterPose를 ROS2에서 수행시키기 위해,
NVIDIA에서 이미 만들어둔 Isaac ROS 기반의 CenterPose를 패키지로 붙여
Depth Camera로 Real Time 분석이 가능하도록 하고자 하였습니다.
이전에도 수행했었지만, 이 때는 로컬 환경에서 Python OpenCV를 통해 수행한 것이었고
이번에는 ROS2에 붙이는 것에 초점을 맞췄습니다.
CenterPose와 Example에 대한 자세한 내용은 이전 글들을 참조해주시기 바랍니다.
해당 git 을 이용하여 Example을 수행해보도록 하겠습니다.
먼저 NVIDIA docker 환경을 내려받아야 합니다.
docker가 설치되어있지 않다면 아래 글을 참조하여 설치하시기 바랍니다.
나중에 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가 발행되도록 해보겠습니다.
'Setup & Example > ROS2 + 예제' 카테고리의 다른 글
Docker 컨테이너 내부에 ROS2 UR3e 연결하기 (1) | 2024.02.27 |
---|---|
RealSense 기반 ROS2 에서 Real Time CenterPose 실행 (0) | 2024.02.20 |
ROS2 에서 Vision 기반 UR3e Pick and Place 수행하기 (0) | 2024.02.16 |
ROS2 에서 Intel realsense 기반 YOLOv8 분석하고 결과 topic publishing 하기 (0) | 2024.02.06 |
ROS2 MoveIt2 이용하여 UR3e 의 Link Position 및 Quaternion 획득하기 (0) | 2024.01.31 |