반응형

이번엔 저번의 Right Leg에 이어서 Left Leg 파트이다!

 

이번엔 엄청 간단하다..! 그냥 오른쪽 만들었던거 그대로 왼쪽에 만들면 된다!

그래서 딱히 설명은 안한다는 것..!

 

이번 파트의 설명서이다!

 

이번껀 조립할 때.. 복제하고 미러 씌우면 되지 않나? 할 수 있는데.. Fusion이 독학이라.. 미러 씌워도 이상하게 된다..

미러가 되는건 확인했는데.. 복제를 해버리면 기존의 결합된 것들이 전부 풀려버린다..

뭐 모르니깐 그냥 다시 만들어야할 것 같다.. 흐으...

 

이제.. 조립을 해보고 있는데.. 한가지 이상한 점을 발견했다..!

 

없다..? 17번 프레임의 번호가 안적혀있다.. 이전 페이지나 이후 페이지를 봐도 안적혀있다.. 흐음..?

뭐 이전 설명서에서 나와있기 때문에 안적어 놓은건가? 그래도 다른건 적혀있는데..

뭐 그래도 양쪽 프레임 구별이 거의 없으니.. 17번 프레임으로 조립!

 

어라 그리고.. 프레임 사이에 모터를 끼울 때.. 지금 발견했는데..

약간 공차? 가 있다. 모터 조립을 위해서 일부로 저렇게 바꾼 것 같은데.. 이전에 한 모델링에도.. 저게 2개 이상은 있다..

어쩐지.. 이 부분이 왜 띄어져있나 했는데.. 그런 이유였다니..

 

그래서 나는 양쪽을 평등하게 맞추기 위해서 조립을 수정해서 간격을 동일하게 되도록 약간 위치를 바꿨다. 

Fusion은 이런 부분이 진짜 좋은 것 같다.. 하나만 바꾸면 다 맞춰서 바뀌는거.. 뭐 블럭대로 조립한거라서 당연한 것일 수 있다만..

암튼 저렇게 바꿨다. 원래 간격이 0.45mm여서.. 0.45 / 2로 설정해서 저렇게 바꿨다. 나머지와 이전 조립 들도 다 바꿨다. (바꿀 수 있는 부분만..) 그리고 나중에 기억나면.. 모델링 수정할 때도 참고하면 되겠다..

그리고 이 부분은 원래 모터 쪽의 인서트까지 들어가야 할 것 같다고 잠시 생각했는데.. 어차피 고무라서 상관없다는걸 방금 알았다.. 이전 조립에서는 그냥 가능한 길이겠지 하고만 생각했는데.. 저정도 까지만 들어갔으니.. 뭐 암튼..

 

암튼 그렇게 해서 이번 것도 완성!

 

끝!

반응형
반응형

이번엔 Right Leg 부분이다..! 이번껀 미리 확인을 해봤는데.. 다행히 이전 처럼.. 끼우기가 힘든 곳은 별로 없는 것 같다..!

그리고.. 다른 설명서 부분도 봤는데.. 이 정도라면.. 충분히 프레임만 수정하면 이건 무조건 가능할 것 같다고 생각되는 정도이다..! (아마도..)

 

아무튼!

이번 부분을 시작하기 전에.. Flange Bearing이 내가 이전 글에서 적지 않았다는 것을 찾았다.. Flange Bearing은 이 부분에서 사용되게 되는데.. 이전 글을 적을 때 같이 찾지 않았었다.. 그래서 방금 이 파일을 찾느라 조금 힘들었다..

 

일단 이렇게 생겼다..

베어링하고 혼쪽에 도면이 있는지 확인해봤는데.. 베어링이라면서 없다..

그래서 다른 곳을 다 찾아보니.. 하나 찾았다..

Frame 도면 쪽에서 찾았는데.. 2개 모양이 저 작은 사진으로 봤을 때 가장 비슷했다.. 그런데 보면 2개 중에 뭔지를 찾아야 하는데.. 뭐 적혀있다. MX 28이라고.. 그리고 다른 부품들 이름을 봤을 때 대부분 07로 끝나는데.. 그걸 본다면 알 수 있다는 것..!

암튼 저 부품은.. https://www.robotis.com/shop/item.php?it_id=903-0163-100

 

FR07-F101K Set

MX-28 전용 프레임

www.robotis.com

여기에서 판매되고 있다.

 

그리고 도면 파일은 찾았으니.. 다운로드 해서.. 라이브러리에 넣어둔다!

일단 겉으로 보기에는 모양이 똑같다!

 

암튼.. 이번 부분은.. 대부분 설명서대로 진행할 수 있을 것 같은 부분들만 있다..!

그래서 다행이다..! 그렇기에 실제 조립과 다르게 하는 부분들만 적을 것이다..!

 

암튼 이번 파트의 설명서!

 

이번 파트 부분에서는 대부분 조립대로 하면 되는거라서 딱히 말할 곳은 없지만.. 몇가지 않좋을 수 있는 부분이 있다..

일단 이 부분은.. 로봇의 발에 해당하는 부분이다.. 저기에 보면 나사를 넣고 반대쪽에서 너트로 고정하지 못한다..

만약 고정해버리면 분명.. 긁힐 것이 뻔하니..

그래서 저 부분은 만약 만든다면.. 인서트 너트로 해야할 것 같다..

저정도는 인서트 너트로 하면 잘 붙으니깐 오히려 좋을 수도 있을 것 같다..!

 

그리고 하면서 특이한게 보이는데.. 부품 목록을 봐도 그렇고.. 하나 파워 스위치 쪽 부품 빼고는 전부 LR 구분이 없다..!!

발판을 봐도 왼쪽 오른쪽에서 가능하도록 여러개 뚫려있다..

바이올로이드 조립할 때도 느낀거긴 하지만.. 양쪽에서도 다 쓸 수 있도록 만드는 것.. 뭔가.. 대단하고 신기하다고 느낀다..

 

그리고 이런 부분도 있는데 이 부분도 마찬가지로 보면 너트로 고정하지 않는다..

그래서 이 부분은 도데체 어떻게 해야할지 고민이다.. 이쪽 부품은 작고 저렴하니깐.. 그냥 구매하는 것도 방법일 것 같고.. 

안되면 여기도 인서트 너트로 되게 만들어야 할 것 같다..

 

그리고..

이번엔 여기에서 문제가 생겼다..!

저 32번.. 아마 내가 기억하는걸로는 케이블 고정할 때 쓰는걸로 기억하는데.. 내가 저거에 않좋은 추억이 있는게.. 바이올로이드 조립할 때 저걸 프레임에 끼우는데 바이올로이드는 플라스틱이다.. 그래서 한번 조립하면.. 플라스틱이 갈려있다.. 그래서 항상 안끼워지고 풀려버려서 굉장히 짜증났던 기억이 있는데.. 철제라면 진짜 좋을지도..

 

아무튼 저걸 찾아야 한다.. 

일단 먼저 상품을 찾아봤는데.. 상품 목록에는 분명 있다. https://www.robotis.com/shop/item.php?it_id=903-0182-000

 

다이나믹셀 Cable Holder FP04-F55 20pcs

다이나믹셀과 프레임에 케이블을 고정

www.robotis.com

그런데 문제는 저기에는 왜 도면이 없는거지.. 도면이 분명 있을텐데.. 그래서 도면 다운로드 사이트에 보니깐..

여기에 있었다..!! 그래서 저걸로 적용!

 

그리고 끼워보는데..

저게 원래 고무재질이다. 그래서 저기 안쪽으로 튀어나온 것 때문에 강하게 끼워버리면 휘면서 케이블 공간이 넓어지게 되어있다.. 그런데 가상에서는 그렇게 할려면 어려우니깐.. 나는 임시로 -0.8mm를 뒤로 하고 합쳐서 되었다..!

물론 저기에도.. 너트로 고정하는 방식이 아니기 때문에.. 프레임이 철제가 아닌 이상.. 고정하기가 어렵다..

그래서 이 부분도 인서트 너트로 고정하는 방식으로 바꿔야 할 것 같다..

 

이번엔 여기..

이 부분이다.. 사진에서 어느 구멍에 끼우는지도 잘 안보이고.. 저기에서도 너트 없이 프레임에 끼우는 방식이다..!!!

그렇기 때문에.. 여기에서는 S15인 M2.5 * 6mm를 이용해서 너트와 함께 끼운다..!

일단 난 최대한 확대하면서 확인해본 결과.. 저 부분에 연결하는 것으로 추측되기 때문에.. 이런식으로 연결했다.

마찬가지로 반대쪽은 너트!

 

