전체 글 75

[Do it!] 4. 2개의 층 연결하기 - 다층 신경망

이 포스트는 Do it! 정직하게 코딩하며 배우는 딥러닝 입문 pp.160~194를 참고하였습니다. 신경망 알고리즘 계산을 벡터화 하기 기본적인 선형대수 대한 개념은 알고있다는 하에 진행하겠습니다. SingleLayer 클래스에 배치 경사 하강법 적용하기 이전 포스트에서 사용했던 위스콘신 유방암 데이터 세트와 SingleLayer 클래스를 사용할 것입니다. import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split cancer = load_breast_cancer() x = cancer.data..

[Do it!] 3. 훈련 노하우 배우기

이 포스트는 Do it! 정직하게 코딩하며 배우는 딥러닝 입문 pp.117~154를 참고하였습니다. 검증 세트를 나누고 전처리 과정 배우기 먼저, 이전 포스트에서 마지막에 사용했던 SGDClassifier 클래스를 사용하여 모델을 훈련하고 평가해보겠습니다. from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.linear_model import SGDClassifier cancer = load_breast_cancer() x = cancer.data y = cancer.target x_train_all, x_test, y_train_all, y_test =..

[Do it!] 2. 분류하는 뉴런 만들기 - 이진 분류

이 포스트는 Do it! 정직하게 코딩하며 배우는 딥러닝 입문 pp.77~114를 참고하였습니다. 초기 인공지능 알고리즘과 로지스틱 회귀 퍼셉트론 퍼셉트론은 샘플을 이진 분류하기 위해 사용되는 알고리즘입니다. 퍼셉트론은 직선의 방정식을 사용하기 때문에 선형 회귀와 거의 같은 구조를 가지고 있습니다.​ 다만, 샘플을 분류하기 위해 계단 함수(step function)을 사용합니다. 그리고, 이 계단 함수를 통과한 값을 다시 가중치와 절편을 업데이트할 때 사용합니다. 이를 그림으로 나타내면 다음과 같습니다. 뉴런은 입력 신호들을 받아 다음 수식을 활용하여 출력 $z$를 만듭니다. $w_1x_1 + w_2x_2 + b = z$ 계단 함수는 $z$가 0보다 크거나 같으면 1, 작으면 -1로 분류합니다. 이 때,..

[Do it!] 1. 머신러닝 기초 - 수치 예측

이 포스트는 Do it! 정직하게 코딩하며 배우는 딥러닝 입문 pp.46~74를 참고하였습니다. 선형 회귀란? 위키 백과에서는 다음과 같이 설명되어 있습니다. - 통계학에서, 선형 회귀(線型回歸, 영어: linear regression)는 종속 변수 y와 한 개 이상의 독립 변수 (또는 설명 변수) x와의 선형 상관 관계를 모델링하는 회귀분석 기법이다. 한 개의 설명 변수에 기반한 경우에는 단순 선형 회귀, 둘 이상의 설명 변수에 기반한 경우에는 다중 선형 회귀라고 한다 말이 어려운데, 요약하자면 어떤 데이터를 대표할 수 있는 선형 그래프를 찾는 것이라고 보면 됩니다. 다음과 같은 데이터를 보겠습니다. 위와 같은 데이터가 있을 때, 위 데이터를 가장 잘 나타낼 수 있는 1차 함수는 무엇일까요? 우리는 직..

ROS noetic with YOLO V3

이번 포스팅에서는 ROS noetic에서 tensorflow v2로 구현한 YOLO V3를 사용하여 물체인식을 하는 방법에 대해 설명합니다. 해당 환경은 Ubuntu 20.04, ros noetic, IntelRealsense D415 camera를 사용하였습니다. tensorflow 2.0버전은 python 3를 사용하지만, Ubuntu 18.04 이하, 즉 ROS melodic 이하 버전에서는 python 2를 사용합니다. 따라서 python 3를 사용해야 하기 때문에 ROS melodic 이하 버전에서도 가상환경에서 python 3를 사용하도록 하는 강좌를 따라해보긴 했는데 하다가 안돼서 포기하고 그냥 Ubuntu 20.04로 환경을 바꿔서 진행하였습니다. YOLO V3-tf2 Download 1...

ROS URDF 3D 모델 불러오기

