안녕하세요. 평생 개발자 입니다.

영상 처리를 처음 시작했을때  hand Track과 robot hand 를 간단하게 연동했었습니다.


Gaussian mixture model 를 사용하였고 피부색 변화에 반응하여 로봇 손이 움직입니다.

환경은 ODROID-U3 에 openCV 설치해서 오픈소스를 넣었습니다. 

기존 영상 처리소스에서 Serial 통신을 사용해서 로봇 손을 움직입니다.

아시는 분은 아시겠지만 영상에 나오는 로봇 손은 고가 이죠. ㅋㅋ  학교 다닐때 아니면 못만지니까 가지고 놀았지요 .ㅋㅋ



'취미 > HW' 카테고리의 다른 글

STM32f429 보드 실험 - Camera 구동  (11) 2016.07.12
공부 계획중인 ARM, MSP430  (0) 2016.07.12
1D-Laser Distance Sensor - (2)  (1) 2016.06.22
1D-Laser Distance Sensor - (1)  (6) 2016.06.22
8 Stage Coil Gun  (1) 2016.05.30

가지고 있는 카메라모듈 OV7670, OV2640을 가지고 있습니다.

우선 OV7670 모듈을 이용하여 LCD에 출력하였습니다.


LCD는 SPI 통신을 이용하여 출력합니다.  stm32f427에는 TFT Driver가 포함되어 있어서 고속으로 출력하고 싶었지만, 카메라인터페이스 DCMI 와 포트가 중복됩니다. ㅠㅜ

아무튼 지금까지 공부를 통해서 카메라 영상을 얻어왔습니다.

카메라 초기 설정으로 I2C(SCCB)를 이용하여 세팅 후 DCMI를 통해 30FPS 속도로 영상을 취득할 수 있습니다.(QVGA)




Gray Level 로 출력한 결과



Gray Level -> Gradient 영상 x 2

곱하기를 해서 분해능이 떨어져 보이지만 LCD로 출력하기 위함이구요. 기본적으로 영상 미분을 통해서 충분히 방향성을 구할 수 있습니다.




목표는 Line Laser Scanner 를 만들어 보려고 구상하고 있습니다. 하지만 생각보다 MCU 성능이 안나오네요.


DSP기능을 이용하여 성능을 최대한 이용할 생각 입니다.


'취미 > HW' 카테고리의 다른 글

hand Tracking and robot hand  (0) 2016.12.22
공부 계획중인 ARM, MSP430  (0) 2016.07.12
1D-Laser Distance Sensor - (2)  (1) 2016.06.22
1D-Laser Distance Sensor - (1)  (6) 2016.06.22
8 Stage Coil Gun  (1) 2016.05.30

 그동안 영상처리 공부에 매진하여 하드웨어만 손댈 시간이 없었습니다. 석사 졸업과 동시에 취업을 앞두고도 있지만, 취업준비 시간 쪼개서 하드웨어 공부하고 있습니다.



아래의 보드는 ST사의 Cortex m4 보드입니다. 신호처리 및 센서고속 신호처리에 응용해보려고 예전부터 공부하려고 벼르고 있었던 녀석들입니다.

오른쪽의 stm32f429는 DSP가 탑재되어 있죠. 그리고 stm32f4에서는 FPU가 기본 탑재되어 있습니다.

탑재된 DSP는 SIMD를 지원하고 다양한 수학함수를 가지고 있습니다. 예를 들어 Matrix, filtering, Vactor, Statistics 등..

성능이 제일 높은 stm32f429보드를 이용해서 영상처리를 해보려고 합니다. 



국내에서 LM사 컨퍼런스때 받은 보드입니다. 5년 정도 된것 같아요.

예전에 공부할 때 기억으로는

내장된 보드를 이용해서 다운로드 하기 쉽지 않았습니다.

LM보드 중에서 LM3S8962아직도 보드네이밍을 기억합니다. 많이 고생해서 ㅎㅎ

다양한 기능탑제되어 있고 이더넷을 이용한 IoT전원 컨트롤 만들 때 이용했었습니다.



이 보드도 컨퍼런스때 받은 보드 입니다. 고속램으로 하나의 통합 고속저장소를 이용한다고 듣었던 기억이 남니다. 저전력이며 IoT를 준비하기 위해 공부하면 괜찬을것 같습니다.



LM사에서 판매한 나름? 스마트워치 입니다. MSP430을 이용해 개발되어 졌습니다.

전문대학 다니던 시절에 교수님이 선물주셨습니다.



