좌충우돌 로봇 만들기 Season II - 5 : Epilogue


이것저것 벌여놓은 일이 많다보니 한동안 로봇에 손을 못댔습니다.
그러던 중 다행히 12월 29, 30일 휴가를 얻어 여유가 생기면서 개선하기로 생각했던 부분에
대해 드디어 손을 좀 댔습니다.


원래 마지막 포스팅에서 문제로 지적한 모터 성능을 테스트 해보고 모터쪽으로 개선 방향을
맞춰보려고 했습니다. 하지만 그 동안의 문제점에 대해 최종적으로 내린 결론은 배터리나 
모터의 성능 문제가 아니라 확실히 로봇의 설계가 잘못되었다는 것이었습니다. 그래서 몇가지 
조정 작업을 거쳤습니다. 로봇 만들기 Season II는 이 조정작업에 대한 이야기로 마무리 
하려고 합니다.


그동안 페이스북이나 제 블로그를 통해 조언을 주신 많은 분들께 감사 인사 드립니다.
소프트웨어적으로도 아직 완성된 것이 아니라 조만간 다시 준비해서 Season III으로
찾아뵙겠습니다~^^



다시 한 번 다이어트…


지난 포스팅(Season II - 4 : 원래 약골이었네…-.-) 이후 실제로 서보모터 3개 정도를
추가로 구매해서 간단한 실험을 해보기는 하였다. 비슷한 성능의 다른 제품 3개를 가지고
테스트를 한 결과 현재 내가 가진 배터리와 모터로도 충분한 성능을 낼 수 있다는 것을
확인하였다. 기본적으로 포함된 서보 혼에 바로 연결할 경우 3Kg 무게의 가방을 쉽게
들어올릴 수 있었으며 약 10Cm정도의 팔을 추가로 연결한 상태에서도 그 절반정도의
성능을 보여주었다. 결국 SEW MK I 의 전체 무게가 2Kg 남짓이니 그 무게를 

견디지 못할 배터리나 모터는 아니라는 결론을 내릴 수 있다.


그래서 다시 한 번 로봇의 구조를 바꿔보기로 했다. 크게 바뀌는 것은 없고 가능한한
다리의 길이를 줄이고자 시도했다. 그리고 기존 대비 약 6Cm 정도 길이를 줄였다.
비교를 위해 상세하게 찍은 사진이 없어 쉽게 구분이 가진 않지만 아래 사진의 왼쪽이 
기존 형태이고 오른쪽이 개선된 형태이다.


내가 조립이 쉽도록 모듈화를 해서 만든 것도 아니고…하드보드를 목공풀로 붙여가며
만든 것이다보니 이미 만들어진 것을 뜯어고친다는 것이 이만저만 힘든일이 아니다…ㅠ.ㅠ
가장 어려웠던 것은 재조립 과정에서 모터 위치가 바뀌는 바람에 스케치에서 각도 조정을
일일이 다시 해줘야 했다는 것이다. 빨리 스케치 소스도 라이브러리화를 해야 하는데…
이 과정에서 모터 하나가 타버렸다…ㅠ.ㅠ 다행히 앞서 말한 모터 테스트를 위해 구입한
모터 중에 같은 모델이 있어 바로 교체가 가능했기에 망정이지 안그랬으면 또 주문하고
받을 때 까지 기다리다가 시간을 까먹을뻔 했다.
그래도 생각보다 깔끔하게 작업은 완료되었다. 하지만…


어째서인지 여전히 나아진 부분이 없다…기존과 마찬가지로 비리비리 하다…ㅠ.ㅠ


방향전환


답답한 심정으로 이것저것 테스트를 해보다가 이상한 점을 하나 발견을 했다.
처음 구동을 시작해서 가만히 서있을 대는 진동과 소음이 심하고 자꾸 가라앉는 모습이
보이는데 위로 일어서는 동작에서는 오히려 소음도 거의 없고 매우 안정적인 모습을
보여주었다. 여기서 다시 한 번 모터나 배터리가 힘이 없는 것은 아니라는 것이 증명
되었다. 그랬더라면 로봇을 위로 들어올리는 동작이 쉽지 않았을테니까


그리고 제자리에 서있는 동작이나 걷는 동작에서 다리 관절들이 자꾸 몸에서 바깥쪽으로
밀려나가는 모습이 보였다. 그래서 ‘힘’의 문제에서 ‘구조’의 문제로 그리고 ‘구조’의 
문제에서 ‘각도’의 문제로 최종 가닥을 잡았다.


우선 제작 자체에 문제가 있었다. 두꺼운 하드보드를 일일이 손으로 잘라 외형을 만들다 보니
정밀도가 매우 떨어진다. 아무래 자로 재서 똑같은 모양으로 도면을 그렸다고 하더라도
커터로 자르다보면 오차가 안생길 수 없다. 게다가 두께가 3mm나 되다보니 절단면이 수직이
되는 경우가 거의 없다. 이런 문제들을 무시하고 대충 모양을 만들다보니 얼핏 봐서는 동일해
보이는 다리들이 서로 모양과 위치가 어긋나는 것이다. 그 중에 가장 중요한 것이 ‘각도’이다.
스케치에서 동일한 값을 주어도 실제 형태를 보면 미묘하게 각도가 다르게 서있다. 또한 내가 
예상한 각도와 실제 서있는 형태를 맞추기가 왜 그리 어려운지…바로 이런 것들이 수작업의 한계다. 


아래 그림에서 보면 내가 수학이나 공학적 지식이 전무하다보니 논리적으로 설명할 수는 없지만
그래도 인생의 경험으로 A, B 중 어느쪽이 더 안정적으로 서있을 수 있는지는 쉽게 알 수 있다.
나는 B의 형태를 원하는데 정도의 차이는 있지만 자꾸 A의 형태가 되어버린다…ㅠ.ㅠ





세상은 넓고 방법은 많다.


일단 이렇게 문제를 규정하고 나니 사실 당장에 할 수 있는 것이 없어보였다. 그저 3D 프린터에
대한 생각만 간절해질 뿐…-.-


그러던 차에 또 한가지 생각이 떠올랐다. 문제가 뭐가 되었든 힘이 없으면 뭔가로 보완을 해주면
될 것이 아닌가? 우리가 다리를 다치면 목발을 집듯이…그래서 스프링을 이용해서 자세를 유지하면
어떨까 하고 생각해보았다. 하여간 이놈에 잔대가리란~ 부랴부랴 스프링을 주문하고 적당하게
잘라서(자르다가 손목 나가는 줄 알았다…ㅠ.ㅠ) 아래 사진과 같이 연결을 해주었다.


오~이래놓으니 성능상 이점 뿐만 아니라 외관상으로도 뭔가 있어보이네…^^;;


일단 이렇게 스프링을 장착하니 가만히 서있는 자세에서도 확실히 소음과 진동이 줄었다. 스프링의
탄성이 모터의 힘을 보완해주는 것이다. 그리고 아주 만족스럽진 않지만 움직임도 좀 더 안정적으로
보인다.


일단 그 동안의 문제는 해결을 한 것 같다. 하지만 역시 편법은 편법일뿐 근본적인 해결은 될 수 없다.
편법은 문제를 해결할 수는 있지만 그만큼의 비용과 수고를 지불해야 한다. 로봇 만들기 초반에도
잠시 언급했지만 내가 취미로 하고있으니 감수할 만한 내용이지 상업용으로 무언가를 만드는데 이렇다면
당장 일터에서 잘리겠지…-.-


