Robotics (46) 썸네일형 리스트형 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 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 C++ 함수 오버로딩 (overloading) - 함수 이름은 같고 매개변수가 다름 - 매개변수가 다르기 때문에 다른 함수로 인식 - 하지만 반환형이 다르다고 해서 다른 함수로 인식하지 않음 void Person(int age);// 문제없음 void Person(char * name, int age);// 문제없음 void Person(float weight, int age);// 문제없음 int Person(int age);// void Person(int age)과 반환형이 다르지만 // 매개변수의 종류가 같음 -> 컴파일 에러 int Person(float weight);// 문제없음 1. 가장 적합한 함수 --> 좋음 2. 형변환 (하지만 컴파일 경고가 나올 수 있음 - 형변환해서 일치하는 함수 찾았는데, 진짜 네가 원하는게 맞니??) 2-.. C++ Reference (참조) Reference (참조) - 어떤 변수나 상수를 가리키고 싶을 때, 별명을 붙여서 부를 수 있음 - 별명을 붙여 다른 상수 또는 변수를 가리키는 방법 (Reference - 참조) Swap 함수 (변수를 복사하여 받는 경우) #include void Swap(double arg1, double arg2) { double temp = arg1; arg1 = arg2; arg2 = temp; } int main() { double num1 = 10; double num2 = 20; Swap(num1, num2); std::cout ROS2 환경설정 *본 튜토리얼은 ROS2 공식 문서를 참조하여 제작하였습니다. 참고: https://docs.ros.org/en/dashing/Tutorials/Configuring-ROS2-Environment.html Goal: 어떻게 ROS2 환경을 준비하는지 알 수 있다. Background "Workspace"는 ROS용어로, ROS2로 개발하는 위치를 나타냅니다. ROS2는 shell(쉘) 환경을 사용해서 workspace들을 합치는(combining) 개념이라고 볼 수 있습니다. 여기서 core ROS2 workspace는 "underlay", 그리고 local workspace를 "overlay" 라고 합니다. 그리고 ROS2로 개발을 할 때에는, 일반적으로 여러 개의 workspace가 동시에 활성화됩니.. ROS2 Debian package 설치 *본 튜토리얼은 ROS2 공식 문서를 참조하여 제작하였습니다. 참고: https://docs.ros.org/en/dashing/Installation/Ubuntu-Install-Debians.html Ubuntu 18.04 (bionic)에 맞는 ROS2 버전은 ROS2 dashing입니다[1]. 그래서 여기서 설치할 Debian pacakage는 Ubuntu Bionic을 위한 것입니다. Debian계열의 packages (Debian package)는 maintaner[2]들에 의해서 관리되고 있습니다. 그래서 패키지를 다운받을 때, 의존성 패키지[3]가 있는지 검사하고 의존성 패키지가 자신의 환경(컴퓨터)에 설치되어 있지 않으면 자동으로 의존성 패키지까지 같이 설치할 수 있도록 지원합니다[4]. *.. 이전 1 2 3 4 5 6 다음