https://cafe.naver.com/openrt/25288 3. 로봇 운영 체제 설치 1)지역 설정 2)소스 설정 본 강좌의 코드에는 sudo apt install curl 이 없었는데, 나는 저걸 먼저 해줘야 정상적으로 진행되서 새로 추가했다 3)ROS2패키지 설치 ros2를 install하는 과정에서 시간이 꽤나 걸린다. 4)ROS2 ...
https://cafe.naver.com/openrt/23862 [01] ROS 커뮤니티 게시판 https://discourse.ros.org/ [02] ROS 2 문서 https://index.ros.org/doc/ros2/ [03] ROS 2 디자인 문서 http://design.ros2.org/ [04] ROS 위키 http://wiki.ros.or...
https://cafe.naver.com/openrt/23868
https://cafe.naver.com/openrt/23965
https://cafe.naver.com/openrt/24031 1. ROS의 메시지 통신 노드(node) -실행 가능한 최소 프로세서. 실제로 실행하는 각 별개의 프로그램 -목적: 프로그램 재사용성 극대화 -ROS 프로그램은 많은 노드가 연동돼 이루어짐 메시지(message) -연동을 위해 노드 간 입력, 출력 데이터(=메시지)를 주고받아야 함 -데이터...
https://cafe.naver.com/openrt/24065 2. Turtlesim 패키지 설치 3. Turtlesim이란? ROS를 처음 접하는 유저들에게 튜토리얼로 제공하기 위해 제작된 학습용 ROS 패키지. 패키지, 노드, 토픽, 서비스, 액션, 파라미터에 대한 기본적인 학습 및 CLI 툴, rqt 툴 연동을 체험해볼 수 있다. 4. Turt...
https://cafe.naver.com/openrt/24086 1. 노드와 메시지 통신 토픽(topic) -비동기(동시에 일어나지 않는)식 단방향(publisher에서 subscriber로 보내는 것만 가능) 메시지 송수신 방식 -Publisher & Subscriber 간 통신 -Publisher: msg 메시지 형태의 메시지를 발간 -Subscri...
https://cafe.naver.com/openrt/24101 1. 토픽(topic) 008에서 토픽에 대한 기본적인 설명을 했다. 추가로 토픽의 다자간 통신에 대해 설명하자. 토픽은 1:1 통신을 기본으로 하지만 그림과 같이 하나의 토픽을 송수신하는 1:N도
https://cafe.naver.com/openrt/24322 2.패키지와 메타패키지 패키지(package) -소프트웨어 구성을 위한 기본 단위 -ROS의 응용프로그램은 패키지 단위로 개발되고 관리됨 -노드(node, ROS의 최소 단위의 실행 프로세서)를 하나 이상 포함하거나, 다른 노드를 실행하기 위한 런치(launch)와 같은 실행 및 설정 파일들...
https://cafe.naver.com/openrt/24411 1. ROS 2의 빌드 시스템(build system)과 빌드 툴(build tools) 결론부터 말하자면 빌드 시스템은 단일 패키지를 대상으로 하며, 빌드 툴은 시스템 전체를 대상으로 한다. 빌드 시스템(build system) -단일 패키지의 의존성을 해결하고 빌드하여 실행 가능한 파...
https://cafe.naver.com/openrt/24422 1. 패키지 파일(Package file) 주요 패키지 파일들은 아래와 같다. -package.xml(패키지 설정 파일) -CMakeLists.txt(빌드 설정 파일) -setup.py(파이썬 패키지 설정 파일) -setup.cfg(파이썬 패키지 환경 설정 파일) -plugin.xml(RQt...
https://cafe.naver.com/openrt/24436 1. 코드 스타일 가이드 오픈소스 커뮤니티들에서 가장 많이 사용되고 있는 인기 있는 스타일을 바탕으로 한 자체 가이드라인이 존재한다. 협업을 위해 따르자. 2. 기본 이름 규칙 (1)파일 이름: 모두 소문자로 snake_case 규칙대로 (2)ROS 인터페이스 류 파일: CamelCased...
https://cafe.naver.com/openrt/24450 1. ROS의 Hello World 보통 처음엔 Hello world를 출력해 본다. ROS에서는 메시지를 전송해 보는 것이 그 역할이다. 2. 패키지 생성 ROS 2 패키지 생성 명령어는 다음과 같다.(참고로, 예전에 만들었던 workspace에서 실행해야 한다. 나의 경우 ros2_ws...
https://cafe.naver.com/openrt/24629 1. ROS 2 인터페이스 (interface) 신규 작성 ROS 2 기초 프로그래밍 예제에서 앞으로 사용할 토픽(Topic), 서비스(Service), 액션(Action) 관련 ROS 2 인터페이스를 만들어 보자. msg 인터페이스 1개, srv 인터페이스 1개, action 인터페이스...
https://cafe.naver.com/openrt/24798 1. ROS패키지 설계 토픽, 서비스, 액션이 서로 연동되어 구동되는 방식으로 설계된 예제 패키지를 구현해 보자. 2. 노드 작성 035~040에서 다룰 예정이다. 3. 패키지 설정 파일(package.xml) 포스팅에는 나오지 않았는데 먼저 패키지를 만들어 줘야 한다. 의존하는 패키지...
https://cafe.naver.com/openrt/24802 위 그림과 같이, 토픽을 생성한 시간(POSIX Time)과 연산에 사용할 변수 a와 변수 b를 퍼블리시하는 토픽 퍼블리셔와 그를 서브스크라이브하는 토픽 서브스크라이버를 작성해 보자. 2. 토픽 퍼블리셔 코드 header파일은 include에 있고 cpp파일은 src에 위치해 있다. 이 코...
https://cafe.naver.com/openrt/24128 1. 서비스 -Service: 동기식 양방향 메시지 송수신 방식 -Service Client: service request -Service Server: service response -request 및 response: srv 인터페이스(msg의 변형) 2. 서비스 목록 확인(ros2 se...
https://cafe.naver.com/openrt/24810 2. 서비스 서버 코드 calculator.cpp 코드의 서비스 부분을 이어 해석해 보자. https://github.com/hwang-chaewon/STUDYROS2/blob/main/topicserviceactionrclcppexample/calculator/calculator.cpp 3....
https://cafe.naver.com/openrt/24191 1. ROS 도구 ROS 도구는 로봇 프로젝트를 효율적으로 개발하기 위해 필수적이며 아래와 같이 4가지로 분류할 수 있다. CLI 형태의 Command-Line Tools, GUI 형태의 RQT, 3차원 시각화툴 RViz, 3차원 시뮬레이터 Gazebo 1.1 CLI 기반 Command-Lin...
https://cafe.naver.com/openrt/24231 1. ROS의 종합 GUI 툴 RQt RQt는, 공통 API를 사용하여 개발 편의성을 높이고자 기존의 rxbag, rxplot, rxgraph 과 같은 GUI 프로그램들을 ROS의 종합 GUI 툴로 통합해 사용 가능하게 한 것이다. 즉 일종의 Framework이다. RQt는 ROS + Qt의 ...
https://cafe.naver.com/openrt/24241 1. ROS2 인터페이스(interface) 인터페이스는 메세지다.(정확히는, 메세지의 형태) ROS 2에서는 4가지 종류의 인터페이스를 사용한다. ROS 1과 ROS 2에서 모두 사용하는 msg(토픽), srv(서비스), action(액션) 그리고 ROS 2에서 새롭게 추가된 IDL(Int...
https://cafe.naver.com/openrt/24274 1. ROS 2의 좌표 표현 통일의 필요성 로봇의 센서로 카메라를 사용할 때, 카메라에서는 CV에서 사용하는 z forward, x right, y down가 기본 좌표계이다. 그런데 ROS 전반적으로는 x forward, y left, z up이 기본 좌표계이다. 좌표 표현을 통일하지 않으...
1. 실행 인자 -C++에서 main함수의 매개변수는 2가지가 있다. main(argc, argv)와 같이 들어오는데, argc는 argument count로, 인자의 개수를 의미한다. argv는 argument vector로, 인자들을 의미한다. 문자열 포인터로 넘겨받고 있다. 이와 비슷하게, ROS 2에서도 2개의 매개변수가 있다. 앞에 --ros-a...
1. ROS 2 launch system ros2 run명령어를 통해 노드 1개를 실행시킬 수 있다. 그러나 노드 1개로만 프로그램이 이루어지는 게 아니기 때문에, 노드를 여러 개 실행할 수 있는 방법이 필요하다. launch라는 개념을 이용해 노드 여러 개를 실행할 수 있는데, 이 과정에서 파라미터를 바꾼다던지 workspace를 설정한다던지 하는 것이 ...
1. Log Log는 출력 기능을 말한다. Log가 C++에서는 cout로 구현이 되고, python에서는 print로 구현이 되고, ROS 2에서는 log를 남기기 위해 logger와 logging라이브러리를 사용한다.
https://cafe.naver.com/openrt/24543 1. 설정 스크립트(setup script) 설정 스크립트는 setup.bash, local_setup.bash 등으로, workspace마다 존재하며 workspace의 환경을 설정해 주는 파일이다. 새로운 패키지를 빌드하고 나서 바로 그 패키지를 찾거나 노드를 실행시키려고 하면 오류가 날...
https://cafe.naver.com/openrt/24884 4. ROS 2 CLI의 빠른 실행 ~/.bashrc파일에 alias로 명령어를 단축어로 지정해놓으면 편리하다. 예를 들어 alias cw='cd ~/ros2ws'를 통해 cw만 입력하면 ros2ws 워크스페이스로 이동할 수 있다. 5. CLI 명령어에서 ROS arguments 사용하기
Installation ROS 2 binary packages 설치 PASS Navigation 2 packages 설치 sudo apt install ros--navigation2 에서 ros2-distro는 ros 2 distribution, 즉 ros 2 버전을 말한다. 내 ROS 2는 foxy version이므로 foxy로 입력한다. turtleb...
Install 1.Getting Started에서 완료 Build foxy 버전에서 nav 2를 build하는 방법을 알아보자. (갑자기 왜 패키지를 build해야 하는 건지 의문이 들었는데, 일반 프로그래밍에서 프로그램을 build하는 것과 똑같은 것 같다. 각각의 코드 파일을 컴파일하고 하나의 실행 파일로 링킹하는 것을 빌드라고 하는데, ros 패키지의...
https://navigation.ros.org/concepts/index.html#navigation-servers ROS 2 Nav2의 core가 ROS 2이다. ROS 2기반으로 Nav2가 구현된다. > Q: ROS 1기반으로 구현된 거는 Nav1인가..? 애초에 Nav2에서 2가 무슨 의미인가? > A: 기존 ROS1에서 Move base라 불리...
Setting Up Transformations Static Transform Publisher Demo 새 터미널 열어서 Setting Up the URDF[실패 중] Setting up the environment Writing the URDF src/description 아래에 sambotdescription.urdf 파일을 만들고 내용을 채운다...
navigation2의 plugin과 node들의 parameter를 어떻게 수정할 수 있는지를 다룬다. navigation stack의 목표는 robot이 실제 세계에서 작동하기 위한 safe path를 만드는 것이고, 그를 위해 parameter를 조정하는 작업이 필요하다. Waypoint Follower -NavigateToPose action ...
navigation system tuning을 위한 guide -configuration guide: Nav2의 모든 parameter 목록 -tuning guide: 시스템 조정에 유용한 중요 parameter Inflation Potential Fields inflation layer의 활용법 basic 벽을 부풀려 중요한 collosion에 가중치...
Nav2에서 기본적으로 제공되는 plugin 말고도, 특정 application/platform을 위한 plugin을 만들어 사용할 수 있다. > plugin plugin은 runtime library에서 동적 loading이 가능한 class들을 말한다. pluginlib라는 C++ library에서 plugin을 load, unload할 수 있다. 보...