ALTERA사의 FPGA 보드입니다 보드는 대학원 공부하면서 호기심에 구매하였습니다.

중국에서 만들어졌으며 제공하는 예제도 다 중국말입니다. ㅠㅜ

그래도 공부하겠다고 좀 덤벼보았지만, 생각보다 진입장벽이 있습니다. FPGA 구조를 조금 이해한 정도로 다음에 공부하는 걸로 서랍 속으로...


'취미 > HW' 카테고리의 다른 글

hand Tracking and robot hand  (0) 2016.12.22
STM32f429 보드 실험 - Camera 구동  (11) 2016.07.12
1D-Laser Distance Sensor - (2)  (1) 2016.06.22
1D-Laser Distance Sensor - (1)  (6) 2016.06.22
8 Stage Coil Gun  (1) 2016.05.30

1D-Laser Distance Sensor - (1) 실험을 통해서 레이저가 CCD 셀에 형상을 맺히는 실험을 하였습니다.


CCD 셀 각도에 따라 검출 가능한 거리와 정확도가 결정 됩니다.


CCD 센서의 각도에 따라 검출 가능한 거리가 멀어질수록 정확도가 떨어지게 됩니다. 센서에 상이 맺히기 때문에 근거리에서는 높은 해상도를 가지며 장거리에서는 낮은 해상도를 가지게 되겠습니다.


아래 그림은 3D Max를 이용하여 간단하게 설계하였습니다. 예전에 "3D Max 무작정 따라하기" 책을 통해서 한번 배워두니 두고두고 써먹네요. ㅎ




출력 결과 센서를 단단하게 고정 할 수 있었습니다.

현재 사용 중인 센서는 128 x 1 센서를 사용하고 있습니다. 픽셀 수가 얼마 안 되어 전체적인 sampling 속도가 빠릅니다 값을 shift 하며 하나씩 ADC로 읽어오게 됩니다. 분해능이 12bit이며 하나의 픽셀에 4096 값을 가지게 됩니다. 이 의미는 얼마 없는 픽셀을 통해서 세분화하여 레이저 거리를 추정할 수 있게 됩니다. 


MPU 내부에 실수 연산자가 존재하지 않아 실수연산을 많이 하게 되면 전체적인 속도가 늦어지기 때문에 대부분 연산은 정수 연산을 사용하였고 최종 출력 때에만 형 변환을 통해 연산량을 줄이는 작업을 하였습니다.












마지막으로 제일 중요한 부분은 레이저 데이터의 선형화입니다.

여기서 말하는 선형화는 데이터 분포를 수치화하여 수식으로 표현하는 걸 말합니다.

표현된 수식을 통해 정확한 mm 로 표현해주는 작업을 말합니다.

1차원은 간단하게 가능하지만 2차원 센서에서는 고민해야 하는 부분이 많기 때문에 이 부분도 나중에 포스팅해보려고 노력하겠습니다.





아래의 그래프는 Calibration 과정입니다.

Calibration을 하는 이유는 아래 그림처럼 비선형 형태로 그래프가 나타나기 때문에 선형화 작업이 필요합니다.

Row값은 원본 값이며 와 Estimation 값은 거리 값을 넣어서 추정된 값 입니다. lookup Table 간격이 5cm 간격이며 대충 눈대중으로 값을 넣다 보니 오차가 많이 증가 했습니다. ㅠㅜ 나중에 다시 실험 해야겠습니다.





estimation 은 지수 형태를 가지게 되고 로그로 역수를 구하여 실제 거리값을 계산 할 수 있게됨니다.




실제 거리와 추정된 거리



최악의 오차 ㅋ

0에 수렴해야 최상 입니다.





제작 후기

틈틈이 실험하면서 Laser Distance Sensor를 제작할 수 있었습니다. 128개밖에 없는 Array CCD 사용하였고 12bit ADC를 통해 픽셀값을 읽어 내고 레이저 분포의 중심을 찾아내었습니다. 픽셀의 이동은 0~128의 정수를 갖지만, 레이저 분포의 중심을 찾게 되면 실수 값으로 나타낼 수 있습니다. 이후에 0~128.0의 값을 실제 거리 값으로 변환하는 과정으로 비선형 모델을 선형모델로 근사하여 실제 거리를 구합니다.


 arm core를 통해서 구현하면서 사용하는 하드웨어의 사양을 고려하였습니다.

MPU 내부에 FPU가 없으므로 대부분 연산은 정수로 계산하였고 결과를 출력할 때 자릿수 이동을 통해 연산 속도를 개선하였습니다.



