ros2 foxy에서 yolov4 object detector를 사용할 수 있는 패키지를 소개한다.

 

https://github.com/Ar-Ray-code/darknet_ros_fp16/tree/foxy-cudnn

 

GitHub - Ar-Ray-code/darknet_ros_fp16: darknet + ROS2 Humble + OpenCV4 + CUDA 11(cuDNN, Jetson Orin)

darknet + ROS2 Humble + OpenCV4 + CUDA 11(cuDNN, Jetson Orin) - GitHub - Ar-Ray-code/darknet_ros_fp16: darknet + ROS2 Humble + OpenCV4 + CUDA 11(cuDNN, Jetson Orin)

github.com

 

설치 환경은 다음과 같다.

Ubuntu 20.04 + ros2 foxy

GPU: RTX3070Ti

CUDA: 11.6

Cudnn 8.3.3

Opencv 3.4.11 with CUDA enabled

 

패키지 다운로드

ros2_yolo라는 작업공간을 하나 만들고 패키지를 다운로드 한다.

$ mkdir -p ~/ros2_yolo/src
$ cd ~/ros2_yolo/src
$ git clone --recursive https://github.com/Ar-Ray-code/darknet_ros_fp16.git -b foxy-cudnn

darknet_ros/CMakeLists.txt 파일을 열고 다음 부분을 GPU의 Architecture에 맞게 수정하고 #을 제거한다.

set(CMAKE_CUDA_ARCHITECTURES 86)

빌드하기

colcon 명령어로 빌드한다.

$ cd ~/ros2_yolo
$ colcon build --symlink-install

추가 설치

데모 launch를 실행하기 위해 다음 패키지를 설치한다.

$ sudo apt install ros-foxy-v4l2-camera

실행하기

이제 빌드된 결과를 source 하고 데모를 실행한다.

$ source install/setup.bash
$ ros2 launch darknet_ros demo-v4-tiny.launch.py

demo-v4-tiny.launch.py 는 카메라 노드를 자동으로 실행시킨다. 

만약 카메라를 별도로 실행시키려면 그냥 v4-tiny.launch.py를 실행하면 된다.

 

'ROBOTICS > ROS 2' 카테고리의 다른 글

YOLOv4 for ROS 2 foxy  (0) 2022.07.22

darknet_ros가 foxy 버전을 지원하기 시작했다.

https://github.com/leggedrobotics/darknet_ros

 

GitHub - leggedrobotics/darknet_ros: YOLO ROS: Real-Time Object Detection for ROS

YOLO ROS: Real-Time Object Detection for ROS. Contribute to leggedrobotics/darknet_ros development by creating an account on GitHub.

github.com

 

빌드하려고 보니 ubuntu 20.04에 기본 설치된 cmake 버전이 이전 버전이라 설치가 안된다.

$ cmake ..
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.18 or higher is required.  You are running version 3.16.3


-- Configuring incomplete, errors occurred!

현재 3.16.3 버전이 설치되어있다.

$ cmake --version
cmake version 3.16.3

apt upgrade 만으로는 업그레이드가 되지 않는다

그렇다고 새 버전을 설치하기 위해 apt install remove cmake를 하면 다른 ROS 패키지들도 같이 삭제가 된다.

$ sudo apt purge cmake
[sudo] password for khyou: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data fonts-lato gazebo11 gazebo11-common gazebo11-plugin-base
  graphicsmagick-libmagick-dev-compat ignition-tools libamd2 libasound2-dev
  여러가지 lib 패키지 등등등...
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  cmake* libgazebo11-dev* libignition-cmake2-dev* libignition-common3-av-dev*
  libignition-common3-core-dev* libignition-common3-dev*
  ros-foxy-action-tutorials-cpp* ros-foxy-action-tutorials-interfaces*
  ros-foxy-action-tutorials-py* ros-foxy-actionlib-msgs* ros-foxy-ament-cmake*
  **등등등
  ros-foxy-*
  ros-foxy-visualization-msgs*
0 upgraded, 0 newly installed, 283 to remove and 21 not upgraded.
After this operation, 497 MB disk space will be freed.
Do you want to continue? [Y/n] n

그래서 검색해본 결과 아래와 같은 해결책이 있다.