그리고 다음을 위해…


아무튼 이렇게 해서 일단 SEW MK I은 마무리를 하게 되었다. 표면적으로는 어느 정도 문제를
해결한 것 같으나 역시나 근본적인 문제를 해결하지 못했다는 것이 못내 아쉽다.



얼마전 올해 2017년 계획을 포스팅을 했는데 아무래도 거기에 3D 프린터 구매를 추가해야 할 것 
같다. 그리고 좀 더 정밀한 설계를 바탕으로 SEW MK II를 제작해봐야겠다.


시간이 나는대로 SEW MK I의 나머지 동작에 대한 스케치를 마무리하고 한 번 정도는 더 포스팅을
할 지는 모르겠으나 일단 여기서 MK I 개발은 마무리 하려고 한다.


그리고 얼마전 로봇에 FPV 기능을 구현해보고자 계획을 세웠었는데 FPV쪽은 아두이노로 자작할
만한 내용이 거의 없는데다가 관련 모듈 값들이 비싸서 일단 보류 하기로 했다.


그럼 더 나은 MK II를 위하여!

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


좌충우돌 로봇 만들기 Season II - 4 : 원래 약골이었네…-.-


여전히 전원 공급 문제가 해결이 안되고 있습니다.
일단 이 문제를 제쳐두고 동작 구현부터 마무리 지으려고 했으나 몇가지 더 시험해보고 싶은 것이 있어
그 시험을 먼저 진행을 했습니다. 

결과부터 말하자면 배터리 문제가 아니라 모터의 문제가 아닐까 하는 생각이 짙어지고 있습니다.
본문에 여러가지 테스트한 내용이 나오겠지만 현재로서는 그렇게 생각이 되네요…

예전에 초반에 쓴 글에 제가 사용한 모터가 MG996R이고 가격으로 봐서 짝퉁인 듯하다는
언급을 한 적이 있습니다. 아무래도 저가로 만들면서 뭔가 부족해진 것 같습니다.

여전히 작업에 진전이 없기 때문에 이번 글의 볼거리는 도색 작업이네요^^


이왕이면 다홍치마~


일이 잘 풀리지 않자 살짝 기운이 빠졌다.
요 기운을 북돋우기 위해 심심풀이 삼아 도색 작업을 해보기로 했다.
컨셉은 중장비.


도색만 해도 애초에 프레임을 조립하기 전에 했으면 좋았을 것을…이미 조립이 다 된 상태에서
도색을 하자니 여간 손이 많이 가는 것이 아니다.


우선 아크릴 물감과 붓을 샀다. 이래저래 돈먹는 귀신이다.
아두이노로 로봇을 만드는 것도 처음이지만 아크릴 물감을 써보는 것도 처음이다.



아크릴 물감은 수용성이긴 하지만 마르고 나면 물로 지워지지가 않으며 마르는 속도가 빠르다.
물을 얼마나 섞느냐에 따라 다양한 효과를 낼 수 있다. 많이 섞으면 수채화 느낌으로도 사용가능하고
물을 거의 안섞으면 페인트 느낌이 나기도 한다. 물론 물을 많이 안섞으면 뻑뻑해서 칠하기가 어렵다.




아무튼 말마따나 좌충우돌이다.
그래도 열심히 칠하고 나니 제법 그럴듯하다. 가까이서보면 우둘두둘한 것이 엉망이지만 적당히 거리를 두고
보니 그럴싸 하다. 그래도 뭔가 밋밋한 구석이 있어서 여러가지 데칼을 좀 붙여줄까 했는데…프라모델용
데칼은 비싸기도 하려니와 이놈한테 어울리는 것을 찾기가 쉽지 않았다. 레터링지로 해볼까 했는데 다리에 붙은
큰 숫자 붙이고 나니 더이상 엄두가 안나 그냥 손으로 대충 썼다…-.-






다시 본론으로…


우선 현상부터 보자. 아래 동영상과 같이 처음에는 씩씩하게 잘 서있다.
하지만 움직이기 시작하는 순간 여지없이 무너진다.
은은하게 들리는 고양이 소리는 언제나 찬조 출연에 노고가 많으신 우리 둘째 따님이시다…^^;;;


여전히 바닥을 기는 모습을 보는 내 마음이 마치 무녀리를 보는 어미 개의 마음이랄까…-.-
그럴싸 하게 만들어졌는데 어찌 앉은뱅이 노릇을 하고 있는지…
애써 외면하려 했으나 쉽게 포기가 안되는 상황이다.
그래서 다시 이것 저것 만져보기 시작했다.


우선 배선을 좀 바꿔봤다. 빵판으로 전원이 들어가고 빵판에서 모터로는 모터 자체 케이블 외에 빵판에 쓰이는
가는 점퍼선으로 연결을 하였다. 혹시 이 가느다란 선에서 저항이 걸리나 싶어 우선 이 가는 점퍼선을 제거하고
빵판에 핀헤더를 꽂고 서보모터의 케이블을 바로 연결을 시켰다. 여러 방법으로 바꿔보긴 했으나 아래 이미지와
크게 다르지 않은 배치였고 그런만큼 전혀 아무런 변화가 없었다. (아래 그림에는 빠졌지만 아두이노에도 별도의
9V 전원이 연결되어 있다.)




일단 배터리 교체와 배선의 변화로도 아무런 진전이 없기에 다른 방법을 찾아야 했다.


아두이노 메가 센서 쉴드


일단 빵판은 공간 활용도 어렵고 그닥 믿음이 가지 않아 빼기로 했다.
빵판이 빠지면 서보모터를 연결할 방법이 필요한데…
우선은 서보 드라이버(혹은 서보 컨트롤러)를 한 번 찾아보았다.
하지만 쓸만해보이는 것들이 대부분 고가였다. 그나마 저렴한 것이 Adafruit라는 곳에서 나오는
16개의 서보 모터를 컨트롤할 수 있고 PWM으로 제어가 가능한 제품이었는데 사실 이 제품은
로봇 만들기 시작한 후 얼마 안되어 멋도 모르고 구입했더니 핀헤더가 전부 직접 납땜을 해야 하는
제품이었다. 




나중의 일이지만 짝퉁을 하나 사서 하루 연습 끝에 생전 처음 납땝을 해보았다.
이거 제대로 하긴 한건가 모르겠다…-.-


피나는 연습과...




그 결과...ㅠ.ㅠ



그러던 중 아두이노 메가 센서 쉴드라는 놈을 발견했다. 바로 아래 이미지와 같은 놈이다.





전체 54개의 디지털 I/O와 16개의 아날로그 입력 핀을 3핀으로 도배를 해놓은 제품이다.
게다가 점퍼를 이용하여 아두이노 전원과 외부 전원을 선택하여 사용할 수도 있다. 바로 이것이
내게 필요한 것이었다. 가격도 만원이 안되는 가격으로 비교적 저렴한 편이고…
단점이라면 외부전원을 쓸 경우 모든 디지털 I/O는 같은 전원을 사용하게 되기 때문에
서보모터를 위해 7.2V 배터리를 연결하면 5V이하에서 동작하는 센서는 사용을 못한다는 것,
그리고 블루투스 연결 핀은 아두이노의 TX0, RX0으로 연결되어 USB 연결시에는 블루투스 센서를
빼야 한다는 번거로움이 있다는 점이다. 


