.. Cover Letter

전체 글 211

배송로봇 모니터링 프로그램 만들기 1장 프로젝트 설계

프로젝트 목적 - ROS 활용능력을 키우기위함 - 소프트웨어 아키텍처 설계 능력을 기르기 위함 - C++ 객체지향 능력을 향상시키기 위함 - 기존의 코드들을 재활용하면서 접근하여 하나의 완성작을 만들어보고자 함. 프로젝트 기간 2023년 6월 28일부터 7월 30일까지 업무 외 별도로 진행 프로젝트 인원 개인 프로젝트 프로젝트 설계 요구사항 1. 시뮬레이션 상에서의 서빙로봇을 만들고 싶습니다. (로봇은 한 대만 사용합니다.) 2. 손님은 키오스크에서 주문을 진행함. (키오스크에서 객체지향의 특징이 잘 드러나게 설계할 것) 3. 그리고 손님이 자리에 앉으면 주방에서 음식이 만들어지고, 로봇이 이를 손님에게 전달함. 4. 남은 배터리 용량, 로봇의 현재위치, 로봇의 현재 명령 수행과정 등등을 모니터링할 수 ..

4. 아두이노로 알아보는 임베디드 시스템의 동작원리

참고도서 : 임베디드 엔지니어 교과서, 와타나베 노보루, 제이펍, 2020 책을 내용을 참고하였으며, 추가 정보가 필요할 경우 ChatGPT와 구글 검색을 활용합니다. 이 글은 포토폴리오 목적이며, 별도의 수익을 창출하지 않습니다. 이전 시간에 FreeRTOS를 깔아보고 아두이노에 적용까지 해보았습니다. 이번 시간에는 IDE에 작성한 코드가 어떻게 Arduino까지 전달이 되는지 알아보도록 하겠습니다. 임베디드 소프트웨어 임베디드 소프트웨어는 두 가지로 나눌 수 있습니다. 운영체제를 사용하는 타입과 운영체제를 사용하지 않는 타입입니다. 일반적으로 아두이노가 운영체제가 없이 동작하며(FreeRTOS의 경우 제외) 라즈베리 파이가 운영체제가 있게 동작을 합니다. 운영체제가 없는 경우는 동작이 단순한 경우일 ..

3. 임베디드 시스템의 개념, 특징, 구성

참고도서 : 임베디드 엔지니어 교과서, 와타나베 노보루, 제이펍, 2020 책을 내용을 참고하였으며, 추가 정보가 필요할 경우 ChatGPT와 구글 검색을 활용합니다. 이 글은 포토폴리오 목적이며, 별도의 수익을 창출하지 않습니다. 임베디드 시스템이란? 임베디드 시스템이란 마이크로 컴퓨터를 탑제한 기계나 장치를 의미합니다. 기존의 PC와 다른점이라고 한다면, 임베디드 시스템에서 입력은 센서를 통해 얻은 정보가 될 수 있고, 출력은 화면에 출력하거나 모터를 동작하는 등의 제어 신호에 해당할 수 있습니다. 임베디드 시스템의 특징 창문으로 들어오는 빛의 양이 적으면 전등을 켜고, 많으면 전등을 끄는 시스템이 있다고 생각을 해보겠습니다. 이 경우에 다음과 같은 특징을 가질 것입니다. 1. 임베디드 시스템은 외부..

ROS2로 turtlebot3 제어하기 6장. A* 알고리즘 탐구

참고자료 https://choiseokwon.tistory.com/210 파이썬 A* (A-star) 최단 경로 찾기 알고리즘 A* 길 찾기 알고리즘은 1968년에 Peter Hart, Nils Nilsson, Bertram Raphael에 의해 최초 공개됐다. 우선 Node 클래스는 아래와 같이 구현될 것이며, 아래 클래스를 보고 글을 읽으면 좀 더 편할 것이다. class Nod choiseokwon.tistory.com 코드 참고는 다음의 블로그를 참고하였습니다. 파이썬으로 작성되었으며, C++로 작성된 코드는 후에 시간이 남는다면 작성하도록 하겠습니다. A* 알고리즘이란? 최단거리 탐색알고리즘으로 가장유명한 알고리즘입니다. Grid Map (모논종이) 상에서 8방향의 방향성에 대해 장애물을 고려하..

1. Arduino 에 freeRTOS 설치하기 및 사용하기

들어가기 전 임베디드 SW에서는 크게 3가지로 나눌 수 있습니다. 첫 번째는 운영체제가 없이 사용하는 것으로 가벼우며, 직접 일처리에 대한 순서를 지정해줄 수 있습니다. 두 번째는 Real Time OS를 사용하는 것으로 우선순위로 일을 처리합니다. 세 번째는 Linux 혹은 범용 운영체제를 사용하는 것으로 한 번에 여러 일을 처리합니다. 라즈베리파이의 경우 RAM이 2GB 이상일 경우 Ubuntu 22.04를 설치해서 사용할 수 있으며, 아두이노의 경우에는 freeRTOS라고하는 운영체제를 다운로드 받아 사용할 수 있습니다. 아두이노에 freeRTOS 설치 이번시간에는 아두이노에 freeRTOS 운영체제를 설치하는 것을 목표로 진행하도록 하겠습니다. 우선 아두이노용 Free RTOS를 설치하기 위해서는..

