엔코더 모터를 알자~ROS에서의 PID 제어를 향해~
2748 단어 ROSArduino모터 제어TurtleBot3jetbot
이것을 극복한 것이 엔코더 모터입니다.
이번에는 쉽게 구할 수 있는 직류 엔코더 모터를 간단히 설명합니다.
엔코더 모터란?
모터의 회전 속도와 위치 정보를 출력할 수 있는 모터입니다.
엔코더 모터에는 검출용 소자가 붙어 있습니다.
이 소자는 기본 5V에서 동작하지만, 3.3v에서도 동작하는 것이 있습니다.
우선, 현물을 보자.
12V DC 모터에 기판이 붙어 있습니다.
중심의 코어 주위에 2개의 소자가 있네요.
이것이 A상, B상에 해당하는 검출 소자입니다.
그리고 커넥터가 있습니다.
커넥터
내가 아는 것만으로 몇 가지 종류가 있습니다.
이번에는 소지 XH 커넥터 (2.54mm 피치), PH 커넥터 (2mm 피치)를 촬영했습니다.
그 밖에도 종류가 있는 것과 핀 배열이 모터마다 다릅니다.
핀아웃 예
이것 이외에도 여러가지 있습니다.
기본은 케이블 배선의 교체를 스스로 할 필요가 있습니다.
5V와 GND의 위치가 반대인 것은 배선을 바꾸면 됩니다.
A상과 B상에 대해서는, 1신호만으로 좋은 경우는, 그대로 좋고 소프트로 수정도 가능합니다.
케이블
모터 커넥터와 드라이버 보드 커넥터가 다른 경우에는 변환 커넥터를 제작해야 합니다.
모터는 구입시, 같은 커넥터끼리의 케이블과, 제작작용에 한쪽이 연결되어 있지 않은 것이 붙는 경우가 많은 것 같습니다
중간의 것이 제가 만든 XH⇔PH용 케이블로 Ks0193과 XH의 모터를 연결하기 위해 만든 것입니다.
케이블을 제작하는 것으로 드라이버 보드와 모터의 커넥터를 생각하지 않고 선택 가능하네요(핀 배열도)
엔코더 모터 대응 드라이버 보드
내가 얻은 것은 다음 4가지
KeyStudio Ks0193/RikiRobot Stm32 Robot 4WD V1.4
ARDUINO_HR8833/우리 쪽 제작 STM32F103 4WD 인코더 모터 드라이버
왼쪽 2개가 PH 커넥터로 ArduinoUno, 오른쪽 2개가 XH 커넥터로 STM32
Ks0193만 2모터가 됩니다.
CPU가 필요한 이유?
ROS는 기본 Pub/Sub 통신을 하고 있으며 Subscriber(구독자)는 Publisher(배달자)로부터의 지시를 받아 행동합니다.
이렇게하면 중앙 장치 (RaspberryPi 등)가 모든 처리를 수행 할 필요가 없다는 것이 장점 인 것 같습니다.
모터 드라이버에 CPU를 싣는 것은 처리를 분리하고 싶기 때문입니다.
그러나 ArduinoUno는 8bit ATmega328입니다.
이것이라면, 다양한 처리를 할 수 없다는 것와 ROS Serial의 대역 등의 문제로부터 32bitCPU인 STM32계를 사용하고 싶다고 하는 사람이 나왔습니다.
** Turtlebot3은 STM32F7에 Arduino를 넣습니다.
이것으로 만들어진 것이 RikiRobot이나 우리 쪽의 모터 드라이버입니다.
최근에는 CortexM4가 주류이며 CortexM3을 사용하는 STM32F103은 시대에 뒤처지고있는 것 같습니다.
거기까지 많은 처리를 하지 않는다면 이것으로 충분하다고 생각합니다.
덧붙여 Jetbot은, JetsonNano 자신이 처리를 실시하고 있어 모터 드라이버에 CPU는 붙어 있지 않습니다.
Reference
이 문제에 관하여(엔코더 모터를 알자~ROS에서의 PID 제어를 향해~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/usashirou/items/8d83daa6a9ea384b3f79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)