Works

· Works
introductionCAN통신을 졸업연구 목적으로 경험하게 되어 이를 공유하고자 합니다. CAN통신은 h/w 셋업이 조금 번거로울 뿐 일단 한 번 준비가 되면 이더넷만큼이나 가벼우면서도 다른 문제와 씨름할 여지가 덜하다는게 큰 장점인듯합니다. 이 글에서는 차량의 CAN bus를 통해 전달되는 데이터를 수신 후 이를 의미있는 결과로 가공해내기 위해 ros에 연동하는것까지 진행해보도록 하겠습니다.C-CAN, B-CAN, M-CAN다른 곳에서도 잘 설명되어있겠지만, 차량 전장에서 통신할 정보가 많아지면서 can bus를 사용 목적에 따라 분리하기 시작했습니다. 차량 구동에 필요한 핵심 데이터(냉각수 온도, 흡기 유량, 구동토크, 등등...) 은 C-CAN(Chassis-CAN), 차량 구동에 큰 영향을 미치..
· Works
Prerequisite24. 04.30. 라즈베리파이4B+, MCP2515(with VD1050), 테스트 장비 : PEAK Systems IPEH-004022(F/W Ver. 3.2.0 Driver Ver.4.4.2), PCAN-View 사용Linux st 6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux*SPI 통신을 지원하는 환경이라면 모두 비슷한 방식으로 동작할 것으로 예상되나, 커널 버전과 보드에 따라 다를 수 있습니다.Introduction차량 CAN 데이터를 얻어오기 위해서는 CAN transceiver가 필요합니다. 요즘은 차량에 flexRay CAN-FD 등등을 사용하여, 전용 tra..
CSI 카메라는 그냥 웹캠과는 조금 다르게 접근해야 합니다. opencv를 처음 접하실 때 CSI카메라를 사용하는 경우는 대개 MIPI-CSI 커넥터가 있는 Jetson 시리즈 혹은 라즈베리파이와 같은 SBC(Single Board Computer)를 통해 접근하는 경우가 대부분일 것입니다. 그리고 이렇게 접근하시는 분들 중에 CSI가 왜 안돼지? 라고 의문을 품는 경우가 많을텐데요. import cv2 #OpenCV를 사용하기위해 import해줍니다. def main(): camera = cv2.VideoCapture(-1) #카메라를 비디오 입력으로 사용. -1은 기본설정이라는 뜻 camera.set(3,640) #띄울 동영상의 가로사이즈 640픽셀 camera.set(4,480) #세로사이즈 480..
Introduction 이미지 처리 파이프라인을 구축하다보면 성능에 대한 문제에 아주 많이 부딪힙니다. 영상처리라는 작업 자체가 리소스를 많이 활용하다보니, 이를 어떻게 해야 준수한 성능을 내게 만들 수 있을지에 대해 고민을 하게 됩니다. 이 고민에 대한 해결책의 방향은 크게 두 가지가 있습니다. 주어진 자원을 최대한으로 활용하거나, 주어진 자원 자체를 최적화 시키는 것입니다. 여기에서 주어진 자원자체를 최적화 시킨다는 것은 하드웨어 자체에 내장 가속 칩이 존재해서 그 작업을 해당 칩에 위임하는 것을 말합니다. 가장 쉽게 접할수 있는 예가 GPU 혹은 CPU/GPU 내부에 통합된 비디오 가속 칩이 있겠습니다. 난 죽어도 파이썬을 써야겠다. 가장 접근하기 쉬운 것은 자원 자체를 최적화 하는 것입니다. 병렬..
Introduction 젯슨 나노가 출시된지 너무나 오랜 시간이 지났고, 이제는 단종에 이르러 Jetson Orin Nano를 사용해야 하는 상황이지만, 너무나 매력적인 가격에 이를 계속 사용하고자 하는 사람이 많습니다. 저도 그 중 하나로서, Jetson Nano를 23년 현재에도 유효하게 사용할 수 있도록 하기 위한 몇 가지 작업 내용을 공유하고자 합니다. Deprecated Bionic Beaver. Jetson Nano의 하드웨어를 활용하기 위한 드라이버 키트인 JetPack은 우분투 18.04를 기반으로 한 4.6.1 을 마지막으로 더이상 릴리즈되고 있지 않습니다. 따라서 우리는 yolov8 등의 딥러닝 패키지를 사용하기 위한 사전 작업을 몇 가지 해야 합니다. 조금 더 원활한 사용을 위해 젯슨..
Introduction 업무에 있어 AI 가속이 필요한 작업을 해야 하는 상황이 생겨, 젯슨 나노를 구입했습니다. 현재 시점에서 젯슨 나노 제품은 단종이 되었으며, 대체재로 Jetson Orin Nano가 판매되고 있으나, 가격이 일반 PC에 버금가게 비싸다 보니 선뜻 접근이 어렵습니다. 그렇다보니 출시된지 한참 되었음에도 가격이 오히려 올라가는 이 이상한 보드를 울며 겨자먹기로 사용할 수 밖에 없습니다. 여전히 쓸만한가? 결론부터 말씀드리자면, 그렇습니다. 개인적으로 구입 후 추론작업 진행해본 결과, yolov8, yolov8n weight,640*480 입력 기준 0.06s~0.05s(15fps~20fps)의 성능을 보입니다. 가격이 너무 치사하긴 하지만, 이정도 성능이 나오는 제품은 이 가격대에 없..
· Works
What is USB? PC의 구조를 조금 이해해 보겠습니다. 조금 극단적으로 말해서 ,아두이노의 Atmega328P가 더 커지고, 기능에 따라 분화되면 우리는 이걸 PC라고 부를 수 있다. SoC 내부의 요소들이 특정 기능에 따라 분화되면 그걸 PC라고도 부를 수 있는 것입니다. 아두이노를 사용해봤다면, 여기에서 주변 기기(peripheral)과 통신할 수 있는 다양한 방법들(TTL, I2C, RS2323/422,485, SPI, PWM) 등이 있다는 것을 알 수 있을 것입니다. MCU 레벨에서는 GPIO를 통해 이런 방식으로 통신한다 하면, PC에서는 이런 역할을 PCI-E 레인을 통해서 수행한다고도 볼 수 있습니다. PCI-E 레인을 통해서 PC는 주변 기기와 통신할 수 있습니다. USB, 그래픽카..
· Works
preface 산업용 장비를 다루다가 엔코더를 다룰 일이 있어 활용법을 알아보다 생각보다 정보가 너무 없어 이렇게 간단히 내용을 남겨둡니다. 엔코더는 산업 현장에서 중요하게 쓰이는 요소 중 하나이지만, 관련 사전 지식이 없다면 사용 자체가 막막한 경우가 많습니다. 이 포스팅에서는 엔코더의 종류와 확인해야 할 요소, 활용 사례, 간단히 연결해서 사용하는 방법까지 다뤄보겠습니다. 엔코더 종류 absolute: 장비의 절대 각도를 측정합니다. incremental: 장비의 회전 수에 상대적인 위치를 측정합니다. 말 그대로 움직인 양에 따라 그 값이 늘어나거나 줄어듭니다. 엔코더 활용 사례 로봇 팔이나 CNC 기계와 같은 자동화 장비에서 위치와 속도 측정 엘리베이터, 에스컬레이터 등의 운송 장비에서 위치 측정 ..
· Works
나는 나의 삶의 주인일까? 코끼리를 어렸을 때부터 밧줄에 묶어놓고 기르면 그게 세상의 전부인줄 알고 자랍니다. 시간이 흘러 그 줄을 가볍게 끊어낼 수 있을 만큼 성장한 이후에도 어렸을 적 매였던 밧줄에 의해 만들어진 반경 이상을 벗어나지 않는다 합니다. 안타까운 이야기입니다. 우리는 분명히 자유의지를 가지고 태어났습니다. 그리고 자유를 가지고 살고 있다고 생각합니다. 그런데, 정말 우리는 자유로운 존재인가요? 그 줄의 두께와 투명도, 그리고 개수에 차이가 있을 뿐, 우리도 어쩌면 앞서 언급한 코끼리와 다르지 않을지도 모르겠다는 생각을 합니다. 삶을 매는 밧줄들 우리는 돈, 사회, 가족, 스스로 라는 이름의 여러 가닥의 줄에 매여 있습니다. 돈은 일을 하도록 합니다. 사회는 어떤 시기, 어떤 지위에 있는 ..
· Works
서론 AI Turret은 BB탄 총, 카메라, AI를 활용해 적을 추적하고 발사하는 시스템입니다. 이 블로그에서는 AI Turret을 제작하는 과정에 관한 이야기를 연재중에 있습니다. 이번 포스팅에서는 AI Turret이 적을 인식했을 때 추적하기 위한 Actuator을 설계에 관해 다뤄보겠습니다. 이런 부분은 관련 경험이 있거나 reference가 있으면 도움이 많이 됩니다. 그러나 저는 수평으로 움직이는 어떤 맷돌 형태의 제품은 설계해 본 경험이 없어 이 부분에 애를 좀 많이 먹었습니다. 제가 설계하고자 하는 것은 현장에서 흔히 찾아볼 수 있는 크레인의 yaw축 움직임에 가깝습니다. 그러나 관련된 정보를 찾는게 너무 어려워서 일단은 그냥 몇 번의 사고실험을 거친 후, 그럴싸해 보이도록 일단 만들어봤습..
· Works
서론 AI Turret은 BB탄 전동건을 기반으로, 카메라를 통해 적을 인식한 후 발사하는 시스템입니다. 이번 포스팅에서는 전동건을 분해하고 핵심이 되는 부품을 적출해 치수를 측정한 후 이걸 3D 모델로 옮기는 작업에 관해 다뤄 보겠습니다. BASE 모델 분해 정말 오랜만에 만져보는 실총인지라 가슴이 뛰었습니다. 군대 훈련소에서 몇 발 쏴본게 아쉬워 자대에서 그렇게 사격 보내달라고 해도 안보내줘 자대배치 받고 총 한번 못 쏜 채 아쉬운 마음으로 전역했었는데, 이렇게 보니 감회가 새롭습니다. 그런데 그 아쉬움을 달래기 위해 건전지를 구입해 BB탄을 쏴볼까도 싶었지만, 그건 또 다른 차원의 문제였습니다. 사무실에 BB탄이 굴러다니는 대참사를 일으킬 순 없었기에, 아쉬운 마음을 달래고 드라이버를 들어 분해를 ..
당신만의 AI, 함께하는 Jetson Nano A02 Jetson Nano에서 YOLOv5 사용 전 준비할 것들 Jetson Nano에 JetPack 4.6 + 필수 SW 설치 OpenCV CUDA 가속 활성화로 젯슨 나노 100% 활용하기(간단) Jetson Nano에서 YOLOv5 실행하기(0.13s, 7.7fps) 드디어. YOLOv5. (2021. 11. 01. 최초 작성) YOLOv5를 위해 JetPack 4.6, OpenCV 4.5.4 with CUDA, PyTorch 1.8, torchvision 0.9.0을 설치하는 고생을 해왔습니다. 이제 드디어 YOLOv5를 설치할 차례입니다. GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > Cor..
Whiteknight
'Works' 카테고리의 글 목록