본문 바로가기

반응형

Robotics

59일차 - c++ opencv ORB, XCode 라이브러리 설정, c++ npy 불러오기 CSV 형식으로 특징점 저장 .npy파일로 저장하면 파이썬에서 불러오기에는 용이하지만 c++에서 불러오기 위해서는cnpy라이브러리를 사용하여야 합니다. 오늘은cnpy라이브러리를 사용하기 위해 먼저 특징점을 일정한 길이로 만든 뒤,.npy로 저장하고, c++에서 불러오는 작업을 시작하겠습니다. # 템플릿 특징점 추출 import cv2 import numpy as np from google.colab import drive drive.mount('/content/drive') # 작업 경로 설정 workspace = '/content/drive/My Drive/돈과 유명세를 잡자/Zumi/recognize_test/{filename}' # {filename} 앞 경로를 리소스가 존재하는 경로로 변경하세요... 더보기
58일차 - Office Hours Week 3 - QnA Office Hours Week 3 - QnA Q1. Resampling Wheel에서 랜덤한 수를 선택할 때 0부터 2 * W_max라는 범위는 어떻게 설정된 건가요? A1. 각각의 파티클 구간을 확실히 뛰어넘게 하고 싶었습니다. 그러나 범위가 너무 넓으면 탐색해야 할 것이 매우 많습니다. 2^n 정도가 적절하다고 생각합니다. Q2. 주어진 상황에서 적절한 필터를 선택할 때 항상 고려해야 할 가장 중요한 규칙이 있다면 무엇인가요? A2. 파티클 필터는 구현하기 가장 쉬운 대신 시간 복잡도가 차원에 지수적으로 비례합니다. 이는 보통 문제가 됩니다. 높은 차원의 공간에서는 파티클 필터를 적용할 수 없습니다. 칼만 필터는 시간 복잡도가 지수적으로 증가하지 않는 유일한 필터이기 때문에, 이러한 경우에 적합합니.. 더보기
57일차 - Mathmatics for Circular Motion Mathmatics for Circular Motion Radius 과제 3, 4는 로봇의 원형 움직임을 시뮬레이션 하는 과제였습니다. 강의 자료에서는 시뮬레이션을 돕기 위해 몇몇 식을 제공했습니다. 오늘은 해당 식이 어떤 과정을 거쳐 유도되는지 알아봅시다. 먼저 a, r, L 기호를 다음과 같이 설정합니다. a = 앞 바퀴의 회전 각도 r = 회전의 반지름 L = 자동차의 길이 그러면 다음과 같은 식이 성립합니다. r = L / tan(a) 이를 유도하기 위해선, 먼저 앞 바퀴와 뒷 바퀴가 같은 원을 따라 움직이지 않는다는 사실을 알아야 합니다. 앞 바퀴와 뒷 바퀴가 그리는 궤적은 다음과 같습니다. 그리고 뒷 바퀴의 진행 방향과 앞 바퀴의 진행 방향(= 앞 바퀴 궤적의 접선)이 이루는 각도가 a인 것입.. 더보기
56일차 - 특징점 추출을 통해 카드 이미지를 인식 1 특징점 추출을 통해 카드 이미지를 인식 opencv의 ORB 특징점 추출 및 매칭을 통해 카메라 이미지로부터 영웅 카드를 인식합니다. 먼저 특징점이 어떻게 매칭되었는지 이미지로 확인하고, 각 템플릿 이미지에 따라 매칭점의 수가 어떻게 바뀌는지, framerate는 얼마나 나오는지 등을 확인하여 실시간 동영상에 적용해보도록 하겠습니다. ## 구글 드라이브 마운트 from google.colab import drive drive.mount('/content/drive') Enter your authorization code: ·········· Mounted at /content/drive 단일 이미지 간 특징점 매칭 템플릿 이미지와 3장의 사진을 매칭해봅니다. 3장의 사진은 모두 템플릿 이미지가 포함된 왜.. 더보기
55일차 - openCV 이용하여 Zumi Heroes를 위한 도트 리소스 제작 리소스 제작 노트북 이 노트북은 구글 드라이브에 저장된 아래와 같은 도트 스프라이트에서 각 캐릭터의 첫 번째 스프라이트를 추출하여 리사이징 한 뒤 저장하는 노트북입니다. 구글 드라이브 마운트 google colab에서opencv를 사용하려면 구글 드라이브에 저장된 이미지를 사용해야 합니다. 이를 위해선 구글 드라이브를 마운트할 필요가 있습니다. 다음 코드를 실행하여 구글 드라이브를 마운트합니다. 최초 실행 시 출력되는 링크에 접속하여 권한을 허용하면, 다음과 같이 인증 코드가 표시됩니다. 해당 인증 코드를 복사하여 아래 입력창에 붙여넣고 엔터를 누릅니다. # 구글 드라이브 마운트 from google.colab import drive drive.mount('/content/drive') ''' Go to.. 더보기
54일차 - Zumi를 이용한 보드게임? Zumi Heroes 소개 주미 파워 유저에 선정되어 주미를 제공받고, 콘텐츠를 제작하는 임무!!를 받았습니다. 저는 주미와 보드게임을 더한 주미 히어로즈를 개발하려고 하는데요. 주미 히어로즈는 보드게임에 주미를 더해 실시간성, 몰입성을 높인 작품입니다. 플레이어들은 히어로가 되어 주미와 함께 악당과 맞서 싸웁니다. 플레이어 간 협력, 플레이어와 주미의 상호작용을 통해 협동심을 기르고, 자율주행과 인공지능 개념을 자연스럽게 배우도록 하는 것이 게임의 목표입니다. 현재까지 기획한 게임의 규칙은 다음과 같습니다. 먼저 카드를 다음과 같이 배치해주세요. 각 플레이어는 히어로 카드 뭉치에서 카드를 두 장씩 뽑아 가집니다. 플레이어는 자신의 차례가 되면 히어로 카드를 한 장, 장소 카드를 두 장 뽑습니다. 장소 카드는 뽑은 순서대로 히어로.. 더보기
53일차 - ROS 2 토픽 [오로카 화요일 온라인 마곡모임] 오로카 화요일 온라인 마곡모임 아래 게시글은 오로카에서 이루어지고 있는 ROS 2 강의 게시글과 화요모임에서 표윤석 박사님이 말씀해주신 것을 토대로 정리한 게시글입니다. 오로카: https://cafe.naver.com/openrt 강의 원글: https://cafe.naver.com/openrt/24101 오로카 ROS 유저모임 오픈채팅 방: https://open.kakao.com/o/gAeOb2nc 토픽 기본적으로 노드 A와 노드 B 사이에 토픽을 주고 받고 있습니다. 이는 다음과 같은 복잡한 그림으로도 표현할 수 있습니다. 해당 그림에서 보여지듯, 하나의 노드는 퍼블리시와 동시에 서브스크라이브를 할 수 있습니다. 단순히 A란 노드에서 B, C, D 체인처럼 연결되는 게 아니라 다자 간 통신이 가능.. 더보기
52일차 - ROS 2 node와 message [오로카 화요일 온라인 마곡모임] 오로카 화요일 온라인 마곡모임 아래 게시글은 오로카에서 이루어지고 있는 ROS 2 강의 게시글과 화요모임에서 표윤석 박사님이 말씀해주신 것을 토대로 정리한 게시글입니다. 오로카: https://cafe.naver.com/openrt 강의 원글: https://cafe.naver.com/openrt/24086 오로카 ROS 유저모임 오픈채팅 방: https://open.kakao.com/o/gAeOb2nc ROS2 노드와 메시지 통신 노드는 최소 단위 실행 가능한 프로세스, 즉, 하나의 프로그램을 이야기합니다. ROS에서는 재사용성을 높이기 위해 최소한의 실행 단위(노드 단위)로 프로그램을 나누어 작업하게 됩니다. 노드는 핵심 기능 별로 잘게 나누어져 작성되지만, 한 노드에서 작업한 데이터를 다른 노드가 .. 더보기

반응형