MW-MDC24D100D-v2 전압과 라이브러리
페이지 정보

본문
사용 환경: ubuntu 18.04, 22.04
개발 언어: c++, python
안녕하세요.
귀사의 MW-MDC24D100D-v2 (MoonWalker 시리즈) 모터드라이버에 관해 문의드립니다.
제품의 RS232 통신 인터페이스 관련하여 문의드릴 사항이 있습니다.
현재 저희가 확인한 바에 따르면, 해당 모터드라이버의 RS232 포트는 일반적으로 사용하는 RS232 포트와 상이한 구성으로 보입니다. 이로 인해 전압 레벨과 핀 배치에 대해 혼란이 발생하고 있습니다. 이에 대해 아래와 같이 확인 부탁드립니다.
USB mini-B 포트 연결 방식
USB mini-B 포트를 통한 연결 시, 별도의 드라이버 설치 후 가상 COM 포트(USB to Serial) 방식으로 통신이 이루어지는지 확인 부탁드립니다.
USB 연결만으로 RS232 통신 테스트가 가능한지, 추가적인 레벨 변환 없이 바로 사용할 수 있는지도 알고 싶습니다.
RS232 포트 전압 레벨 및 핀 구성
RS232 포트가 표준 ±12V 레벨인지, 아니면 3.3V 혹은 5V TTL 레벨인지 명확한 정보가 필요합니다.
특히, 해당 포트의 핀 구성(핀맵)이 일반적인 RS232와 달라 전압 레벨 혼선이 우려되오니, 정확한 핀 배치와 전압 정보를 제공해 주시면 감사하겠습니다.
만약 표준 RS232 (±12V)라면, Jetson Nano나 Raspberry Pi 4B 같은 MCU의 GPIO 핀(3.3V/5V)과 직접 연결 시 RS232 to TTL 레벨 변환기가 필요한지 확인 부탁드립니다.
마지막으로 공개된 소스가, ros 버전이나 드라이버 명으로 명시되지 않아 찾기가 어렵습니다.
ros통신 라이브러리와 버전, rs통신 라이브러리에 대해 부탁드립니다.
- 이전글MW-MDC24D100D-v2를 사용한 모터 제어 25.04.10
- 다음글모터와 모터드라이버 호환건 25.03.27
댓글목록

최고관리자님의 댓글
최고관리자 작성일
안녕하세요, 아이디어 로봇입니다.
1. USB mini-B 포트를 연결하시면 윈도우 및 우분투 환경에서 가상 포트가 생성되어서 해당 제품 프로토콜로 통신이 가능합니다.
2. RS232 표준 레벨이며 몰렉스 커넥터를 사용하면 연결하시면 됩니다. 핀배열은 메뉴얼 참고하시면 되는데, 혹시 좀 더 필요한 정보가 있으실까요?
말씀하신 싱글 보드 컴퓨터에 있는 GPIO 핀으로 사용시 레벨 변환기가 필요합니다. 만약 간단하게 사용하고 싶으시면 USB 연결로 사용하셔도 되며 저희가 판매하고 Stella 모바일로봇 이렇게 구성되어 있습니다.
3. https://github.com/ntrexlab/2th_NtrexMotorDriver_lib_ROS
해당 사이트에서 받으시면 되며 foxy 기준으로 테스트 완료하였고 현재 출시 예정인 N5 로봇에 사용된 humble 버전에도 라이브러리 활용하여 사용됩니다.
더 필요하신 내용이 있으시면 문의 부탁드리겠습니다.
감사합니다.

madra님의 댓글의 댓글
madra 작성일
1. ros1 을 기준으로 작성된 문서는 없는 지 궁금합니다.
melodic을 이용할 것 같은데, 만약 ros2 기준만 있다면 main 관련하여 ros 의존성 패키지만 제가 수정하면 되는 건가요?
2. 첨부해주신 라이브러리를 확인해보았는데, 기존 micro-b타입의 시리얼 통신을 지원하는 건가요?
아니면 rs232로 전압 레벨 맞추고 ttl로 싱글보드 컴 gpio 제어하면 동일 라이브러리에서 rs232통신으로 드라이버를 제어하는 건가요?

최고관리자님의 댓글
최고관리자 작성일
1. 당시 개발할 때 ROS2 기준으로 개발하여 죄송하지만 ROS1 문서는 존재하지 않습니다.
다만 개발하실 때 직접 개발은 해드리지는 못하지만 도움은 드릴 수 있을 거 같습니다..
2. 통신 포트만 맞추시면 모두 호환이 가능합니다.