0. Arduino IED 환경 세팅하기

참고자료가 있다면 링크를 올리겠습니다. 아두이노 IDE 설치 및 아두이노 연결 준비물 1. Arduino Uno 2. 우분투 운영체제가 설치된 PC or 윈도우 기반 PC 이 글은 우분투22.04를 기준으로 진행됩니다. https://www.arduino.cc/en/software Software Open-source electronic prototyping platform enabling users to create interactive electronic objects. www.arduino.cc 다음의 사이트에서 설치를 진행합니다. 우분투의 경우에는 zip파일로 다운로드 받으면됩니다. 터미널상에서 다운로드 받았던 폴더로 이동하여 다음을 순서대로 입력합니다. cd mkdir arduino cd ~./..

전기차 직무 알아보기 3. 전기차 충전기 직무 지식

이 글은 전기차와 전기차충전기 간의 통신을 다룹니다. 누군가와 대화가 통할 수준을 다룹니다. 이미지는 저작권을 생각하고 가져오지 않았으며, 이 글은 포토폴리오 목적이며, 별도의 수익을 창출하지 않습니다. (이해를 위해 어쩔 수 없이 이미지가 필요했음을 알립니다.) (문제가 된다면 삭제합니다.) 전기차 충전기의 기초 지식 전기차를 충전하는 방식은 2가지로 볼 수 있습니다.. 가정에서 AC 전력을 사용해서 전기차를 충전하는 방법과 급속 충전기를 이용해서 DC로 전기차를 충전하는 방법입니다. 현시점에서 대부분의 회사의 관심사는 당연 급속 DC 충전기라고 볼 수 있습니다. 최대 360kW 까지의 전력을 충전시킬 수 있습니다. 우선 전기차와 연결하는 커넥터를 먼저 보시면, 커넥터는 전세계적으로 서로 다른 표준을 ..

전기차 직무 알아보기 2. 전기차 충전관련 기초 지식

참고도서 : 전기차 첨단 기술 교과서, 톰 덴튼, (옮긴이 김종명), 보누스, 2021 누군가와 대화가 통할 수준을 다룹니다. 이미지는 저작권을 생각하고 가져오지 않았으며, 이 글은 포토폴리오 목적이며, 별도의 수익을 창출하지 않습니다. (이해를 위해 어쩔 수 없이 이미지가 필요했음을 알립니다.) (문제가 된다면 삭제합니다.) 전기자동차란 무엇인가? 전기자동차 줄여서 EV (Electric Vehicle)라고 부릅니다. 전기자동차는 엔진과 변속기가 없고, 대신 전기 동력과 관련된 부품이 있는데, 구동모터, 감속기, 배터리, 온보드 차저, 통합전력제어 장치 등이 있다. 이는 모두 배터리의 전력으로 자동차를 구동하기 위한 부품이다. 전기자동차의 구성 부품 배터리 : 리튬이온이 사용되되며, 전체 배터리 팩은 ..

전기차 직무 알아보기 1. 자동차 통신 이해하기

이 글은 별도의 참고자료가 존재하지 않으며, 정보가 있다면 ChatGPT를 참고하거나, 블로그를 참고하였을 경우 참고한 블로그의 링크를 달아놓았습니다. 이 글은 자동차라고 한정하지만, 배송로봇에서도 같은 통신방법이 사용되고는 합니다. 이 글은 전문적인 내용을 다루는 것이 아니라. 누군가와 대화가 통할 수준을 다룹니다. 이미지는 저작권을 생각하고 가져오지 않았으며, 이 글은 포토폴리오 목적이며, 별도의 수익을 창출하지 않습니다. (이해를 위해 어쩔 수 없이 이미지가 필요했음을 알립니다.) (문제가 된다면 삭제합니다.) 자동차의 통신은 무엇인가? 차량내에는 수십 개의 제어기들이 서로 안정적으로 정보를 공유해야합니다. 제어기들은 서로 유선으로 통신을 하며, 일반적으로 Bus 토폴로지 형식을 가집니다. 다음과 ..

ROS2로 turtlebot3 제어하기 5장. turtlebot이 생성된 경로를 따라 움직이게 하자

이번 글은 별도의 참고자료가 존재하지 않고, 참고하는 블로그가 있는 경우 바로 다음에 표시를 하고 지나가도록 하겠습니다. 맵행렬과 gazebo의 동기화 문제 이전시간에 현재의 좌표와 이동하고 싶은 좌표를 입력하면 최단경로를 얻을 수 있게 만들었습니다 이제 이를 ROS상에서 구현하면됩니다. 직접 cmd_vel을 발행하는 방법을 한 번 해보고자 합니다. 여기서 한 가지 문제가 있습니다. 로봇이 다음 그리드로 이동하는데 몇 m를 이동해야하는가.. 그리드를 분할하면 분할한 길이가 있을 것입니다. 이를 픽셀에 곱하면 이미지상에서 다음 위치로 이동하는 픽셀의 개수를 알 수 있습니다. map.yaml 파일 보면 resolution이라는 값이 보일 것입니다. 이 값이 이 문제를 해결하는 열쇠입니다. 0.05는 1픽셀의..