그리고 이놈…아무리 뒤져도 데이터 시트를 찾지 못하겠다…ㅠ.ㅠㅠ
겨우겨우 아래 사이트를 찾아 정보를 얻을 수 있었다.


https://arduino-info.wikispaces.com/SensorShield


그리고 아래와 같이 장착을 하였다. 이 쉴드를 사용하여 얻은 또하나의 좋은 점은 바로 배선이 깔끔하게
정리되었다는 것이다. 산발한 미친X 같던 전선들이 가운데 가르마를 멋지게 탄 신사가 되어버렸다…^^;;;


하지만…신사가 된들 무었하랴…여전히 앉은뱅이를 벗어나지 못했다…ㅠ.ㅠㅠ
이 쉴드를 사면서 내심 기대를 많이 했는데…ㅠ.ㅠ


위 제품과는 별도로 조금 더 비싼 아래 제품을 하나 더 주문했는데 해외 직구 상품이다보니 아직 도착을 안했다.
오긴 오는 건지…-.-




원인 좀 제대로 파악해보자!


일단 뭐 안봐도 모터로 적정량의 전류가 공급되지 않는다는 것은 알겠지만 그래도 직접 한 번 측정을 해보는 것이
좋을 것 같았다.


우선은 쉴드로부터 모터로 이어지는 위치에서 멀티테스터기로 전류를 측정해보기로 했다.
헐…(참고로 ‘헐’이 초등생들이 가장 많이 사용하는 신조어란다…-.-)
MG996R의 데이터 시트를 보면 Running Current가 500 mA – 900 mA (6V)로 되어있다.
그리고 Stall Current는 무려 2.5A다. 그런데 측정 결과는 평균 400 mA ~ 600 mA 정도였다.
Running Current의 minimum에 걸리는 수준이니 정상 범위이긴 한 것 같은데. 그럼 도데채
2.5A가 걸리는 시점은 언제란 말인가? (아는 것이 없으니 의문 투성이다…ㅠ.ㅠ)


그래서 이번에는 배터리에서 쉴드로 이어지는 부분을 끊어서 확인해보기로 했다.


웬열~!
평균 2A 정도에서 오르락 내리락 한다. 모터 하나로 들어가는 전류가 400mA라고만 쳐도 12개가 거의
동시에 움직이니 못해도 4A 이상은 나와줘야 하는 것이 아닌가?
내가 뭔가를 잘못 생각하고 있는 것인가?
알아야 면장을 해먹지…ㅠ.ㅠ


문제 정리


일단 전류 측정 결과로 모터를 의심해보기로 했다.
사실 본체의 무게를 버티지 못하는 것만으로는 대충 아무렇게나 이어붙인 덕에 구조상의 문제라고
생각할 수도 있으나 그럴 경우에는 모터가 많은 양의 전류를 요구할 것이고 전류의 측정 결과가
이렇게 어이없게 나올 수는 없을 것이다.


그렇다면 배터리가 불량인가?
하지만 위험을 무릎쓰고 배터리에 직접 전류를 측정한 결과 빵판이 타면서 측정된 값은 16A였다.
안타깝게 멀티 테스터기가 싸구려라 DC 10A까지밖에 측정이 안되어 배터리의 최대 방전량은 확인을 못했지만…
어쨌든 배터리가 불량이라고 보기는 어려웠다. 더군다나 리튬 이온, 니켈-카드뮴, 니켈-수소 3개의 배터리가
모두 동시에 불량일 확률이 얼마나 될까?


결국 모터를 의심해볼 밖에…
필요한 전류를 전혀 땡겨오지 못하는…
그래서 다음 실험은 모터가 과연 스펙상의 성능을 제대로 내는지이다.
안타깝게도 로봇에 사용된 모터들은 케이블을 테이프로 묶어놓은 관계로 다시 뜯기가 어렵고
아무래도 동일한 모터 1개와 좀더 성능 좋은 모터 1개 정도 더 구입을 해서 비교 테스트를 해보아야 할 것 같다.
또 돈깨지는 소리가 들린다…
이러다가 집팔아서 로봇 만들 기세다…ㅠ.ㅠ


암튼 이렇게 다음 포스팅의 내용이 정해졌다.
모터 테스트 결과를 기대하시라~

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

좌충우돌 로봇 만들기 Season II - 3 : 여전히 영양실조…?


지난 번 포스팅까지 배터리 문제로 결론 짓고 추가로 7.4V 2200mAh 10C의 스펙을 갖춘
전동건용 배터리와 전용 충전기를 추가로 구매했습니다. 비용만 6만 5천원 정도가 들었네요…ㅠ.ㅠ
하지만 결과는 그리 신통치 않았습니다.


오늘 이야기는 전원에 대한 추가 이야기를 조금 쓰고 마무리 하려 합니다.
그리고 단순한 배터리 문제가 아니라고 한다면 대공사가 필요할 것같습니다.
그래서 일단 Season II는 짧게, 여기서 마무리 하고 몸통의 외장을 갖추고 모든 동작 구현을 완성한 후
그 이야기로 Season III로 다시 찾아뵙겠습니다. 


여전히 부족한 무언가…


일단 지난 번 구매한 리튬 이온 배터리로도 어느 정도의 동작은 확보했기에 이후에는 그저
동작 구현에 중점을 두려 하였는데…그래도 확인을 해보고자 하는 마음에 배터리를 추가로
구입하게 되었다. 하지만 대부분의 고방전 배터리들이 관리(충격, 사용 온도, 충전과 방전 등)에
까다로워서 아이들도 있는 집에 경험도 없는 내가 쓰기에는 조금 부담이 되었다. 그래서
일단은 조금이라도 안정적인 니켈 수소 배터리쪽으로 알아보았다.


하지만 니켈 수소 배터리는 고방전을 지원하는 녀석들 가격이 만만치 않았다.
그나마 적절한 가성비를 가진 녀석을 찾아 일단 질러버렸다. 그리고는 다음과 같이
스위치와 연결을 하였다. (사실 사진에 보이는 하네스 커넥터를 인터넷 주문을 했다가

배송이 늦어져 세운상가에서 직접 사왔는데...빨간선과 검은선 이 배터리와 반대로

끼워졌다. 결국 수축 튜브로 선 색을 바꿀 수 밖에 없었다는...ㅠ.ㅠ 아시는 분은 아시겠지만

하네스 커넥터는 2개의 선이 네모와 원모양으로 반대로 체결되지 못하게 되어있다.)



그리고 본체쪽도 배터리 연결 부위를 정리하였다. 아두이노 전원용 9V 배터리까지 모두...


그런데 이 배터리는 문제가 너무 무겁다는 것이다. 이제껏 시도한 배터리 조합을
비교해보자면 알카라인 건전지 6개를 직렬 연결하여 9V를 만들었을 때의 무게가
200g, 리튬 이온 배터리 2개를 직렬 연결하여 7.4V로 사용할 때 110g인데 반해
니켈 수소 배터리는 무려 280g이 나갔다. 결정적으로 새로 구입한 니켈 수소
배터리를 사용한 동작이 리튬 이온 배터리를 이용한 동작보다 하나도 나을 것이
없었다는 것이다…ㅠ.ㅠ




무엇이 문제인지 다시 한 번 생각해봐야 할 문제다. 다시 원점으로 돌아가 모터의
토크 문제일지, 아니면 모터와 빵판을 가느다란 점퍼선으로 연결하여 저항이 많이
걸린 것인지, 아니면 20C 이상의 배터리를 사용해 보아야 하는 것인지…


