# ros2

96개의 포스트
post-thumbnail

개발자와 함께하는 ROS2 Humble Parameter 이해하기, ROS2 명령어-5

ros2로 개발하다보면 parameter라는 것을 많이 설정하게 될 것이다. 이 parameter가 무엇인지 오늘 배워보도록 하자! 목표 ROS2에서 parameter 값을 확인하고, 설정하고, 저장하고, 불러오는 방법에 대해서 배운다. 예상 소요시간 5분 배경지식 parameter는 간단히 말해 node의 설정 값이라고 생각하면 된다. 예를 들어 음식을 주문 하는 node가 있다고 하면 한번에 최대 주문 가능한 음식 개수, 주문할 전화번호 등이 node에서 설정이 필요한 값들이라고 할 수 있는데, 이들이 parameter이다. 이 설정 값들은 interger, float, boolean, string, list 같은 형식을 갖는다. 준비물 ROS2 Humble 설치(ROS2 Humble 설치 포스트 바로가기) turtlesim 관련 패키지 설치하기(turtlesim 패키지 설치 설명 포스트 바로가기

2023년 8월 20일
·
0개의 댓글
·
post-thumbnail

개발자와 함께하는 ROS2 Humble Service 이해하기, ROS2 명령어-4

ros topic 다음으로 자주 쓰이는 개념이 service이다. 거두절미 하고 바로 service에 대해 배워보자 Let's go 목표 ROS2 Service의 개념에 대해서 배운다! 예상 소요시간 10분 영상 튜토리얼 추후 업데이트 배경지식 Service란 무엇일까? 이름에서 한 번 유추해보자. 1분의 시간을 주겠다. Service란 이름대로 무엇가를 요청하는 것하는 것을 의미한다. 보통 요청했으면 어떤 반응을 얻지 않는가? 예를 들어 식당에 전화해 음식 배달 서비스를 요청했다고 해보자. 그러면 요청한 서비스가 접수되고 음식 서비스가 가능한지 여부를 상대방에게서 듣게된다. 이렇듯 서비스는 요청(이하 call) 그리고 응답(response)형태로 이루어진 node간 통신 방식을 의미한다. 하단의 그림 2개를 살펴보자 ** ![](https://velog.velcdn.com/images/i_ro

2023년 8월 19일
·
0개의 댓글
·
post-thumbnail

개발자와 함께하는 ROS2 Humble Topic 이해하기, ROS2 명령어-3

아마 ROS2를 사용해서 인공지능/로봇을 개발하다보면 가장 많이 접하는 용어중에 하나가 topic, node일 것이다. 이번 글에서는 그 중 하나인 topic 개념에 대해서 배워볼 예정이다. 준비되었는가? 그럼 Let's go!! 목표 rqt_graph 명령어 도구를 통해 ROS2 topic개념을 배운다. 대상 입문 예상 소요시간 약 20분 영상 tutorial링크 추후 업데이트 배경지식 로봇 내부에서는 수많은 데이터와 신호들이 오가는데, 이때 이 정보들을 message로 만들어 topic이라는 공간을 통해 message를 발행하고 구독한다. 사람을 예로 들면 "이 공간(Topic)에서는 이 message로만 이야기 할 수 있어" 로 이해하면 쉽다. 저번 시간에 배운 node는 하단의 그림 처럼 여러 topic에 message를 발행하거나 여러 topic을 구독할 수 있다. ![](https://ve

2023년 8월 18일
·
0개의 댓글
·
post-thumbnail

현직자가 알려주는 ROS2 명령어 도구(Command Line interface tools)-1

저번시간에 ROS2 Humble(이하 ROS2)을 설치했다. 아직 설치 못한 사람이 있다면 아래 포스트를 확인해 보길 바란다. ROS2 Humble 설치방법 자 그럼 이번에는 무엇을 배울까? ROS2에는 인공지능/로봇 개발할 때 자주 사용되는 명령어들이 몇가지 있다. 오늘은 이 명령어들을 배워보자. 목표 turtlesim 패키지 설치 및 사용법 배우기 rqt 설치 및 사용법 배우기 예상 소요시간 약 15분 영상 튜토리얼 영상 튜토리얼 바로가기 준비물 ROS2 Humble 설치방법 에서 터미널을 켤 때 ROS2 환경이 설정되어야 한다. 1. turtlesim 설치하기

2023년 8월 13일
·
0개의 댓글
·
post-thumbnail

현직자가 알려주는 ROS2 Humble 설치방법

ROS wiki에 설치 방법이 잘 나와있지만 초심자에겐 뭐가 뭔 말인지 모를 수가 있다. 특히 영어를 번역한 한글이면 더더욱! 로봇 개발을 하다보면 ROS2를 종종 재설치해야 하는 경우가 있는데 그럴 때를 대비해서 자료를 하나 정리해두기로 했다. IRoboU 유튜브 채널에 ROS2 Humble 설치 영상도 있으니 확인해보자! 동영상 링크: https://youtu.be/4SRsKglF-ug 그런데 왜 humble사용해야 할까? 포스트 작성 날짜 기준 Humble이 제품 수명 날짜(End of Life, EOL)이 2027년 5월로 가장 길기 때문이다. 컴퓨터 사양 (설치 방법 설명) 컴퓨터 사양: ROS2

2023년 8월 12일
·
3개의 댓글
·

[ROS2]docker에 ros2설치

0.docker Docker를 사용하면 애플리케이션을 호스트 시스템과 분리된 컨테이너 내에서 실행할 수 있다. 이는 개발 환경과 프로덕션 환경 간의 일관성을 유지하면서 컨테이너를 다른 환경에 쉽게 배포할 수 있음을 의미한다. Docker는 컨테이너화된 애플리케이션을 구축, 배포 및 실행하기 위한 오픈 소스 플랫폼이다. 컨테이너는 애플리케이션과 그의 종속성을 격리된 환경으로 패키징하는 가상화 단위이다. Linux 커널을 기반으로 하는 기술이다. Docker 이미지를 사용하여 Docker 컨테이너를 생성하고 실행한다. 이미지는 컨테이너의 파일 시스템, 라이브러리, 애플리케이션 코드, 종속성 및 설정을 포함할 수 있다. 0.1. image vs container 도커 이미지 정적인 패키지이다. 읽기 전용이며, 여러 개의 컨테이너를 생성할 수 있다. 빌드 단계에서 생성되며, Dockerfile이나 커맨드를 사용하여 정의된다. 도커 레지스트리(do

2023년 7월 6일
·
0개의 댓글
·

ROS2 관련

패키지내의 노드 실행 노드가 얼마나 실행중인지 확인 > ROS Service

2023년 6월 25일
·
0개의 댓글
·
post-thumbnail

ARM64에서 Docker 위에 ROS2 설치하기

준비물 Raspbery 4 Docker install apt에 Docker 저장소를 추가 (마지막 줄에서 amd64가 아닌 arm64) Docker 엔진 설치 Result ROS2 Image Install 링크에서 ROS 버전 선택 가능 Tags 버튼 클릭 humble image pull 하기 ![](https://velog.velcdn.com/images/jeon328kr/post/d7d5fc8e-2

2023년 6월 22일
·
0개의 댓글
·

Python node와 C++ node를 가지고 있는 하나의 ROS2 package 만들기

ROS2로 간단한 실습을 진행하던 중 하나의 pkg에 python node와 C++ node를 같이 포함시킬 수 있는지 자료를 찾아보았다. ROS1과 다를 것으로 생각한 이유 ROS1은 cmake를 사용한 build를 사용하였다. 하지만 ROS2로 넘어오면서 python은 amentpython으로, C++은 amentcmake로 build 방식이 변경되었다. python을 ament_python으로 build하면서 setup.py, setup.cfg와 같은 파일을 수정해서 build를 진행해야 했고 이 방식은 ROS1에서 사용하지 않았던 방식이므로 python과 C++로 작성한 node가 하나의 pkg에 사용되기 위해서는 다른 방식이 필요할 것으로 예측하였다. 참고한 사이트 구글에서 자료를 찾던 와중 친절한 튜토리얼 사이트를 찾을 수 있었다. https://roboticsbackend.com/ros2-package-for-both-python-and-cpp-node

2023년 6월 17일
·
0개의 댓글
·

ROS2 한 노드에서 publish와 subscribe 동시에 동작시키기 (C++)

ROS는 C++과 Python을 이용하여 사용할 수 있다. 필자는 주로 Python을 많이 사용하지만 이번 기회에 C++에 익숙해지기 위하여 이전 글과 동일한 동작을 하는 코드를 작성해보았다. pkg 생성 pkg를 생성하기 위해 workspace로 들어가서 pkg를 생성해준다. C++로 코드를 작성할 것이므로 ament_cmake와 rclcpp를 사용했다. 코드 작성 master_order.cpp C++을 읽기만 해보고 코드를 직접 작성한 경험은 처음이라 시간이 오래 걸렸다. 기본적인 구조는 python과 유사하다. node1.cpp node2.cpp 구현한 동작이 이전에 python으로 작성한 것과 동일하므로 코드에 대한 설명은 생략하도록 하겠다. 코드를 작성할 때 어려웠던 점들 C++로 코드를 작성하는 것이 처음이라 생각보다 많은 삽질을 하였다. 포인터를 대학교 C언어 수업에서 사용한 이후로 처음 써봤으므로... 상당히 헷

2023년 6월 17일
·
0개의 댓글
·
post-thumbnail

[ROS2-python 기초]custom message 만들고 빌드하기

- 참조 https://docs.ros.org/en/crystal/Tutorials/Custom-ROS2-Interfaces.html https://refstop.github.io/ros2-custom-msgsrv.html ROS2에서 custom message를 만들어서 발행해 보자. create new package 워크스페이스에 src 폴더를 생성하고, src 내부에서 새로운 패키지를 생성한다. (다음 명령어 실행) 패키지를 생성하면, CMakeLists.txt, package.xml 파일이 생성되었을 것이다. 새로운 메시지를 만들기 위해서는, msg 폴더를 생성하고 그 내부에서 커스텀 메시지 내용을 정의한다. 예를 들어, bounding box message

2023년 6월 15일
·
0개의 댓글
·

ROS2 한 노드에서 publish와 subscribe 동시에 동작시키기 (python)

ROS2를 공부하다가 한 노드에서 publish와 subscribe가 동시에 동작되는 노드를 작성해보았다. ROS1을 이용한 프로젝트를 진행할 때 한 노드에서 publish와 subscribe가 동작해야하는 경우가 많았으므로 ROS2에서도 구현하고자 하였다. pkg 생성 pkg를 생성하기 위해 본인의 workspace에 들어가고 pkg를 생성해준다. 간단한 동작을 python을 통해 구현할 것이므로 rclpy와 std_msgs를 dependencies에 추가하였다. 코드 작성 전 구상하기 node1과 node2가 서로 topic을 publish하고 subscribe할 수 있도록 구상하였다. 또한 동작 트리거를 입력하기 위해 master_node를 생성하여 전체 명령을 입력할 수 있도록 하였다. 구상하여 제작한 rqt_graph는 다음과 같다. ![](https://velog.velcdn.com/images/junwoo0525/post/e99f0cf1-f775-40b0

2023년 6월 12일
·
0개의 댓글
·

Map 생성하기

구성한 시뮬레이션 환경에서 실내 자율 주행을 하기위해서는 맵을 생성해야 합니다. 맵을 만드는 방법은 여러가지 방법이 있지만 많이 사용되는 두 가지 방법을 소개합니다. NAV2에서 제공하는 SLAM-Toolbox Google에서 제공하는 Cartographer 상황에 따라서 제시한 툴 중 하나를 선택해서 맵을 만드는 것을 권합니다. SLAM-Toolbox NAV2 실행 다른 Terminal 실행 및 SLAM-Toolbox 실행 다른 Terminal 에서 Rviz 실행 Rviz 설정 적용 설정 파일 링크 from google driver 2D Goal Pose로 로봇을 이동시킬 위치를 마우스 클릭 및 드래그를 통해 입력 맵 제작 종료 다른 Terminal에서 실

2023년 6월 4일
·
0개의 댓글
·

개발 환경 구축

ROS2 Humble 환경에서 NAV2 및 Gazebo를 활용한 시뮬레이션 환경을 구축하는 내용입니다. 참고한 자료는 포스트 맨 하단에 URL을 기록했습니다. PC 환경 우분투 22.04 LTS 설치 CPU 유형 : x64 NVIDIA 그래픽카드 장착 ROS2 설치[1] 지역 설정 소스 설정 패키지 설치 ROS 개발 툴 설치 NAV2 설치 apt를 이용한 설치 소스코드를 이용한 설치 workspace 위치는 사용자가 원하는 위치로 수정해서 사용하는 것을 권합니다. Gazebo 설치 AWS Small warehouse 설치 workspace 위치는 사용자가 원하는 위치로 수정해서 사용하는 것을 권합니다. 소스 코드 Git Clone 후 Build 테스트 실행 Turtlebot3 설치[2] workspace 위치는 사용자가

2023년 6월 4일
·
0개의 댓글
·

ROS2 & NAV2

자율 주행 알고리즘을 이용한 로봇 이동 제어 분야에 대한 관심 장애물을 피해가며 원하는 목적지에 도달하는 로봇은 항상 관심이 있는 분야였습니다. > 전방을 바라보는 두 개의 거리 센서를 이용하여 장애물 회피하며 진행하는 이동 로봇 개발 위에 소개한 로봇은 학부때 실험실에서 수행한 사이드 프로젝트였는데, 이 로봇은 굉장히 단순한 이동 경로를 만들었습니다. 언젠가는 단순 센서 값 처리에 의한 주행이 아닌 알고리즘을 통한 주행을 하는 로봇을 개발하고 싶었습니다. 따라서, ROS2 Humble 기반 Navigation2를 이용하여 관련 내용을 공부하는 것이 이번 시리즈의 목표입니다. 현실적인 어려움 자율 주행 알고리즘을 테스트하기 위해서는 실제 로봇과 장소가 필요합니다. 또한 장소를 빌리거나 로봇을 구성할 때 추가적인 비용이 발생합니다. 시뮬레이션 환경 구성[1] 현재 가진 자원을 활용하여 바로 구성 가능하다는 장점을 갖습니다. 다음과 같은 개발 환경을 구성

2023년 6월 4일
·
0개의 댓글
·
post-thumbnail

[ROS2] Odometry

Odometry란? > 로봇이나 차량과 같은 이동체의 상대적인 위치와 자세를 추정하기 위해 사용되는 기술 이동체의 오도메트리는 보통 이동 경로에서 감지된 변위, 회전, 속도 등의 정보를 기반으로 계산됩니다. Odometry란 단어 그대로 주행기록계라는 의미로서 엔코더를 통한 회전수와 IMU(관성 측정 장비)로 기울기 등을 측정함으로서 움직이고 있는 사물의 위치를 측정하는 방법을 의미합니다. Odometry는 ROS에서 odom frame으로 구현되며 위에서 설명한 엔코더 혹은 IMU를 사용하여 위치를 추정할 수 있습니다. 부득이하게 Visual SLAM을 사용하여 위의 센서를 사용하지 못할 경우 카메라를 통해 관측한 값을 토대로 Odom을 추정하는 방법을 사용할 수도 있습니다. >🔎 odom frame이란? odom frame은 로봇의 Odometry(오도메트리) 정보를 기준으로 정의된 좌표계입니다. 이는 로봇의 위치와 자세를 추

2023년 5월 18일
·
0개의 댓글
·

[ROS2] 모듈 개념

📖 메시지 및 서비스 유형 📚 rclpy rclpy는 ROS 2를 파이썬으로 개발하기 위한 클라이언트 라이브러리입니다. rclpy는 ROS 2의 기본 통신 라이브러리인 rcl (ROS Client Library)를 기반으로 작성되었습니다. rclpy를 사용하면 파이썬으로 ROS 2 노드(Node)를 작성하고, 토픽(Topic) 및 서비스(Service) 메시지를 발행하고 구독할 수 있습니다. 📚 Node Node는 ROS 2에서 실행되는 독립적인 프로세스로, 로봇 시스템의 구성 요소를 나타냅니다. Node는 rclpy를 사용하여 작성되며, 특정 작업을 수행하기 위해 다른 노드와 통신하고 메시지를 교환할 수 있습니다. 각 Node는 고유한 이름을 가지며, 하나 이상의 토픽에서 메시지를 발행하거나 구독할 수 있습니다. Node는 rclpy의 Node 클래스를 상속하여 작성됩니다. Node 클래스는 **ROS 2 시스템과의 상호 작용

2023년 5월 17일
·
0개의 댓글
·
post-thumbnail

ROS 2 Foxy에서의 YOLOv5 실행 가이드

0. 개요 >개발 환경 OS : Ubuntu 20.04 LTS ROS : ROS 2 Foxy 본 게시글은 ROS 2 Foxy에서 웹캠과 YOLOv5를 사용하여 Object Detection을 실행할 수 있도록 하는 가이드입니다. 이를 위해 Github의 Ar-Ray-code님의 YOLOv5-ROS Repository를 사용하였습니다. 이는 YOLOv5의 detect.py를 ROS 2 input의 sensor_msgs/Image에 맞게 변환시킨 버전입니다. Github : Ar-Ray-code/YOLOv5-ROS 해당 Repository의 README에 사용 방법이 설명되어있지만, 그대로 적용 시 몇가지 오류가 발생합니다. 따라서 본 게시글은 이러한 오류와 충돌을 해결할 수 있는 방법을 설명합니다. 1. 패키지 설치 아래

2023년 5월 8일
·
1개의 댓글
·
post-thumbnail

2023.3.27 UBUNTU 단축키/명령어 실천압축 정리

오늘의 한줄 : 부산대 모의대회 준비를 하고 있는데 진짜 배터리도 미국가고 카메라는 자꾸 안돼고 하여간 조까튼 일이 너무 많다. 우분투를 처음 접하고 가장 당황했던게 터미널로 거의 모든 일을 해결하다 보니 이상한 처음보는 명령어가 진짜 많다. 그래서 로봇제어를 위한 ROS2 설치 전에 명령어를 한번 보고 가는게 쉬울거 같아서 명령어 먼저 정리하기 터미널 단축키 정리 Ctrl + Art + T : 터미널 키기 터미널이라고 하는 뭔가 새카만 해킹해야 할 것 같은 화면이 나올텐데 여기서 거의 모든 일을 다 하게 될 것임. 그래서 이 화면을 너무 무서워하지 말고.. 친하게 지냅시다 친하게 지낼 수 있도록 토미라는 별명도 붙여줍시다. 뭐 여러가지 많은데 자주 쓰는것만 적어둠. Ctrl + Shift + +/- :터미널 확대/축소 Ctrl + Shift + t : 터미널 새로운 탭으로 열기 Ctrl + Shift + F :

2023년 4월 4일
·
0개의 댓글
·
post-thumbnail

라즈베리파이4B를 사용한 TurtleBot3 세팅

0. 개요 이번에 대학원 수업 로봇 OS를 들으며 TurtleBot3 Burger를 사용할 연구비로 살 기회가 생겼다. TurtleBot3는 친절하게도 Official emanual이 제공되지만, 우분투 및 각종 라이브러리의 버전업이 되어서인지 이를 그대로 따라해도 여러 에러들이 존재했다. 따라서 이번 기회에 TurtleBot3에 ROS, ROS2를 설치하고 이를 정리하는 포스팅을 진행한다. TurtleBot3 emanual : TurtleBot3 emanual Link 1. Remote PC 세팅 설치에 앞서서, ROS 버전이 무엇인지에 따라 설치해야 하는(권장하는) OS도 달라진다. TurtleBot3은 ROS 1과 ROS 2 모두 지원하고 있으니 필요에 따라 버전을 선택할 수 있다.

2023년 3월 25일
·
0개의 댓글
·