개선 가능성

높은 해상도의 CCD 사용

특정 대역의 IR 과 IR Pass Filter를 사용하여 가시광선 노이즈 제거

정밀광학렌즈 이용



'취미 > HW' 카테고리의 다른 글

STM32f429 보드 실험 - Camera 구동  (11) 2016.07.12
공부 계획중인 ARM, MSP430  (0) 2016.07.12
1D-Laser Distance Sensor - (1)  (6) 2016.06.22
8 Stage Coil Gun  (1) 2016.05.30
전기 스쿠터 제작 경험기  (4) 2016.05.05

이 포스팅은 레이저 거리 센서제작 과정입니다.


삼각 기법을 통하여 거리정보를 얻을 수 있고 삼각기법으로 레이저가 물체에 반사된 빛의 위치를 통해 거리정보를 얻게됨니다.  오브젝트에 반사된 빛은 Linear CCD 센서에 전하차가 생기게 되고 얻어진 센서 값 중에서 가장 밝은 부위를 레이저로 인식합니다.






제작 하드웨어

MPU : STM32F103RET6


Sensor : TSL1401 







센서 성능이 매우 좋지 못합니다. 밝은 레이저를 사용하여야 센서 전압차가 발생합니다. 이런 CCD 소자는 처음 사용해봅니다. (픽셀 노출속도가 빠라서 일 수 도 있지만, 상대적으로 늦습니다.)

아래의 레이저 센서 프로토타입으로 실험하는 모습입니다. 적절한 렌즈를 구하기가 쉽지 않아 고장이 난 카메라 렌즈를 분해하여 장착하게 되었네요. (비선형 렌즈)

아래의 검은 물체는 휴대용 오실로스코프입니다. ㅋ 무려 72mbps를 실험할 수 있습니다.

밖에 나가서 사용할 일 있으면 쓰려고 구매하였지만 단 한 번 사용했네요. ㅎㅎ






거리 측정 모습.





거리에 따른 CCD 전압차의 분포를 확인 하실 수 있습니다.



스케일 변화 모습을 통해 어떤식으로 CCD cell이 이동하는지 자세히 관찰할 수 있습니다.ㅋ

확실히 오실로스코프 차이가 느껴지나요? 장비는 좋은것을 써야 합니다. ㅎ




영상을 보셨다면 CCD cell 전압차가  Global Maximum 을 가지는 형태를 확인 하실 수 있습니다.


CCD 셀에서 정확인 레이저 위치를 잡기위한 방법이 필요하게 됨니다.


 아래의 사진은 histogram 을 통해 Mode, Median, Mean 방법을 간단하게 표현한 사진 입니다.




참고링크

참고링크2

참고링크3





첨부 : 

TSL1401CL_Datasheet_EN_v1.pdf


'취미 > HW' 카테고리의 다른 글

STM32f429 보드 실험 - Camera 구동  (11) 2016.07.12
공부 계획중인 ARM, MSP430  (0) 2016.07.12
1D-Laser Distance Sensor - (2)  (1) 2016.06.22
8 Stage Coil Gun  (1) 2016.05.30
전기 스쿠터 제작 경험기  (4) 2016.05.05

11년도에 제작한 Coil gun 입니다.


만들게 된 계기는 호기심에서 부터 시작 되었습니다. 처음에는 인터넷으로만 정보를 모아 조금식 실험하면서 많은 정보가 쌓이게 되었습니다. 

아래의 사진은 코일을 감는 모습 입니다. 레이저 컷팅한 아크릴로 일정한 간격으로 배치한 이후 코일 권선비를 마추어 감았습니다.


지금 생각해보면 자기 차폐를 하였다면 더 큰 효율을 가졌을텐데 아쉬움이 남습니다. ㅎ







적외선 수신부와 발광부를 배치한 모습입니다.

발사체를 감지 하기 위한 센서로 사용 됨니다.


적외선 센서를 연결한 모습 입니다. 코일에 스위칭을 하기전 발사체를 감지하기 위한 적외선 센서를 이용하게 됨니다. 



조금식 완성 되어가는 모습 입니다. 캐패시터에 200V 가까이 충전되기 때문에 절연이 완벽한 아크릴로 케이스를 만들게 되었습니다. 

코일 스위치 소자는 SCR를 사용하였으며 SCR 소자에 대해 많은 공부가 되었습니다.