※ 그래도 니켈 수소 배터리쪽이 조금은 더 나은 성능을 보이는 것 같다. 움직이기
시작하면 여전히 주저앉기는 하지만 버티는 힘은 역시 니켈 수소쪽이 낫다.


※ 선무당이 사람 잡는다고…니켈 수소 배터리 전류 체크하다가 빵판 태워먹었다.
멀티 테스터기 10A에 놓고 대략 값이 11~12 왔다갔다 하는 것을 확인했는데 측정기
탐침 끝이 꽂힌 빵판이 백열전구 켜지듯이 빨개지는 것 같아 얼른 떼고 확인해보니
사진과 같이 타버렸다…



마무리


서두에서도 말했듯이 일단 어느 정도 동작은 하고 있기에 이제 나머지 동작들만 자연스럽게 움직이도록
구현하는데 중점을 두고 작업을 해야겠다. 그리고 동작 구현이 완료되면 다시 하드보드 노가다…
몸통 좀 멋들어지게 만들어주고 마지막으로 도색 한 번 해주고~^^ 우선 밑작업으로 전선 정리좀 해줬다.
뭐 정리라기 보다는 대충 케이블타이로 둘둘 묶어놓은 것이지만…-.-



그리고 모터의 힘이 딸리는 부분은 아무래도 괜찮은 RC 전문점에 찾아가서 자문을 좀 구해봐야
할 것 같다.


이제 스케치 소스좀 잘 정리해서 Season III에서는 소스 분석을 위주로 글을 올려보겠다.

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


좌충우돌 로봇 만들기 Season II - 2 : 영양식좀 먹여볼까?


지난 번 글에서는 주로 모터에 대한 이야기를 다루었습니다.
하지만 모터만 해결된다고 될 문제가 아니었습니다.
모터를 잘 움직이게 해줄 무언가가 필요했고 전 그걸 몰랐습니다.
오늘은 ‘그 무엇’에 대한 이야기입니다.



이 과정에서 도움을 주신 페이스북 아두이노 사용자 모임의 김재유님과 차형도님께
감사 인사 드립니다^^


문돌이의 한계 3 - 모터에 대해 더 알아야 할 것들


지난 글에서 우선 모터의 torque에 대해 간단하게 알아보았다.
그리고 torque를 고려하여 몸통의 구조도 바꿔보았다. 크게 바뀌지는 않았지만…
하지만 개선된 것은 없었고 무엇이 문제인가를 좀 더 생각해보아야 했다.


나름 잔머리를 굴려 로봇의 동작 방식을 바꿔보기로 했다.
현재 로봇의 보행은 2개의 다리가 동시에 움직이도록 되어있고 이는 결국 2개의 다리가 앞으로
움직이는 동안 2개의 다리로만 전체 무게를 지탱해야 한다. 하지만 한 번에 하나의 다리만을
움직이도록 구현을 한다면 3개의 다리로 무게를 지탱할 수 있어 문제가 해결될 것이라 생각했다.
아래 그림에서 보면 빨간색으로 칠해진 다리가 무게를 지탱해야 하는 다리이다.


2다리로 지탱3 다리로 지탱


짧은 시간이기에 새로운 보행을 완벽하게 구현하지는 못하고 우선 제자리에서 다리를 들었다 놓도록
구현 후 테스트를 해보았다. 하지만…문제가 해결되지 않았다. 여전히 동작을 시작하면 얼마 안되어
주저 앉고 말았다(아쉽게도 동영상을 찍지 못했다).


여전히 해결이 안되기에 일단 인터넷 검색을 통해 좀 더 알아보다가 페이스북 아두이노 사용자 모임에 
질문을 올렸다. 그리고 무언가 단서를 찾았다.



다시 한 번 MG996R 모터의 데이터 시트를 열어보았다.
거기에 적힌 스펙 중 다음 내용이 눈에 들어왔다.


• Stall Current 2.5 A (6V) 


즉, stall torque를 내기 위해서는 2.5A의 전류가 필요하다는 것이다.
우리가 보통 배터리를 이용할 때 사용하는 단위가 mA이므로 2.5A라면 상당히 큰 전류이다.
그래서 이제 관심은 배터리로 옮겨갔다.


문돌이의 한계 4 - 배터리와 전기


누구나 알고 있듯이 모터는 전기라는 동력원을 통해 움직이는 장치이다.
하지만 나같은 문돌이가 알고 있는 모터들은 1.5V AA 전지 하나 연결해주면 쌩쌩 돌아가는
그런 모터들이다. 하지만 앞서 간략하게 설명한 바와 같이 이 서보모터라는 놈은 성격이 달랐다.
꽤 큰 힘을 쓰는 놈이다보니 먹는 것도 달라야 했다.


처음 2관절로 제작을 했을 때는 모터가 총 8개였고 전원으로는 1.5V AA 배터리 4개를 직렬로 연결하여
총 6V의 전압으로 테스트를 했다. 이전 글에서 보았듯이 무난한 움직임을 보여주었다. 하지만 벌써
이 때부터 전조 증상이 있었다. 한 2~3분 연속으로 움직이고 나면 이내 비실비실해지는 것이었다.
당시에는 그저 ‘그놈 참 배터리먹는 귀신이네’라고 단순하게 생각했다. 하지만 지금 생각하니 내가 배터리와
전기에 대해 몰라도 너무 몰랐던 것이다.


처음에는 무작정 배터리 용량이 빨리 소모되었기 때문이라고 생각했다. 그래서 4구 홀더 2개를 병렬로
연결하여 전압은 6V로 동일하게 하고 용량만 2배로 만들었다. 하지만 여전히 증상은 동일했다.


다음으로는 전압을 높여보기로 했다. 우선 총 6개의 배터리를 연결하여 9V의 전압을 만들었다.
(아래 테스터기에는 6.72V가 찍혀있으나 배터리 홀더 단자에 바로 연결하여 테스트한 것은 정확히
9V정도가 표시되었고 빵판에 연결한 후 빵판에 테스터 단자를 연결하니 아래와 같이 찍힌 것이다.)




하지만 여전히 결과는 동일했다. 아래 동영상은 지난 글에도 링크한 것이지만 다시 한 번 올린다.




다음은 배터리 8개를 직렬로 연결하여 12V까지 올려보았다. 데이터 시트에는 MG996R 모터의 동작
전압이 4.8V~7.2V까지로 나와있으나 12V까지는 사용가능하다 하여 무리를 해보았다.
(역시 직접 배터리 단자에서 테스트하면 12V가 표시되나 빵판에서 측정하니 아래와 같이 나왔다)




이렇게 하니 확실히 움직임이 달라지긴 했다. 처음 일어설 때와 움직일 때의 힘이 나아진 것 같았다.
하지만 그도 오래가지 못했고 만족할만한 수준은 아니었다.


게다가 조금 지나니 어디선가 연기가 솔솔…이놈이 좌절감에 담배를 피우나 했다.
스위치와 빵판을 연결한 점퍼 케이블에서 연기가 나고 있었던 것이다. 확인해보니 아래 사진과 같이
눌어있었다.




일단 여기까지 하고 하도 답답하여 페이스북 아두이노 사용자 모임에 질문을 올렸던 것이다.
그리고 조금 더 연구를 거듭한 결과 배터리에는 방전률이라는 것이 있다는 것을 알았다.


문돌이의 한계 5 - 배터리와 전기 : 조금 더 상세하게


역시나 문돌이 이기 때문에 자세한 설명은 할 수 없고 필요한 선에서만 간략하게 정리한다.


