ted97k의 등록된 링크

 ted97k로 등록된 네이버 블로그 포스트 수는 96건입니다.

PCL Study #000 : PCL의 이해 [내부링크]

포인트 클라우드(Point cloud) Lidar 센서, RGB-D센서 등 으로 수집되는 데이터를 의미 합니다. 이러한 센서들은 물체에 빛/신호를 보내서 돌아 오는 시간을 기록하여 각 빛/신호당 거리 정보를 계산 하고 하나의 포인트(점)을 생성 합니다. Point Cloud Library 는 이렇게 취득한 pointcloud를 후처리하는데 사용되는 알고리즘을 구현해둔 라이브러리입니다. 특히, 이를 활용하여 Point Cloud의 파일 저장, 읽기, 잡음 제거, 정합, 군집화, 분류, Feature extraction 등의 알고리즘을 사용할 수 있는 기능을 제공합니다. + PCL 라이브러리 설치 방법에 대해서는 아래 링크를 참고 바랍니다. https://pcl.gitbook.io/tutorial/part-0/part00-chap.......

PCL Study #001 : ROS usage [내부링크]

PCL을 사용하더라도 결국 ROS에서 사용하기 위해서는 통신 msg type을 맞춰줘야 합니다. ROS에서는 sensor_msgs::PointCloud2를 사용하기 때문입니다. 이러한 구조를 사용하는 이유는 제가 참고한 임형태님의 블로그 글에 따르면, ranging data가 uint8로 encoding 되어 있는데, 이렇게 1차원의 range 정보를 data를 담아서 publish/subscribe 하는 게 3개의 float64로 구성돼있는 수 만개의 pcl::PointXYZ를 직접 publish/subscribe 하는 것보다 훨씬 메모리를 절약할 수 있기 때문입니다. sensor_msgs::PointCloud2 → pcl::PointCloud pcl::PointCloud → sensor_msgs::PointCloud2 위의 두 예시처럼 type 변환을 할 수 있습니다. 2D Li.......

#2-2 LeGO-LOAM Loop Closure Performance Improvement [내부링크]

#1 우선, LeGO-LOAM의 mapOptimization.cpp를 살펴보면 loop closure 단계에서 ICP알고리즘을 사용한다. 이 과정에서 ICP 알고리즘 사이에 성능 차이가 있을까 하여 관련 자료를 알아보았다. ICP : Point-to-point 간에 iterative하게 R;t를 구하는 방식 G-ICP : point-to-point만 하기에는 실생활에는 plane이 많으니깐 point-to-plane도 추가 NDT : 공간을 cell로 나눠서 각 point들의 distribution에 따른 확률을 기반으로 해서 R;t를 구하자 NDT-omp : 멀티 쓰레드를 이용해서 좀 더 빠르게 NDT 수행(같이 1 thread만 써도 속도가 거의 2배정도 빠름) - 참고 : https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8732.......

#3-1 Registration Project [내부링크]

이번에는 KAIST 교정 내 PCD 파일로 Registration 과정을 해보는 프로젝트를 시작했다. 받은 scene은 3개 였으며, 다음과 같이 rviz에서 확인할 수 있도록 패키지를 만들었다. rotation 뿐만아니라 translation 또한 차이가 매우 많이 난다. 일단은 보이는 주황색, 연두색 두 데이터만을 registration 하고, 파랑색 데이터셋을 그 뒤에 registration 하는 것을 계획으로 잡았다. Voxelization이 되어있는지 몰라서 적용해 봤더니 이미 적용이 된 데이터셋 같아서 사용하지 않았다. 따라서 그냥 initial guess로 180도 rotate를 시켜준 뒤, icp와 g-icp를 적용해보았고, 확실히 도심환경이다보니 g-icp가 더 좋은 결과를 도출했다. 진짜 아무 것도.......

KAIST 내 야지환경 Dataset을 이용한 LIO-SAM 테스트 [내부링크]

LIO-SAM package 내에 있는 params.yaml 파일의 파라미터를 ouster 128ch로 맞춰준 뒤, LIO-SAM 개발자가 사용한 IMU와 KAIST에서 취득한 데이터셋의 coordination system이 다르기 때문에 이를 맞춰주면 아래 사진과 같이 정상적으로 SLAM이 되는 것을 확인할 수 있다. 필요한 패키지의 링크는 다음과 같다. ouster package : https://github.com/ouster-lidar/ouster_example LIO-SAM package : https://github.com/TixiaoShan/LIO-SAM

Rodrigues Formula [내부링크]

LOAM 논문을 읽다가 회전변환행렬에 대한 파트에서 로드리게스 회전 공식(Rodrigues Formula)에 대해 접했다. 로보틱스 분야에서는 필수로 알고있어야 하는 공식이고, 이를 통해 내적과 외적에 대한 전치행렬의 특성 또한 알 수 있었다. 내적, 외적과 전치행렬 사이의 특성을 그냥 보면 이해가 되지 않겠지만 성분을 통한 곱으로 접근하면 바로 이해가 될 것이다. Rodrigues Formula는 Rotation Matrix를 구할 때 쓰는 공식이라고 생각하면 될 것 같다. 참고 : https://jebae.github.io/rodrigues-rotation 참고 교재 : http://hades.mech.northwestern.edu/index.php/Modern_Robotics

Gradient, Jacobian, Hessian, Laplacian [내부링크]

아직 부족한 내용이 있는 듯 하여 특히 야코비안에 대해서는 다음에 추가적으로 다른 개념과 함께 다뤄봐야 할 것 같다. 참고 : https://darkpgmr.tistory.com/132

