분류 전체보기
-
_ROS1_Robot Operating SystemROS/ROS1 2023. 9. 27. 23:15
ROS(Robot Operating System)는 로봇을 개발하기 위해 만든 툴로 다양한 패키지를 제공한다. 각 회사들이 만든 툴과 로봇들을 합쳐서 작업하기 쉽게 만들어준다. 다양한 프로그래밍 언어를 지원하며 대표적으로 C++, Python이 있다. 또한 로봇 개발에 필요한 다양한 도구들을 제공하는데 대표적으로 rviz, rqt, Gazebo 시뮬레이션 등이 있다. 현재 ROS1과 ROS2가 있으며 이번에는 ROS1을 공부하며 정리를 해보려고 한다. ROS1은 많은 사용자들이 사용해왔기에 자료가 많이 있다. 아래의 링크들은 ROS1을 공부할 때 참고할만한 자료들이다. 표윤석 박사님이 정리하신 ROS1 자료. https://github.com/robotpilot/ros-seminar GitHub - ro..
-
데브코스 자율주행_TIL_23.09.26데브코스 자율주행 Perception/_TIL(Today I Learned) 2023. 9. 26. 22:50
코딩 가이드라인 특강 vscode 설치와 CMaker 설치, 그리고 vscode에서 사용할만한 extention 기능들에 대해 살펴보았다. Compiler https://mokchanic.tistory.com/61 GCC_Clang Compiler installation (Ubuntu & Windows) Compiler installation on Ubuntu - GCC 터미널을 열어서 다음의 커맨드를 실행한다. $ sudo apt update && sudo apt upgrade -y $ sudo apt install -y build-essential # 필요한 종속성 설치 $ sudo apt install -y gcc 다음 명령어로 gcc mokchanic.tistory.com CMake https:/..
-
데브코스 자율주행_TIL_23.09.25데브코스 자율주행 Perception/_TIL(Today I Learned) 2023. 9. 26. 22:50
코딩 가이드라인 특강 협업을 하면서 겪은 경험에 대해 들을 수 있는 강의였다. 협업시 다양한 문제가 발생할 수 있으며, 코드 베이스와 개발 가이드라인, 문법들이 잘 정리되어 코드를 작성한다면, 개발 시간을 단축 할 수 있다. 또한, 윈도우, 리눅스, 개발 보드등 개발 환경을 일관화 하면 개발할 때 좋다. C++, Python등 개발에 필요한 IDE 확장 기능을 구성하면 좋다. 또한 개발 환경을 설정할 때, OS를 밀고 다시 설치하는 경우에는 오래 걸린다. Shell script 를 사용하여 한번에 설치하는 방법을 추천한다. 다른 사람들과 협업을 위해 개발 환경을 통합하는게 좋다.(OS version, build version등) 당연한 소리지만, 개발환경을 통일하지 않으면 문제가 발생한다. 내 로봇에서만..
-
_C++_입출력 스트림Programming/_C++ 2023. 9. 26. 16:21
C++은 C의 super set이기 때문에 C에서 사용하던 로우 레벨 입출력 함수들을 사용할 수 있다. 그러나 에러 처리가 완전하지 않고 커스텀 데이터 타입을 다룰 수 없다는 한계가 존재한다. C++은 스트림이라 불리는 유연하고 객체지향적인 I/O 시스템을 제공한다. 스트림 개념은 데이터를 받거나 생성하는 객체라면 모두 적용할 수 있으며, 대표적으로 콘솔 스트림, 파일 스트림, 문자열 스트림이 있다. 우리가 자주 사용하는 은 인클루드만 해도 메모리 사용량을 증가시키는데, 이는 cin, cout, cerr, clog와 같은 스트림 객체가 자동으로 인스턴스화 되기 때문이다. 출력 스트림을 이용하는 가장 기본적인 방법은 > s; } 위으 코드를 살펴보면 수, 문자열 입력이 미리 알 수 없는 순서로 발생하는 시..
-
_C++_반복자Programming/_C++ 2023. 9. 25. 21:56
C++은 템플릿 기반의 컨테이너(자료구조)를 제공하고 컨테이너 항목들에 범용적인 접근 방복을 제공하기 위해 반복자 패턴을 사용하고 있다. 각 컨테이너는 그 컨테이너만의 반복자를 지원한다. 반복자는 특정 컨테이너의 항목을 어떻게 순회할지 알고 있는 포인터 객체이다. 포인터 객체는 C++ 표준에서 정하고 있는 공용 인터페이스를 따르고 있으며 일관된 방법으로 각 컨테이너를 순회할 수 있도록 해준다. C++ STL에 포함된 알고리즘들 또한 대부분 반복자들을 파라미터로 받아 작동하며, 각 컨테이너의 구조에 종속되지 않게 구현이 된다. C++ 표준에서 반복자의 카테고리 분류 반복자 기능 입력 반복자 출력 반복자 순방향 반복자 양방향 반복자 임의 접근 반복자 접근(operator→) O X O O O 읽기(opera..
-
_C++_연관 컨테이너_비순차 연관 컨테이너Programming/_C++ 2023. 9. 25. 19:23
STL 연관 컨테이너 연관 컨테이너는 Key와 Value를 연관시켜 데이터를 관리한다. 데이터의 정렬상태를 항상 유지함. (삽입, 삭제, 룩업 성능이 모두 동일하게 로그 시간복잡도를 가짐.) 내부적으로 균형잡힌 이진 탐색 트리를 구현하고 있으나 트리는 직접 접근 불가. 표준 연관 컨테이너는 다음과 같이 네 종류가 있다. set: Key 자체가 Value이며 중복 Key를 허용하지 않음. multiset: set처럼 Key가 Value이며 중복 Key를 허용. map: Key와 Value가 별개이며 중복 Key를 허용하지 않음. multimap: Key와 Value가 별개이며 중복 Key를 허용. 모두 템플릿 파라미터 비교 클래스가 있으며 디폴트 비교 클래스를 사용하려면 항목에 operator class ..
-
_C++_알고리즘_Part_2Programming/_C++ 2023. 9. 25. 14:41
비교 알고리즘 항목열 간 비교를 하기 위해 equal, mismatch, lexicographical_compare 함수 중 하나를 선택하여 사용하면 된다. equal, mismatch는 첫 컨테이너에 대해 두 개의 반복자를 필요로하며 두 번째 컨테이너에 대해서는 끝 반복자를 선택적으로 받는다. 두 번째 컨테이너의 시작 반복자만 제공한 경우에는 첫 번째 항목열의 크기만큼만 비교한다. (비교에 사용할 함수를 함수 객체로 전달하여 커스텀이 가능하다.) 비교알고리즘 대신 operator==, operator