티스토리 친구하기

본문 바로가기

Robotics

(45)
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]. *..
보상기 (Compensator) - 극점과 영점의 영향 * 보상기(compensator): 시스템을 안정하게 만들거나 또는 제안된 사양(만족스러운 성능)을 충족할 수 있도록 시스템에 추가되는 장치 근궤적법(root locus)은 게인값의 변화에 따라, 특성방정식의 근이 어떻게 변하는지(근의 궤적) 알아보는 방법입니다. 그래서 근궤적법에서는 K를 0에서 무한대까지 변화시키면서 근의 궤적을 복소평면에 그렸었습니다. 복소평면의 근이 우측 반평면에 있을 때에는 시스템이 불안정하고, 좌측 반평면에 있을 때에는 안정하기 때문에, 근의 위치에 따라 시스템이 안정한지, 불안정한지를 판단할 수 있었습니다. 시스템이 불안정하다고 판단되면 그 시스템은 사용할 수 없는걸까요? 시스템이 안정하지만 과연 우리가 원하는 성능을 내는 시스템인가요? 이러한 문제를 해결하기 위해서 본 포스..