Newton's Method, Gauss-Newton Method [내부링크]

앞에서 올린 부분과 함께 Newton's method도 SLAM에서 어떻게 자세히 응용되는지는 논문이나 추가적은 글들을 통해 보완하도록 하겠다. 개념을 이해하는 것은 이것으로 충분할 것이다. 참고 : https://darkpgmr.tistory.com/58

Scan Context [내부링크]

Scan Context is global descriptor LiDAR Point Cloud. And it is designed for a sparse and noisy point cloud acquired in outdoor environment. (But recently, there is scan context++ which is robust to rotation and lateral variations in urban environments.) So it is a loop-closed detection / place recognition algorithm when you only have point cloud (geometry informations). This is a flow of Scan Context. 3D Point cloud is transformed to Scan Context(2D) by ring and sector. Then, nearest neighbor search process is needed because of angle differences. Although pose is same, as angle of scans, scan .......

KAIST 내 야지환경 Dataset을 이용한 LeGO-LOAM 테스트 [내부링크]

OS0-128 dataset을 이용하여 LeGO-LOAM을 돌리기 위해서는 일부 파라미터를 수정해야한다. 이는 깃헙에 업로드 해두었으니 참고해두길 바란다. 데이터셋은 저번 LIO-SAM 테스트에서 활용했던 OS0-128 dataset을 그대로 이용했다. https://github.com/kimdaebeom/LeGO-LOAM 테스트 결과를 보면 mapping자체는 나쁘지 않은 결과를 내는 것 처럼 보이지만, LeGO-LOAM의 Segmentation을 통한 Ground제거와 같은 부분이 제대로 되지 않는 것을 확인할 수 있다. Outlier를 확인했을 때도 Outlier로 뜨는 것도 거의 존재하지 않았다. 이를통해 LeGO-LOAM의 장점이 제대로 살려지지 않았다고 판단했다. Planar, Edge feature points가 뜨는 것을 확인했는.......

Kalman Filter Introduction [내부링크]

한달 전에 정리했던 내용인데 까먹고 있다가 이제 업로드 한다. 출처 : https://gaussian37.github.io/autodrive-ose-kalman_filter_intro/ 정리 안 된 부분이 많아서 추후에 정리하여 업로드 하겠다.

Kalman Filter, Extended Kalman Filter [내부링크]

참고 : http://jinyongjeong.github.io/2017/02/14/lec03_kalman_filter_and_EKF/

#1 LIO-SAM Key-Frame 추출 [내부링크]

팀에서 Graph-based SLAM의 장점인 Loop-closure을 통한 update를 하는 과정에서 update되는 Key-Frame만을 추출하는 기능이 필요했다. LIO-SAM 코드는 https://github.com/kimdaebeom/LIO-SAM 에서 볼 수 있다. LIO-SAM을 실행해보면 key frame이 visualize되는 것을 확인할 수 있기 때문에, visualize하는 코드를 먼저 찾았다. 해당 코드는 map_optimization.cpp에 있다. 코드를 보며 key frame은 pair형태로 key node의 index와 그와 constraint를 가지는 node의 index를 가지는 형태라는 것은 확인했다. 따라서 rostopic을 출력시켜보면 constraint가 없는 노드는 빈값이 들어가는 것을 확인할 수 있다. 따라서 loopindexcontainer의 first에.......

#2-1 LeGO-LOAM Loop Closure Performance Improvement [Robust Back-End] [내부링크]

이번에는 LeGO-LOAM의 Loop Closure 과정에서 성능 향상이라는 주제로 공부하게 되었다. 결과를 보면, Loop Closure를 형성하며 map이 조금씩 삐뚫어지는 것을 확인할 수 있다. Graph-based SLAM에서 Loop Closure을 형성할 때 시간적으로 인접하지 않은 두 노드에 constraint를 통해 누적 오차를 해소한다. 이는 힘이 약한 스프링과 강한 스프링을 통해 설명하면 이해하기 쉽다. 예를 들어, 1m 거리의 차이가 나는 공간 사이에 센서가 50cm 정중앙에 물체가 위치했다고 판단했다. 우리는 이 공을 약한 스프링으로 정중앙에 연결되어있다고 생각하면 된다. 하지만 loop closure을 형성하여 이 공이 42cm에 존재한다고 거리를 보정하였다. 이는 이.......

LOAM: Lidar Odometry and Mapping in Real-time [내부링크]

LOAM은 high accuracy ranging과 inertial measurement 없이 Low-drift, Low-computational-complexity인 Odometry가 나오는 것을 목표로 한다. 이러한 성능이 가능한 이유는 병렬구조의 Odometry와 Mapping 과정을 통해 실시간성을 높인다는 장점 때문이다. Odometry 과정은 online motion estimation을 위한 높은 frequency, 낮은 신뢰도(fidelity)를 지닌다. 이를 통해 특징점 간 correspondences를 빠르게 연산한다. Mapping 과정은 위의 과정보다 frequency는 낮지만, fine registration이 가능하다. 낮은 frequency로 인해 정확도 향상에 충분한 시간을 가지며, 많은 특징점을 통합 가능하고 convergence를 위한 충분한 iteration이 가능하.......

이천이십일년 구월 십오일 수요일 [내부링크]

