omo_r1_bringup 패키지
Last updated
Last updated
omo_r1_bringup 패키지에는 아래의 내용이 포함되어 있습니다.
IMU 장비와 연결하고 /imu 토픽 발행
LiDAR 장비와 연결하고 /scan 토픽 발행
로봇 모터 제어와 모니터링을 담당하고 /cmd_vel을 subscribing하고 로봇을 움직이는 기능
USB 카메라가 장착되어 있다면 영상 토픽을 발행
URDF 모델을 확인
키보드 원격 제어를 수행하는 기능
이미 로봇은 각종 센서류와 함께 USB-Hub를 통해 연결이 완료된 상태로 배포됩니다.
내부에서 로봇을 구동하는 모터드라이버의 연결단자는 위 사진의 위치입니다.
따로 구동하거나 단순히 기능을 테스트한다면 위 단자에서 바로 PC와 연결해도 됩니다.
본 장은 omo_r1_bringup 패키지에 launch 폴더 launch 파일로 구성된 각 기능에 대한 설명입니다.
omo_r1_motor.launch는 R1의 모터 제어기보드와 직접 통신을 하는 노드를 실행합니다.
default로 접속하는 port는 ttyMotor로 이는 R1의 ROS melodic version pkg의 설치를 안내하는 페이지에서 시리얼 통신 rule을 만들때 정의된 것입니다.
만약 R1의 구동만을 ROS에서 하려고 하고 별도의 PC에 직접 연결했다면 해당 패키지만 직접 연결할 수 있습니다.
omo_r1_motor.launch에 set_port를 입력으로 연결된 USB를 확인해서 직접 연결할 수 있습니다.
omo_r1_bringup 패키지의 omo_r1_motor.launch를 실행한후, omo_r1_teleop_jey.launch를 실행하면
위 그림처럼 나타난 상태에서 w 키를 눌러서 linear vel을 0.1이 맞춥니다. (이는 단순히 테스트하는 것으로 이 때 로봇은 다른 상자나 거치대 위에 올려서 두 바퀴가 모두 지면에서 떨어지도록 해둡니다.)
이제 omo_r1_motor.launch를 실행하고 위 그림처럼 omo_r1_teleop_key.launch도 같이 실행되었고, 로봇에 직진 방향으로 0.1 rad/sec의 속도 명령이 하달되었다면 양쪽 바퀴가 회전을 시작했을 겁니다.
위 동영상을 보면 한 바퀴 돌때마다 시간을 타임 워치로 측정할 수 있을 겁니다. 동영상에도 나타나지만, 최초 한 바퀴는 6.3초, 그 다음은 12.6초가 소요됩니다.
선 속도는 위 수식처럼 바퀴수와 시간으로 계산할 수 있습니다. 이때 바퀴의 반지름은 대략 0.1016m입니다.
위 표의 계산 결과로 선속도는 0.1에 근접합니다. (실제로 타임워치는 손으로 눌러서 외부에서 육안으로 관찰해서 오차가 존재합니다.) -로봇 구매 후 motor관련 테스트를 하는 것으로 내부 제어기에서 이런 오차를 가지고 있는 것은 아닙니다.-
omo r1 bringup 패키지는 로봇이 자신의 위치를 계산할 때 회전각도를 예측하는 방법을 두 가지 중 하나를 선택해야 합니다.
기본 설정은 두 바퀴의 위치의 합과 차를 이용해서 odom을 계산합니다. 이 모드는 launch 파일을 아무 옵션 없이 실행만 하면 됩니다.
혹은 위 그림처럼 실행할때 set odom mode를 wheel_only로 설정하면 됩니다.
만약 휠의 차이를 이용한 위치 예측이 만족스럽지 못하면 위 그림과 같 imu를 사용해서 yaw 각도를 받아서 odom을 계산할 수 있습니다.
이렇게 사용하는 경우는 반듯이 imu 토픽을 발행하는 노드를 실행해 두어야 합니다.
omo r1은 현재 로보티즈의 OpenCR을 사용하여 imu를 발행할 수 있는 기능을 지원하고 있습니다.
그러나 imu는 상황과 환경에 따라 간혹 지자기 센서의 오차로 인해 드리프트라는 이름으로 알려진 각도 흐르는 현상이 나타날 수 있습니다.
omo_r1_model.launch를 실행하면 rviz에서 robot_description이 표현됩니다.
화면에 나타난 camera는 여러분의 구매 옵션에 따라 제공되지 않을 수도 있습니다.