로봇이 움직일 때.. 너트를 건들 수도 있다고 생각은 되긴 하는데.. 아마 위 사진 처럼 약간의 덮개 같은게 있는데.. 거기까지는 아마 괜찮지 않을까.. 추측 중.. 뭐 괜찮겠지..

 

그리고.. 나머지도 다 조립해주면?!!

 

이렇게 조립이 끝난다!

 

솔직히.. 이번 조립은.. 너무 어려웠다.. 제일 양이 많은 것 같다.. (반대쪽은 어떻게 하지.. 복붙 하고 싶은데..)

뭐.. 어쨋든.. 가장 시간이 오래 걸리고.. 제일 어려운 다리 파트였던 것 같다.. 다리의 관절은 많다보니.. 내가 예전에 바이올로이드 조립을 했을 때도.. 이 많은 관절 때문에.. 제일 시간이 오래걸리기는 했었다..

 

아무튼.. 이번 것도 끝..!

반응형
반응형

이번엔 Lower Chest 쪽을 가상으로 조립해보는 것이다..!

이 부분이 현재 조립을 해보면서 글을 쓰고 있는데.. 제일 어려울 것 같아서이다..

현재 도데체 내가 왜 Darwin OP 2를 골랐던걸까.. 후회하게 되는 타이밍이다..

Dawrin OP 2의 경우 찾아보니 거의 정보가 나오지가 않는다.. 그래도 일단.. 어떻게든 조립해봐야 겠다.. 정 안되면.. 다시 OP 1으로 바꿔야할지도..

 

아무튼 이번에 조립할 부분은 이 파트다!

 

이번에는.. 조립 해보면서 글을 쓰고 있기 때문에.. 글이 이상할지도 모른다..!

아무튼 일단 먼저 왜 이게 어려운가를 설명해보자면..

 

Darwin OP 1은 정보가 많은데.. Darwin OP 2의 정보는 거의 없다..

일단 가장 중요한 메인 PC 사이즈와 파워 스위치의 사이즈 정보를 알아야 한다.. 근데 OP 1과 OP 2는 겉 모습은 거의 차이가 없지만 성능들이 업그레이드 되었기 때문에 장착된 PC나 보드들이 다르다..! 

그리고 메인 PC 같은 정보는 사이즈를 그나마 알 수 있는 반면에.. 파워 스위치, 스피커, 마이크 등 이런건 이름을 알려주지 않고 진짜로 그냥 파워 스위치, 스피커, 마이크 이런식으로만 적혀있기 때문에.. 찾기가 더 어려워진다..

 

아무튼 최대한 정보를 찾아보면.. 일단 Darwin OP 1 정보의 경우..

http://machinedesign.jp/robot/products/darwinop.html

 

グローバルロボット関連|有限会社杉浦機械設計事務所

