일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Gazebo
- ZED2
- 인공지능
- 오블완
- 터틀심
- GPS
- 자율주행
- turtlesim
- 강화학습
- GUI
- Visual SLAM
- QT
- DevOps
- 자율탐사
- Puck LITE
- U-blox
- C++
- ubuntu
- Jetson
- ROS
- SLAM
- turtlebot3
- WSL2
- RTK
- 로봇
- ROS2
- WSL
- Simulation
- 젯슨
- 티스토리챌린지
- Today
- Total
목록전체 글 (143)
직관적인느낌
Eigen과 Sophus는 모두 로보틱스와 컴퓨터 비전 분야에서 많이 사용되는 라이브러리입니다. 1. Eigen: 이것은 C++로 작성된 고성능의 선형 대수학 라이브러리입니다. 벡터와 행렬 연산을 위한 다양한 클래스와 함수를 제공하며, 고정 크기 또는 동적 크기의 벡터와 행렬을 모두 지원합니다. 또한, Eigen은 특이값 분해(SVD), 고유값 및 고유 벡터 계산과 같은 고급 선형 대수학 연산도 지원하며, 이는 로보틱스와 컴퓨터 비전에서 유용하게 사용됩니다. 2. Sophus: 이것은 Lie 그룹에 대한 연산을 지원하는 C++ 라이브러리입니다. 로보틱스와 컴퓨터 비전에서는 3차원 공간의 회전과 변환을 다루는 것이 일반적인데, 이러한 연산을 수월하게 처리하기 위해 Lie 그룹과 관련된 수학적 도구가 필요합..
TBB(Threading Building Blocks)는 C++을 위한 병렬 프로그래밍 라이브러리로, Intel에서 개발하였습니다. TBB는 고성능 컴퓨팅을 위한 병렬 알고리즘, 병렬 태스크, 동기화 프리미티브, 메모리 할당 등을 제공합니다. TBB는 효율적인 멀티코어 프로그래밍을 위해 고안되었으며, 개발자가 직접 스레드를 관리하는 대신 고수준의 추상화를 제공함으로써 병렬 프로그래밍을 간소화합니다. 또한, TBB는 동적 스케줄링을 사용하여 태스크를 코어에 분배하므로, 높은 성능과 확장성을 달성할 수 있습니다. TBB의 concurrent_queue와 concurrent_vector에 대해 설명하겠습니다. concurrent_queue: TBB의 concurrent_queue는 여러 스레드에서 동시에 안전..
"std::mutex"는 C++ 표준 라이브러리의 일부로서, 동시에 여러 스레드가 공유 자원에 접근하는 것을 방지하는 데 사용되는 동기화 프리미티브입니다. 여러 스레드가 공유 자원에 동시에 접근하려고 하면 데이터 경쟁 상황이 발생할 수 있으며, 이는 데이터의 일관성을 해칠 수 있습니다. " std::mutex"는 이러한 상황을 방지하기 위해 사용됩니다. 공유 자원에 접근하기 전에 뮤텍스를 잠급니다(lock). 공유 자원을 안전하게 사용합니다. 공유 자원의 사용이 끝나면 뮤텍스를 해제합니다(unlock). "std::mutex"의 주요 메서드에는 "lock"과 "unlock"이 있습니다. lock(): 이 메서드는 뮤텍스를 잠그는데 사용됩니다. 뮤텍스가 이미 잠겨 있으면, 호출 스레드는 뮤텍스가 해제될 때..
std::priority_queue: 힙 구조를 사용하여 항상 가장 높은 (또는 낮은) 우선순위를 가진 요소에 빠르게 접근할 수 있습니다. 일반적으로, 요소를 추가하거나 제거하는 연산은 로그 시간에 가능하며, 가장 높은 우선순위를 가진 요소에 접근하는 연산은 상수 시간에 가능합니다. std::stack: LIFO(Last In, First Out) 방식의 데이터 구조로, 데이터가 추가되고 제거되는 위치가 동일합니다. 즉, 가장 마지막에 들어온 요소가 먼저 나가게 됩니다. 랜덤 액세스는 지원하지 않으며, 요소를 추가하거나 제거하는 연산은 상수 시간에 가능합니다. std::queue: FIFO(First In, First Out) 방식의 데이터 구조로, 데이터가 추가되는 위치(백)와 제거되는 위치(프론트)가..
"std::vector" : C++ 표준 라이브러리에 포함된 동적 배열을 구현하는 템플릿 클래스입니다. 배열과 마찬가지로, 벡터는 연속된 메모리 공간에 요소를 저장합니다. 그러나 벡터의 크기는 동적으로 변경될 수 있으므로, 실행 중에 요소를 추가하거나 제거할 수 있습니다. "std::vector"의 주요 기능과 특징은 다음과 같습니다. 동적 크기: std::vector는 요소를 추가하거나 제거함으로써 크기를 동적으로 변경할 수 있습니다. 이는 실행 중에 데이터의 양이 변경될 수 있는 많은 프로그래밍 상황에서 유용합니다. 랜덤 액세스: std::vector는 배열과 마찬가지로 랜덤 액세스를 지원하므로, 인덱스를 사용하여 요소에 빠르게 접근할 수 있습니다. 메모리 관리: std::vector는 메모리 할당 ..
FSM(Finite State Machine)은 유한 상태 기계를 의미하며, 이는 특정한 수의 상태를 가지고 있고, 이벤트(또는 조건)에 따라 상태를 전환하는 수학적 모델을 말합니다. FSM은 크게 두 종류로 나눌 수 있는데, 이는 - Mealy Machine과 - Moore Machine입니다. Mealy Machine : 이 FSM은 현재 상태와 입력에 기반하여 출력을 결정합니다. 즉, 같은 상태에서도 입력에 따라 출력이 달라질 수 있습니다. Moore Machine : 이 FSM은 현재 상태에만 기반하여 출력을 결정합니다. 같은 상태에서는 어떤 입력이 들어오든 간에 출력은 항상 동일합니다. 상태(State): FSM의 각 단계를 나타냅니다. 각 상태는 입력에 따라 다른 상태로 전환될 수 있습니다. ..
시리얼 통신: Qtserialport - 설치 sudo apt-get install libqt5serialport5-dev

.ui 에서 버튼을 우클릭한다. Go to slot을 클릭한다. 헤더폴더 → mainwindow.h private slots: void on_bt_find_clicked(); 소스 폴더 → mainwindow.cpp TextFinder::on_findButton_clicked()