기본적으로 우리가 흔히 접하는 전기적 단위에는 전압(V)과 전류(A 또는 mA)가 있다.
그리고 배터리 중 충전이 가능한 2차전지에는 용량이 표시되는데 이 때는 mAh라는 단위가
사용된다. 각각의 뜻을 보면


  • 전압 (V) : 전기적인 위치의 차이(전위차)를 나타내는 단위. 물이 높은 곳에서 낮은 곳으로
    흐르며 이 높이의 차이를 수위차라고 하듯이 전기적인 높이의 차이가 있어야 전류가 흐른다.
  • 전류의 세기(A, mA) : 전위차에 의해 전자가 이동을 하게 되는데이를 전류라고 하며 정해진 
    시간 동안 얼마나 많은 전자가 이동하는지를 전류의 세기라고 하고 그 단위가 A 또는 mA이다.
  • 용량 (Ah, mAh) : 한시간 동안 사용할 수 있는 전류의 세기를 용량으로 표시한다.
  • 저항 (Ω) : 전류의 흐름을 방해하는 정도를 저항이라 하며 다양한 환경이 영향을 미친다.


일단 이정도는 상식선에서 모두 알고 있는 내용이다.
중요한 것은 이 성질들의 관계가 어떻게 조합되어 어떤 결과를 만들어내는지 이다.
사실 일반적인 생활에서는 배터리가 필요한 전자기기에서 필요로 하는 전압만 알면 되지만…


우선 사용 중인 모터 MG996R의 데이터 시트로 되돌아가 보자. 이미 위에서 언급했지만
Stall Current 2.5 A (6V)라는 내용이 있다. stall torque를 내기 위해 필요한 전류…
바로 앞에 설명한 개념에 따르면 전압이 있어야 전류가 흐른다. 게다가 높은 곳에서 떨어지는 물이
낮은 곳에서 떨어지는 물보다 세차게 흐르듯 전압이 높으로면 전류도 세진다. 여기까지만 보면
별 문제가 없어보인다.


똑같은 물의 비유지만 이번엔 물총을 생각해보자.
물총의 방아쇠를 당기면 처음에는 멀리 나가다가 점점 힘이 약해지면서 결국에는 코앞에 물이 떨어진다.
1차 전지가 바로 이와 같다. 전류의 사용량이 많아지면 급격하게 전압이 떨어지면서 필요한 전류를 보내지
못하게 되는 것이다.


이러한 특성 때문에 8개나 되는 배터리를 직렬 연결하여 전압을 12V로 높여도 순식간에 전압이 낮아져
모터를 제대로 구동시키는 못하는 상황이 된 것이다. 그러기에 일정시간 강한 힘을 필요로 하는 경우에는
2차 전지를, 그 중에서도 고방전 배터리라고 부르는 것들을 사용하게 된다. 이런 배터리들은 주로 RC
구동용으로 많이 사용되는데 더이상의 설명은 복잡해지므로 아래 링크로 대신한다.


http://tip.daum.net/openknow/38738178


또하나의 변수 - 전선


어쨌든 페이스북 아두이노 사용자 모임 회원분들의 도움과 다양한 검색질을 통해 배터리에 문제가 있다는 것을
확인한 후 비교적 방전률이 높다는 3.5V 3500mAh 18650 리튬-이온 배터리를 2개 구입하였다.
그런데 착각을 한 것이 리튬-이온 배터리라고 모두 고방전을 지원하는 것은 아니라는 것이다. 다만 고방전
배터리들은 보호회로가 없어 위험을 감수해야 한다. 어쨌든 내가 산 배터리도 지속적으로 3.4A 정도의 출력을
보장해 준다고 한다.


그리고 첫 테스트…리튬-이온배터리를 직렬로 연결하는 배터리 홀더에 장착한 후 로봇을 기동하였다.
아래 동영상에서 보듯이 일단 초기 구동이 꽤 기운차 보인다. 그리고 뒤에 설명하겠지만 보행 방식 변경을 위한
테스트도 움직임이 가벼워보인다. 그런데 막상 기존 보행 방식으로 구동을 하니 기존 일반 배터리 사용시보다는
나아보이나 여전이 불만족 스럽다. 그리고 동영상 마지막에서 보여지는 황급함…-.-
불나는 줄 알았다.





배터리 홀더를 스위치와 연결하고 스위치를 빵판과 연결하였는데 스위치와 빵판을 연결할 때 일반적인 아두이노
점퍼케이블을 사용을 하였더니 이 점퍼케이블이 전류를 버티지 못하고 타버린 것이다. 전류의 흐름이 전선의
길이와 두께에도 관련이 있다는 것을 몰랐던 것이다(물론 저항과도…). 일단 아두이노용 점퍼 케이블은 
5V 이하에서 사용을 해야 할 것 같다.


결국 기존에 넉넉하게 사둔 AA 배터리용 배터리 홀더의 전선을 잘라 스위치와 빵판을 다시 연결하였다.


한 고비를 넘기다.




이제 연기도 안 내뿜고 제법 무게도 버티면서 잘 나간다(뭔가 각도 조절이 잘못된 듯 2개의 다리를 너무 높이
쳐드는 것만 빼고…).


여전히 만족스럽지는 못하지만 더이상 하드웨어에 투자하기는 힘들 것 같다(만일 투자를 한다면 고방전을 지원하는 
니켈-수소 배터리와 전용 충전기 그리고 고출력 모터 4개 정도가 될텐데 최소 40만원은 들 것같다…ㅠ.ㅠ).
그래서 이후에는 소프트웨어적인 방법으로 보완을 해나가려고 한다. 


그 중 첫번째가 글 서두에 언급한 보행 방식의 변경이다. 


현재는 2개의 다리가 동시에 움직이므로 한번에 2개이 다리로 전체 무게를
지탱해야 한다. 그만큼 모터에 부하가 걸리는 것이다. 이 것을 한 번에 하나의 다리가 움직이는 방식으로 변경하면
동시에 무게를 지탱하는 다리가 3개가 됨으로써 부가가 경감될 것이다


다음으로는 기존 보행 방식을 그대로 쓰되 움직임을 줄이는 것이다. 현재는 모든 움직임이 45º 범위에서 움직이는데
이 각도를 30º 정도로 줄일 예정이다.


아무튼 이렇게 해서 일단 한고비는 넘긴 듯하다.
다음 시간부터는 프로그래밍을 통한 세부 조정에 대해 정리를 하겠다.
뭔가 무리인듯한 작업이었지만 나름 많은 것을 배워가고 있는데 만족을 느낀다.
한 번 제대로 만들어봐야겠다. ^^

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


좌충우돌 로봇 만들기 Season II - 1 : 로봇아 다이어트좀 하자!


휴가도 있었고 회사 일도 바쁘다보니 포스팅이 늦어졌습니다.
물론 작업은 계속 진행을 했고 휴가 중에 외형은 거의 마무리가 되었네요.
하지만 외형 마무리 후 첫 기동을 하는데부터가 문제였습니다.
일단 각 관절을 모터 방향이 뒤바뀌는 바람에 소스를 좀 수정해야 했고
가장 중요한 것은 외형을 다 갖추었더니 크기와 무게가 상당해졌는데
이 때문인지 처음 전원을 키면 잘 서다가 움직이기 시작하면 주저앉아서 바닥을
빌빌 기고 마는 것이었습니다.


이 문제를 해결하기 위한 과정을 기록합니다.


