본문 바로가기
Robotics 🤖/Olaf

MD로봇 RS485 인식 에러 해결(Linux), Unable to open port

by 우직한 사람 2024. 1. 29.
반응형

[사용 환경]

Ubuntu version : 20.04

ROS version : noetic

Ubuntu Desktop  


 

엠디로봇에서 인휠 모터를 구매하여 구동 테스트 하던 중에  RS485 인식이 안되는 이슈가 있었다

결과적으로 잘 해결했기 때문에 방법을 공유하고자 한다

 

Shot out to MD로봇 인휠모터 구매하시는 분들


cd /dev에서 ls -al 명령어를 찍어보면 다음과 같이 ttyUSB0 포트에 인식이 되는 것을 확인할 수 있다

*참고 : chomd 777 ttyUSB* 명령어를 이용하여 권한을 부여하는 것이 좋다

 

그리고 md로봇에서 지원하는 ROS 패키지를 설치한다.

//git clone
git clone https://github.com/jeonsion/Olaf.git

//ROS workspace 디렉터리로 이동
cd <ros workspace>

//build
catkin_make

 

그리고 다음 명령어를 인휠 모터를 bring up 한 다음, turtlebot3_teleop_keyboard 패키지를 이용하여 컨트롤 하려고 한다

//terminal 1
roscore

//terminal 2
roslaunch md md_robot_node.launch

//terminal 3
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

//terminal 4
rqt_graph

 

그리고 다음 이슈가 발생했다

에러 : Unable to open port

 

포트 인식에 문제가 있는 듯 하다

권한을 줘도 해결이 되지 않는다

md 로봇 ROS 패키지 안에 port관련 코드를 살펴보자

md_robot_node 디렉터리의 com.cpp 파일을 보면 30번째 줄에 포트가 설정된 것이 보인다

분명 내가 이전에 /dev 디렉터리에서 확인한 ttyUSB0이 맞는데 왜그런지 감이 잡히질 않았다

 

그러던 중 리눅스에서 RS485 등 시리얼 통신 관련하여 확인할 수 있는 tool이 있다는 것을 찾아볼 수 있었다

ex) minicom, screen 등등

 

위 툴을 이용하여 해결했다

 

1. minicom 설치하기

sudo apt-get install minicom -y

 

2. minicom 설정하기

sudo minicom -s

 

그 다음 키보드 방향키를 이용하여 Serial port setup 탭으로 들어간다

아래와 같이 설정이 되어 있을 것이다

여기서 A - Serial Device 명을  /dev/modem에서 -> /dev/ttyUSB0으로 변경해준다

E - Bps/Par/Bits 도 57600으로 수정해준다

 

 

설정이 끝났으면, 변경사항을 default로 저장하도록 Save setup as dfl을 선택하고 나오면된다

 

Result

결과 적으로 roslaunch md md_robot_node.launch 명령어를 입력 시 Serial Port initialized 가 터미널에 나오면 정상적으로 실행된 것이다

반응형