누구를 만나 여유를 즐긴적이 언제인지 기억도 나지 않는다. - 아침 6시 헬스장을 가고 9시에 학교를 가고 다시 새벽에 집을 들어온다. 그러한 7일이 반복된다. - 문제가 발생하고 해결되기를 반복하고 정말 힘들게 앞으로 나아가고 있음에도 제자리 걸음을 하고있는 느낌이다. - 무엇을 찾아 그리 헤매는 걸까 쉬고싶다 아니, 시간이 조금 더 있으면 좋겠다 적어도 식사정도는 여유롭게 즐길 수 있을 정도라도 그럼에도, 속절없이 빠르게 흘러가는 시간 속에서 그 시간을 붙잡고 싶고, 찰나를 기억하고 싶다. 그러니 하루하루, 매 시간을 소중히 여기고 기억하기위해 노력하겠다. 지금은, 너저분하게 흐트러진 정신을 잠시 가다듬고 싶은 상태였.......

Linear Interpolation 선형 보간법 (공식 직접 만들기) [내부링크]

Path Tracking 즉 경로추종 알고리즘에서는 크게 세가지가 필요하다. 구동체의 현재위치, 구동체가 경로추종 과정에서 임의적으로 지정한 타겟 위치, 구동체의 헤딩방향 이 세가지를 이용하여 보통 차량의 헤딩방향과 타겟지점 사이의 각을 구해 조향각을 창출한다. 그런데 알고리즘을 적용하기 전, 필수적인 방법을 알아야 한다. 바로 선형 보간법! 구글링을 해보면 선형보간법 공식이 굉장히 많은 것을 알 수있다. 근데 구글에 있는 코드를 긁어오자니 굉장히 긴 코드만 많고,waypoint 알고리즘을 사용하는데는 굳이 이정도의 연산량이 필요하지 않다. 심심해서 직접 수식을 만들고 코드를 만들어 봤다. 다음번에는 이 선형보간 식을 적용한 경.......

이천이십일년 십이월 일일 [내부링크]

이제 12시가 지났으니 12월이다. 한 해가 이렇게 또 가는게 너무 맘아파. 한 살 더먹는건 더 아프고. 이제 나도 늙은이 소릴 듣는걸까나 가. 올해는 좋은 사람을 많이 만나고, 상처도 받고 행복함도 느끼고 여러모로 참 바쁘면서 힘들었던 한 해다. 흠... 진짜 지금이 살면서 가장 미래가 불확실하고 힘든 시기인데 그만큼 잘 준비해서 좋은 결과를 얻고싶다. 이럴때일수록 힘들어하기보단 긍정적으로 생각하고 좋아하는 사람들로부터 좋은 기운을 얻어서 열심히 살아야 할 것 같다. 그래도 내 주위에 좋은 사람들이 있어서 그 분들 덕분에 하루하루 잘 이겨내는 것 같다. 너무 고마운 사람들이고 항상 기억해야지. 그 사람들은 내가 얼마나 고마.......

평균필터, 이동평균필터, LPF, 상태방정식 [내부링크]

참고 : https://gaussian37.github.io/autodrive-ose-state_equation/

Bayes' Filter [내부링크]

참고 : Probabilistic Robotics(도서), https://gaussian37.github.io/autodrive-ose-bayes_filter/

고유값, 고유벡터 [내부링크]

고유값과 고유벡터는 모든 곳에 쓰이므로 확실하게 알아두고, 그 의미를 알고있는 것이 좋다. 나의 경우에는 수식적으로는 이해를 하겠으나 SLAM에서의 활용이 궁금하여 석사님께 질문하였고, 차량의 좌표계에서 Point Cloud Data의 확률 분포가 있을 때의 고유벡터, 고유값 그 외에도 SVD, PCA에 관한 설명을 듣고 이해가 되었다. 참고 : https://darkpgmr.tistory.com/105

특이값 분해 (SVD) [내부링크]

저번 글에서 eigenvector, eigenvalue를 다루었다. 이와 함께 무조건 알아야 할 것이 굉장히 많은데, SVD도 그 중 하나이다. 매우 중요한 개념이니 꼭 익히도록 하자. 나도 개념은 확실히 이해하였으나 SVD의 수많은 특성이나 응용에 대해서는 아직 모른다. (나중에 연구할 분야에 맞게 추가적인 공부를 하면 될 것 같다고 생각하였다) 참고 : https://darkpgmr.tistory.com/106 참고2 : https://angeloyeo.github.io/2019/08/01/SVD.html

Point Cloud Registration & ICP algorithm - A [내부링크]

SLAM을 공부하기 전에 필수로 공부해야하는 파트이다. PCD를 정합하는 분야는 SLAM 연구 분야 중 중요한 분야이며, matching하는 과정에서 가장 기본이 되는 알고리즘인 ICP(Iterative Closest Point)또한 필수로 알아야 한다. 나도 이해하는 과정에서 많은 어려움이 있었고, Object Function을 설명하는 후반부는 정확히 이해하지 못했다. 추후 추가적인 자료를 서칭하여 수정 업로드를 하도록 하겠다. * 이번 정리는 Cyrill 교수님의 강의와 SLAM kr에서 제공하는 SLAM dunk season 2를 정리한 김태영 씨의 블로그를 참고했다. https://taeyoung96.github.io/slam/SLAM_03_1/

Point Cloud Registration & ICP algorithm - B [내부링크]

Point 정합, ICP 알고리즘에 대한 설명이다. SLAM의 기본이 되는 개념이므로 필수로 알아둬야할 것 같다. 저번 글과는 기본 가정이 다르므로 어떤 경우에 어떻게 registration을 진행하는지 개념을 잘 잡아두면 편하게 이해될 것이다. 3번째 슬라이드를 보면, Kernel Function에 대한 언급을 확인할 수 있다. 이와 관련해서도 공부하면 좋을 것 같아 다음 글에서는 Kernel Density Estimation(KDE)에 대해 작성하겠다. 이번 글 또한 Cyrill 교수님의 강의와 SLAM kr에서 제공하는 SLAM dunk season 2를 정리한 김태영 씨의 블로그를 참고했다. https://taeyoung96.github.io/slam/SLAM_03_2/