하드보드와의 전쟁을 끝내다.


일단 가장 구하기 쉽고 저렴한 재료라서 하드보드로 로봇의 외장을 만들기로 결정은 했지만
그리 탁월한 선택은 아닌었던 것 같다. 자르기가 너무 힘들고 곡면을 만들 수가 없는데다가
잘못 힘을 받으면 겹이 일어아는 문제가 있었다. 큰 형태의 직선을 자르는 것은 어렵지 않았지만
서로 맞물리기 위한 요철을 자른다든지 하는 경우에는 정말 힘들었다. 나같은 경우 두께 3T(3mm 정도)
되는 하드보드를 사용하였는데 다음 같은 문제들이 있었다.


  1. 절단의 어려움 1 : 최소 4~6번은 칼질을 해야 잘린다. 손목과 손가락에 엄청난 무리가 간다…ㅠ.ㅠ
  2. 절단의 어려움 2 : 두께가 두껍다보니 잘린 단면이 직각이 아니다. 절단 과정에서 칼이 조금이라도
    비뚤어지면 이상한 각도로 잘린다. 이럴 경우 T자 형태로 접착을 하면 접착면이 딱 맞지 않아 잘 
    안붙는다.
  3. 엄청난 먼지 덩이 들 : 하드보드가 펄프를 압착해서 만든 것이다 보니 자르다보면 펄프 가루가 장난 
    아니다.
  4. 벌어짐 문제 : 하드보드가 합판과 비슷하게 여러겹을 겹쳐서 만든 것이다보니 조금 무리하게 힘이 
    들어가거나 목공풀이 발린 후 부풀어 오르거나 벌어지는 경우들이 종종 있다

하지만 대안을 찾은 시점은 이미 거의 완성 단계에 이른 때라서 그냥 하드보드로 작업을 진행 했다. 
이렇게 8절로 재단된 하드보드 8장을 자르고 붙여 드디어 몸통을 제외한 외관을 완성했다. 
처음 만든 형태는 아래와 같다. 그래도 다 만들고 나니 제법 모양새가 나는 것 같다.


잘라진 8장의 하드보드







문돌이의 한계 1 - 무게와 무게를 버티는 힘


하지만 다 만들고 나니 문제가 하나 생겼다.
사실 전체 설계를 꼼꼼하게 한 것도 아니고 또 모양에만 신경썼지 다른 부분들은 하나도 고려하지 않았다.
그래서 발생한 첫번째 문제는 몸통(바닥만 있는 상태지만)이 너무 얇다보니 몸통 외곽에 있는 제 1관절
무게를 버티지 못하고 휘청거리는 것이었다. 고민끝에 일단 바닥쪽에 대각선을 이루는 다리 를 잇는 지지대를
붙여 보완을 했고 적절한 효과를 보았다.

빨간 선이 지지대를 붙인 위치다.



물론 금속이나 플라스틱같은 적절한 강도를 가진 재료를 사용했다면 발생하지 않았을 문제이다.
하지만 분명 재질의 탄성이나 강도 그리고 각 부위의 무게등을 적절히 고려한 설계가 필요할 것이다.


문돌이의 한계 2 - 모터에 대한 상식


나는 그저 서보모터라는 것이 각도를 조절하고 그 정보를 피드백 받을 수 있는 모터라는 정도의 지식만을 가지고
작업을 시작하였다. 뭐 그정도로도 2관절로 움직이는 로봇을 만드는데는 큰 무리가 없었다.


하지만 덩치가 커지고 무게가 많이 나가게 되면서 모터의 힘에 대한 고려를 하지 않을 수 없었다.
흔히 토크(torque)라고 하는 힘이다. 쉽게 말해 모터의 회전하는 힘이며 이 힘에 대한 자세한 내용은
아래 링크로 대신하고 당장 필요한 내용만 정리하겠다.


https://ko.wikipedia.org/wiki/돌림힘


일반적으로 서보모터를 판매하는 곳에서는 스펙을 적으면서 토크를 표시할 때 다음과 같이 표시하는 경우가
많다.


stall torque : 9.4 kg/cm (4.8V), 11kg/cm (6V)


일단 kg/cm이라는 단위는 틀린 것이라 한다. 정식 단위는  9.4 kgf·cm와 같이 표시해야 한단다.
하지만 나같은 문돌이들이 이해하기에는 틀린 단위가 이해하기는 더 쉽다…^^;
자, 하나하나 알아보자.


일단 용어부터, stall torque란 움직임이 멈추면서 발생하는 토크다. 가장 큰 힘이 들어가는 시점이
이 때라고 한다. 따라서 (문돌이의 입장에서는) stall torque는 곧 최대 토크라고 봐도 무방하다. 하지만
실제로는 서로 다르니 오해가 없도록…


다음은 단위의 이해, 아주 단순하게 말해서 torque란 모터 축으로부터 움직여야 할 물체와의 거리와 움직여야 할
무게의 비율이다. 틀린 표현이 더 이해하기 쉽다는 것이 바로 이 때문이다. 즉, 9.4 kg/cm (4.8V)란 것은
”4.8V의 전압을 공급했을 때 1cm 거리에 있는 9.4Kg의 물체를 들어올릴 수 있다.”는 의미로 보면 된다.
문돌이의 수학 상식으로도 이정도는 이해할 수 있다. 분모가 거리이고 분자가 무게이므로 당연히 거리가
멀어질수록 torque는 작아질 수밖에 없다. 즉, 들어올릴 수 있는 무게가 작아진다는 의미다.



현재 사용중인 모터는 MG996R이라는 모터이고 이 모터의 경우 정식 라이센스를 받은 제품은 2만원 이상의
가격대를 형성하는 것 같은데 대부분의 업체에서는 중국산 카피 제품을 파는 듯하다. 중국산은 가격이 
5,000~7,000원 대에 형성되어 가성비는 최고가 아닌가 싶다.
위 예는 바로 이 모터의 스펙이다. 일단 1 cm 거리에서 적어도 9.7Kg을 들어올릴 수 있으니 상당한 성능이다.


그런데 아래 동영상을 보면 알겠지만 구동을 시키자 무게를 버티지 못하고 납짝 업드려 발발 기고만 있다…ㅠ.ㅠ
완성된 로봇의 전체 무게가 2Kg 남짓인데 문돌이의 상식에서는 도저히 이해가 안가는 상황이었다.




그래서 처음 생각한 것이 바로 이 토크다. 일단 문제점으로 판단한 것은 모터 축으로부터 무게 중심이 너무
멀리 있다는 것이었다. 그래서 몸통을 다시 구성하였다.



                                                   개선 전 형태                                                                                                           개선 후 형태        




                 개선 전 실제 모습                         개선 후 실제 모습 (접은 상태)                 개선 후 실제 모습 (펼친 상태)



산뜻하게 다이어트를 하고 다시 기동을 해보았지만 별다른 성과가 없었다…ㅠ.ㅠ


이렇게 첫 걸음마는 실패로 끝나고 말았다.
나는 계속해서 torque에만 신경을 썼고 그래서 torque 값이 높은 모터만을 검색하고 있었다.
하지만 현재 사용중이 모터보다 torque가 큰 모터는 대략 가격이 4만원대 이상을 형성하고 있었다.
돈도 돈이지만 만일 모터를 구입했는데 개선되지 않는다면? 지식의 부족은 결정을 망설이게 만든다.