DARwIn-OPは小型LinuxPCとHDカメラをはじめとした各種センサーを搭載し、演算、センシング能力をもった「歩くコンピュータ」です。Dennis Hong博士率いるバージニア工科大学RoMeLa (Robotics & Mechanisms

machinedesign.jp

https://www.innovativeelectronics.com/index.php?pg=ie_pdet&idp=362

 

Innovative Electronics

Product Name fit-PC2i Features CPU Intel Atom Z530 1.6GHz Memory 1GB DDR2-533 on-board Storage 4GB SSD storage miniSD socket Display & Graphics Intel GMA500 graphics acceleration DVI Digital output up to 1920x1200 through HDMI connector Audio Line-out, lin

www.innovativeelectronics.com

이런 사이트에서 정보를 얻을 수 있었다.

 

일단 Darwin OP 1에 사용된 PC는 Fit-PC2i 이고 컨트롤러는 CM-730이다.

이제 Darwin OP 2에 있는걸 찾아야 하는데.. 컨트롤러는 CM-740이 쓰인건 알고 있고.. 도데체 PC가 뭐가 사용되었는지 도무지 모르겠다..

 

홈페이지에 성능 차이는 나와있는데.. 어떤건지도 안나와있다..

 

내가 이걸 찾는 이유는..

5번 프레임에서 도데체 어느 곳에 Main PC를 끼우는지를 모르겠다.. 조립 설명서에는 Darwin OP 1으로 설명되어서.. 설명과는 다르다..

현재 내가 추측하기로는.. Flat 나사 끼우는 저 6개의 구멍에다가 끼우는 것 같다고는 생각되는데.. 아직 확실하지는 않다..

 

참고로.. 

이거는 Darwin OP 1의 5번 프레임이다. Flat 나사를 끼우는 구멍도 없다..

 

조금.. 망한 느낌이 들긴 한다..

 

일단 그래서 내가 추측하기로는.. Darwin OP 2의 Main PC는 Darwin OP 1 처럼 시중에 판매되는 제품을 쓴 것이 아닌.. 개발한 곳에서 주문제작을 하여 개발하지 않을까 싶다..

 

그래서.. 일단 그렇게 된다면.. 실제 사이즈를 구하지 못하니.. 대충 어림잡아서 만들어야 한다..

일단 그나마 알 수 있는 정보는 이것이다.. https://www.robotis.com/model/page.php?co_id=prd_op2 

 

로보티즈

자율주행로봇 전문기업, 서비스로봇 하드웨어 및 소프트웨어 솔루션 공급, ROBOTIS 집개미&일개미, DYNAMIXEL, 터틀봇3

www.robotis.com

이 사이트에서 얻은 것인데.. 저 사진이 메인 PC인 것 같다.

 

일단 눈으로 보이는 것은 정면에 2개 후면에 1개 나사가 보이고.. 나머지 나사들은 가려져있다..

그래도 알 수 있는건 직사각형이라는 것이고.. 각 4개의 나사를 사용하는걸로 추정이 된다..

그럼으로.. 아마도..

이곳이 PC를 장착하는 부분이 아닐까 싶다..

 

그러면 여기로 해서 스페이서 등을 먼저 끼운 후에 크기를 어림잡아서 보드 위치를 만들면 될 것 같다..

그리고 원래는 S6를 사용해서 고정하는 것이지만.. 이 부분에서는 Flat 나사를 사용하는 것 같다. 그럼으로 S10을 이용해서 해볼 것이다..! 어차피 둘다 길이는 4mm이다.

 

그렇게 하면.. 일단 이렇게 조립을 해볼 수 있다.. 그리고 저 나사 부분에 맞춰서 이번엔 메인 PC 부분을 어림잡아서 만들 것이다.

 

그 후

이렇게 스케치를 하고.. 2mm로 늘려서 만들어주면!

이렇게 조립할 수 있다..!

 

그러면 다음!

 

이번껀 파워 스위치 부분을 조립해볼 것이다. 원래 파워 스위치가 먼저 나와있긴 한데.. 메인보드가 중요해서 그걸 먼저 찾다보니.. 순서가 엇갈리긴 했지만.. 아무튼..

파워 스위치의 경우 9R 프레임을 이용한다고 한다.. 그래서 9R 프레임을 열어봤는데.. 어라?

분명 파일 이름은 9R 이라 되어있는데.. 모습이 전혀 다르다..

그래서 생각한게.. 설마.. 이것도 모양이 바뀌었나..? 하다가 예전에 대구 엑스코에 가서 봤던 Darwin OP 2가 생각난다.. 그 사진을 봤다.

음.. 여기에는 정상적으로.. 있다.. 그러면 설마 9L에 뭔가 있나..? 해서 봤는데..

 

진짜였다.. 음.. 왜 이름을 다르게 적어놓은거지.. 

아무튼 이것도 아까 했던 것과 비슷하게 스페이서 먼저 끼우고 프레임을 대충 어림잡아서 맞춰본다.. 파워 스위치의 규격이 제대로 나와있지 않기 때문에..

그렇게 해서.. 이렇게 만들었다..! 이 부분은 조금 나중에 완성했을 때 겉모습에서 보이는 부분이기 때문에.. 비슷하게 돌출 시켰다. 아무튼.. 저 판때기 부분도 2mm로 잡아서 하고 붙였다.

 

그리고 이제 5번 프레임과 모터를 붙일 차례다..

그런데 설명서에 이상한 점이 하나 있다..

나사를 끼울 때 너트를 끼우는 부분에 볼트로 고정시키는 장면이 나온다..

아마 이 방법이 가능할려면 5번 프레임의 모터 끼우는 저 부분에 나사선이 있거나 해야한다. 아니면 반대쪽에 너트를 끼운다거나.. 그런데 그런 장면이 없다..

아마도 잘못 된 방법으로 설명서를 만들었거나.. 5번 프레임에 나사선이 있거나.. 둘중 하나일 것 같다.. 아마 나사선이 있을 것 같다고 생각된다..

 

근데 나의 경우는 무조건 프레임들은 3D 프린터로 출력하기에 나사선을 넣을 수는 있으니.. 따로 출력 후 나사선을 넣거나 넣는다 하더라도 쉽게 부숴질 것이다.. (저건 철제라서 상관없겠지만..)

그래서 나는 이 부분을 그냥 너트 끼우는 곳에 너트 끼우고 반대편에서 나사를 끼우는 방법으로 했다.

이런식으로 했다. 나사 같은 경우 원래는 S17를 이용하지만.. S17의 경우 10mm 이다.. 약간 부족하다.. 그래서 S18를 새로 추가했다. Hex M2.5 * 12로 12mm 짜리를 추가해서 끼웠더니.. 완벽하게 딱 맞다..

그리고 나중에 진짜 조립해야할 때는 보드는 나중에 끼우고 저걸 먼저 끼워야 하긴 할 것 같다..

물론 이렇게 한다면 단점은 약간이라도 풀리거나 하면 거의 완전 분해 후에 끼워야 한다는 단점이 있지만.. 어쩔 수 없다.. 

아니면 인서트 너트를 끼우는 방법도 있긴 할텐데.. 저쪽에는 약할 것이다.. 암튼 그런 이유로.. 하기가 어렵다는 점..

그래서 저런 방식으로 맞췄다.

 

마찬가지로 여기서도 베어링 부분은 필요없기 때문에 모터에서 베어링 부분은 숨겼다..

 

그리고 이 부분이다.. 여기서부터.. 좀 망했다고 느꼈다..

왜냐하면.. 이전에서 말했던.. 프레임에 나사선이 있다고 했던게.. 진짜라는 것을..

일단 S14 구멍을 확인해보니.. 나사보다 약간 작다.. 즉.. 나사선이 있거나 아니면 끼우면서 강하게 조여서 나사선을 강제로 만들면서 끼운다던가.. 해야하는 것 같다..

 

그리고 보드를 고정시키는 부분과 겹쳐버려서 진짜로 겹쳤다..

뭐.. 어쩔 수 없다.. 이 부분은 나중에 프레임을 수정할 때 내가 사용할 보드 사이즈에 맞춰서 수정하면 되는 부분이니깐.. 딱히 상관은 없지만.. 조금 불편하다.. 암튼 원래 저기에는 너트를 끼우는건 아니긴 한데.. 프레임을 플라스틱으로 출력하는 경우 나사선을 만들기 어려우니.. 저런식으로 너트로 고정할 수 있도록 했다. (굉장히 불편해하는 중..)

 

그리고 이 부분도.. 마찬가지이다.. 일단 S10의 경우 Flat M2.5 * 4mm 나사이다.. 근데 저것도 프레임의 나사선에 끼우도록 되어있으므로 나사 길이가 맞지 않는다..

그래서 S19를 추가했다. S19 Flat M2.5 * 6mm로 .. 그래서 6mm 나사를 끼우니깐 완벽하게 맞았다.. 물론 반대편에 너트도 끼웠다. 

이걸 하다보니.. 생각난게.. 어차피 Darwin OP 1 처럼 그냥 CNC로 철을 잘라서 만들까 생각했는데.. 만약 그렇게 되면.. 조립은 쉽겠지만.. Darwin OP 2 용은 2D로 제공되지도 않고.. 무거우면 또 움직이질 않을테니.. 그냥 모델을 수정해서 3D 프린터로 출력하는 방안으로 밖에 할 수가 없을 듯 하긴 하다..

 

암튼 그렇게 해서

이 부분도 끼웠다. 

이전에 본게.. 너트 사용량이 적던데.. 설마.. 내가 생각하는 그런 일이 엄청 벌어지진 않겠지..? 라고 생각하는데.. 제발.. 정 안되면 인서트 너트라도 찾아야지 뭐..

 

암튼 모터 부분은 설명서에 적힌 것 처럼 끼우고..

이 부분을 조립해야하는데.. 이 부분 같은 경우 저 동그란건 내가 위에 올린 사진을 봤을 때는 그냥 손잡이로 돌려서 배터리 넣는 부분에서 배터리를 바꿀 수 있게 한 것 같다. 근데 어쨋든 저 동그란 나사 같은건 같이 포함되어있지는 않고.. 일반 프레임만 포함되어있는데.. 암튼 저걸 끼우면

이런식으로 된다..

 

이 부분은 처음 알았다.. 배터리를 쉽게 안정적이게 바꿀 수 있도록 고정한 것을.. 

 

암튼 그렇게 하면

Lower Chest 부분은 완성이 된다..!

 

그러면 암튼 이 부분은 끝!

짧게 쓸려 했는데.. 너무 기네..

반응형
반응형

이제부턴 가상으로 조립을 해볼 것이다..!

이걸 하는 이유는 MX 28T 모터를 AX 12A로 대체하기 전에 구조나 원리를 파악하며 어디에서 수정해야할지 알아야 하기 때문이다.

 

암튼 그런 이유로 일단 필요한 부품들을 확인한다..!

일단 이전 글에서 다운 받았던 파일에는 MX 28T 모터에 관련된 부품들은 없다. 프레임이나 스킨 뿐.. 

그리고 필요한 나사들이나 이런 것들도 없다..

 

그래서 그에 대한 것들을 일단 다운할 것이다..! 이게 조립하는 것 보다 제일 어려웠던 것 같다..

 

필요한 부품 3D 파일 다운로드

일단 조립 메뉴얼 PDF를 보면 이곳이 있다. 여기에 있는 전부는 따로 파일로 제공되지 않기 때문에 따로 파일을 찾아서 다운로드 해야한다. 그리고 나중에도 얘기하겠지만.. 이 설명서는 Darwin OP 1 설명서이다. 그래서 OP 2랑은 약간 다른 점이 있다.

암튼 필요한 파일 중에서 볼트, 너트 들을 https://www.mcmaster.com/ 여기나 구글에 검색해서 찾아보았다.

그렇게 해서 이렇게 필요한걸 다운로드 했다. 참고로 저기에 SU1, SU2, SU3는 아무리 찾아봐도 내가 원하는 규격이 없어서.. 그냥 만들기가 쉬운거라 Fusion 360으로 만들었다. 그리고 S1 저거는.. 무슨 나사인지 적혀있지 않고.. 작은 나사이다 보니.. 잘 없다.. 그래서 그냥 일단 Hex 나사로 다운로드 하기는 했다..

 

암튼 저것보다 더 중요한게 있는데.. 모터에 장착할 베어링과 혼 이다.. 기본적으로 Robotis에서 제공하는 MX 28T의 3D 파일에는 혼과 베어링이 없다.. 그래서 직접 추가해야한다.. 

그런데 이게 제일 찾기가 헷갈리고 어려웠다.. 적혀있지를 않아서..

일단 최대한 찾아보면..

https://emanual.robotis.com/docs/kr/dxl/mx/mx-28-2/?_gl=1*1dr79t5*_gcl_au*MTYwMzMyNTE3NC4xNzQzMzQ4OTcz#%ED%98%BC

 

ROBOTIS e-Manual

 

emanual.robotis.com

여기에 어떤 베어링과 혼이 사용되었는지 확인할 수 있다. 

 

https://www.robotis.com/shop/item.php?it_id=903-0164-000

 

HN07-N101 Set

RX-24F/28/MX-28 전용 기본 혼Horn)

www.robotis.com

 

https://www.robotis.com/shop/item.php?it_id=903-0165-000

 

HN07-I101 Set

RX/MX-28 전용 아이들러 베어링 세트

www.robotis.com

그리고 상품 페이지에서 그 제품들의 부품을 확인해보면 저렇게 어떤 부품들이 사용되었는지 알 수 있다.

 

그리고 그 파일들은 https://www.robotis.com/service/downloadpage.php?ca_id=7020

 

로보티즈

자율주행로봇 전문기업, 서비스로봇 하드웨어 및 소프트웨어 솔루션 공급, ROBOTIS 집개미&일개미, DYNAMIXEL, 터틀봇3

www.robotis.com

여기에서 찾을 수 있다. 베어링 쪽에도 다운로드 할 수 있는게 있으니.. 거기도 확인해야한다..

 

암튼 저 구성품들을 보고 필요한 파일들을 찾아서 다운로드 하면 된다. 추가적으로 BEARING MF106ZZ 파일은 찾을 수가 없는데.. 이건 그냥 웹페이지에서 다운로드 하면 된다..

 

그렇게 해서 다운로드 해보면 

이렇게 얻을 수 있다..!

 

그리고 Fusion에 모두 업로드 한다.. 그러면 준비 완료!

 

Upper Chest 가상 조립

일단 모터에 혼과 베어링 부터 장착한다.

이렇게 장착한다. 조립하는건 딱히 어렵지 않아서.. 대충 대충 넘어갈 것이다.

