티스토리 친구하기

본문 바로가기

분류 전체보기

(140)
ROS2 Creating a package 1 [ROS2 패키지 만들기 1] 참고자료: https://docs.ros.org/en/foxy/Tutorials/Beginner-Client-Libraries/Creating-Your-First-ROS2-Package.html Background 1. What is a ROS2 package? [ROS2 패키지는 무엇인가?] ROS 2 패키지는 노드, 런치 파일, 설정 파일 등과 같은 소프트웨어 구성 요소의 집합을 말합니다. 패키지는 독립적으로 빌드, 설치 및 실행할 수 있는 소프트웨서 단위인데요, 일반적으로 기능적으로 연관된 구성 요소들을 함께 묶어서 배포하거나 공유하기 위해 사용됩니다. ROS 2 패키지는 CMakeLists.txt 및 package.xml과 같은 파일을 포함하며, 이들은 패키지 빌드 및 설치, 의존성 관리, 패키지..
ROS2 Creating a workspace [workspace 만들기] ROS 2에서는 패키지를 구성하는 디렉토리들을 워크스페이스(workspace)라는 개념으로 구성합니다. 워크스페이스는 ROS 2 패키지를 포함하고 있는 디렉토리입니다. ROS 2를 사용하기 전에는 먼저 해당 터미널에서 ROS 2 워크스페이스를 사용할 수 있도록 소스 파일을 설정해주어야 합니다. 또한, 추가적인 패키지를 설치하거나 수정할 필요 없이 새로운 패키지를 추가할 수 있는 오버레이(overlay) 워크스페이스를 만들 수 있습니다. 오버레이 워크스페이스는 기존 ROS 2 워크스페이스를 확장하는 데 사용되며, 새로운 패키지와 기능을 추가할 수 있습니다. 참고: overlay and underlay 오버레이 워크스페이스를 사용할 경우, 오버레이 워크스페이스의 패키지들이 기존 ROS 2 워크스페이스의 패키..
ROS2 ubuntu 20.04 ROS2 foxy Installation [ROS2 foxy 설치] Reference: https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html Set locale ROS2는 다국어 지원을 위해 UTF-8 인코딩을 사용합니다. 로케일(locale)이 UTF-8을 지원하지 않을 경우, ROS2를 사용하는 동안 문자열 처리 오류가 발생할 수 있습니다. 따라서 ROS2 설치 시, locale이 UTF-8을 지원하는지 확인해야 합니다. 만약 Docker 컨테이너와 같이 최소한의 환경에서 설치하는 경우, locale이 POSIX와 같이 최소한의 것으로 설정되어 있을 수 있습니다. 이 경우, ROS2를 설치하지 전에 locale을 변경해 주는 것이 좋습니다. locale을 변경하기 위해서 locale-gen 명령어..
ROS2 underlay overlay ROS2에서 overlay와 underlay의 개념 underlay: ROS 2 설치의 기본 패키지와 라이브러리를 포함하는 디렉토리 overlay: 개발자가 추가로 설치한 패키지와 라이브러리를 포함하는 디렉토리 ROS2 foxy를 설치했다면 기본적으로 /opt/ros/foxy 디렉토리에 underlay가 생성됩니다. 이 underlay에는 ROS2의 기본 패키지와 라이브러리가 포함됩니다. 이제 개발자는 ROS2를 이용해서 무언가를 만들고 싶습니다. 개발자는 어플리케이션을 개발하기 위해 필요한 패키지를 작성합니다. 그런데 이 패키지는 개발자가 만든 것이기 때문에, ROS2를 설치할 때 기본적으로 만들어진 underlay에 포함되지 않습니다. 따라서 이 패키지는 overlay에 추가해야 합니다. 개발자는 /..
C++ 생성자 (Constructor) - 객체 생성 시 자동으로 호출되는 함수 - 클래스의 이름과 이름이 똑같음 // my_class.hpp #include class MyClass { public: MyClass(); // 생성자 void Print(); private: uint16_t mVar; }; 헤더 파일에 "MyClass"라는 이름을 가진 클래스를 선언하였습니다. 그리고 클래스와 똑같은 이름으로 "MyClass()"라는 함수를 public으로 선언하였습니다. 여기서 클래스 이름과 똑같은 이름을 가진 "MyClass()" 함수를 생성자(Contructor)라고 합니다. // my_time.cpp #include "my_class.hpp" MyClass::MyClass() // 생성자 { std::cout
C++ 객체생성 new, delete / 멤버 변수 초기화 객체생성 아래는 Number 클래스에 객체를 만드는 코드입니다. class Number { private: int n1; int n2; }; int main() { Number num1; // 스택(stack) 메모리에 만듬 (빠름) Number* num2 = new Number; // 힙(heap) 메모리에 만듬 (느림) num1.n1 = 10; num1.n2 = 20; num2->n1 = 30; num2->n2 = 40; std::cout
대학원 준비 / 자소서 / 면접 저는 석사를 수료하고 다시 석사를 지원하는 특이한 케이스입니다. 그래서 저의 경우는 다른 분들과는 약간 다를 수 있겠지만 그래도 저의 경험이 대학원을 준비하시는 다른 분들에게 조금이라도 도움됐으면 하는 바람으로 후기를 남깁니다. 1. 스펙 학부 대전 C대학 학점 3.93 // 토익 : 760 대회 : 소성가공 경기대회 동상 (자소서에는 작성하지 않음) 석사 대전 C대학 학점 : 4.25(정확히 기억나지 않음) 대회 : 국제 실외주행 대회 최우수상 국내 저널 2편 2. 컨택 2014 가을학기 전형 입시설명회에서 랩투어를 참가하였습니다. 그때 교수님께 컨택을 하려고 했지만 출장 중이셔서 하지 못하고 대신 원하는 랩실에 가서 학생들과 얘기를 했습니다. 그 후 다시 교수님께 만나 뵙고 싶다고 메일을 보냈고, 나..
C++ 접근 제어자 (Access Modifier) public / protected / private public: 누구나 접근 가능 protected: 자식 클래스에서 접근 가능 private: 해당 클래스에서 접근 가능 (객체가 아니라 클래스임) 아래와 같이 "public:", "protected:", "private:" 밑에 변수를 선언하면 public, protected, private 멤버 변수 또는 멤버 함수가 됩니다. class ExampleClass { public: int public_menber; void function_1() { std::cout