그러던 중 새로운 측면으로 시점을 전환하게 되었다.
글이 길어진 관계로 오늘은 여기에서 마치고 다음 글에 그 내용을 적도록 하겠다.

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


좌충우돌 로봇 만들기 3


집안에 우환이 좀 있어 이번 3번 째 이야기는 하루 늦었습니다.
오늘은 자세한 내용보다는 조금은 일반적인 이야기를 좀 하고 현재까지 진행된
2관절 4족 보행 로봇은 전진 동작 동영상으로 마무리 하겠습니다.

딱히 도움이 될만한 내용은 없을 듯하니 동영상이나 잠시 감상하시길^^
(주의 : 동영상 보다가 답답해서 사망하셔도 책임은 못집니다…-.-)


3주간의 정리


3주 정도 주말 작업을 진행해오면서 참으로 재미있었다.
처음 접해보는 아두이노, 뜬금없는 4족 보행 로봇에 도전,
그리고 좌충우돌…


일단 3주동안 만들어낸 2과절 4족보행 로봇의 외관은 아래 사진과 같다.
지난 번 제 1관절 4개를 테스트할 때 사용했던 나무젓가락을 재활용하여 1관절용 모터와
2관절용 모터를 연결하는데 사용하였다. 아무래도 이놈은 완성되면 중국집 배달용으로
방향을 잡아야겠다(하지만 마지막 동영상에서 보다시피 속도가…ㅠ.ㅠ).


그래도 일단 제법 그럴싸한 이름을 하나 붙여줬다.
SEW-Prototype. SEW는 그 자체로 ‘꿰메다’, ‘깁다’ 라는 의미가 있다.
그렇다. 사진에서 보다시피 누덕누덕 기워서 만든 로봇이다.
하지만 이름을 풀어쓰면 Save the Earth from Waste
즉, 쓰레기로부터 지구를 구하자라는 거창한 의미가 있다.
(이런데서 문돌이의 재능이 발휘된다…-.-)
하지만 고작 나무젓가락과 폐 박스를 재활용한 정도…-.- 



그리고 오늘 간단한 코딩을 통해 드디어 앞으로 전진하는 모습을 볼 수 있었다.
나름 감격이 아닐 수 없다.


하지만…문돌이의 한계에 부딪치다.


물론 아두이노는 취미생활로 하는 것이지만 내 본업은 프로그래머다.
어찌되었건 내가 접하는 것들은 기술이요, 과학이다.
이말인 즉슨 대충 감으로 때려 잡아서 하면 안된다는 말이다.
하지만 아마도 인문계열 전공을 한 개발자들에게서 흔히 보이는 모습이 바로
이런 모습이 아닐까 한다. 


철저한 실험과 테스트를 통해 도출한 정확한 결과가 아닌
그간의 경험과 실무에서 습득된 직관을 통해 개발을 해나가는 것!
물론 국내에서 진행되는 대부분의 프로젝트에서는 이런 직관을 통한 개발도
큰 무리 없이 적응 가능하다.


하지만 자율주행 자동차와 같이 사람의 목숨을 위협할 수도 있는 분야의 개발이라면
결코 그렇게 해서는 안될 것이다.


물론 이런 성향은 문돌이와 공돌이의 차이보다는 개인 성향의 차이일 수도 있다…


어쨌든…
나의 문돌이적 성향이 여실히 드러나는 부분들을 한 번 신랄하게 까발려보자.


우선 로봇의 본체…



제 1관절용 서보모터와 제 2관절용 서보모터를 연결하고나니 두 모터의 축이
바깥으로 향하게 되어버렸다. 물리학을 잘 몰라 설명은 어렵지만 이렇게 되면
제 1관절의 축이 몸통과 연결되어야 하고 그 축에 받는 힘이 커져 내구도가 약한 경우
모터든 몸통이든 쉽게 파손될 우려가 있다. 


이런 생각을 하고 유튜브에서 동영상을 보다보니 역시나 대부분 구조가 모터 몸통이 
로봇 본체에 붙고 축은 바깥으로 향해 2과절의 모터 몸통 또는 축쪽으로 연결이 되는 
형태였다. 이렇게 되어야만 몸통과 제 2과절 사이에서 힘이 적절히 분배 될 것 같다. 


아래 그림에서 1번과 2번은 분명 1번쪽이 빨간 원 안에 있는 축에 힘이 많이 걸릴 것이다.



뿐만아니라 각 관절들의 각도라든지 부분 부분 형태에 의한 장애 등을 판단해야 한다.
보면 위의 사진에는 SEW-Prototype의 다리가 그냥 편면 사각형인데, 동영상을 보면
하단부를 비스듬하게 깎아냈다. 그냥 사각형인 상태에서는 다리를 들어올려도 사각형의
모서리가 바닥에 다아 마찰을 일으키면서 제대로 전진을 못하였다. 그래서 다리를
들었을 때 마찰이 생기지 않도록 잘라내버렸다.


다음은 소프트웨어…


개발자들이 시스템을 개발할 때 많이 간과하는 것 중 하나가 바로 성공 케이스,
정상적인 작동에 많이 집중한다는 것이다. 뭐 목적이 그것이니 그리 뭐라 할 것은 아니지만
정작 중요한 것은 예기치 못한 오작동에 대한 대응이다. 그런데 로봇을 만들다보니
이런 예기치 못한 오류(혹은 오류는 아니지만 제어가 안되는 상태)에 대한 처리에
감이 오질 않는다.


예를들어 한참 잘 돌아가다가 배터리가 소모되어 이상한 위치에서 모터가 정지되는 경우
전원이 공극되기 시작한 이후 그 다음 동작들을 어떻게 처리할까 같은 문제다.
물론 만고의 진리가 있다. 바로 리셋이다. 무조건 초기 상태로 돌려놓고 다시 시작하면
된다. 하지만 뭔가 뒤끝이 찜찜하다.


바로 이러한 이유로 소프트웨어를 개발할 때는 개발자가 설계한 수치보다는 시스템 자체가
리턴해주는 상태 값이 더 중요하다. 시스템 자체의 상태가 시스템의 다음 동작을
결정하는 근거가 되어야 할 것이다.


그런 측면에서 현재 SEW-Prototype이 앞으로 가고는 있지만 언제 이상한
동작(이상한 동작이라고 뭐 헤드스핀을 하거나 그러진 않겠지만…)을 보일지 모른다.
이후 작업은 아마도 이 부분을 개발하는데 거의 모든 시간을 투자하게 될 것 같다.


다시 시작!


앞서 말했듯이 지금까지의 작업은 그냥 아이들 레고놀이에 불과하다.
이제부터가 진짜 작업이 아닌가 싶다. 그리고 내가 해낼 수 있을까도 의문이다.
아직 전진, 그것도 하드코딩으로 된 프로그램을 통한 전진밖에는 못한다.
어떻게 해야 서보 모터 상태를 통한 동작 제어가 가능할지 고민을 좀 해봐야겠다.


마지막으로 인류 최초의 로봇이 이러지 않았을까 싶을 정도로 굼뜬 동작이지만
나름 육중한 맛을 풍기는 SEW-Prototype의 전진 모습이다.
배경음으로 들리는 나의 사적인 단편들은 보너스이니 그냥 들어주시길…-.-



블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^


좌충우돌 로봇 만들기 2


일단 무작정 시작한 로봇 만들기의 시작은 그리 나쁘지 않았다.
블루투스 통신도 성공을 했고, 4개의 서보모터를 외부 전원을 이용하여 구동하는 것도
성공을 했고, 아이폰 앱을 통해 서보모터를 간단하게나마 제어하는 것도 성공을 했다.
그래도 이정도 하고 나니 할만 하겠다는 생각도 든다.


