본문 바로가기

분류 전체보기55

[C++] 에이스타(A*) 알고리즘을 구현한 최단 경로 이동 시뮬레이션 개발 https://jbground.tistory.com/74 최적 경로 찾기 #2 - 에이스타(A*) 알고리즘, 자바 코드 구현 포함에이스타(A*) 알고리즘 에이스타 알고리즘은 순서대로 정점을 검사하는 수학적 접근 방식과 특정 정보를 활용하여 계산 효율성을 향상하는 휴리스틱 접근 방식을 사용하여 비용을 계산하는 알jbground.tistory.com A* 알고리즘 코드void RouteCreator::create(Point& start, Point& end, vector* out) { int n = 100; int m = 70; int dx[] = { -1, 0, 1, 0 }; int dy[] = { 0, 1, 0, -1 }; vector open_list; vector cl.. 2023. 7. 12.
[Go] Golang을 이용한 칼만 필터 적용 구현 및 시뮬레이션 https://jbground.tistory.com/82 [SLAM] 칼만 필터(Kalman Filter)란?로봇의 각종 센서 정보를 통해 로봇의 위치를 추정하고 이동 경로 계획을 위한 SLAM을 하는 과정에서 센서를 통해 들어오는 정보에 잡음(노이즈)이 섞이는 경우가 발생한다. 이로 인해 추정된 위jbground.tistory.com 공부했었던 칼만 필터를 실제로 적용하는 과정을 직접 확인해보기 위해 시뮬레이션 개발을 진행했습니다.칼만 필터는 github.com/konimarti/kalman 라이브러리를 적용했습니다. 간단한 웹 구현을 위해 Gin을 활용하여 개발했습니다.func RoutingByGin() *gin.Engine { r := gin.New() r.Use(gin.Logger()) r.Use.. 2023. 7. 11.
[Redis] 레디스 주요 명령어 모음 전체 조회, 추가, 삭제 등 명령어 모음 레디스 접속 #레디스 접속 명령어 redis-cli #docker in redis 일 경우 docker exec -it [컨테이너명] /bin/bash redis-cli 조회 #키 전체 조회 keys * #key를 이용한 value 조회 get [key] #key 존재 여부 조회 exits [key] #key 만료 시간 조회 ttl [key] #value 길이 조회 strlen [key] 추가 #key-value 데이터 저장 set [key] [value] #key를 이용해 value에 append 작업 append [key] [추가할 value] #key 생성 시 만료시간 설정 setex [key] [expiretime] [value] 수정 #key를 이용한 v.. 2023. 7. 5.
최적 경로 찾기 #4 - 플로이드 워셜(Floyd Warshall) 알고리즘, 자바 코드 구현 포함 플로이드 워셜(Floyd Warshall) 알고리즘 플로이드 알고리즘은 로버트 플로이드(Robert W Floyd)이 발표한 알고리즘으로 버나드 로이(Bernard Roy)가 발표한 알고리즘, 스티븐 워셜(Stephen Warshall)이 발표한 알고리즘과 비슷하기 때문에 플로이드 알고리즘, 로이-워셜 알고리즘, 로이-플로이드 알고리즘 이라고도 불린다. 플로이드 알고리즘은 두 노드 사이에 존재하는 노드와의 가중치를 이용해 최소 가중치 합 경로를 구하는 알고리즘이다. 가능한 모든 경우의 수를 따지므로 시간복잡도가 크지만, 모든 노드에서 자신을 제외한 모든 노드로 가는 최소 가중치 경로를 얻을 수 있다. 플로이드 알고리즘이 다익스트라, 벨만 포드 알고리즘과의 가장 큰 차이점은 어떤 정점에서든지 최단 경로를 .. 2023. 7. 3.
최적 경로 찾기 #3 - 벨만-포드(Bellman-Ford) 알고리즘 벨만-포드(Bellman-Ford) 알고리즘 벨만포드 알고리즘은 리차드 벨만(Richard Bellman)과 레스터 포드(Lester Ford)에 의해서 개발되었고 그들의 이름을 따서 벨만포드라고 정해진 알고리즘이다. 벨만포드 알고리즘은 다익스트라 알고리즘과 비슷한 작동 원리를 가지지만 통행 비용에 음수값이 허용된다는 차이점이 있다. 최적 경로를 도출하기 위해 사용하는 노드의 개수가 n개라면 벨만 포드 알고리즘은 총 n-1 개의 노드에 대한 경로를 모두 탐색한다. 즉, 가장 먼 거리에 있는 노드를 제외한 모든 노드에 대한 경로를 탐색한다. 음수 값이 허용되는 이유는 다익스트라 알고리즘 사용할 때 노드의 간선의 가중치가 음수인 순환 경로가 존재할 경우 순환경로에서 벗어나지 못하고 최단 경로 탐색에 실패하게.. 2023. 7. 3.
[SLAM] 몬테카를로 위치 추정(Monte Carlo Localization)이란? 몬테카를로 위치추정(MonteCarlo Localization, MCL) 몬테카를로 위치 추정(Monte Carlo Localization, 이하 MCL) 방법은 파티클 필터 기반의 위치 추정 알고리즘이다. MCL은 로봇이 위치할 가능성이 있는 모든 영역에서 로봇의 위치를 나타내는 샘플을 랜덤하게 추출하고, 각 샘플이 실제 로봇의 위치인지를 계산하는 과정을 거치게 된다. 따라서 추출한 샘플의 수는 MCL의 성능 및 수행시간과 직접적으로 연관이 있다. 샘플 수가 많으면 위치 정확도는 향상되고 위치추정 실패율은 감소되지만, 수행시간이 길어져 위치 갱신이 늦어진다. 따라서 MCL은 칼만필터 방법에 비해 수행시간이 오래 걸린다. MCL은 거리센서의 정보를 받아 위치추정 알고리즘을 이용하여 추정위치를 갱신하는 과.. 2023. 6. 27.