ROS2로 turtlebot3 제어하기 4장. map파일을 가지고 전역경로 생성하기

이번 글은 별도의 참고자료가 존재하지 않고, 참고하는 블로그가 있는 경우 바로 다음에 표시를 하고 지나가도록 하겠습니다. 이전 시간에 파이썬 가상환경을 만들었습니다. 그리고 맵의 색에 따라서 0과 1로 구분짓자는 것까지 이해했습니다. 이번시간에는 아주 간단하게 전역경로를 생성하고 이를 따라 움직이는 turtlebot3를 만들어보고자 합니다. 저는 map파일을 참고해서 경로를 계획하게 할 것입니다. 정말 간단하게는 픽셀단위로 잘라서 경로를 계획할 수 있습니다. 그러나 픽셀단위로 자르면 그림상에서 이해하기가 조금 어려워지기 때문에 사각형 단위로 자르도록 하겠습니다. 우선은 알고리즘이 동작하게 만드는 것이 우선입니다. 픽셀단위로 자르는 방법은 이후에 진행하도록 합시다. gazebo를 실행하면 바닥에 가상의 사..

ROS2로 turtlebot3 제어하기 3장. Nav2 이해하기와 파이썬 환경설정

이번 글은 별도의 참고자료가 존재하지 않고, 참고하는 블로그가 있는 경우 바로 다음에 표시를 하고 지나가도록 하겠습니다. 다시 실행해보면? ros2 launch turtlebot3_gazebo turtlebot3_duworld.launch.py ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=$HOME/map.yaml 이전 시간에 Nav2로 로봇을 이동시켜보고 끝났습니다. 조금이나마 path planning에서 도움이 되고자 nav2에서의 여러 파라미터들에 대해 설명을 하고자합니다. 다시 실행을 해보면 다음과 같은 그림이 나왔습니다. 맵에서 볼 때 벽은 다음처럼 검정색으로 표시가 되는데 벽 주변으로 연한 분홍..

ROS2로 turtlebot3 제어하기 2장. MAP 만들기

이번 글은 별도의 참고자료가 존재하지 않고, 참고하는 블로그가 있는 경우 바로 다음에 표시를 하고 지나가도록 하겠습니다. 이번 장까지 사전 자료 제작이라고 생각하면 됩니다. GAZEBO 실행하고 맵 만들기 이상적인 맵을 하나 만들고자 합니다. 맵을 어떻게 만들던 자유입니다. 맵을 좀 크게 정사각형 모양으로 만들면 좋을 것입니다. ROS설치가 완료되었다면 터미널 상에 gazebo 를 입력합니다. gazebo를 입력하면 다음처럼 시뮬레이터가 실행될 것입니다. 그러면 왼쪽에 보시면 Edit 버튼을 누르고 난 후에 building Editor를 누르면됩니다. 그러면 다음처럼 화면이 나올 것입니다. 위의 그림에 여러분이 원하는대로 벽을 설치하면 됩니다. 대충 이런식으로 만들고 저장하시면 됩니다. 그냥 하얀색 도화..

ROS2로 turtlebot3 제어하기 1장. 경로계획(Path planning)의 개요

이번 글은 별도의 참고자료가 존재하지 않고, 참고하는 블로그가 있는 경우 바로 다음에 표시를 하고 지나가도록 하겠습니다. 자율주행 개요 자율주행은 간단하게 3가지 과정을 통해 진행이 된다고 생각할 수 있습니다. 가장 먼저 주변의 상황을 파악하는 인지(perception) 과정을 거치고, 인지 정보를 바탕으로 어떻게 주행을 진행할 것인가 계획을 세우는 판단(Decision making)과정을 거치게되고, 이를 통해 로봇이나 자동차를 움직이는 제어(Control)하게됩니다. 우리는 여기서 판단과정에 집중을 하고자 합니다. 판단은 또 크게 2가지로 나눌 수 있습니다. 첫 번째는 경로계획(path planning) 혹은 경로생성(path generation), 두 번째는 경로추종(path following)입니..

python robotics 환경 세팅하기

이 글은 다음을 참고하여 진행합니다. Getting Started — PythonRobotics documentation (atsushisakai.github.io) Getting Started — PythonRobotics documentation © Copyright 2018-2021, Atsushi Sakai. atsushisakai.github.io 위에서 배우는 알고리즘을 ROS상에서 Turtlebot을 이용해서 구동하는 것을 목표로 진행합니다. 대충 내가 끌리는대로 번역하고 있습니다. Getting Started 오픈소스 소프트웨어 프로젝트인 PythonRobotics는 Python의 로봇 알고리즘들을 모아놓은 것입니다. 이 프로젝트는 자율주행 (autonomous navigation)과 로보..