임베디드

    자율주행 로봇 프로젝트

    2022년 4학년 1학기 졸업 작품으로 자율주행 로봇 프로젝트를 진행하였다. 관련 코드는 아래에 정리해두었다. GitHub - warning42/amvm_project Contribute to warning42/amvm_project development by creating an account on GitHub. github.com 프로젝트 수행 과정은 추후 게시할 예정

    MobileNet V2 classifier for Edge TPU(TensorFlow2, Python)

    임베디드 환경에서는 MobileNet처럼 경량화된 모델을 사용하여 딥러닝 연산을 수행하면 좋다. MobileNet에 대해서는 나중에 논문 리뷰를 할 예정이다. (도대체 언제 할거니) 이번에는 MobileNet에 대해서 설명하기 보다 구글에서 제공하는 모델 학습 파일을 리뷰한다. Retrain MobileNet V2 classifier for the Edge TPU (TF2) Run, share, and edit Python notebooks colab.research.google.com Retrain a classification model for Edge TPU using post-training quantization (with TF2) 대충 번역하면 훈련 후 양자화를 이용한 분류 모델 재훈련이다. ..

    Google Coral Accelerator (Edge TPU) 시작하기

    Google Coral Accelerator 컴퓨터의 보조 프로세서로 Edge TPU를 제공하는 USB 장치 Linux, Mac, Windows 호스트 컴퓨터에 연결되어 기계 학습 모델에 대한 추론을 가속화한다. 구글 코랄을 사용하기 위해선 Edge TPU 런타임과 Tensorflow Lite 라이브러리를 다운로드해야 한다. 서론 나는 프로젝트를 진행하기 위해서 구글 코랄 엑셀러레이터를 구매했다. 프로젝트에서 라즈베리파이가 사용되는데 라즈베리파이는 GPU 성능이 너무 안좋아서 딥러닝 추론을 하기에 적합하지 않았다. 그래서 딥러닝 연산에 최적화된 기계인 구글 코랄을 구매하게 되었다. 단순히 라즈베리파이에 연결하여 계산만 넘겨주는데도 20 프레임 이상의 성능 개선을 보이는 것을 유튜브 영상들을 통해 확인했어..

    SLAM & Navigation

    SLAM(Simultaneous Localization And Mapping) 동시적 위치 추정 및 지도 작성 Navigation 차량 자동 항법 장치 길 찾기에 필요한 요소 위치: 로봇의 위치 계측 / 추정하는 기능 센싱: 벽, 물체 등의 장애물의 계측하는 기능 지도: 길과 장애물 정보가 담긴 지도 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능 이 4가지가 ROS에서 사용하는 패키지나 메시지가 될 수 있음 위치 GPS(Global Positioning System) 실외에서 사용하기에 적합 상대적으로 위치의 오차가 커서 이를 고려해야 한다. 날씨의 영향을 많이 받는다. 고층 빌딩이 많은 곳에서 오차가 많이 발생한다. IPS(Indoor Positioning Sensor) GPS의 단점을 보완하기..

    ROS 모바일로봇

    대표적인 ROS의 모바일로봇으로 터틀봇이 있다. 여기서는 터틀봇을 위주로 모바일로봇에 대해 설명한다. 터틀봇(Turtle Bot) 터틀(turtle)은 1967년에 개발된 교육용 컴퓨터 프로그래밍 언어인 로고(Logo)를 이용해 실제 로봇을 구동하기 위해 만들어진 터틀 로봇에서 유래되었음. ROS의 공식 로봇 플랫폼이다. SLAM, Navigation, Gazebo, RViz 등을 서포트함 TurtleBot3의 하드웨어는 오픈소스로 깃허브에 제공되어서 3D 프린터로 출력이 가능하다. TurtleBot3 네트워크 PC와 TurtleBot을 연동하는 경우 gedit ~/.bashrc 위 명령어로 bashrc 파일을 열어서 아래와 같이 변경한다. IP 주소는 터미널에서 ifconfig를 입력하면 알 수 있다...

    ROS 임베디드 시스템

    컴퓨터 자원의 종류와 ROS 지원 ROS 설치 가능 ARM A-class - Samsung Exynos... / ODROID... x86 - Intel Core i-series... / Intel NUC... ROS 설치 불가능 32-bit MCU - ARM Cortex-M0, ARM Cortex-M7 ... 8/16-bit MCU - Atmel AVR, Arduino Leonardo ... PC와는 달리 임베디드 시스템에서는 ROS 설치 불가능 대신 ROS가 설치 가능한 하드웨어와 USB로 연결이 가능(ROS는 rosserial이라는 패키지를 제공 / PC 등에서 구동) 임베디드 시스템은 모터 제어, 센서 조정 값 등을 ROS가 설치된 PC로 전달 rosserial PC와 제어기 간의 메시지 통신을 위..

    ROS 프로그래밍 실습(이동, 회전)

    만약 ROS 시뮬레이션 관련 패키지들을 다운받지 못했다면 다음 사이트로 넘어가서 클론하도록 하자. https://emanual.robotis.com/docs/en/platform/turtlebot3/autonomous_driving/#getting-started ROBOTIS e-Manual emanual.robotis.com Wanderbot red_light_green_light.py 3초간 멈춰 있다가 3초 전진을 반복 1. 패키지 생성 cd ~/catkin_ws/src catkin_create_pkg wanderbot rospy geometry_msgs sensor_msgs mkdir scripts 2. python 파일 생성, 권한부여 및 코드 작성 chmod +x red_light_green_..

    ROS 프로그래밍

    ROS 프로그래밍 전에 알아둬야 할 사항 표준 단위: SI 단위 사용 좌표 표현 방식: x(forwoard), y(left), z(up) - 오른손 법칙 프로그래밍 규칙: 패키지, 토픽, 파일, 네임스페이스 명명 규칙을 따라야 한다. (구글링으로 확인) ROS 메시지 통신 이전에 설명했기 때문에 넘어가겠다. 파라미터 서버는 매개변수의 마스터 역할을 한다. 유저가 정해놓은 파라미터를 저장하고 있고, 임의의 명령을 통해 파라미터 값을 바꿀 수 있다. 해당 파라미터에 관련된 노드가 그 값을 참조하게 된다. Topic / Publisher / Subscriber 1) 패키지 생성 ROS에서는 단방향 통신일 때 'Topic'이라는 메시지 통신을 사용한다. 이때 송신 측을 'Publisher', 수신 측을 'Sub..