Kernel Density Estimation (KDE) [내부링크]

ICP 알고리즘을 공부하다 처음 보는 단어라 궁금하여 공부하게되었다. 크게 어려울건 없으니 가볍게 읽어보면 좋을 것 같다. 참고 : 다크 프로그래머 블로그 https://darkpgmr.tistory.com/147

Global Path Planner & Cost Map [내부링크]

waffle 모델을 사용하기 위해 bash shell에 해당 명령을 입력한다 ( 또는, ~/.bashrc 를 수정하여 맨 밑에 export TURTLEBOT3_MODEL=waffle 를 추가한다 ) ROS Navigation은 우리가 일반적으로 차를 운전하면서 사용하는 내비게이션처럼 단순히 길만 찾는것이 아닌, 해당 경로를 따라 주행까지 하는 것을 말한다. 로봇을 A지점으로부터 B지점으로 이동하는 과정의 Path Planning 프로세스와 여기서 발생하는 모든 요소들을 알아보자. RViz를 이용한 Path Planning의 시각화 우리는 RViz를 사용하여 Path Planning 프로세스를 시각화 할 수 있습니다. 이를 위해서 RViz에는 3가지 요소가 있다. [ Map Display (Costmaps), Path Displays (Pla.......

Local Path Planner & Cost Map [내부링크]

Local Planner global planner가 경로를 계산하면, 이 경로는 local planner로 보내지고, 전역 경로 내에서 센서가 인지한 정보에 따라서 지역적인 (더욱 세부적이고 자세한) 경로를 계획합니다. 따라서 local planner는 오도메트리와 레이저 데이터를 계속 확인하고, 충돌이 없는 local plan을 선택해야 합니다. 이는 로봇의 충돌을 방지하며 목적지에 도달하기 위해 로봇의 경로를 즉시 재계산할 수 있습니다. base_local_planner base local planner는 global plan을 계산하고, 실행하기 위해 Trajectory Rollout과 Dynamic Window Approach(DWA)알고리즘을 제공합니다. 이 알고리즘이 어떻게 동작하는지를 요약하자면, 다음과 같습니다. 이는.......

Localization 방법론과 향후 발전성 [내부링크]

자율 주행 시스템에서는 너무 저가의 오차가 큰 시스템도 적합하지 않지만, 수천만원 하는 고가의 위성통신 시스템을 이용한 매우 정밀한 위치정보를 얻는 시스템 또한 가격 문제로 적합한 시스템이라 볼 수 없다. 따라서 저가의 시스템으로 고정밀 위치를 추정하는 기술이 자율주행 시스템에서 매우 중요하다. 다음 4가지 위치추정 기술에 대하여 알아보자. 1. GNSS 2. Lidar와 HD Map 3. 추측항법과 휠 주행거리계(wheel encoder) 4. 센서 퓨전 GNSS Global Navigation Satellite System을 이용한 위치추정 기술은 흔히 GPS라고 불리는 인공위성 신호를 활용하는 기술을 말한다. GNSS란 우주궤도를 돌고있는 인공위성에서 발산하는 전파를 이용.......

자율주행에서의 주변환경 인지 [내부링크]

자율주행에서 인지(Perception)는 차량 주변의 동적인 환경을 감지하고, 감지된 센서 데이터를 기반으로 주변 환경을 세부적으로 표현하고 후에 주행 상황을 고려햐여 제어의 바탕이되는 중요한 기술이다. 인지 기술 개발에 필요한 공용 데이터셋에 대해 알아보면, 자율주행차량은 개발 단계에서 수많은 주행 데이터가 필요하다. 일반적으로 더 큰 데이터셋과 보다 사실적인 이미지는 우수한 성능의 알고리즘 개발에 도움이 된다. 자율주행 부문에서는 대표적으로 KITTI와 Cityscapes에서 기술 개발을 위한 데이터셋을 제공한다. (KITTI 데이터셋은 독일 Karlsruhe 공과대학과 시카고의 Toyota 기술연구소가 공동 진행한 프로젝트로) KITTI 데이.......

Euler, Quaternion, Gimballock (오일러 각, 쿼터니언, 짐벌락) [내부링크]

Euler 각도는 x, y, z 3개 축을 기준으로 yaw, pitch, roll을 계산하는 우리가 알고있는 각도계를 의미한다. 하지만 여기에는 문제가 있다. 각 축의 회전을 90도씩 시켜보다 보면 계산이 불가능한 상황이 발생할 것이다. 이러한 현상이 바로 '짐벌락' 현상이다. 짐벌락이 생기는 이유는 오일러 앵글이 자체적으로 설정되어있는 순서로 해당 축들을 개별적으로 계산하기 때문이다. 세개의 축을 동시에 계산하는 것이 아닌, 각 축을 독립적인 존재로 판단하기 때문에 겹치는 현상이 발생하는 것이다. 예를 들면, 하나의 축을 회전시킬 때, 그에 연결된 다른 축이 함께 회전할 수도 있다. 특정 축의 회전이 다른 축의 회전에 영향을 주어.......

자율주행에서의 지도 [내부링크]

자율주행 차량은 다양한 센서를 통해 수많은 데이터를 처리한다. 이러한 데이터를 자율주행 차량이 빠르게 인식하기위해 가공한 데이터를 정밀 지도라고 한다. 정밀지도란, 오차범위가 10~20m 내외의 도로 및 주변환경을 구현하여 지도와 센서 데이터들을 활용하여 지도 내에서의 현재 위치를 파악 가능하여야 한다. 또한, 효과적이고 안전한 경로 계획이 가능하므로 자율주행에서 필수요소라고 할 수 있다. 정밀 지도에는 Point Cloud Map, HD Map, Grid Map 3가지가 있다. Point Cloud Map은 Point Cloud 데이터로 지도를 만든 것이고, map과의 matching을 통해 localization을 하고 3D 형태의 지도이기 때문에 데이터의 정보량이 크다는 단점.......

이천이십일년 칠월 이십팔일 수요일 [내부링크]

어쩌면 한 순간, 길 수도 있는 그 잠깐을 좀 더 집중하고 버티고 힘을내서 더 단단한 사람이 되어야 겠다. 내가 가진 것을 허투루 낭비하기 보다는 나 자신을 위해 소중히, 그리고 신중히 힘이 있는 사람이 되어 의심하지 않을 수 있도록. 자신에게 집중하고 후회하지 않았으면.

すし おまかせ - #6 (스시 우미) [내부링크]

오랜만에 종강 기념으로 친구들과 간 스시야 '스시 우미' 위치는 신용산역에서 도보로 5분정도 거리였고 해당 건물 지하 1층에서 약도를 보고 찾아야 찾을 수 있을 정도로 길치에게는 찾기 어려운 곳이었다. 요즘은 스시야들이 간판도 안거는 게 추세(?)라 그런지 여기도 간판이 없었다. 사실 스시 우미는 스시 시미즈 계열 스시야로 유명해서 처음 오픈했을 때부터 굉장히 가고싶었는데 다른 곳들을 먼저 가보느라 늦게 와보게되었다. 오픈 당시에는 런치가 4만원? 정도였던 것 같은데 듣기로는 네타의 질을 위해서 가격을 인상하신 것 같았다. (사실 런치보다는 디너를 가고싶었는데 친구들이랑 시간을 맞추다 보니 런치를 가게되었.......

[스파르타 코딩클럽] 머신러닝 1주차 [내부링크]

01. 1주차 오늘 배울 것 머신러닝 가장 쉽게 배우는 머신러닝에 오신 여러분을 환영합니다! 기계를 학습시킨다고 하는데, 기계가 뭘 배운다는 건지, 어떻게 가르치는지 궁금하셨죠? 이번주에 머신러닝에 대해 알아보고 직접 코드도 실행하며 익혀봅시다 c 선형 회귀 컴퓨터가 풀 수 있는 문제 중에 가장 간단한 것이 바로 두 데이터 간의 직선 관계를 찾아 내서 x값이 주어졌을 때 y값을 예측하는 것인데요! 이것을 선형회귀라고 합니다 02. 필수 계정 가입하기 수업 실습에서 사용하는 Google Colab과 Kaggle을 위해 아직 Gmail이나 캐글 계정이 없다면 미리 생성해주세요! 03. 머신러닝이란? 알고리즘이란? 알고리즘 수학과 컴퓨터 과학, 언.......

[스파르타 코딩클럽] 머신러닝 2주차 [내부링크]

1) 논리회귀 머신러닝에서, 입력값과 범주 사이의 관계를 구하는 것 직접 코드를 실행하면서 어떻게 데이터로부터 타이타닉 생존자를 예측하고, 당뇨병을 판단할 수 있을지 생각해보자 2) 전처리 실제 업무에서 얻는 데이터는 오기입하는 경우도 있고 단위와 분포가 제각각이라 정제작업이 꼭 필요한데, 일반적으 로 꼭 해야하는 전처리 기법들과 이유에 대해 배워보고, 실습하며 직접 적용해보자 논리회귀 (Logistic regression) 선형 회귀 만으로 풀기 힘든 문제의 등장 : 시험 전 날 공부한 시간으로 해당 과목 이수 여부를 예측하는 문제 이수여부를 이진 클래스 0,1로 나타내더라도 선형회귀를 사용하면 그래프가 이상하게 나타난다. 하지만.......

[스파르타 코딩클럽] Linear Regression 코드 (Salary) [내부링크]

기본적으로 코드를 만들기 전에, kaggle의 데이터를 받아오고 압축을 풀어야 한다. 위의 순서에 따라 제대로 데이터를 받아왔다면 아래 코드를 통해 간단한 Linear Regression 문제를 해결할 수 있다.

[스파르타 코딩클럽] 당뇨병 예측 문제 (이진 논리 회귀) [내부링크]

kaggle의 데이터를 받아와 압축을 푼다. 다음과 같은 코드로 간단한 이진 논리 회귀 문제를 풀 수 있다.

[스파르타 코딩클럽] 머신러닝 3주차 [내부링크]

지금까지는 1차 함수를 이용하였지만 자연계에서는 1차 함수로는 설명할 수 없는 문제가 많다 (예를 들면, XOR 문제) 하지만 다음과 같이 선형회귀를 반복하는 것으로는 비선형 함수를 구현할 수는 없다 y = W2 (W1x + b1) + b2 = (W1W2 )x + (W1 b1 + b2 따라서 선형 회귀 사이에 비선형의 layer(층)을 deep하게 쌓았고, 이를 deep learning이라고 한다. Deep Neural Network라고도 하고 Multilayer Perceptron이라고도 한다. 신경망을 실제로 구성하는 요소에는 batch 사이즈와 epoch, 활성화 함수, 과적합과 과소적합, 데이터 증강, 드랍아웃, 앙상블, 학습률 조정 등이 있다. 기존 머신러닝은 AND, OR 문제로 존재하였지만 XOR 문.......

[스파르타 코딩클럽] Sign Language MNIST (수화 알파벳) 실습 [내부링크]

keras id 등록 후 데이터셋을 다운받는다. 이후 필요한 패키지를 import하고, 데이터셋 로드, 라벨 분포 확인 및 전처리, 네트워크 구성과정을 거쳐 학습시킨다.

[스파르타 코딩클럽] 머신러닝 4주차 [내부링크]

신경망을 구성하는 방법은 다양한데, 그 중 가장 많이 쓰이는 합성곱 신경망(CNN), 순 환 신경망(RNN), 생성적 적대 신경망(GAN)에 대해 알아보자. Convolutional Neural Networks (합성곱 신경망) 합성곱(Convolution)은 예전부터 컴퓨터 비전 분야에서 많이 쓰이는 이미지 처리 방식으로 계산하는 방식은 아래와 같다. 입력데이터와 필터의 각각의 요소를 서로 곱한 후 다 더하면 출력 값이 된다. 5x5 크기의 입력이 주어졌을 때, 3x3짜리 필터를 사용하여 합성곱을 하면 3x3 크기의 특성맵(Feature map)을 뽑아낼 수 있다. 필터(Filter 또는 Kernel)를 한 칸씩 오른쪽으로 움직이며 합성곱 연산 을 하는데, 이 때 이동하는 간격을 스트라이드.......

[스파르타 코딩클럽] MNIST (수화 알파벳) 실습 (CNN, 증강기법) [내부링크]

데이터셋 다운로드 학습 코드 추가 ) 이미지 증강기법을 사용한 코드

Path Planning 경로 계획 기초 - Turtlebot3 [내부링크]

지금 까지 Navigation Stack, Mapping, Localization에 대해 알아보았다. 이후에 Navigation을 하기위해 로봇이 어느 경로를 통해 목적지 까지 가야할지 알려주는 시스템이 필요하다. 이것이 경로계획, Path planning이라고 하고, 현재 로봇의 위치와 목표위치를 입력받고, 해당으로 가는 가장 빠르고 안정적인 경로를 출력한다. Turtlebot3를 이용하여 간단한 개념 정도만 알아보도록 하자. 저번 Localization category에 있었던 글을 이용 하면 Rviz에 로봇을 띄우고 거기에서 Rviz의 툴을 이용하면 가능하다. 2D Nav Goal을 이용하여 목표지점을 선택하면 로봇이 자동으로 목적지 까지 주행하는 모습을 볼 수 있다. 그런데 로봇은 어떻게 그 경.......

Mapping 지도 생성 기초2 - Turtlebot3 [내부링크]

이번에는 turtlebot3 simulation package의 waffle PI 로봇 모델을 이용하여 mapping의 기초에 대해 적어보겠다. 우선, waffle 모델을 사용하기위해 코드가 필요하다. 방법은 두가지이다. 그리고, Rviz의 LaserScan Display와 Map Display를 이용하여 확인해 볼 수 있다. 우선 시뮬레이션 환경과 slam, rviz를 켜주도록 하자. 이렇게 Rviz가 정상적으로 켜지면, 왼쪽 하단의 Add 버튼을 누르고 rviz의 LaserScan을 추가해주자. 그럼 이렇게 Laser Scan이 추가가 될텐데 우리는 topic을 우선 설정해줘야한다. (잘 안보이니 size도 0.03 ~ 0.05로 바꿔주자) 그러면 이와 같이 로봇이 받아오는 sensor data를 시각화하여 확인할 수 있고, 로봇을 tel.......

Localization - Kalman Filters (sensor fusion) GPS, IMU [내부링크]

Kalman Filters 칼만 필터는 1. 연속적인 숫자 데이터를 조합(fuse)하여, 2. 센서의 여러 축에 따른 불확실성을 계산한다. Extended Kalman Filter (EKF), Unscented Kalman Filter (UKF) 중에서 UKFs는 느리지만 non-linear transformations에 대해 더 정확하고, EKFs는 빠르지만 비교적 부정확 하다. Covariance 공분산 (Covariance)이란, 두 변수가 얼마나 상관관계를 띄고 있는지를 나타낸다. 양(+)의 상관관계의 경우에 비례한다는 것이고 음의 경우에는 반비례 경향성을 나타낸다고 한다. Kalman Filter를 사용할 때는 여러 변수들 간의 관계를 쉽게 나타내기 위해 공분산 행렬을 사용하여 나타낸다. 공분산 행렬의 index는 그 행과 열의 변.......

이천이십년 이월 오일 수요일 [내부링크]

가. 내일 상경을 한다. 이사 짐을 싸고, 대구 본가를 정리한다. 자취 그리고 복학 다시 시작될 바쁠 일상들...

항상 옆에 있어주는 사람 [내부링크]

두번째 글에서는 박준호라는 이름을 가진 사람에 대해 얘기해보려 한다. 첫글이 나에대한 글이라면, 두번째...

이천이십년 이월 십일일 화요일 [내부링크]

- 내가 생각하는 사랑이란 가. 누군가를 만났다. 많이 좋아하고 있는 사람이다. 그 사람을 처음 봤을 때부...

인간실격. 다자이 오사무 [내부링크]

책을 좋아한다면 일본의 작가를 몇 알것이다. 추리, 미스터리의 세계적 작가 히가시노 게이고, 상실의 시대...

유럽 두 달 살기 첫번째 '포르투갈의 심장, 리스본' [내부링크]

작년 12월, 나는 리스본에 일주일 간 머물렀다. 리스본은 숙소 현관 앞에서 사진을 대충 찍어도 예쁜, 그런...

이천이십년 이월 십이일 수요일 [내부링크]

가. 안좋은 일은 항상 몰려온다. 나에게도, 나에게 가장 소중한 사람도. 슬픔이 이토록 한번에 몰아치고 나...

유럽 두 달 살기 1-1 리스본 근교도시 '신트라, 호카곶, 카스카이스' [내부링크]

리스본 여행을 간다면, 빼놓을 수 없는 근교도시가 있다. 신트라 - 호카곶 - 카스카이스 보통 리스본 여행...

이천이십년 이월 십칠일 월요일 [내부링크]

가. 어떤 한 사람을 좋아한다는 감정. 그 또한 정이라고 생각한다. 그리고 여기에서의 '정'은 이...

이천이십년 이월 십팔일 화요일 [내부링크]

가. '중,고등학교 친구는 오래가는데, 대학 친구는 정이 안가더라. 좀 이해타산적인 느낌.' 주변...

이천이십년 이월 십구일 수요일 [내부링크]

가. 그런 날이 있다. 모든것이 마음대로 안되는 날. 그 이유를 생각해보면 나에게 문제가 있을 때도, 반대...

이천이십년 이월 이십일 목요일 [내부링크]

가. 동정심 : 남의 어려운 처지를 안타까워 하는 마음. 누구나 어려운 처지 일 때가 있다. 하지만 그 누구...

이천이십년 이월 이십이일 토요일 [내부링크]

가. 믿고 의지할 수 있는, 동 나이대에 비해 성숙하고 어른스러운. 하지만 그게 독이 될까 걱정이 되는 친...

이천이십년 이월 이십오일 화요일 [내부링크]

가. 내가 가장 중요시 여기는 안정감이 생겼다. 내 인생이 안정화되고 있다는 것을 느끼고 그 안정감이 깨...

이천이십년 삼월 이일 월요일 [내부링크]

가. 아침 7시, 아픈 머리를 쥐어싸며 일어난다. 계란 국을 끓이고 스팸을 굽는다. 엄마가 만들어준 김치와 ...

이천이십년 삼월 칠일 토요일 [내부링크]

가. 나랑 잘 맞는 사람. 나와 잘 어울리는 사람. 그런 사람이 세상에 몇이나 될까. 누구나 자신과 잘 맞고 ...

이천이십년 삼월 팔일 일요일 [내부링크]

가. 오늘은 분명 봄 냄새가 났다. 나라 전체가, 그리고 나에게도 너무 혼란스러운 시기에. 하늘은 푸르고, ...

이천이십년 삼월 십일 화요일 [내부링크]

가. 내가 스무 살이 되면 어떤 대학에 가있을까. 군대를 가면 얼마나 힘이 들까. 전역을 하고 복학한다면 ...

이천이십년 삼월 십구일 목요일 [내부링크]

가. 지나보니, 별거 아니더라. 그때는 그 일이 나를 너무 힘들게 했던, 그런 것들을 천천히 돌이켜보면은 ...

이천이십년 삼월 이십사일 화요일 [내부링크]

가. 며칠간 묵은 스트레스들과 고민들이 날아가는 하루였다. 선선한 바람과 예쁜 풍경, 뛰어노는 아이들과 ...

이천이십년 사월 일일 수요일 [내부링크]

가. 4월의 시작이다. 그리고 동시에 만우절. 누가 만든 날일까. 어릴 때는 별 생각없이, 그저 그런 장난이 ...

이천이십년 사월 칠일 화요일 [내부링크]

가. 혼란스럽고 복잡한 이 세상 속에서, 많은 이들은 무너져 간다. 그런 현실 속에서 나 자신이 통제할 수 ...

이천이십년 사월 십육일 목요일 [내부링크]

가. 자아가 통제되지 않았다. 내가 나의 감정을 지배하는 것이 아니라, 나의 감정이 나를 지배하는 기분이...

이천이십년 사월 이십삼일 목요일 [내부링크]

가. 항상에서 가끔, 그리고 아예 아닌 것이 되어 가는 과정에서 오는 불안감은, 생각해 보니 내가 불안해할...

이천이십년 사월 이십육일 일요일 #1 [내부링크]

가. 포장되지 않은 수더분한 모습에 매력을 느끼고, 예상치 못한 곳에서 설렘을 느낀다. 연애에 대해 내가 ...

이천이십년 사월 이십육일 일요일 #2 [내부링크]

가. 깊은 슬픔은 때때로 특별한 장소가 되기도 한다. 시간이라는 지도의 한 좌표처럼. 상처는, 음지에 숨겨...

디저트가 너무 맛있었던. [내부링크]

최근에 갔던 카페들 중 디저트가 너무 맛있거나, 커피가 맛있었거나, 앉아서 떠들기 좋았던, 깜짝 놀랐던 ...

이천이십년 오월 삼일 일요일 [내부링크]

가. 슬픔이라는 감정을 느끼는 횟수를 줄여나가는 것과 행복한 감정을 느끼는 것은 전혀 다르다. - enough ...

이천이십년 오월 십육일 토요일 [내부링크]

가. 오랜만에 블로그에 글을 쓴다. 그동안 많이 바빴던 것 같다. 시간적 여유가 없었던 것도 맞지만, 무엇...

당신을 믿어요. 김윤나 [내부링크]

이전에 김윤나 작가님의 '말 그릇'이라는 책을 읽었던 적이 있었고, 기회가 된다면 작가님의 다...

이천이십년 유월 육일 토요일 [내부링크]

가. 오래간만에 느끼는 여유, 여유라기에는 시험기간이라 놀지는 못하지만 항상 주말이면 독일어 학원이나 ...

이천이십년 유월 이십구일 월요일 [내부링크]

가. 어느 때보다도 편하면서도 힘들었던 한 학기가 어찌어찌 끝이 났다. 열심히 한 것 같기도, 대충 한 것 ...

이천이십년 칠월 삼십일 목요일 [내부링크]

가. 기대가 큰 만큼 두려움과 아픔은 커지는 법이다. 하지만 매사에 기대를 하지 않는 사람은 없을 것이다....

이천이십년 구월 이십팔일 월요일 [내부링크]

가. 생일인 것도 친구가 이틀 전에 알려줘서 알았다. 나이를 먹을수록 생일이 빠르게 찾아오는 것 같다. 이...

すし おまかせ - #1 (키세츠 스시) [내부링크]

스시 오마카세, 첫 장소는 강동구 상암로 (명일동)에 위치한 키세츠 스시이다. 명일역 (5호선)에서 도보로 ...

すし おまかせ - #2 (스시 해리) [내부링크]

시험기간동안 바쁘기도 하고, 코로나 때문에 밖에 안나가기도 했었는데 오랜만에 글을 쓰게되는 것 같다. ...

すし おまかせ - #3 (스시 장) [내부링크]

오늘도 런치 오마카세 숙대입구역과 남영역 사이에 위치한 스시 장 가격은 런치 기준 4만원으로 굉장히 저...

すし おまかせ - #4 (스시 도우) [내부링크]

간지 1주일이 넘었는데 귀찮아서 안쓰다가 늦게 쓴다. 가성비 엔트리급 스시야로 유명한 스시도우. 예약부...

すし おまかせ - #5 (스시 이요이요) [내부링크]

여기도 갔다온지 2주정도 된것같은데 미루다가 이제야 후기를 쓴다. 공덕역 래미안아파트 상가에 있는 스시...

Map Odometry [내부링크]

Odometry : 주행기록계 [엔코더를 통한 회전수와 IMU(관성 측정 장비)로 기울기 등을 측정함으로서 움...

Navigation - Stack, Mapping, Transforms [내부링크]

1. ROS - Navigation 을 위해 필요한 것은 무엇이 있을까? 로봇의 센서 데이터로부터(acml...) 로봇 주...

국토정보플랫폼 정밀도로지도 usage [내부링크]

국토정보 플랫폼에서 정밀도로지도를 받을 수 있는데, 내가 필요한 파일은 대한민국 자동차안전연구원 (K-...

pyroutelib3를 이용하여 csv파일 저장하기 [내부링크]

저번 글에서는 국토정보플랫폼에서 받은 shp파일을 josm프로그램을 이용하여 osm파일로 변환한 뒤에, 필요...

Ubuntu 18.04 - ROS 설치 및 환경설정 [내부링크]

ROS 설치 환경을 알기 전에 ubuntu 18.04를 설치하여야 한다. 우선 윈도우 검색창에 컴퓨터 관리를 검색...

shp, osm 파일형식을 las, pcd 파일로 변환하기 [내부링크]

우리가 국토정보플랫폼에서 받을 수 있는 파일은 shp파일 형식이고, 저번에 josm프로그램을 이용해 노드의 수를 추가하여 데이터를 증가시킬 수 있는 것을 확인하였다. 이를 Occupancy Grid Map (OGM)이나 Lidar 의 Point Cloud Data(PDA)로 이용하기 위해서는 las파일 또는 pcd파일이 필요하다. 직접 Lidar 나 Depth Camera를 이용하여 데이터를 받아오는 방법도 있겠지만 shp나 osm파일을 변환하는 방법도 있다. 우선, las파일로 변환하는 방법에 대하여 설명하겠다. https://www.safe.com/ fme software 1달 무료이용을 사용하는 것 이외에는 찾지못했다... 방법이 이것말곤 크게 없는 것 같으니 이것을 이용하도록 하자. 하지만 이 소프트웨.......

Mapping 지도 생성 기초 - Turtlebot3 [내부링크]

Ros Navigation에서 로봇이 경로를 생성하고 추종하기 위한 환경이 되는 것이 바로 Map, 지도이다. 이 지도라는 환경을 구축하기 위해서는 로봇을 사용하고, 그 로봇에 부착된 여러 센서 데이터를 종합하여 주변 환경을 나타내는 것이다. Mapping의 예시를 turtlebot3를 이용하여 확인 하겠다. 우선, map builder program을 launch하기 위해, 다음 명령을 실행한다. 위의 코드들을 이용하여 map을 저장하고나면, map.png, map.yaml 파일이 만들어지고, 이 파일들을 내비게이션에 활용한다. 다음 글은 Localization 파트에 해당하므로 해당 카테고리에서 업로드 하도록 하겠다.

Navigation - 위치 추정 기초 - Turtlebot3 [내부링크]

Ros Navigation 을 위한 map을 [Mapping] 카테고리에서 만드는 방법을 알아보았다. 이번에는 지도에서 로봇 자신의 위치와 상태를 알 수 있는 localization에 대하여 터틀봇을 이용해 알아보겠다. 이전에 만들었던 지도를 사용하기위해 내비게이션을 실행한다. turtlebot3 - navigation pkg - launch 파일을 수정하여 아까 만들었던 맵을 사용하자. 위의 사진과 같이 런치파일을 수정해 주고, 저장 후에 다시 런치파일을 실행시켜본다. rviz에서 로봇의 추정 위치와 방향 등을 알 수 있는데 초록색 화살표들을 이용하여 추정한다. 하지만 로봇의 위치가 제대로 나타나지 않은 것을 확인 할수 있고, Map matching을 해주기 위해서는 현재 로봇의 위.......