Yolov5를 ROS에서 Sub/Pub이 가능하도록 설정하였다.
내 로컬은 우분투 18.04로 로스 멜로딕이 설치가 가능하다. 하지만 Yolo와 같은 딥러닝 모델들은 파이썬 3점대 버전에서 개발이 되므로, 멜로딕이 아닌 노에틱으로 ROS를 설치해야 하므로 도커 환경을 사용했다. 딥러닝 인퍼런스에 GPU도 사용되므로, docker-nvidia도 설정해주어야한다.
$ docker pull osrf/ros:noetic-desktop-full
$ docker run -it --gpus all --net=host -v /tmp/.X11-unix:/tmp/.X11-unix:ro -e DISPLAY=unix$DISPLAY --privileged --name "ROS_noetic" osrf/ros:noetic-desktop-full
깃 클론 받기전 환경 설정을 해주어야 한다.
$ cd
$ mkdir yolo && cd yolo && mkdir src
.bashrc
파일에도 다음 명령어들을 추가해준다.
alias cm='cd ~/yolo && catkin_make'
alias cs='cd ~/yolo/src'
source /opt/ros/noetic/setup.bash
yolo 폴더에 먼저 catkin_make를 해준다
$ cm
https://github.com/mats-robotics/yolov5_ros
위 사이트에 README를 참고하여 빌드를 해준다.
그후 아래의 명령어를 .bashrc
에 추가해준다.
source ~/yolo/devel/setup.bash
분명 언제나 그렇듯 에러가 발생한다.
메세지를 사용할수 없다고 No module 어쩌구 저쩌구가 뜬다.
해결법
그냥 bash를 껏다가 킨다.
해결법 아래와 같이 수정해 준다.
usr/local/lib/python3.8/dist-packages/torch/nn/modules/upsampling.py
def forward(self, input: Tensor) -> Tensor:
# return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
# recompute_scale_factor=self.recompute_scale_factor)
return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)