암튼 베어링과 혼 쪽에는 돌아가게 해야하는 부분은 있어서 그곳은 회전으로 돌아가게 했다.

 

그리고 이제 Upper Chest 부분을 조립한다..! 조립할 때는 전부 설명서와 똑같이 나사와 너트를 이용해서 조립을 하고 추가적으로 모델링이나 필요한 것들이 있을 때만 그거에 대한 것들을 설명할 것이다..!

 

암튼.. 설명서는!

이렇다.

 

굉장히 간단하다..

암튼 저것에 대한걸 전부 조립하게 되면.. 이렇게 나온다..!

보이는 것 처럼 나사와 너트들도 전부 장착했다. 장착할 때 설명서에는 그림으로만 나오는게 하나 있는데.. 3개의 모터에서는 모터의 베어링 쪽은 사용되지 않으므로 베어링 부분은 제거해야한다. 하지만 Fusion에선 이미 조립한걸 제거할려면 귀찮은걸 해야해서 그냥 모습만 안보이게로 바꿨다.

 

암튼 여기에서 따로 한 것은.. 서브 컨트롤러이다. Darwin OP 2에는 CM 740 이라는 컨트롤러를 사용하는데.. Darwin OP 1은 CM 730을 사용한다. CM 740과 CM 730의 차이는 성능 차이도 있지만 모양 차이도 있다.


CM 730

CM 740

 

이렇게 모양이 다르다. 그렇기에 설명서에 보면 

이렇게 1-2-2 그림에서 보드 끼우는 곳이 넓게 보이는 반면.. 실제로는 

좁다. 암튼 그 이유는 위에서 말한 것 처럼 보드의 크기가 달라서 그렇다.

 

그리고 추가적으로 센서나 보드나 이런 것들은 3D 파일이 없다..

그런데 나는 최대한 비슷하게 만드는걸 목표로 하기 때문에 그냥 대충 크기 맞춰서 만들었다.

이렇게..

 

그렇게 해서 이렇게 2mm로 해서 만들었다. 

 

그리고 안테나와 안테나 커넥터 들도 있는데.. 그거는 만들기가 어렵기도 하고 안쪽이라 잘 안보이기에 그냥 만들지는 않았다.

아무튼 그렇게 해서 Upper Chest 부분은 완성했다...!!

 

암튼.. 그렇게 해서 완성하면 이렇게 나온다..

 

물론 모터에 연결된 부품들도 같이 회전도 된다..!

 

암튼 그렇게 해서 끝!

반응형
반응형

나는 현재 대학교 휴학을 했기 때문에 해보고 싶은 프로젝트를 모두 해보기로 했다. 그러다 보니 한번에 여러개의 프로젝트를 하게 되었는데.. 그 때문에 과연 기간 내에 진짜로 제작할 수 있을지는 모르겠지만.. 일단 도전해볼려고 한다..!

 

일단 Darwin OP 2를 제작해보는 것인데.. 내가 Darwin OP 1을 처음 본 것이 2012년 여수 엑스포에서 로봇관의 축구하는 로봇에서 처음으로 봤었다. 아마 7살 이였을 텐데.. 아직도 기억에 남는다.. (근데 당시에 왜 Nao 로봇 있었으면서 안보여준거지..)

Darwin OP는 어릴 때 부터 굉장히 가지고 싶던 로봇이다.. 예전에 로봇을 어딘가 판매 사이트에서 판매하는걸 본적도 있는데.. 당시에 내가 본 가격은 2000만원이였다.. (초등학교 저학년 때 본 것..) 그래서 구매하지는 못했지만.. 언젠가 만들어보거나 구매해보기로 마음을 먹었었다.. 나중에 부자가 된다면.. 

 

그렇지만! 현재는 구매는 못해도 제작은 할 수 있을 것 같다..! 아마 100만원 이내로.. 가능하지 않을까 라는 생각.. 아무튼 그때 본 Darwin OP 1 (축구 로봇)이 아닌 Darwin OP 2를 제작해볼려 한다..!

 

자료 조사

일단 내가 아는 정보로는 Darwin OP 1과 Darwin OP 2는 하드웨어 정도만 바뀌고 외형이나 프레임은 거의 차이가 없는 것으로 알고 있다.. (그런데 도데체 왜 OP 3는 저렇게 생긴걸까.. 음..)

 

그리고 모터는 Darwin OP 1이 MX 28, Darwin OP 2가 MX 28T로 각각 20개씩 쓰이는 것으로 알고 있다..!

가격은 대충 모터가 개당 26만원.. 그래서 이 프로젝트에는 사용하지 못한다..! 적어도 모터만 500만원 이상이 들게 된다..!

그렇기 때문에.. 나는 예전에 바이올로이드를 구매하면서 들어있던 AX 12A 모터를 이용할 것이다..! 참고로 AX 12A 모터는 총 18개 까지만 들어있어서 2개는 추가로 사야한다..

 

그런데 MX 28T를 그대로 AX 12A로 바로 변경할 수는 없다.. 왜냐하면..

이건 Robotis 다운로드 센터에 있는 모터 3D 파일을 다운 받아서 3D 프린터로 출력해본 것인데..

눈으로 봐도 전혀 크기가 안맞는 것을 볼 수 있다.. 세로와 높이는 비슷한데.. 가로 크기가 좀 다르고 나사를 끼우는 부분도 전혀 다르게 생겼다.

그래서 실제로 만들 때는 아마도 프레임을 전체적으로 바꿔야 할 것이다..

 

물론 AX 12A에 추가로 뭔가를 장착해서 MX 28T 모양에 맞게 바꿀 수 있을까? 라는 생각도 하긴 했었다. 그런데 비교를 해보니 AX 12A의 커버를 뜯어서 수정하지 않는 이상 거의 불가능할 것 같다고 판단되었다.. 가로 크기가 안맞아서 나사가 들어가는 곳이 애매해진다.. 그리고 커버에 추가로 뭔가를 장착해서 한다면 약간 부실하기도 할 것이다..

 

그리고 제일 신경 쓰이는게 있는데.. 왜 모터가 비싼 MX 28T 일까 이다.. 성능을 보니 아마도 토크, 해상도 등 지원하는 것들이 더 좋기 때문에 그럴 것이라고 생각하기는 하는데.. 토크 문제라면.. 이 프로젝트를 하는 의미가 없어지긴 한다.. 왜냐하면 만들었는데 힘이 부족해서 움직이기가 힘들어져서 작동을 잘 안한다던가 할 수도 있으니깐.. 

 

그래도 다행인 것이 있다. 내가 알기론 Darwin OP 2의 프레임은 모두 철제로 알고 있는데 나는 3D 프린터로 출력할꺼라서 가볍다는 점이다!! 게다가 바이올로이드가 프레임이 플라스틱인데 잘 움직이니깐.. 아마도 진짜로 가능은 할 것 같다고 생각된다..!

 

그리고 한가지 최악인 점은.. 모터, 프레임, 프레임 스킨 등은 아직도 판매하거나 만들 수 있으니 상관이 없지만.. 더 이상 판매하지 않는건 하드웨어 들이다.. CM 740이나 다른 나머지 하드웨어들이 더 이상 판매하지를 않는다.. 뭐 그래도 이거라면 상관은 없을 듯 하다.. 어차피 프레임을 바꿀꺼니깐.. 다른 하드웨어를 넣으면 되서.. 아마도 괜찮지 않을까 싶다..!

 

암튼 우선 Darwin OP는 모든게 오픈소스로 되어있다. OP도 오픈 플랫폼이다.. 

데니스 홍이 개발한 후에 오픈소스로 풀어버린 것.. 굉장하긴 하다..

 

필요한 파일 다운로드

암튼 그렇기 때문에 Darwin OP에 대한 모든 것을 다운해야한다..! 모델 파일, 소프트웨어 등등 전부 찾아야 한다..

 

일단 우선 Darwin OP 사이트를 찾다보면.. https://darwinop.sourceforge.net/

 

https://darwinop.sourceforge.net/

 

darwinop.sourceforge.net

이런 사이트를 찾을 수 있다. 그냥 소개하는 홈페이지고 진짜는 안에 있다.

 

https://sourceforge.net/projects/darwinop/

 

ROBOTIS-OP (a.k.a. DARWIN-OP) project

Download ROBOTIS-OP (a.k.a. DARWIN-OP) project for free. ROBOTIS-OP (a.k.a. DARWIN-OP) project. For more information visit http://support.robotis.com/

sourceforge.net

이것이 Darwin OP의 대부분 자료를 다운받을 수 있는 곳이다. 그런데 한가지 문제가 있다.