이전 포스트에서 설명했듯이, URDF에서 기본적으로 제공하는 모델은 3개 뿐인데, 이들로 로봇을 모델링하는데는 한계가 있습니다. 우리는 3D 모델링을 할 때 사용하는 STL, DAE 파일을 사용하여 URDF에 사용할 수 있습니다. DAE파일을 사용하는 경우, 해당 모델에 색깔도 적용이 됩니다. 저는 3D 모델링 시 Autodesk FUSION 360을 사용하는데, 이 프로그램은 STL파일 저장만 지원합니다. 이 경우, Blender를 사용하면 DAE 파일로 바꿔줄 수 있습니다. Blender를 사용하여 STL파일을 import한 후, 색깔을 넣고, 스케일 및 위치 등을 조절하여 DAE 파일로 저장하면 됩니다. 1. file-import에서 stl 파일을 import 합니다. 제가 만든 STL파일은 단위가..

Study/[ROS] URDF 2021.09.02

URDF for Robot Modeling(1. Building the Visual Robot Model with URDF)

이번 포스트는 https://app.theconstructsim.com/의 URDF for Robot Modeling course를 참조하였습니다. 이번 course에서는 가상의 시각 모델을 만드는 법에 대해 알아봅니다. 만약 우리가 실제 로봇을 갖고 있고, ROS 기반의 시스템을 사용하고 싶다면, 우리는 로봇이 시각적으로 어떻게 생겼는지, 각각의 센서는 로봇의 어디에 위치해 있는지에 대한 virtual description이 필요합니다. Create your first URDF Model 이번 단계에서 해볼 것은 다음과 같습니다. URDF creation tolls를 사용하는 방법을 알고, 로봇 모델을 만들어보기 우리가 사용하려고 하는 로봇의 morphology에 대해 알기 올바른 format의 3D ..

Study/[ROS] URDF 2021.09.02

AMCL 패키지를 수정하여 성능 개선해보기

이번 포스트를 읽기 전에, 다음 포스트들을 먼저 읽는 것을 권장합니다. 1~4의 포스트의 내용을 다 알고있다는 전제 하에 이 번 포스트를 작성하였습니다. 1. ROS Bayes Filter 2. ROS Particle Filter 3. Particle Filter 4. AMCL Bayes Filter의 공식에 대해 더 알고싶다면 아래 포스트를 참조하세요 Bayes Filter 공식 유도 아래 두 포스트는 선택사항입니다. 읽으시려면 3.Particle Filter 이후에 읽는 것을 권장합니다. 3-1. Velocity Motion Model 3-2. Odometry Motion Model 이번 포스트는 ROS에서 제공하는 Navigation 패키지를 사용 중 발견한 문제점과 그 문제를 해결하는 방법에 대한..

Sensor Fusion with ROS

이번 포스트는 ros-sensor-fusion-tutorial 를 참조하였습니다. 1. Concepts 1.1. ROS Nav Stack Refresher 위 그림에서 왼쪽 부분, "/tf"와 "odom" 메시지를 보내는 부분에 주목하세요. navigation stack은 연속적이고 불연속적인 odometry(twist(속도)와 pose(position)메시지들을 조합하는 메시지 타입)와 다른 센서들로부터 들어오는 tf 메시지들, global pose estimators 이 모두를 사용하여 로봇의 위치를 추정합니다. 다시 말해, odometry data(센서들로부터 얻어진)와 pose estimates(AMCL로부터 얻어진) 뿐 아니라 우리가 사용하려고 하는 다른 추가적인 센서들도 navigation s..

Fuse Sensor Data to Improve Localization (2. Using an external localization system)

이 포스트는 theconstructsim.com의 ROS Navigation in 5 Days 를 참고하였습니다. 이번 포스트에서 다룰 내용은 로봇의 위치 추정의 성능을 높이기 위해 robot_localization 패키지를 사용하여 다른 센서들의 데이터들을 병합하는 방법 이번 course에서는 turtlebot simulation package를 사용합니다. 아래 링크를 참조하세요 emanual.robotis.com/docs/en/platform/turtlebot3/simulation/ 시뮬레이션 모델은 Waffle 모델을 사용합니다. waffle 모델을 사용하기 위해서는 환경 변수를 추가하거나, bash shell에 해당 명령을 입력하면 됩니다. $ export TURTLEBOT3_MODEL=waff..