아래의 영상은 캐패시터를 충전 하는 모습 입니다. 일정 전압 이상 상승하게되면 duty cycle이 멈추도록 되어 있습니다. 즉 신호가 0로 떨어 짐니다.

피드백을 받아 충전 전압을 조절 합니다. 지금 영상은 충전 방전 실험하며 절열 파괴 및 내구성 실험을 하는 과정 입니다.

전원 스위칭 소자는 IGBT 와 Mosfet을 사용 할 수 있습니다.



 코일건을 만들면서 정말 많은 공부가 될 수 밖에 없는 부분은 고려해야 하는 부분이 많다는 점 입니다. (만들기 나름입니다.)

아래의 영상은 코일의 각 stage 검출 하는 과정 입니다. 

이 부분에서는 Real Time 이 매우 중용합니다. 발사체 검출 속도가 늦어진다면 다음 stage 코일에서 제대로 발사체를 가속시켜주지 못하기 때문입니다.

Software 와 Hardware 는 말 그대로 유연하고 딱딱한 의미 처럼 단순히 고속으로 처리하기 위해서는 하드웨어 logic을 이용하여 센서 검출시 즉각 반응하도록 설계 되었습니다. 



충전 및 컨트롤 기능을 MCU 에 프로그래밍한 모습입니다. 



최종 결과 영상 

발사체에 실을 매달아 실험한 최종 영상 입니다.






후기.

코일건을 만들면서 다양한 경험을 하게 되었습니다. 전기에 대해 조금더 알게 되니 다른 사람보다도 더 위협을 느끼게 되는것 같습니다.

그만큼 조심성이 많아 졌고 처음에는 관심만 가지고 있었지만 나중에는 푹 빠져서 틈틈히 만들게 되었습니다.  

지금의 생각을 가지고 다시 만든다면 스마트 하게 만들 수 있을것 갔고 발사체의 궤적과 예상 타겟팅 위치까지 계산 할 수 있을것 같습니다. ㅎ

코일건 만들 당시 수학공부에 개념이 없어서 실험 위주로 안정화를 했었지만 책보고 만드는게 제일 빠른 방법 입니다. ㅋ 물론 코일건을 만드는 책은 없겠지만 관련 지식은 책을 보면 어렵지만 상세하게 기술되어 있습니다.





'취미 > HW' 카테고리의 다른 글

STM32f429 보드 실험 - Camera 구동  (11) 2016.07.12
공부 계획중인 ARM, MSP430  (0) 2016.07.12
1D-Laser Distance Sensor - (2)  (1) 2016.06.22
1D-Laser Distance Sensor - (1)  (6) 2016.06.22
전기 스쿠터 제작 경험기  (4) 2016.05.05

안녕하세요. 19살 때의 과거의 이야기가 시작되겠습니다.ㅋ

 

고등학교 때 전기스쿠터를 꼭 만들어 보겠다는 생각을 가지고 있었었죠.

돈을 모아서 꼭 전기스쿠터를 만들어봐야겠다고 생각했지만 그때 당시 상상과 현실을 돈이 없다는 게 문제였습니다. ㅋ  고등학교 3학년 겨울 방학 때 알바를 열심히 뛰어서 자금을 마련 후 전기스쿠터 제작 프로젝트를 시작했었고 약 100 정도 들어갔던 기억이 듭니다.

 

 

아래의 사진은 그때 당시 전기스쿠터 몸체만 저렴하게 판매하는 링크를 통해 국내에서 약 30~40 정도에 구매하여 배터리, 컨트롤러, 전기배선을 구성하면 따로 용접 없이도 전기스쿠터를 창작할 수 있었습니다. 

 

 

 

하지만 역경은 이때부터였습니다. 배터리를 저렴하고 가볍게 만들기 위해 납산 배터리 대신 니켈수소 배터리를 이용하여 자작 배터리를 만들기 시작했습니다.  배터리를 중고로 구매한 탓에 죽은 셀들이 몇몇 보였고 살아 있는 배터리를 선별하여 구성하였습니다. 

 

아래의 사진과 같이 배선의 흔적을 보실 수 있을 겁니다. 절연의 개념이 그 당시에는 지식이 부족했기 때문에 나중에 문제가 터진 적도 있었죠. 문제는 충전 중에 폭발하는 문제가 있었지만 불나기 전에 수습할 수 있어서 정말 다행이었습니다. 

 

