안녕하세요.
저는 터틀봇3에 NVIDIA Jetson Nano를 탑재하여 Visual-Inertial SLAM 연구를 진행하고 있습니다.
저는 ubuntu 18.04 기반의 Jetson Nano 전용 OS를 사용하고 있으며, ROS Melodic 환경을 사용하고 있습니다.
OpenCR에 내장된 IMU 데이터를 추출하는 과정에서 한 가지 이상한 점을 발견하여 질문을 드리게 되었습니다.
IMU의 데이터 publish 속도를 100[Hz]로 고정하기 위해 turtlebot_core_config.h 파일에 47번째 줄을 다음과 같이 수정하고, turtlebot_core.ino 파일을 OpenCR 보드에 업로드 시켰습니다.
#define IMU_PUBLISH_FREQUENCY 100 //hz
그 후, 터틀봇을 bringup 시키고 imu의 토픽 발행 주기를 확인하였습니다.
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
$ rostopic hz /imu
여기서 한 가지 이상한 점을 발견했습니다.
(1) 터틀봇 배터리를 사용하지 않고 Jetson Nano에 전원을 직접 인가한 경우,
IMU 데이터를 99.6[Hz]~100.4[Hz]로 publish (의도한 publish 속도, 정상 작동)
(2) 터틀봇 배터리를 사용하여 OpenCR 보드에 전원을 인가하고, 전원 출력핀을 Jetson Nano의 5V GND 핀에 연결한 경우,
IMU 데이터를 83[Hz]~88[Hz]로 publish (의도치 않은 publish 속도, 비정상 작동)
연구실에는 총 3대의 터틀봇이 있고, 3개의 OpenCR보드를 이용하여 테스트해보았지만, 결과는 같았습니다.
또한, turtlebot_core_config.h 파일을 150[Hz]로 수정하면, (2)번 경우에서 약 113[Hz]로 동작하였습니다.
IMU publish 속도를 100[Hz]로 일정하게 고정시킬 수 있는 방법은 없을까요?? (약간의 수치적 오차는 괜찮습니다.)
감사합니다.
![]() |
2022-01-18 18:15:06 |
g162157769278217 |
안녕하세요.
Jetson Nano는 전원에 따라 성능이 달라집니다.
Jetson Nano에는 최대, 절약 두 가지 전원 모드가 존재합니다.
Jetson Nano을 최대 모드로 설정하여 확인 부탁드립니다.
(최대 성능 모드에서 100hz 정상적으로 나오는 것을 확인 했습니다.)
(단, 최대 모드에서 전용 어댑터가 아닌 OpenCR로 전원 인가 시 전원이 자주 꺼질 수가 있습니다.)
현재 모드 확인하기
sudo nvpmodel -q
최대 성능 모드 사용하기
sudo nvpmodel -m0
절약 모드 사용하기
sudo nvpmodel -m1
감사합니다.
![]() |
2022-01-19 16:55:14 |
ykw4463 |
먼저, 빠르게 답변 주셔서 감사드립니다.
말씀해주신 방법대로 현재 모드를 확인했고, 최대 성능 모드로 작업을 진행하였습니다.
하지만, 여전히 85hz로 토픽을 발행하였습니다.
그래서 OpenCR은 터틀봇 배터리로 전원을 인가하고, Jetson Nano에는 별도의 전원을 인가하는 방법도 시도해보았으나, 같은 문제가 발생하였습니다.
지금까지의 실험들을 미루어 짐작하면, OpenCR에 별도의 전원이 인가되지 않는 경우에만 IMU 토픽이 100hz로 정상적으로 발행되고, OpenCR에 터틀봇 배터리로 전원이 인가되는 경우에는 토픽 발행 주기가 낮아지는 현상이 발생하는 것으로 판단됩니다.
제가 사용하는 OpenCR 보드에는 MPU9250 IMU모듈이 탑재된 보드입니다.
다른 해결 방안은 없을지 알려주시면 감사하겠습니다.
일주일이 되도록 새로운 답변이 없어서 재문의 드립니다.
혹시, 제가 사용하는 구형 OpenCR 보드가 전력 분배 문제가 있는것일까요??
감사합니다.
답변이 늦어져 죄송합니다.
보통, publish의 주기는 여러 조건에 따라 바뀌는 경우가 있습니다.
1. IMU 센서 자체의 읽고 쓰기 속도에 영향을 받을 수 있습니다.
2. OpenCR 펌웨어의 메인루프 주기에 따라서도 바뀔 수 있습니다.
3. USB bandwidth에 따라서도 영향을 받을 수 있습니다.
추가적으로,
터틀봇 배터리가 아닌 SMPS로 OpenCR에 전원을 인가했을때도 같은 증상이 나오는지 알려주시면 감사하겠습니다.
전력에 따른 publish 속도 변화에 대한 원인 조사를 진행하고 있습니다.
지연된다는 말씀을 미리 드리지 못해 죄송합니다.
확인이 완료되는 즉시 답변 드리도록 하겠습니다.
감사합니다.
매번 친절히 답변주셔서 감사합니다.
요청해주신대로 SMPS로 OpenCR에 전원을 인가한 경우에서 테스트를 진행하였습니다.
출력 전압,전류가 다른 3가지 종류의 어댑터를 이용하여 테스트를 진행하였고, 결과는 다음과 같습니다.
1. 정격출력이 8.4V / 1.5A 인 어댑터
- IMU 토픽 발행 주기 = 100hz
- Teleop Key를 이용한 터틀봇의 모터 제어 : 불가능
2. 정격출력이 12V / 3A 인 어댑터
- IMU 토픽 발행 주기 = 86hz
- Teleop Key를 이용한 터틀봇의 모터 제어 : 가능
3. 정격출력이 12V / 5A 인 어댑터
- IMU 토픽 발행 주기 = 86hz
- Teleop Key를 이용한 터틀봇의 모터 제어 : 가능
위의 3가지 경우에서 미루어 볼 때, 다음과 같이 요약할 수 있습니다.
- 모터를 제어하기 위해 필요한 전압은 11.1~12V 이다. (Li-Po 배터리는 11.1V, 모터 제어 가능함)
- 11.1V보다 낮은 전압이 인가된 경우, IMU 토픽은 정상 발행되나 모터 제어가 불가능하다.
- 11.1V보다 높은 전압이 인가된 경우, 모터 제어는 가능하나, IMU 토픽 발행 주기는 감소한다.
개인적인 의견을 추가하면, 모터가 활성화(모터 제어가 가능하게)되면 IMU로 인가되는 전력이 부족하게 되어 이러한 현상이 발생하는 것이 아닌가 생각합니다.
감사합니다.
저희쪽에서 증상 재현이 쉽지 않아 원인 파악에 어려움이 있습니다.
아래 링크로 들어가셔서 저희쪽에 제품을 보내주시면 확인하도록 하겠습니다.
https://www.robotis.com/shop/rma.php
감사합니다.