'다이나믹셀 아두이노 제어'에 해당되는 글 1건

  1. 2019.10.23 아두이노-다이나믹셀 모션제어
posted by SoundHacker 2019. 10. 23. 22:32

프로젝트 구상 이후 구체적인 구현방법을 정리해서 하나씩 실행해보고 있다.

 

프로젝트 간단설명

- 로보티즈에서는 roboplus라는 프로그램에서 모션을 저장하고 불러와서 사용하는 기능이 있다.

그러나 이것은 로보티즈의 cm계열 제어기를 사용할 때에만 해당하는 사항이다. 그 외의 다른 보드를 이용하거나 Embedded C를 통한 개발을 하게 된다면 모션기능은 사용할 수 없게 된다. 게다가 아두이노를 배우게 되면서 아두이노와 다이나믹셀을 사용할 때에는 각 다이나믹셀마다 위치값 지정, 토크 설정등을 개별적으로 해줘야 하는 것을 알게 되어서 다이나믹셀을 더 편하게 제어할 수 있는 방법은 없을까? 라는 의문으로 동아리에서 프로젝트를 진행하게 되었다.

 

기존에 정리해둔 메모

================================================================

1 - 다이나믹셀 쉴드를 이용하여 모션제어 구현하기
- 다이나믹셀 쉴드 필요(24,000)
- 버튼 3개 이용
- 토크 on off 버튼
- LED로 토크 상태 확인
- 현재 모터값 기록 버튼
- LCD를 이용하여 모션 번호 저장
- 가변저항과 세그먼트(엘레베이터?)를 이용하여 번호를 지정
- 지정번호 모션을 실행 할 버튼

결론

준비물
가변저항 1개 - 번호 지정
세그먼트 1개 - 번호 표시
LCD(16x2)? 1개 - 모션 갯수 확인 // 구현할 때 보드의 핀이 모자라다면 삭제될 수 있음(우선순위 가장 마지막..)
LED 1개 - 토크 on/off 상황
다이나믹셀 쉴드 1게 - 다이나믹셀..

버튼 3개 - 토크 on/off & 모터값 기록 & 지정번호 실행

------------------------------------------
2019 09 18

선택가능한 제어방법
1. 아두이노 - Dynamixel 
편하긴한데 일단 이거하려면...
- 일단 메가보드 기본으로 깔고가야함
- SW시리얼 많이써야함
- TTL 통신은 가능한게 확인됬는데 그 외 규격이 맞는질 모르겠음
- 보드 연결하면 엄청나게 더러워짐(기본적으로 다이나믹셀 하나에 TTL통신케이블 2개 + 수 to 수캐이블 3개)


2. 아두이노 - 다이나믹셀 쉴드 - Dynamixel
다이나믹셀 동작 여부 : 100% 가능함
- 가능하긴한데 다이나믹셀 쉴드를 구입해야 됨. 
- 현재 깔려있는 아두이노프로그램을 온전히 이용할 수 있음
- 인터넷에 해당 라이브러리 사용법이 잘 정리되어있음

3. openCM9.04 - Dynamixel
다이나믹셀 동작 여부 : 100% 가능함
- 가능한데 opencm을 구입해야됨.
- 일반적인 아두이노 프로그램이 아니라 로보티즈ver 아두이노를 사용해야함


4. cm530 - Dynamixel
- 이거 하려면.. 일단 기본 R+task는 의미없고, Embedded C써야함
- 설치과정 복잡
- eclipse 사용해야됨.(e메뉴얼........)


5. 아두이노 - cm530 - Dynamixel
일단 통신속도 맞추니 신호가 왔다갔다하는게 관찰은 되는데 문제는 서로 규격이 안맞는거같음
둘다 시리얼 기반이라 가능할 것 같긴한데 잘 모름..
- 가능하면 아무것도 안사고 가능함
- 전원은 cm530에서 공급받아서 안정적

 


================================================================

 

여기서 가변저항, 7세그먼트를 이용한 것은 구현이 되는지 시각적으로 확인하길 위한 요소이다.

개발할 때에는 해당 부분을 변수로 대체하여 이용한다면 소프트웨어상에서 바로 모션을 동작 시키는 것이 가능하다.

 

구현

 

시도해 본 것

1. 아두이노 우노보드와 cm530보드를 TTL통신으로 바로 연결해보자! (feat. 창동 1,2타임..)

- 통신 속도를 두 보드 다 맞춘 다음 시리얼 모니터로 체크 해본 결과