이게 신기한게 내가 알기론 Darwin OP가 2010~2012년도 사이에 개발된 로봇으로 알고 있고 OP 3도 최근에 개발했어도.. 5년은 무조건 넘었는데.. 아직도 업데이트가 되고 있다.. 왜 업데이트가 되는진 도무지 모르겠다..

 

그런데.. 업데이트 되어도.. 딱히 쓸모있는 파일은 없다..

왜냐하면.. 저 링크의 다운로드를 받아도.. 최신 파일만 다운받게 되는데.. 그건 OP 3이기도 하고 들어가도 딱히 별거 없다..

그래서 예전에는 https://sourceforge.net/projects/darwinop/files/ 여기 링크에서 올라와있는 파일을 모두 수동으로 다운로드 하거나 https://sourceforge.net/projects/darwinop/rss?path=/ 여기 있는걸 자동으로 하루를 걸려 다운로드를 하게 했는데.. 그제서야 필요한 파일들이 다운로드가 되었다..

이렇게나 많이 다운로드를 했었다.. 대부분 중복 파일이긴 한데.. 뭐.. 버전 별로도 얻을 수 있어서 좋긴 하다.. 

 

근데 저렇게 힘들게 다운로드를 해놓고.. 나중에 구글을 검색하다가 좋은걸 발견했다.

https://github.com/ROBOTIS-GIT/ROBOTIS-OP-Series-Data

 

GitHub - ROBOTIS-GIT/ROBOTIS-OP-Series-Data: ROBOTIS-OP series datas

ROBOTIS-OP series datas. Contribute to ROBOTIS-GIT/ROBOTIS-OP-Series-Data development by creating an account on GitHub.

github.com

이것이다.. 내가 그동안 가지고 싶던 파일들이.. 여기 전부 있었다.. 

물론 https://github.com/ROBOTIS-GIT/ROBOTIS-OP2-Common https://github.com/ROBOTIS-GIT/ROBOTIS-OP2

다른 깃헙들도 있다. 저기는 아마도 Darwin OP에 사용되는 소프트웨어나 이런 것 같은데.. 뭐 지금은 중요하지 않다.. 일단 로봇 부터 모델링 하고 제작해야하니..!!

 

암튼 저 위 깃허브를 들어가보면 OP, OP2, OP3에 대한 파일들이 전부 있는데.. 나는 OP2만 필요하니 OP2로 들어가보면..

이렇게 있다. 여기에서 제일 필요한건 Hardware 폴더! 들어가보면 Electronics 폴더와 Mechanics 폴더가 있는데 내가 필요한건 Mechanics 폴더이다..! Electronics 폴더는 로봇의 컴퓨터나 센서 정보들이 들어가있는거..

암튼.. 저기에 들어가보면..!

드디어 필요했던 파일들을 볼 수 있다..!

여기에서 내가 진짜로 필요한건 "ROBOTIS OP2 Part Files.zip", "ROBOTIS-OP2_Skin_STP.zip", "DARwIn OP Assembly Manual.pdf" 정도 이다..

 

암튼 이렇게 자료 조사는 끝났다..!

 

이제는 가상으로 Darwin OP 2를 제작해보고.. 어떤 원리인지 등등을 확인한 후 AX 12A 전용 프레임으로 변경해보는 것이 이 프로젝트의 최종 목표다..!! (아마도 군대 가기 전까지 끝내는건 무리일 가능성이 제일 높다..)

 

특이한 점

그리고 한가지 특이한 점도 있다..

파일을 둘러보다가 "DARwIn OP Part Files.zip" 파일이 있는데.. 이걸 압축 풀어보면..

이렇게 2개의 폴더가 있다. 2D와 3D가 있다는 것이다.. 3D는 이해가 가는데.. 2D는 왜일까 싶어서 봤더니..

2D로 출력 가능하도록 만들어 뒀다는 것이다..

이걸 보자마자 여러 생각이 들었다. 데니스 홍이 Darwin OP를 개발하고 여러 연구소에서 요청이 들어와서 오픈 소스로 풀었다고 알고 있었는데.. 그것 때문에 2D 버전으로도 조립 가능하게 만든걸까? 아니면 3D 제조 비용이 비싸서 2D로도 제작할 수 있도록 만든 것인가? 등 여러 생각이 들었다.. 

 

아무튼.. 진짜 대단하다고 느꼈다. 나 같은 경우만 해도.. 예전부터 이건 내가 힘들게 습득했고 내가 알아낸거니깐 다른 사람들한테는 절대 안알려줄꺼야! 라고 생각했던 생각이 난다.. (이미 다른 곳에서 다 개발 됬을텐데.. 그런 생각을 한게 지금도 후회되기도 한다..)

암튼.. 힘들게 개발한걸 오픈소스로 풀었다는 것도 대단하지만.. 여기에서 제작하는 사람들을 위한 배려까지.. 이건 완전 나한테는 넘사벽인 것 같다.. (미래에는 나도 그럴 수 있을까..)

 

참고로 접히는 부분에는 규격에 맞게 틈이 정확하게 있고.. 심지어.. "DARwIn OP Fabrication Manual.pdf" 이 PDF 파일에는..

어떤 방법으로 휘어야 하는지.. 어떤 도구를 써야하는지.. 어떻게 부품을 만들어야 하는지.. 어떻게 조립해야하는지.. 2D 만을 위한 상세한 방법들이 나와있다.. 

 

어릴 때는 단순히 만들거나 사고 싶다라는 단순한 생각만 들었는데.. 이젠 찾아보면 찾아볼 수록.. 이 로봇을 개발하고 오픈소스로 푼 것이 얼마나 힘들고 얼마나 대단한지.. 이제야 알게 되었다.. 

나도 언젠가.. 이런 로봇 개발자가 될 수 있을까.. 흐음..

 

암튼..! 이제 자료조사는 전부 끝났으니.. 다음 부터는 가상으로 조립해볼 것이다..!

그 이후에는 AX 12A 모터로 대체하는 작업을 할 것인데.. 만약 아직도 내 기술이 부족해서 못할 것 같다고 판단이 되면.. 그냥 3D 프린터로 출력하게 목각 인형으로라도 가지고 놀아야 겠다..!!

 

아 마지막으로.. 내가 AX 12A로 만들고 싶어서 예전에 엄청 검색을 해봤는데.. MX 28T를 다른 AX 12A나 이런걸로 대체해서 만들 순 없는지에 대한 글은 몇개 보았는데.. 진짜로 AX 12A로 만든 글은 어디에서도 보지를 못했다.. 그나마 만들었다는 글은 3D 프린터로 프레임을 출력해서 저렴하게 만들었다는 글은 본적이 있는데.. 그래도 MX 28 모터를 사용했기 때문에.. 기본 500만원 이상은 나간다.. 

뭐 다른거라면 Poppy 로봇 커뮤니티에서 본걸로는 다른 회사의 서보모터에 무언가 장치를 부착해서 대체로 사용할 수 있도록 하는 글도 있던데.. 그 모터도 애초에 비싸다..!!

 

그래서 결국 내가 가지고 있는 AX 12A로 언젠가는 만들어보자 라고 생각했던 것..

암튼 그렇다.

 

끝!

반응형
반응형

Ridge Racer PSP 버전의 내부 게임 영상을 MP4로 변환할려 한다.

 

PMF 폴더 확인

일단 먼저.. 영상 파일은 .pmf 파일로 되어있는데, 이 파일들이 있는 폴더를 찾아야 한다.

우선 PSP 게임 파일인 .iso 파일을 압축 해제 한다. (그냥 반디집 같은거 쓰면 된다.)

 

그리고 확인해보면 아래 경로에서 .pmf 파일을 확인할 수 있다.

"Ridge racer2 (J)\PSP_GAME\USRDIR\Data\Movie"

 

 

프로그램으로 영상, 음악 파일 분리

그리고 이제 pmf 파일에서 영상과 음악을 추출해야한다. (나중에 영상과 음악을 합쳐서 mp4로 만들게 됨)

 

그렇기 때문에 아래 프로그램을 실행해야한다.

https://sourceforge.net/projects/vgmtoolbox/

 

VGMToolbox

Download VGMToolbox for free. VGMToolbox is a C# based tool to assist VGM collectors and dumpers. It includes tools to extract, optimize, and build VGM formats as well as auditing and exploration utilities.

sourceforge.net

 

다운로드 하고 실행하게 되면..

이런 화면이 뜰 텐데..

여기에서 "VGMToolbox > Misc. Tools > Stream Tools > Video Demultiplexer"로 진입한다.

 

그러면 이런 화면이 뜰 것이다.

 

여기에서 저 중앙에 OptionsFormat이 있는데.. 그걸 "PMF (PSP Movie Format)"으로 설정한다.

그러면 이런식으로 설정이 된다.

 

