ROS

ROS

템플릿 매칭

템플릿 매칭입력 영상에서 템플릿 영상 위치를 찾는 기법템플릿 찾을 대상이 되는 작은 영상matchTemplateTM_SQDIFFTM_CCORRTM_CCOEFF영상의 변형잡음 → 가우시안 필터밝기/명암 → 정규화크기/회전 변환 → 취약예시 여러 개의 템플릿 매칭예시 이미지템플릿 영상입력 영상구현 방법정규화된 상관 계수 행렬 구하기정규화된 상관 계수 값이 충분히 큰 영역 검출각각의 영역에서 국지적 최대 지점 검출검출 영상 확인 템플릿 매칭을 이용한 숫자 인식인식 여러 개의 클래스 중에서 가장 유사항 클래스 선택Consolas 폰트 예시

ROS

이진화, 객체 단위 분석

이진화개념개념영상의 픽셀 값을 0 또는 255로 만드는 연산배경과 객체, 관심영역(ROI)와 비관심 영역으로 나누는 작업방법임계값 연산을 이용g(x,y)={255if f(x,y)>T0if f(x,y)≦T (T:threshold)g(x,y) = \begin{cases} 255 &\text{if } f(x,y) > T \\ 0 &\text{if } f(x,y) \leqq T \end{cases} \space\space\space\space\space(T: threshold)g(x,y)={2550​if f(x,y)>Tif f(x,y)≦T​ (T:threshold)예시 이미지thresholdTHRESH_BINARYTHRESH_BINARY_INVTHRESH_OTSU입력 영상이 배경과 객체 두 개로 구성되어 있다고..

ROS

에지검출, 허프변환, 코너검출

에지 검출에지 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분객체 분할 및 인식을 위한 기본적인 과정영상을 (x,y)(x, y)(x,y) 변수의 함수로 간주했을 때, 이 함수의 1차 미분 값이 크게 나타나는 부분을 찾는 방식으로 검출입력 영상에 가우시안 블러를 적용하여 잡음을 제거한 후 에지를 검출하는 것이 바람직함1차 미분의 근사화전진 차분 → 3후진 차분 → 1중앙 차분 → 2에지 검출 마스크 가로 세로 Prewitt[−101−101−101]\begin{bmatrix} -1 & 0 & 1\\ -1 & 0 & 1\\ -1 & 0 & 1 \end{bmatrix}⎣⎡​−1−1−1​000​111​⎦⎤​[−1−1−1000111]\begin{bmatrix} -1 & -1 & -1\\ 0 & 0 & 0\\ 1 ..

ROS

OpenCV의 컬러영상

OpenCV의 컬러 영상CV_8UC3 타입으로 색상을 256단계로 표현BGR 순서그레이스케일로 변환 cvtColor장점 데이터 저장 용량 감소, 연산 처리 속도 향상단점 색상 정보 손실 색상(color)사람의 눈에 있는 원추 세포가 빛의 특정 파장에 따라 다르게 반응하여 인지하는 것모든 색상은 세가지 원색의 조합으로 표현된다색 공간 변환RGB 색 공간을 목적에 따라 HSV, YCrCb, Lab 등의 색공간으로 변환하여 처리RGB빛의 삼원색인 빨간색, 녹색, 파란색을 혼합하여 색상을 표현카메라의 Bayer 필터, TV & 모니터, 비트맵HSV색상(Hue), 채도(Saturation), 명도(Value)를 이용하여 색을 표현하는 방법일반적인 8비트 영상의 경우 Hue/2를 대신 사용하여 색 범위 표현YCrC..

ROS

영상의 화소, 연산, 필터링, 변환

영상의 화소처리(point processing)입력 영상의 픽셀 값 → 출력 영상의 필셀 값으로 설정하는 연산 saturate_castdst(x,y)=f(src(x,y))(dst:출력영상,src:입력영상)dst(x, y) = f(src(x, y))\\(dst: 출력영상, src: 입력영상)dst(x,y)=f(src(x,y))(dst:출력영상,src:입력영상)밝기(brightness) dst(x,y)=src(x,y)+ndst(x, y) = src(x, y) + ndst(x,y)=src(x,y)+n 반전(inverse) dst(x,y)=255−src(x,y)dst(x, y) = 255 - src(x, y)dst(x,y)=255−src(x,y) 명암비(contrast)dst(x,y)=saturate(s∗src..

ROS

ROS 원격 접속하기

1. 네트워크 설정 동일한 네트워크에 연결시키거나, 다른 네트워크인 경우에는 포트포워딩을 해서 연결가능하게 한다 ping이나 ssh 접속을 통해서, 서로 연결이 가능한지 확인해본다 2. 컴퓨터 환경 설정 /etc/hosts 설정 컴퓨터 설정 호스트 컴퓨터(roscore)는 클라이언트 컴퓨터의 아이피와 호스트 이름을 추가한다 클라이언트 컴퓨터는 서버 컴퓨터의 아이피와 호스트 이름을 추가한다 파일 수정 이후 sudo service network-manager restart로 서비스를 재시작한다 .bashrc 설정 ROS_HOSTNAME는 주석하여 지우고, ROS_MASTER_URI를 자신의 IP로 설정한다. 파일 작성 이후, source ~/.bashrc로 설정을 업데이트한다 3. 연결 테스트 서버는 2개의..

ROS

ROS turtlesim 8자 주행

1. 패키지 생성 cd ~/${workspack_name}/src # cd ~/ros_ws/src catkin_create_pkg ${package_name} roscpp rospy std_msgs # catkin_create_pkg driving_test roscpp rospy std_msgs cd ../ && catkin_make rospack find ${package_name} # rospack find driving_test cd src/${package_name} # cd src/driving_test mkdir launch 2. 파일 작성 src에 turtle.py를 생성한 후, 다음의 내용을 작성하고 chmod +x turtle.py로 권한을 추가한다 #!/usr/bin/env python..

ROS

ROS URDF

1. 관련 패키지 설치sudo apt install liburdfdom-tools ros-melodic-joint-state-publisher-gui 2. 패키지 및 작업 폴더 생성cd ~/${workspack_name}/src # cd ~/ros_ws/src catkin_create_pkg ${package_name} roscpp tf geometry_msgs urdf rviz xacro # catkin_create_pkg urdf_example roscpp tf geometry_msgs urdf rviz xacro cd ../ && catkin_make rospack find ${package_name} # rospack find urdf_example cd src/${package_name} # c..

ROS

ROS custom message

1. 패키지 및 작업 폴더 생성cd ~/${workspack_name}/src # cd ~/ros_ws/src catkin_create_pkg ${package_name} rospy std_msgs # catkin_create_pkg custom_message rospy std_msgs cd ../ && catkin_make rospack find ${package_name} # rospack find custom_message cd src/${package_name} # cd src/custom_message mkdir msg mkdir launch 2. 메시지 형식 정의cd msg로 폴더를 이동한 뒤, vi person.msg 파일을 만들고 아래의 내용을 작성한다.string first_name st..

ROS

ROS 기본 정리

1. ROS 1. 개념 로봇 소프트웨어를 개발하는데 필요한 소프트웨어의 집합체 각종 센서와 모터를 프로그래머가 편하게 사용할 수 있도록 지원 표준화된 통신 프로토콜을 따르는 이기종간의 메시지 교환이 가능 통신은 토픽의 발행 및 구독 기반의 메시지 교환 형식으로 진행 2. 용어 마스터 노드 사이의 통신을 총괄 관리(ROS Core) 노드(node) 실행 가능한 최소 단위의 프로세스으로서 토픽을 주고 받는 통신 주체 토픽(topic) 노드간에 통신할 수 있는 채널 (일방적이거나 지속적, 1:1과 N:N 통신 가능) 메시지(message) 통신되는 실제 데이터 발행자 토픽을 만들어 보내는 노드 구독자 토픽을 받는 노드 패키지(package) 하나 이상의 노드와 노드실행을 위한 정보 등을 묶어놓은 것 2. RO..

ROS

ROS2 YDLidar 테스트

구동 환경 WSL2에서 USB 연결을 하기 위해서, 별도의 설정이 필요하다. 📓WSL2 설치 및 기본 설정 (Windows11) Windows 11 WSL2 Ubuntu 20.04 ROS2 Foxy YDLidar X4 설치 원하는 이름으로 wordspace 생성 이후 src 폴더를 만들고, 그 src 폴더에 https://github.com/YDLIDAR/ydlidar_ros2_driver를 받는다. {workspace}/src/ydlidar_ros2_driver 식으로 경로가 구성된다. launch 스크립트 사용을 위해서 필요한 파라미터를 설정해준다. ${workspace}/src/ydlidar_ros2_driver/params/ydlidar.yaml를 수정한다. ydlidar_ros2_driver_n..

ROS

ROS2 설치해보기 (Ubuntu)

ROS2란? Robot Operating System의 약자로, 응용 프로그램 개발을 위한 운영체제와 유사한 플랫폼이다. 원래 로보틱스를 연구할 목적으로 설계되었으나, 산업 및 상업용 로보틱스 분야에서 사용하고 있다. 다른 운영체제나 이기종 디바이스간의 통신에서 데이터를 주고 받을 수 있는 장점이 있다. ROS 버전에서 ROS2 버전이 개발되었으며, ROS2가 새로운 로보틱스 분야의 표준이 되고 있다. ROS에서 마지막으로 배포된 Noetic는 2025년에 지원이 완료된다. ROS와 ROS2의 차이점은 많이 있지만, 대표적으로 ROS2부터는 리눅스 이외의 윈도우와 맥에서 지원이 되고, Python3을 지원하고 있다는 점이다. 메타 운영체제 중의 하나로, 전통적인 운영체제라고는 할 수 없다. 메타 운영체제..

'ROS' 카테고리의 글 목록
devskim