introductionCAN통신을 졸업연구 목적으로 경험하게 되어 이를 공유하고자 합니다. CAN통신은 h/w 셋업이 조금 번거로울 뿐 일단 한 번 준비가 되면 이더넷만큼이나 가벼우면서도 다른 문제와 씨름할 여지가 덜하다는게 큰 장점인듯합니다. 이 글에서는 차량의 CAN bus를 통해 전달되는 데이터를 수신 후 이를 의미있는 결과로 가공해내기 위해 ros에 연동하는것까지 진행해보도록 하겠습니다.C-CAN, B-CAN, M-CAN다른 곳에서도 잘 설명되어있겠지만, 차량 전장에서 통신할 정보가 많아지면서 can bus를 사용 목적에 따라 분리하기 시작했습니다. 차량 구동에 필요한 핵심 데이터(냉각수 온도, 흡기 유량, 구동토크, 등등...) 은 C-CAN(Chassis-CAN), 차량 구동에 큰 영향을 미치..
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)의 성능을 보입니다. 가격이 너무 치사하긴 하지만, 이정도 성능이 나오는 제품은 이 가격대에 없..
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, 그래픽카..
preface 산업용 장비를 다루다가 엔코더를 다룰 일이 있어 활용법을 알아보다 생각보다 정보가 너무 없어 이렇게 간단히 내용을 남겨둡니다. 엔코더는 산업 현장에서 중요하게 쓰이는 요소 중 하나이지만, 관련 사전 지식이 없다면 사용 자체가 막막한 경우가 많습니다. 이 포스팅에서는 엔코더의 종류와 확인해야 할 요소, 활용 사례, 간단히 연결해서 사용하는 방법까지 다뤄보겠습니다. 엔코더 종류 absolute: 장비의 절대 각도를 측정합니다. incremental: 장비의 회전 수에 상대적인 위치를 측정합니다. 말 그대로 움직인 양에 따라 그 값이 늘어나거나 줄어듭니다. 엔코더 활용 사례 로봇 팔이나 CNC 기계와 같은 자동화 장비에서 위치와 속도 측정 엘리베이터, 에스컬레이터 등의 운송 장비에서 위치 측정 ..
이전 글들 보기 비노출 엠비언트 DIY - 서론 비노출 엠비언트 DIY - 배선과 Data 설계 비노출 엠비언트 DIY - 블루투스 연동 iOS 앱 개발 SwiftUI를 활용한 ESP32 제어용 iOS App 개발 비노출 엠비언트 배선 연결과 최종 테스트 드디어 완성했습니다. ESP32 모듈은 퓨즈박스 옆에 보니 쏙 들어가는 공간이 있어 그곳에 매립했으며, 가니쉬에 나 있는 구멍을 통해 배선을 연결하니 30분 만에 장착이 끝났습니다. IG1(ON/START, on에서 전원이 공급되며, 스타트 모터 작동 시에도 전원이 유지됨) 그 곳을 통해 엠비언트의 전원을 공급시켰습니다. 야간에 보면 광섬유와는 비교도 안되게 상당한 양의 빛을 발광하는 것을 볼 수 있습니다. 그러나 여전히 점발광을 면발광으로 바꾸는데는 ..
동기만으로 과업을 완수하는 것은, 그 동기가 약화될 때 쯤 난이도가 극악으로 올라갑니다. 이번 작업도 마찬가지였습니다. 이전 포스팅에서 말씀 드렸겠지만, 너무 많은 문제가 발생했고, 그것을 해결하는 과정은 고통의 연속이었습니다. 그럼에도, 다행해 머리 속 상상을 현실로 꺼낸다는 그 대의는 단순한 동기보다 더 강한 원동력을 가지고 있습니다. 덕분에 이렇게 한 걸음 씩 갈 수 있는 것 같습니다. Enclosure 설계 및 3D Printing ESP32와 XL6009 Buck-Boost 레귤레이터를 차량 트림 내부에 굴러다니게 둘 수 없습니다. 따라서, 이들이 굴러다니다 쇼트가 나서 문제를 일으키지 않도록, 또 모듈화되어 장착 / 분리가 용이하도록 커넥터를 구성하여 연결할 수 있도록 했습니다. 긴 시간 기다..
이전 이야기 NeoPixel과 ESP32를 활용해 차량 내부 인테리어용 조명, 즉 엠비언트 라이트를 달기 위해 ESP32 코드를 짜고, 간단히 앱을 개발 중이었습니다. 그러나 몇 가지 난관에 봉착하다보니 이 프로젝트를 잠정 중단하게 되었습니다. A. ESP32 과열 및 작동 불능 | 원인을 알 수 없었습니다. 1000uF 캐패시터를 추가하니 이 문제는 더이상 일어나지 않았습니다. B. 확률적으로 NeoPixel 첫 번째 소자 망가짐 | 이를 해결하기 위해 Signal line에 저항을 추가해야 할 것 같은데, 3.3v Logic Level을 가진 ESP32는 이미 NeoPixel을 구동하기에는 전압이 부족한 상태입니다. 그렇다면 로직 컨버터를 달고 또 저항을 단다? 바람직해보이지 않았습니다. 일단은 캐패..
그런데 잠깐, 널린게 RGB 제어 앱인데 뭐하러 또 만드는거야? 가장 큰 이유는 자기계발이었습니다. 예전엔 엄두도 못 냈던 ios 개발 환경이 있다면 그것을 활용해야 하지 않을까요? 또한 현재 아이폰을 사용하고 있기 때문에, 보다 편리한 제어를 원한다면 ios 앱을 사용해야만 합니다. 그런데, 기존에 엠비언트 라이트 블루투스 연동 앱들은 하나같이 뭔가 이상합니다. 앱에 'MADE IN CHINA'가 적혀있지 않음에도, 그런 종류의 앱들은 생김새 자체에서 'MADE IN CHINA'를 울부짖고 있었습니다. 그게 싫었습니다. 그보다는, 앱에서 'Made by WKLabs'를 원했습니다. 시작은 두려움보다는 설렘으로 채우세요. 새로운 것을 시작하는데 전혀 두려워하면 안됩니다. 학교를 졸업했다고 배움에 끝이 있..