이제 "Drop Files Here"에 아까 폴더에 있는 .pmf 파일을 저기에 끌어다 놓는다.

 

그런 후에는 자동으로 아까 그 Movie 폴더에 영상 파일 이름으로 .oma.264파일이 생길 것이다.

이런식으로..

 

영상, 음악 파일을 MP4로 변환

이제 MP4로 변환할 차례이다.

우선 FFMpeg를 설치해야한다.

https://www.ffmpeg.org/download.html

 

Download FFmpeg

If you find FFmpeg useful, you are welcome to contribute by donating. More downloading options Git Repositories Since FFmpeg is developed with Git, multiple repositories from developers and groups of developers are available. Release Verification All FFmpe

www.ffmpeg.org

여기에 가서 다운받고 설치하면 된다.


그 후에 Movie 폴더에서 cmd 창 열어서 아래 명령어를 입력해주면 된다.

ffmpeg -i "introduction_000001E0.264" -i "introduction_000001BD.oma" "introduction.mp4"

물론 각 파일은 이름이 다를테니 맞춰서 넣어야 한다.

 

결과

그렇게 해서 추출된 파일을 보면?

굉장히 잘된다.

 

끝!

반응형
반응형

서론

2025년 2월 27일 Sesame AI (참깨 AI?)에서 굉장히 현실적인 목소리의 음성 대화 모델을 출시했다고 했다.

 

Demo 도 출시했었는데, 실제로 써보니깐 퀄리티가 엄청나게 좋았었다. 실시간 대화는 기본이고 ChatGPT의 초기 보이스 모드 처럼 대화하면서 웃는다거나 울거나 노래를 불르는 진짜 사람과 대화하는 것 같은 모델이 나왔었다. (다만 말이 너무 많은..)

 

다만 영어 모델만 지원하고 있었어서 내가 직접 사용하기에는 어려웠고 영어를 제일 잘하는 친구에게 시켜보았었는데.. 굉장히 대화를 잘 하고 있었고.. 대화 중에 웃거나 한숨을 쉬거나 여러 특이한 장면들도 볼 수 있었다.

대화가 끝난 후 물어보니 약간 대화의 흐름을 잘 파악하지 못하는 것 같은 느낌은 있었지만 진짜 사람 같고 자연스러운 대화 같았다고 했었다.

일본어나 한국어를 시켜볼 때는 약간 하기 싫어하는 느낌으로 끊어서 "お、は、よ、う、ご、ざ、い、ま、す” 같은 느낌으로 끊어서 한자리씩 천천히 말하기도 했었다.

참고로 말이 엄청 빠르고 말이 많기 때문에 영어를 원어민 처럼 잘하는게 아니라면 AI도 이해를 잘 못하고 자신도 이해를 못하는 것을 경험할 수 있을 것이다;;

 

실제로 대화해보실 분은.. 여기 링크로! https://www.sesame.com/research/crossing_the_uncanny_valley_of_voice#demo

 

Crossing the uncanny valley of conversational voice

At Sesame, our goal is to achieve “voice presence”—the magical quality that makes spoken interactions feel real, understood, and valued.

www.sesame.com

다만 대화하는데 통화 품질 검토를 위해 녹음한다고는 한다. (학습에는 사용되지 않는다고 하지만.. 그건 잘 모르겠다.)

 

https://www.sesame.com/research/crossing_the_uncanny_valley_of_voice

 

Crossing the uncanny valley of conversational voice

At Sesame, our goal is to achieve “voice presence”—the magical quality that makes spoken interactions feel real, understood, and valued.

www.sesame.com

여기에서 설명하는 것으로는 앞으로 언어 지원을 20개 이상 추가한다고 한다. 아마도 그 중에는 한국어도 포함 되어있을꺼라 생각된다..

그리고 모델의 크기는 굉장히 작은

  • Tiny: 1B backbone, 100M decoder
  • Small: 3B backbone, 250M decoder
  • Medium: 8B backbone, 300M decoder

이 정도의 모델 사이즈를 가지고 출시된다고 한다.

그리고 라이센스가 Apache-2.0 license 라이센스 이기 때문에, 상업적으로 사용하거나 학습하는 것에 문제는 없는 것 같다. 다만 사기나 이런 곳에는 사용하지 않는 것이 좋다고 적혀있다. github 아래에.. (당연한거지만)

 

본론

암튼 이 모델이 출시되기를 엄청 기다렸다..!!

https://x.com/_apkumar/status/1895492615220707723

위 글을 보면 출시가 2025년 3월 1일 기준으로 1 ~ 2주 안에 출시된다고 하고.. 현재 글을 쓰는 시점으로 20시간 전에 출시를 했다..! (현재 시간은 2025년 3월 15일 1시 40분)

 

 

암튼 이제 설치부터 해보는걸로!

 

일단 우선 Github 링크이다.

https://github.com/SesameAILabs/csm

 

GitHub - SesameAILabs/csm: A Conversational Speech Generation Model

A Conversational Speech Generation Model. Contribute to SesameAILabs/csm development by creating an account on GitHub.

github.com

GIthub 링크에도 설치 방법이 잘 나와있다. 그렇기 때문에 나는 2가지 방법으로 해볼 것이다. 처음은 Windows 두번째는 WSL로

 

HuggingFace 모델 권한 요청

일단 먼저 HuggingFace에 모델 사용 권한 허락 부터 받아야 한다.. 반드시 이걸 먼저 해준 후 진행해야한다.

https://huggingface.co/meta-llama/Llama-3.2-1B

https://huggingface.co/sesame/csm-1b

 

sesame/csm-1b · Hugging Face

This model is not currently available via any of the supported Inference Providers. The model cannot be deployed to the HF Inference API: The model has no library tag.

huggingface.co

CSM-1B 모델의 경우 그냥 사이트 가서

아래의 Agree and access repository를 눌르면 바로 사용할 수 있도록 권한을 얻을 수 있다.

 

다만 Llama의 경우는 좀 어렵다.

이렇게 떠 있을 텐데

Expand to review and access라 나오는걸 눌르면 그 아래에

이렇게 입력하는 창이 나오는데 전부 제대로 입력해야한다. 그 후 메타에서 승인해줄 때 까지 기다려야 한다. 대충 1시간 이내로 요청을 허락해준다.

다만 귀찮다고 대충 쓰면 안된다. 제대로 써야만 허락을 해준다.

(며칠전에.. 친구가 귀찮다고 대충 쓰고 영원히 그 계정에선 요청 권한이 사라진..)

 

Windows에서 설치 방법

암튼 먼저 Windows 부터!

 

Windows 같은 경우 제대로 지원하지는 않기에 조금 방법이 까다롭고 굳이이긴 하다.. WSL로 설치하는걸 가장 추천..

일단 Github에 설치하는 방법이 있지만 그걸 따르기는 좀 애매하다. Linux에서 설치하는 방법이기 때문에..

 

암튼 먼저 가상환경 부터 만들자! (Python 버전의 경우 Github에 나와있다.)

conda create -n csm python=3.10 -y

 

그 후 가상환경을 활성화 시킨다!

conda activate csm

 

그리고 csm github 레포를 다운한다. (아래 설치에선 requirements.txt를 사용하여 설치는 안하지만 다른 파일들을 사용하기에 미리 cd로 접근한 것이다.)

git clone https://github.com/SesameAILabs/csm.git
cd csm

 

그 후 필요한 라이브러리를 설치해야한다.

pip install tokenizers==0.21.0 transformers==4.49.0 huggingface_hub==0.28.1 moshi==0.2.2 torchtune==0.5.0 torchao==0.9.0 bitsandbytes==0.45.3 triton-windows==triton-windows==3.2.0.post13 silentcipher@git+https://github.com/SesameAILabs/silentcipher@master

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

Windows의 경우 지원안하는 것이 좀 있기에 따로 설치해줘야 하는것이 있다. 그리고 silentcipher 이 라이브러리를 따로 설치하는데.. 이 라이브러리에 가보면 torch를 2.4.0으로 설치하게 되고.. 이 CSM Github에서도 2.4.0을 설치한다. 그래서 깔꺼 전부 깔고 난 후에 torch를 새로 설치하는 것이다. 아마도 2.x.x 버전이면 다 될 것 같다.

 

암튼 이렇게 하면 바로 설치가 끝난다..!

 

WSL에서 설치 방법

일단 WSL에서 설치하기 전에 Anaconda와 Cuda, Cudnn을 설치한다. 아래 링크에 가서 따라서 설치하면 된다.

https://www.anaconda.com/download/success

https://developer.nvidia.com/cuda-downloads (https://docs.nvidia.com/cuda/wsl-user-guide/index.html)

https://developer.nvidia.com/cudnn-downloads

다 설치를 한 후에 아래 방법을 하면 된다. 좀 더 간단하다..!

 