- 아두이노의 시리얼 모니터에서는 알 수 없는 문자가 잡혔다.

- 로보티즈의 시리얼 모니터에서는 아예 신호조차 잡지 못했다.

 

2. 로보티즈의 지그비를 이용하여 통신이 가능할까?

- 로보티즈의 지그비는 송-수신 모듈이 분리되어있다.

- 아두이노에서 모듈이 인식가능하다면 두 보드를 이용한 통신을 바탕으로 개발이 가능할 것이다.

- 그러나 아두이노에서 인식 시키지 못했다.

 

3. 로보티즈의 블루투스모듈 이용

- 위의 지그비와는 다르게 로보티즈는 로보티즈의, 아두이노는 아두이노의 HC-06 모듈을 사용했다.

- 그러나 두 모듈 모두 master모드(다른 기기로 연결요청을 보내는 모드)가 되지 않았다.

 

4. 아두이노 - cm530 (feat. Bluetooth)

블루투스 모듈이 양쪽다 슬레이브여서 연결이 안됨.. 

 

5. (얼마전에 찾은 유튜브..참고)다이나믹셀을 전원부만 분리하고, 데이터만 아두이노 우노에 연결한다.

- 12DC 전원을 브레드보드에 연결하고 VCC는 바로 다이나믹셀(AX-12A)에 연결.

- GND는 12DC에서 공급, 아두이노 우노보드와 다이나믹셀은 공급받는 형태로 연결.

- 실질적으로 다이나믹셀이 아두이노 우노보드와 연결된건 TX핀 -> 보드와는 데이터 통신만 함.(외부전원 공급)

- 해당 영상에서 사용한 헤더파일은 링크를 타고 들어가보니 404뜸

- 깃헙에서 같은 헤더파일로 추측되는 헤더 파일 다운로드 후 사용해봄

- 샘플코드에서 헤더를 인식 못함.

- 코드를 짠 다음 작동시켜봐도 반응이 없음.

- 그러나 전원을 공급할 때 다이나믹셀의 LED가 점등되는 것으로 보아 적정량의 외부전원을 공급했다는 것을 알 수 있음.

 

 

+ 로보티즈의 e메뉴얼을 찾다보니, 직접 주소로 통신하는 방법도 괜찮을 것이라 생각되었다.

4번 방법을 시도할 때 헤더파일을 열어서 코드를 보았는데, 사실상 헤더파일의 역할은 해당 주소를 알기 쉬운 이름으로 사전에 정의해 둔 다음 다이나믹셀의 통신규격(8bit, 패리티비트 없음, 1 stop bit)에 맞춰서 전송해 주는 역할 만 하고있었다.

그러므로 직접 헤더를 만들어서 하나씩 확인해 나가면서 시도하거나, 코드 자체에 필요한 주소만 바로 정의해 나가면서 사용하는 방법도 괜찮을 것 같다.

 

나름 여러가지 시도를 하면서 다이나믹셀에 대한 이해도가 올라가고 있다는 것을 느꼈지만,

위의 방법들이 모두 안된다면 결국 다이나믹셀 쉴드를 사고 프로젝트를 진행하는 것이 가장 좋을 것 같다.

 

2019.12

다이나믹셀 쉴드가 도착했다.

일단 다이나믹셀 쉴드를 사용하기 위해 필요한 것들을 보면,

- TTL통신 포트 (다이나믹셀 to 다이나믹셀 쉴드, 수 to 수 케이블)

- 외부전원(아두이노 보드 - 노트북 전원으로는 전압 딸림)

- 점퍼선(외부전원을 배터리를 통해 공급할 경우)

- 그 외 잡다한 것들 (I/O 용도로 사용)

 

일단 알아둬야 할 것들

가지고 있는 외부전원 공급장치

12v짜리 DC전원 공급기

11.2v짜리 배터리

 

다이나믹셀 ax-12a (16개)

TTL 통신케이블

 

직접 써보고 생긴 문제점

분명 TTL 포트는 맞는데 커넥터 형태가 달라서 잘 들어가지 않음.

억지로 넣으면 들어가긴하는데 불안정함.

통신할 때 알수없는 문자들만 나옴.(통신 속도 문제 X)

외부전원 공급할 때 배터리와 연결하는 케이블 바꿔야함(터트릴 뻔함, 케이블 살짝 탐)

 

위 문제들 덕분에 코드만 있고 정작 실행은 해보지도 못했다..