https://answers.ros.org/question/293119/how-can-i-updateremove-cmake-without-partially-deleting-my-ros-distribution/

 

How can I update/remove cmake without partially deleting my ROS distribution? - ROS Answers: Open Source Q&A Forum

How can I update/remove cmake without partially deleting my ROS distribution? edit Problem (TL;DR) I need to update my cmake from version 2.8.12.2 to version 3.1 or higher. However this requires removing the previous version with the command: sudo apt remo

answers.ros.org

 

먼저 https://cmake.org/download/ 로 이동하여 cmake 최신 버전을 다운로드한다.

다운받은 cmake-3.xx.tar.gz 파일을 압축해재하고 해당 디렉토리로 이동하여 다음과 같이 빌드 인스톨 한다.

./bootstrap의 파라미터에 따라 사용자 디렉토리의 cmake-install 디렉토리에 설치를 한다.

$ cd ~/Downloads/cmake-3.xxxx/   # or wherever you downloaded cmake
$ ./bootstrap --prefix=$HOME/cmake-install
$ make 
$ make install

make와 make install이 완료되면 아래 항목을 .bashrc에 추가해준다.

export PATH=$HOME/cmake-install/bin:$PATH
export CMAKE_PREFIX_PATH=$HOME/cmake-install:$CMAKE_PREFIX_PATH

그리고나서 source ~/.bashrc 명령으로 터미널을 업데이트한다.

이제 cmake 버전이 새로 업그레이드 되었다.

$ cmake --version
cmake version 3.23.2

 

아래 영상에 올라온 내용을 간추려보았음.

 

 

휘파람을 불며 공장안을 둘러보는 일론

이게 다 랩터2 엔진들

먼저 Raptor1 엔진을 소개

여러가지 파이프가 복잡하게 얽혀있다. 일명 크리스마스트리 엔진

랩터1 엔진, 크리스마스 트리

그리고나서 보여주는 랩터2 엔진은 엄청 깔끔하다.

깔끔한 모습의 랩터2

여러가지 개선 사항들 중 하나

메인 챔버에서 토치 이그나이터를 없앴음

많이 만들면 많은 문제가 해결된다는 일론의 지론

맞는 말이다.

외형의 변화 외에 성능 그 이상도 많이 변경됨.

챔버 압력이 300바에 최대 출력이 230톤으로 증가함

역사상 가장 챔버 압력이 높은 로켓 엔진임.

 

 

연료 펌프와 산소 펌프의 터빈 회전축이 2개로 나뉨. 

한번 시동이 걸리면 큰 문제는 없지만 시동을 걸때 매우 조심해서 다뤄야 함.

개발 과정에서 50개 이상의 챔버를 태워먹었음

 

 

부스트 펌프와 임펠러에 대한 설명.

 

최적화하는데 노력하기 보다는 없애버리는게 더 좋음.

영리한 엔지니어들이 흔히 하는 실수가 존재하지 않는 것을 최적화 하는 것임.

그리고나서 제거하고자 하는것의 10%만큼을 다시 추가하지 않으면 충분히 제거하지 않은것임 이라는 애매모호한 말을 함. 무슨말인지..

아직도 더 개선할 게 남아있음

궁극적으로는 엔진 외피에 있는 파이프들을 제거해서 열로부터 보호하는 Shroud를 없애는게 목표임.

이렇게 하면 더 가벼워지고 단순해짐

 

인듀서에 대해 설명

인듀서 블레이드 각도가 낮은 이유 --> 기포가 덜 생김. 기포가 생기면 추력에 안좋음.

추력축과 산소 공급 축이 동일하게 위치한 유일한 엔진임

 

 

연료펌프는 약간 측면에 위치

하지만 산소 측에는 아무것도 없음 그냥 그대로 쭉 내려옴.

김블에부터 인듀서, 2단계 임펠러까지 스트레잇

여러가지 엔진 방식 쿨링 방식에 대한 논의 후

스파이크 엔진 등등

ISP에 대한 설명.. ISP에 영향을 미치는 여러 요소가 있는데...

 

중요한건 시간에 따른 단위 추력당 면적(?) 변화

조금 새로운 개념임.

 

일명 integrated force

그리고 슈라우드를 제거하는것에 대해 한번 더 강조하는 일론

진짜 없애고 싶은가 보다.

+ Recent posts