암튼 먼저 가상환경 부터 만들자! (Python 버전의 경우 Github에 나와있다.)

conda create -n csm python=3.10 -y

그 후 가상환경을 활성화 시킨다!

conda activate csm

그리고 csm github 레포를 다운한다. 그 후 csm 폴더로 접근한다. (이전 Windows와 다르게 csm 폴더에 있는 requirements.txt를 사용하여 다운하기 때문에 폴더 접근이 필요하다.)

git clone https://github.com/SesameAILabs/csm.git
cd csm

그 후 필요한 라이브러리를 설치해야한다.

pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

그리고 나는 torch는 따로 설치해줬다. 2.4.0으로 써도 되긴 하지만, 좀 찝찝해서 2.6.0으로 추가 설치했다.

암튼 이러면 WSL도 설치는 다 끝난다..

 

이제부턴 코드를 실행해볼 것이다! 다만 그 전에 HuggingFace에서 토큰을 발급받아야 해서 그것부터 해봐야 한다.

 

HuggingFace Token 발급

여기에서 필요한 2개의 llama 모델과 csm 모델을 다운받기 위해선 권한이 필요하기에 그 권한을 받은 계정으로 로그인을 해야한다. 로그인 방법은 Token을 발급해서 코드에서 쓸 수 있도록 하면 되는데 발급 방법은 간단하다.

 

https://huggingface.co/settings/tokens

 

Hugging Face – The AI community building the future.

 

huggingface.co

여기 링크로 접속을 한다.

그 후에

오른쪽 상단에 Create new token이라는 표시가 있을 것이다. 그걸 누른다.

 

그러면 다른 창으로 가지는데

이런 창이 보일 것이다. 이거는 딱히 필요없고.. Fine grained 바로 오른쪽에 Read 라는 버튼이 있다. 그걸 눌르면 된다.

 

그러면 이렇게 Token name 인 토큰 이름 적는게 나오는데 그냥 아무 이름 적으면 된다. 나는 간단히 하기 위해 그냥 "asd"로 입력했다. 그 후 아래에 Create token을 누른다.

 

그 후에는 토큰이 바로 나오는데, 알 수 없는 영어들이다. 그냥 그 오른쪽에 있는 Copy 버튼을 눌르면 토큰이 복사된다. 그렇게 가지고 있으면 된다. 만약에 까먹었으면 저 위에 링크 다시 가서 만들었던 토큰을 복사하면 된다.

 

이제 다 됬으니 바로 코드를 실행해보는걸로..!

 

코드 실행

코드 같은 경우 github에 적혀있지만.. 간단하게만 적어둬서 실행할려면 좀 python을 알아야 한다.

근데 뭐 그냥 아래 코드 복사하면 된다.

from huggingface_hub import hf_hub_download
from generator import load_csm_1b
import torchaudio
import os
import time

os.environ["HUGGING_FACE_HUB_TOKEN"] = "위에서 얻은 Token 그대로 이 문장 지우고 붙여넣기"

print("Model Loading...")
start_time = time.time()
model_path = hf_hub_download(repo_id="sesame/csm-1b", filename="ckpt.pt")
generator = load_csm_1b(model_path, "cuda")
print(f"Model Loading Complete: {time.time() - start_time:.2f}s")

print("Audio Generation Start...")
start_time = time.time()
audio = generator.generate(
    text="Hello from Sesame.",
    speaker=0,
    context=[],
    max_audio_length_ms=30_000,
)
print(f"Audio Generation Complete: {time.time() - start_time:.2f}s")

print("Audio Saving...")
start_time = time.time()
torchaudio.save("audio.wav", audio.unsqueeze(0).cpu(), generator.sample_rate)
print(f"Audio Saving Complete: {time.time() - start_time:.2f}s")

 

좀 더 쉽게 알 수 있게 시간도 측정할 수 있도록 추가했다.

그리고 출력하는건 한국어도 할 수 있지만.. 폼이 안나기에 영어로..

 

일단 우선 알아야 할 것이 있다.

이 코드는 반드시 아까 다운로드한 csm 레포 안에다가 파일을 생성하고 거기에 붙여서 실행해야한다.

이유는 이용해야하는 파일이 그 폴더에 있기 때문..

 

그리고 코드에 보면

audio = generator.generate(
    text="Hello from Sesame.",
    speaker=0,
    context=[],
    max_audio_length_ms=30_000,
)

이 부분이 제일 중요하다. 

text는 말 그대로 그냥 음성으로 바꿀 텍스트이고

speaker은 아마 말할 화자가 누구인가 일 텐데.. 이건 이후 다른 코드에서 쓰인다. 일단 위 코드는 간단하게 1명만 말하는 코드이기에 0으로 설정하면 된다.

context도 이후 다른 코드에서 쓰인다. 이것도 누구 화자인지에 대한 것을 설정할 때 쓰인다.

max_audio_length_ms 이게 가장 중요하다. 몇초를 만들게 할지이다. 내가 설정해놓은건 30초인데 그냥 앞에 2자리 숫자만 바꿔서 숫자를 늘리거나 줄이면 된다.

나는 문장도 길게 입력할 것이기에 적당히 늘려놓았다. (어차피 AI가 알아서 다 말하면 끊어버리기 때문에 그냥 길게 놓아도 상관은 없다.)

 

그리고 아까 복사했던 HuggingFace Token은 입력하라는 곳에 그대로 입력하면 된다.

그 후에 바로 실행해보면 된다..!

 

참고로 GPU는 6GB 이상은 필요하다. 그냥 적당히 8GB 이상은 되게 해야한다.

만약 그래픽카드가 부족하거나 없다면.. 그냥 CPU도 가능은 할 것이다. torch를 cpu 버전으로 깔았다면

 

암튼 실행!

/home/cheongpark/anaconda3/envs/csm/lib/python3.10/site-packages/pydub/utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
  warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Model Loading...
ckpt path or config path does not exist! Downloading the model from the Hugging Face Hub...
Fetching 13 files: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 13/13 [00:00<00:00, 198276.19it/s]
Model Loading Complete: 12.54s
Audio Generation Start...
Audio Generation Complete: 4.94s
Audio Saving...
Audio Saving Complete: 0.01s

실행해보면 이렇게 영어가 이상하게 나오면서 정상적으로 실행이 된다..! 물론 이 전에 모델을 한번 다운 받고 실행하게 된다. 모델은 대충 6GB이다.. 만약 모델 다운 받을 때 다운 안되면 Token 제대로 발급 안했거나 Read로 발급 안했을 때 발생한다. 아니면 라이브러리 잘 못 깔았던지..

 

그리고 소리를 들어보면..

이렇게 잘 된다..!

 

그리고 목소리의 경우 실행할 때 마다 바뀐다.. 저건 뭔가 빵 먹으면서 말하는 것 같은데..

똑같은걸 다시 실행하면 이렇게 된다.

 

테스트 및 Windows와 WSL  속도 비교

한번 Windows와 WSL의 속도 차이를 비교해볼 것이다.

 

우선 내 컴퓨터 사양을 말하자면..

CPU : AMD 5900X

RAM : Samsung DDR4 32GB 3200

GPU : MSI RTX 3080 TI 

이다.

 

어차피 코드하고 GPU 이런거는 다 같기 때문에 소리는 거의 차이 없을 것이고.. 그냥 단순히 실행 속도를 비교한다면..

Windows

Model Loading...
Model Loading Complete: 16.23s
Audio Generation Start...
Audio Generation Complete: 7.19s
Audio Saving...
Audio Saving Complete: 0.00s
WSL

Model Loading...
Model Loading Complete: 13.42s
Audio Generation Start...
Audio Generation Complete: 4.84s
Audio Saving...
Audio Saving Complete: 0.01s

대충 이렇다. Windows가 살짝 더 느리다..

 

그리고 이번에는.. 아까 설정했던 text에 따로 ChatGPT 한테 말해서 생성한 문장을 넣고 max_audio_length_ms를 60_000으로 설정해서 실행해볼 것이다.

 

문장의 경우 아래 문장을 사용했다.

Hi, I’m Robi!

Nice to meet you!  
I’m Robi, a friendly robot designed to make life more fun and interactive.  

I can walk, talk, dance,  
and even understand your feelings!  
I respond to your voice and can have simple conversations with you.  

I’m made up of over 70 parts,  
and I was built step-by-step using a special magazine series.  
My design allows me to express emotions  
through my eyes and gestures,  
making me feel more lifelike.  

I’m powered by a sophisticated control board and motors  
that help me move smoothly.  
My speech recognition lets me understand commands,  
and I can even learn new things over time.  

I’m always ready to chat, play,  
and keep you company.  
Let’s have fun together!

