혹시 어떤 usb 시리얼 포트를 사용하셨나요?
일부 usb 시리얼 포트가 윈도우 환경에서는 정상적으로 동작하는데 우분투 리눅스 환경에서 오동작 하거나 패킷이 일부 깨져서 들어오는 경우가 있더군요.
한번 제게 DM 주셔서 사용하고계신곳과 연락처를 남겨주시면 연락드리고 처리 방법을 논의하도록 하겠습니다.
추천해주셨던 다른 종류의 USB to RS232 케이블을 사용하여도 /odom 토픽이 들어오지 않는 현상이 동일하게 발생되었기에 omo_r1_motor_node.py 코드를 활용하여 몇 가지를 테스트하였고 그 결과는 아래와 같습니다.
$ ls /dev/tty* 명령어를 통해 케이블 연결 확인
$ roslaunch omo_r1_bringup omo_r1_motor.launch 파일 실행
그러나 /odom 토픽 데이터가 로봇을 움직여봐도 0으로 고정되어 있습니다.
omo_r1_motor_node.py 코드 내 def read_packet 부분 165줄 아래에 print(whole_packet)을 추가하여 R1 로봇 인터페이스 보드에서 보내는 시리얼 내용 확인
시리얼 내용 확인 결과
/odom 토픽 데이터가 제대로 확인될 때 : “QODO,0,0” “QDIFFV,0,0” QENCOD,0,0" 등 여러가지의 데이터가 실시간 수치 변화와 동시에 일정하게 들어오는 반면
/odom 토픽 데이터 변화가 없을 때 : “QDIFFV,0,0” 데이터만 들어옴 (수치 변동 없이)
omo_r1_motor_node.py 를 통해 로봇에 연결할 때 시리얼 내용이 부분적으로 비어있는 경우 엔코더 값을 받지 못해 /odom 토픽 데이터가 제대로 확인되지 않는 것 같습니다.