분류 전체보기 85

컴퓨터 구조

컴퓨터는 명령어를 처리하는 기계이다. 데이터숫자, 문자, 이미지, 동영상과 같은 정적인 정보컴퓨터와 주고받는/내부에 저장된 정보를 데이터라고 통칭0과 1로 숫자, 문자를 표현하는 방법 명령어컴퓨터를 실질적으로 움직이는 정보데이터는 명령어를 위한 일종의 재료   여기서 메모리는 메인 메모리, 주기억장치이다. 크게 RAM, ROM이 있는데 보통 RAM을 말한다.   메인보드, 마더보드 안에 컴퓨터의 네 가지 핵심 부품을 모두 장착할 수 있다.메인보드에 연결된 부품은 버스를 통해 주고 받는다.버스는 컴퓨터의 부품끼리 정보를 주고 받는 일종의 통로이며 다양한 종류의 버스가 있다.이중 컴퓨터의 핵심 부품을 연결하는 버스는 시스템 버스이다.    메모리: 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하..

SLAM (Simultaneous Localization and Mapping) 개요

주행은 인지-판단-제어의 순서로 진행된다. 다양한 센서를 통해 주변 상황 파악, 탐색, 통신 등 인지하고 경로 생성과 같은 판단 과정을 거쳐 움직임과 관련된 제어 과정을 거친다. 이를 위해 다음의 사항들이 필요하다. 정확한 지도 현재 위치 파악 목적지까지의 경로 상황에 맞는 움직임 제어 (장애물 발견 등 예외사항에 대한 대처 등) SLAM을 만들기 위한 작업은 크게 Frontend, Backend로 나뉜다. Frontend 센서로부터 얻은 데이터를 가공해 Odometry motion을 추정하는 작업을 말한다. 1. 센서 데이터 처리: 로봇에 장착된 센서로부터 얻어지는 데이터를 처리한다. 주로 카메라, 라이다, IMU 등 센서로부터 얻은 데이터이다. 2. 특징점 추출과 매칭: 센서 데이터에서 특징적인 포인..

로봇/주행 2023.11.08

xterm: Xt error: Can't open display. xterm: DISPLAY is not set. exit code 1, cmd 'xterm -e gdb -ex run --args'

ros2 launch를 이용해 gdb를 실행하려고 할 때 나타났다. xterm 명령어가 윈도우 시스템의 디스플레이를 열지 못하고 있는 것을 나타낸다. 주로 리눅스 환경에서 발생하고 그래픽 환경이 설정되어 있지 않거나 SSH을 통해 원격으로 접속하고 있는데 X11 포워딩이 올바르게 설정되어 있지 않은 경우 발생할 수 있다. 해결방법 1. X11 포워딩 설정: SSH 세션을 열 때 X 옵션을 이용해 X11 포워딩을 활성화한다. ssh -X username@remote_host 2. 디스플레이환경 변수 설정: 로컬에서 X11 디스플레이 주소를 원격 서버의 DISPLAY 환경 변수에 설정해야 한다. 원격 서버에서 echo $DISPLAY 명령을 실행해디스플레이 주소가 출력되는지 확인하고 필요하면 설정한다. 이후..

리눅스/오류 2023.11.08

[Git Bash] WARNING: You are using pip version 21.2.4; however, version 23.3.1 is available.You should consider upgrading via the 'D:\Program Files\Python310\python.exe -m pip install--upgrade pip' command.

WARNING: You are using pip version 21.2.4; however, version 23.3.1 is available. You should consider upgrading via the 'D:\Program Files\Python310\python.exe -m pip install --upgrade pip' command. pip 버전 업데이트를 진행하라는 의미이다. 해결: python.exe -m pip install --upgrade pip

기타 2023.10.31

scanf와 std::cin

scanf와 std::cin은 입력에 사용된다. scanf (C) #include // C++ 의 경우 int scanf(const char* format, ...); 값을 읽을 때 변수의 주소를 받아야 한다. 탭, 스페이스바, Enter 키의 입력을 구분자로 이용한다. % 를 통해 다양한 타입을 입력받을 수 있다. scanf 함수는 문자열을 입력받을 때 널 문자를 붙여주지 않기 때문에 문자열의 끝을 알 수 없으며 오버플로우가 일어날 수 있다. 이를 위해 fgets 함수를 이용하거나 폭을 지정해준다. (ex. char str[10]) std::string을 입력받을 수 없다. std::string은 C++ 표준 라이브러리 타입이기 때문에 C 스타일의 문자열 입력 방식인 scanf를 사용할 수 없다. st..

C, C++/공부정리 2023.10.24

Face Recognition

자율주행은 인지-판단-제어 (Sense-Think-Act) 과정을 거친다. 여러 센서를 통해 주변을 인지하고 자신과 주변 상황에 대한 판단, 그에 따른 제어를 통해 움직인다. 레이더(Rader)의 경우 전자기파를 보내 물체에 전자기파가 부딪혀 반사된 것을 측정해 물체의 위치와 속도를 계산한다. 날씨나 어두운 환경에서도 측정이 잘 되지만 작은 물체의 식별이 어렵고 물체 종류에 대해 판독할 수 없다. (라이다보다 정밀성이 떨어진다.) 라이다(Lidar)는 레이저 빛이 물체에 부딪혀 반사되는 시간을 측정해 물체의 거리를 계산한다. 이를 이용해 물체를 탐지하고 주변 환경에 대해 파악해 주행을 위한 지도 생성이 가능하다. 하지만 레이더에 비해 물체 감지 거리가 짧고 측정 시 기후 등 환경에 대한 영향을 받는다. ..

로봇/주행 2023.10.22

[따배씨++] 스택과 힙

우리가 작성한 프로그램을 컴퓨터에 실행시키면 운영체제는 메모리를 넘겨 프로그램을 실행시킬 준비를 한다. 이때 메모리는 여러 구역으로 나뉘며 '세그먼트'라고 부르고 세그먼트마다 역할이 다르다. 코드 세그먼트: 작성한 프로그램이 저장된다.데이터 세그먼트와 BSS 세그먼트: 데이터 영역에는 Initialized data segment, Uninitialized data segment 두 가지가 있다. 전역 변수와 정적 변수가 들어있다. - 데이터 세그먼트엔 초기화가 된 전역 변수와 정적 변수가 있다. - BSS 데이터 세그먼트엔 0으로 초기화 된 전역, 정적 변수가 있다. 코드를 실행시키면 operating system은 main함수를 먼저 실행시킨다. 그리고 코드에서 쓰이는 전역 변수는 가장 먼저 메모리를 ..

C, C++/공부정리 2023.10.15