참고로 문장 넣을 때는 "문장" 이렇게 쌍따옴표 한개로 하면 한줄로만 작성할 수가 있고..

'''문장''' 이렇게 따옴표를 3개씩 해두면 여러 줄에 걸쳐서 입력할 수 있다. 여러줄에 걸쳐서 입력하는게 좋긴 하다.

 

암튼 실행해보면!

Windows (파일 크기 : 4.15MB)

WSL (파일 크기 : 3.7MB)

이렇게 출력된다.

 

나는 추가로 여기에는 Seed를 설정을 따로 할 순 없지만.. 토치나 이런거는 가능하기에 그건 Seed를 설정했다. 그래서 음성은 그나마 비슷하나.. 다른 곳에선 Seed 영향을 안받는 것이 있을 것이기 때문에.. 위 오디오 처럼 약간만 비슷하다.

그 시드 설정을 안하면 아예 똑같은 느낌도 아니긴 하다..

암튼.. 생성이 잘 못 되었는지.. 음성이 조금 깨져서.. 별로긴 하다..

 

이것도 속도 비교를 해보면..

Windows

Model Loading...
Model Loading Complete: 22.65s
Audio Generation Start...
Audio Generation Complete: 149.14s
Audio Saving...
Audio Saving Complete: 0.04s
WSL

Model Loading...
Model Loading Complete: 15.53s
Audio Generation Start...
Audio Generation Complete: 115.58s
Audio Saving...
Audio Saving Complete: 0.01s

이렇게 확실하게 차이가 나는 것 같지만.. 파일 크기를 보면 다르기에.. WSL이나 Windows나 WSL이 좀 더 속도가 빠르긴 하지만 거의 비슷하다는 것을 알 수 있다. 30초 정도의 차이는 파일 크기에 비례하는걸로.. 생각하는걸로..

 

이것 외에 추가로 테스트 해보면 똑같은 문장을 생성을 잘 해본게 있는데..

 

이건 깔끔하게 잘 되었다..!

 

그리고 2번째 테스트!

2번째 코드

이 코드는 첨부만 하고 딱히 실행은 안해볼 것이다. 실행을 해보긴 했지만.. 좋긴 하나 실행하는 것에 어렵기도 하고.. 글 쓸 시간도 부족해서..

from huggingface_hub import hf_hub_download
from generator import load_csm_1b
from dataclasses import dataclass
import torch
import torchaudio
import os

@dataclass
class Segment:
    text: str
    speaker: int
    audio: torch.Tensor

os.environ["HUGGING_FACE_HUB_TOKEN"] = "위에서 얻은 Token 그대로 이 문장 지우고 붙여넣기"

model_path = hf_hub_download(repo_id="sesame/csm-1b", filename="ckpt.pt")
generator = load_csm_1b(model_path, "cuda")

speakers = [0, 1, 0, 0]
transcripts = [
    "Hey how are you doing.",
    "Pretty good, pretty good.",
    "I'm great.",
    "So happy to be speaking to you.",
]
audio_paths = [
    "utterance_0.wav",
    "utterance_1.wav",
    "utterance_2.wav",
    "utterance_3.wav",
]

def load_audio(audio_path):
    audio_tensor, sample_rate = torchaudio.load(audio_path)
    audio_tensor = torchaudio.functional.resample(
        audio_tensor.squeeze(0), orig_freq=sample_rate, new_freq=generator.sample_rate
    )
    return audio_tensor

segments = [
    Segment(text=transcript, speaker=speaker, audio=load_audio(audio_path))
    for transcript, speaker, audio_path in zip(transcripts, speakers, audio_paths)
]
audio = generator.generate(
    text="Me too, this is some cool stuff huh?",
    speaker=1,
    context=segments,
    max_audio_length_ms=30_000,
)

torchaudio.save("audio.wav", audio.unsqueeze(0).cpu(), generator.sample_rate)

 

이번엔 이런 코드이다. 이 코드를 간략하게 설명하자면.. 이전 대화들의 억양, 목소리, 흐름, 등등을 파악해서 그 목소리를 구현하는 것이다.

 

코드를 보면 알 수 있는데..

speakers = [0, 1, 0, 0]
transcripts = [
    "Hey how are you doing.",
    "Pretty good, pretty good.",
    "I'm great.",
    "So happy to be speaking to you.",
]
audio_paths = [
    "utterance_0.wav",
    "utterance_1.wav",
    "utterance_2.wav",
    "utterance_3.wav",
]

여기에서 speakers에 있는 것이 위에 잠시 말했던.. speaker인 누가 말하는 화자인지.. 여기에서는 1번이 AI 화자 인 것이다.

그리고 transcripts는 대화 들인데..

간단하게 정리를 해보면

  • 대화 : "Hey how are you doing.", 파일 이름 : "utterance_0.wav", 화자 ID : 0
  • 대화 : "Pretty good, pretty good.", 파일 이름 : "utterance_1.wav", 화자 ID : 1
  • 대화 : "I'm great.", 파일 이름 : "utterance_2.wav", 화자 ID : 0
  • 대화 : "So happy to be speaking to you.", 파일 이름 : "utterance_3.wav", 화자 ID : 0

이렇게 정리할 수 있고.. 이게 편하게 알 수 있을 것이다.

이걸 나중에 생성할 때 아까 위에서 설정한 speaker를 1로 설정하고 실행하게 되는데.. 그렇게 하면 이전 대화에 화자 ID의 1번 목소리를 복사해서 흐름에 맞춰 자연스럽게 말하게 된다.

 

audio = generator.generate(
    text="Me too, this is some cool stuff huh?",
    speaker=1,
    context=segments,
    max_audio_length_ms=30_000,
)

여기에서 보이는 것 처럼 위에 대화에 따라서 다음 말할 것을 지정해주고.. 몇번 ID의 화자를 복사할 것인지 설정을 해주고 이전 대화 목록들을 저장한 segments를 지정하고 초를 지정해주면 되는데.. 아마 실행이 안될 것이다.

이유는 audio_paths에 진짜 음성 파일이 없기 때문이다..

그래서 음성을 만들거나.. 아니면 직접 목소리를 녹음해서 해보면 된다..

 

(글 쓸 시간이 부족해서.. 따로 해본것은 적지 않겠다. 직접 해보시길..!)

 

암튼 그렇다.

 

결론

위에서 예시를 봤듯이..

이건 데모 처럼 실시간 음성 대화 모델은 아닌 것 같다..

 

아직 모델이 1B 밖에 풀리지 않았고 추가적인 코드가 풀리지 않았기에.. 바로 말하기는 어렵지만..

현재 공개된 코드에서는.. 음성 대화 모델은 아닌 느낌이다..

 

솔직히 그냥 TTS 모델 같다.

그냥 대화를 지정하고 그것에 맞춰서 말하게 하는 Zero Shot TTS 모델으로 생각된다.

이런 TTS 모델은 이미 다른 곳에서도 개발되고 연구되었기에.. 실시간 음성 대화 모델이 공개로 풀리지 않는 이상..

이 모델을 사용해야하는 이유는 딱히 없다고 생각된다..

그리고 일반 GPU에서 이정도 속도이면.. 너무 느리기도 하고..

 

암튼.. 이번 모델은 약간 아쉽다..

 

암튼 그렇다.

그리고 모델 크기는 크기 때문에 한번 사용하고 나면 지우는걸 추천한다. (컴퓨터 용량 크면 딱히 상관은 없지만..)

기본 모델 설치 경로는 아래로 가면 된다.

  • Windows : C:\Users\<컴퓨터이름>\.cache\huggingface\hub
  • WSL : /home/<컴퓨터이름>/.cache/huggingface/hub

저거 폴더 그냥 지우면 된다.

 

암튼 끝!

반응형
반응형

OBS를 쓰다보면 프로젝트 마다 영상을 녹화해두는데 파일 관리하기 귀찮았다..

프로젝트 마다 OBS 녹화 출력 경로를 다르게 할 수 있으면 좋을 것 같다고 생각됬다..

 

그래서 플러그인을 찾아보니 플러그인은 없고.. 직접 만들까도 생각했는데.. 그냥 쉬운 방법이 있었다.

 

 

위쪽 메뉴에서 프로파일에 들어가고 새로 만들기를 눌른다.

 

그런 이후에 이름 짓고 녹화 설정하고 나면 프로파일에 생긴다.

 

그런 후에 프로파일 눌르고 새로 만든 프로파일 선택 후에 파일에 들어가서 출력 탭에 녹화 저장 경로를 바꾸면 끝이다.

 

뭐 확인해보면

이런식으로 프로파일에 따라서 녹화 저장 경로가 바뀌는 것을 알 수 있다.

 

반응형

+ Recent posts