madra님의 댓글의 댓글
madra 작성일
현재 잿슨나노로 작업중이고 18.04에서 ros1 melodic으로 포팅 완료하여 실행했습니다.
1. 드라이버 설치를 위해서나 드라이버에 읽기 쓰기가 잘 되는 지 확인하기 위해서 전원 공급에 관해 궁금합니다.
단순히 usb mini-b로만 연결하라 지시되어있는데, 케이블만 잿슨나노로 연결하면 되는지, 아니면 전원을 공급해줘야하는지(드라이버 b+,b-). 공급해야한다면 단순히 드라이버 확인용으로는 전압전류 구성을 어떻게 권장하는 지 궁금합니다.(아직 모터 미연결, 파워서플라이 이용예정)
2. 드라이버와 usb연결하면 드라이버가 자동으로 설치된다했는데 리눅스에서도 그러한가요?
현재 설치된 것 같지 않아 문의드립니다.
3. 드라이버가 설치된다면 dev 포트경로가 자동으로 바뀌나요? 현재 리눅스에서는 연결한 usb순서대로 /dev/ttyUSB 포트의 0번부터 접속됩니다.
지금 상황에선 기존 다른 센서가 0번에 물려있어 /dev/ttyUSB1로 잡혔는데, 로스코드를 런치해보니 /dev/MW Connect를 찾고 있는 것 같습니다.
만약 자동으로 설정된다면 괜찮지만 자동이 아니라면 제가 직접 /dev/MW Connect로 변경해야하는지, 아니면 코드상에서 찾아 /dev/ttyUSB포트로 수정할 수 있는 지 궁금합니다.
현재상황: mini-b만 연결한 상태에서 드라이버에는 어떤 led 점등도 없으며 런치 후 아래와 같은 명령으로 토픽 발행시
rostopic pub /stella_md_node/cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
publishing and latching message. Press ctrl-C to terminate
아래와 같은 오류가 런치 터미널에 로깅
terminate called after throwing an instance of 'serial::PortNotOpenedException'
what(): PortNotOpenedException Serial::write failed.
[stella_md_node-2] process has died [pid 654, exit code -6, cmd /home/{user}/catkin_ws/devel/lib/stella_md/stella_md_node __name:=stella_md_node __log:=/home/{user}/.ros/log/95b4d3a4-14cd-11f0-9875-00044be5e4d0/stella_md_node-2.log].
log file: /home/{user}/.ros/log/95b4d3a4-14cd-11f0-9875-00044be5e4d0/stella_md_node-2*.log
시리얼을 찾을 수 없다고 뜸
런치 중 전체 로그:
[PortName : /dev/MW MW Connect ERROR]
[MotorDriver INFO] Robot Setting ....
[ MotorControlProductInfomaions ]
device_id : 0
prouct_id : 0
software_version : 0.00
hardware_version : 0.00
RS232_Baudrate : 0
USB_Baudrate : 0
CAN_Bitlate : 0
[ Motor_Configuration ]
min_position ---> Motor1 : 0 , Motor2 : 0
max_position ---> Motor1 : 0 , Motor2 : 0
encoder_ppr ---> Motor1 : 0 , Motor2 : 0
Acceleration ---> Motor1 : 0.0000 , Motor2 : 0.0000
Deceleration ---> Motor1 : 0.0000 , Motor2 : 0.0000
Max_current ---> Motor1 : 0.0000 , Motor2 : 0.0000
Max_voltage ---> Motor1 : 0.0000 , Motor2 : 0.0000
Max_velocity ---> Motor1 : 0.0000 , Motor2 : 0.0000
overvoltage_limit ---> Motor1 : 0.0000 , Motor2 : 0.0000
undervoltage_limit ---> Motor1 : 0.0000 , Motor2 : 0.0000
overcurrent_limit ---> Motor1 : 0.0000 , Motor2 : 0.0000
direction ---> Motor1 : Not_Change , Motor2 : Not_Change
velocity_p_gain ---> Motor1 : 0.0000 , Motor2 : 0.0000
velocity_i_gain ---> Motor1 : 0.0000 , Motor2 : 0.0000
wheel_radius : 0.000000
axle_length : 0.000000
gear_ratio : 0.000000
---------------------------------------------------------------------------------------------------------
[MotorDriver INFO] PortName : /dev/MW Connect OK
[MotorDriver INFO] NTREX MotorDriver RUN ....
[ INFO] [1744154210.408024556]: stellaN1_node constructor done (ROS1).

최고관리자님의 댓글의 댓글
최고관리자 작성일
1. 드라이버에 USB와 b+-를 모두 연결하여 주셔야 드라이버가 정상적으로 작동하게 됩니다.
b+-는 드라이버의 케이스에 적혀있는 대로 8V 이상의 전원을 넣어주시면 됩니다.
2. usb 드라이버가 자동으로 설치되는 것은 윈도우에서 진행됩니다.
/dev/ttyUSB가 잡히셨다면 따로 드라이버를 설치하실 필요는 없습니다.
3. /dev/MW는 rules를 이용하여 연결된 모터 드라이버를 /dev/MW로 설정하여 준 것입니다.
코드에서 /dev/MW를 /dev/ttyUSB1으로 변경하시어 다시 빌드하시면 일단 해결되실 것입니다.
다만 두 개의 USB가 연결 되어있는 경우 부팅 시 ttyUSB 번호가 변경될 수 있습니다.
rules를 통해 고정 설정하여 주시는 것이 좋습니다.