당시 터졌을 때를 기억하자면 니켈수소 배터리는 충전 중 화학반응를 통해 배터리 발열이 발생합니다. 배터리 한 셀의 용량은 1.2v 4.3a 이였고 충전전압은 그 당시 1.5v 0.5a 로 충전가능하도록 납산 충전기를 개조하여 Feedback 저항값을 조정하면 전압과 전류를 컨트롤 하여 충전 하였지만 8시간 정도 충전중에 폭발 했습니다. 초기 충전때는 문제가 없었지만 방전 후 충전시 문제가 발생하였고 그때 당시에는 멘탈이 무너지고 원인을 분석하고 인터넷 검색을 통해 원인을 찾았습니다.

 

니켈수소는 충전중 화학반응을 통해 발열이 발생하고 발열에 따라 배터리 저항값이 변하기 때문에 위의 사진처럼 30개 직렬 36v를 만들어 사용하기에는 셀 불안정을 초래합니다.  그뿐만 아니라 중고 셀이기 때문에 그 위험이 더 증가하게 되고 충전 전류가 높았기 때문에 배터리 중심 부분은 열이 빠져나가지 못해 고르지 못한 전압이 분배되었고 실제로 폭발 이후 중심부에서부터 셀 폭발을 확인했습니다.

 

폭발을 방지하기 위해서는 중고 배터리를 구매하는 것보다는 새 배터리를 사용하는 것이 안정합니다. 또는 중고 배터리를 구매하더라도 개별로 구매하시지 말고 하나의 세트로 구매하는 것이 안전하다고 생각됩니다. (니켈 말고도 모든 배터리 내에서)

배터리 분해하여 재활용하는 것도 위험하겠죠? ㅋ

 

그래도 저렴하게 사용해야겠다고 생각이 드신다면 연속적으로 충전하는 것보다 충전 중 일정 주기로 쉬었다 충전하는 방법이 안전하겠습니다. 

 

 

 

 

참고로 일반적인 배터리보다 큰 배터리여서 그런지 폭발력도 배가 되었습니다. 배터리 제작하시는 분은 충분히 공부하시고 조심하세요.

 

 

 

 

 

휴즈 대신 차단기를 이용하여 간혈적으로 휴즈가 나갈 때 난감함을 해결해 주었습니다.

실제로 휴즈가 없었다면 위험한 상황이 있었습니다. 모터 정지상태에서 무리한 출력 때문에 컨트롤러 내부 Mosfet 이 터지면서 접점이 돼버리는 상황이 있었습니다. 이 때문에 풀로드 상태로 모터가 달려가려 했지만 차단기 덕분에 살았던 기억이 있습니다. ㅋ

 

 

버튼 기능은 속도제한 기능합니다. 현제 컨트롤러에 사용되는 액셀레이터는 가변저항값을 통해 속도를 조절합니다. 저항값을 제안 한다면 처음 타는 사람에게 안전하게 승차 할 수 있을 것 입니다. (글쓴이의 악셀레이터는 홀 센서였습니다.)

 

36v 1000W 모터를 듀얼로 구성하여 강력한 주행 성능을 발휘합니다.

 

모터 분리 후 모터에 대해 탐구한 사진입니다. 1kw 이어서 그런지 페라이트 자석에도 불구하고 강력한 자력을 가졌습니다. 

 

 

 

 

아래의 사진은 유압 브레이크입니다. 디스크와 브레이크의 마찰이 있어 분해하였고 어떻게 브레이크가 이루어지는지 보았습니다. 

간단하게 유압 브레이크 액셀은 지렛대 역할을 하는 작은 펌프이고 작은 펌프가 큰 펌프를 지속적으로 밀어내어 큰 힘을 내는 원리입니다.

2개의 큰 펌프 내에는 고무링이 들어가 있으며 브레이크액을 통해 부드럽게 동작합니다. (발가락은 애교로 넘어가 주세요. ㅋ)

 

 

 

 

 

 

 

전기스쿠터 1호

 

 

 

 

 

 

전기스쿠터 2호 1학년 대학생 시절 때입니다. 기계공학과로 착각하실 수 있으시겠지만 임베디드 소프트웨어 전공입니다.

 

 

학교에서 재미있게 타고 놀았습니다. ㅋ

 

 

 

 

'취미 > HW' 카테고리의 다른 글

STM32f429 보드 실험 - Camera 구동  (11) 2016.07.12
공부 계획중인 ARM, MSP430  (0) 2016.07.12
1D-Laser Distance Sensor - (2)  (1) 2016.06.22
1D-Laser Distance Sensor - (1)  (6) 2016.06.22
8 Stage Coil Gun  (1) 2016.05.30

+ Recent posts