이제 본격적인 작업에 들어가기 위해 몇가지 준비가 필요하다.

  1. 보드 교체 : 총 12개의 관절이 필요하므로 PWM 핀을 여유있게 사용 가능한 아두이노 MEGA로 보드 교체
  2. 로봇 프레임 제작 : 일단은 집안에서 쉽게 구할 수 있는 재료들을 이용할 생각인데…이 글 중간에 언급하겠지만 이게 의외로 쉽지 않다…ㅠ.ㅠ
  3. 응용 프로토콜 설계
  4. 4족 보행 걸음 걸이에 대한 분석 : 이거…참 어렵다. Youtube 동영상을 보니 몇가지 패턴이 보이는데 어떤 식으로 구현해야 할지가 살짝 어려웠다.


일단 오늘의 목표는 위 3가지이다.
그럼 구체적으로 들어가보자.


아두이노 메가로 보드 교체하기


일단 지난 시간 까지의 테스트 진행에는 아두이노 나노를 사용하였다. PWM 핀이 
총 6개이므로 서보모터 4개를 테스트하는데는 무리가 없었다. 하지만 이제 본격적으로
작업을 시작하면서 점차 모터 수를 늘려야 하기에 보드를 메가로 바꾸었다.


아두이노 메가의 핀 배치는 아래 이미지를 참고하시라



하지만 문돌이가 하는데 어디 순순하게 되는게 있으랴…-.-
우선 블루투스(HM-10) 연결에서부터 문제가 생겼다.
아두이노 나노에서 쓰던 스케치 소스를 그대로 이용하여 아두이노 메가의 D2에 TX룰,
D3애 RX를 연결하였다. 그리고 테스트를 하는데…블루투스에서 아이폰 앱으로는
정상적으로 데이터 전송이 되는데 폰에서 HM-10으로의 전송이 안되는 것이었다.


메가가 맛이 갔나? HM-10이 맛이 갔나?
우선 다시 나노를 이용하여 테스트 해보았다. 정상 작동한다.
그럼 메가가 맛이 갔나?
구글링 결과 역시 무지의 소치였다.
다음 유의 사항을 명심하자


유의사항 1.

아두이노 우노/나노의 경우 하드웨어 Serial은 1개 뿐으로 이 것은 주로
하드웨어간 통신(주로 PC와의 USB 연결 등)에 쓰인다. 따라서 가급적면
다른 Serial 통신을 위해서는 SoftwareSerial을 사용한다. 하지만
아두이노 메가 2560의 경우 하드웨어 Serial이 모두 4개로 하드웨어간
통신을 위해 1개를 남겨 두더라도 모두 3개의 추가 Serial을 사용 가능하다.


즉, 아두이노 나노에서 테스트했던 코드는 SoftwareSerial을 이용하여 D2, D3 핀을
이용하는 것이었는데 아우이노 메가에서는 이게 정상 작동하지 않았던 것이다.
결국 하드웨어 시리얼 중 하나인 D14(TX3), D15(RX3)로 연결하여 성공하였다.


참고로 스케치 상에서 TX0과 RX0은 Serial로 TX1과 RX1은 Serial1로 TX2와 RX2는
Serial2로 TX3과 RX3은 Serial3으로 사용하면 된다.


그리고 아두이노 메가의 어떤 핀들이 PWM핀인지 몰라 검색하던 중 위의 이미지를
찾았다. 보시다시피 2~13은 모두 PWM 출력이 가능하며 추가로 D44, D45, D46 핀이
PWM 핀으로 총 15개를 PWM으로 사용 가능하다.

최종 연결 형태는 다음과 같다.


로봇 프레임 제작


일단 인터넷에 보면 너무나 멋진 4 또는 6족 로봇들이 검색된다.
특히 마음에 들었던 것은 종이로 프레임을 만든 ZURI라는 프로젝트였다.
아래 이미지에서 보다시피 마치 공각기동대에 나왔던 로봇 그 느낌이다.


하지만 종이라고 만만하랴…처음에 하드보드지를 이용하여 해보려고 했으나
하드보드는 워낙 자르기가 어렵고 또 두껍다보니 접을 경우 모서리가 갈라지기도 하여
아무래도 어려울 것 같았다. 그렇다고 프레임에 돈을 투자하기도 아깝고…일단
방향은 폐 페트병이나 캔, 스티로폼 등 재활용 가능한 재로를 목표로 하였다.


맨 아래 결과 동영상에서 보다시피 일단 몸통은 공CD 케이스를 선택하였다.
저 밑판이 생각보다 두꺼워서 모터 고정시킬 나사 구명 뚫느라 고생 좀 했다.


결국은 나사보다 조금 가능 간이 드라이버를 불에 지져 구멍을 뚫었다.


이후 숙제는 제 2관절을 어떻게 붙일 것인지 그리고 2관절과 3관절 사이, 3관절
끝의 다리를 어떻게 만들 것인지가 문제다…프레임 만들다 시간 다보내게 생겼다.
배보다 배꼽이 더 큰…


응용 프로토콜 설계

이건 뭐 설계라고 하기엔 뭐하고…
암튼 응용 프로토콜을 나름 만들어 사용하기로 했다. ASCII 코드를 기준으로 하였다. 
간단하게 아래 이미지 참고하시길…

간단하게 아래 이미지 참고하시길…


4족 보행 걸음걸이 분석


역시나 가장 어려운 부분이 아닌가 싶다.
게다가 나는 이제 관절 1개를 붙인 상태이다보니 실제로 전진도 못하고 2번째 관절까지
고려해야 하는데 이 작업을 동영상을 토대로 상상을 하면서 할 수밖에 없었다.
결국 아직은 미완의 작업이다.


Youtube를 통해 검색을 해보면 대체로 3가지 패턴이 보인다.

  1. 다리 4개를 각각 대각선 방향으로 순차적으로 움직이면서 전진
    [https://youtu.be/PL4174oBPTs]
  2. 대각선상의 다리 2개씩을 동시에 번갈아가면서 움직임
    https://youtu.be/Dfke2byJknk
  3. 같은쪽 앞뒤 다리를 순차적으로 움직인 후 전체 1관절을 돌려 몸을 앞으로 밀듯이 전진하는 움직임
    https://youtu.be/87nNW4DgTBc


하지만 동영상을 보면 대체로 하나의 로봇에 2가지 이상의 움직임을 구현하는 경우가
대부분이다.


어쨌든 2번이 조금 쉬울것 같다는 판단에 2번을 우선 구현해 보기로 하고 작업을 하였다.
계획은 대각선 상의 2 다리가 2관절을 들어올려 앞으로 내딛는 동안 바닥에 닿은 나머지
대각선상의 2개의 다리는 1관절만 몸을 앞으로 미는 방식으로 전진하는 것이다.


일단 오늘은 여기까지로 작업 결과는 아래와 같다. 조금 더 부드러운 동작을 표현하고 싶어


for문을 통해 서보모터의 각도를 증감하였다. (나무젓가락 다리가 참 애틋해 보인다...ㅠ.ㅠ)

다음주 부터가 문제인데…도대체 다리를 어떻게 이어붙여야 할지…ㅠ.ㅠ
한 주 동안 열심히 고민을 해봐야겠다.



최종 소스 링크

https://github.com/mazdah/BluetoothController

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^