moby-ros2 패키지로 Moby 제어하기
실행 방법
1. 터미널 열기
2. ROS2 환경설정 확인하기
- ROS2 패키지가 실행되기 위해서는 필요한 워크스페이스가 로드되어 있어야 합니다. 설치 챕터에서 moby-ros2 패키지가 빌드된 ros2_ws 워크스페이스를 불러오려면 아래의 명령어를 사용할 수 있습니다.
1 |
|
- 다만, 설치 챕터에서 위의 명령어를 .bashrc 파일에 추가해두었기 때문에 이제 터미널을 열 때마다 워크스페이스가 자동으로 로드됩니다.
3. Moby 제어 노드 실행하기
-
ROS2에서 Moby를 제어하기 위해서는 Moby SW Framework와 통신할 제어 노드를 실행해야 합니다. 뿐만 아니라 SLAM 및 Navigation을 위해서는 탑재된 LiDAR와 RGBD 센서의 데이터를 ROS2 Topic으로 발행해 줄 노드도 필요합니다.
-
moby_bringup.launch.py 파일은 이에 필요한 모든 노드를 한번에 실행해줍니다.
1 |
|
-
이제 Moby 모델이 표시된 RViz 화면이 실행되고 조이패드를 이용한 이동 조작이 가능해집니다.
- 조이패드를 이용한 조작 방법에 대한 설명은 기본조작 에서 확인할 수 있습니다.
-
RViz 화면의 왼쪽 리스트에서 LaserScan, RealSense, Proximity 좌측의 박스를 체크해 LiDAR, RGBD, 근접 센서 데이터를 시각화할 수 있습니다.
자동 실행 등록
moby_bringup.launch.py 파일은 ROS2에서 Moby를 제어하기 위해 항상 실행해야 하는 파일입니다. systemd 파일 등록을 통해 매번 다시 실행할 필요 없이 전원이 켜질때마다 백그라운드에서 자동 실행될 수 있도록 등록할 수 있습니다.
- nano 에디터로 systemd 경로에 moby_bringup.service 파일을 생성 합니다.
1 |
|
- 아래의 실행 규칙을 입력합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
-
ExecStart 항목에 입력된 커맨드를 부팅 시 실행하게 됩니다. 위 예제에서는 워크스페이스를 로드하고 moby_bringup.launch.py 파일을 실행하는 커맨드가 입력되어 있습니다.
-
Ctrl+X, Y, Enter를 순서대로 눌러 저장합니다.
-
추가된 파일을 적용하고 moby_bringup 서비스를 백그라운드에서 실행하기 위해서 아래의 명령을 실행합니다.
1 2 3 |
|
- 백그라운드에서 실행중인 moby_bringup 서비스의 상태는 아래의 커맨드로 확인할 수 있습니다.
1 |
|
- 백그라운드의 moby_bringup 서비스를 종료하기 위해서는 아래의 커맨드를 입력합니다.
1 |
|
- 아래의 명령으로 백그라운드 서비스의 실시간 터미널 출력을 확인할 수 있습니다. 과거의 기록을 모두 보기 위해서는 -f 옵션을 빼고 실행하면 됩니다.
1 |
|
moby_bringup.launch.py 파일의 구성
- moby_bringup.launch.py 실행 시, Moby-RP의 구성 관련 정보는 아래의 경로에서 불러옵니다.
1 |
|
- 파일 구성은 아래와 같습니다.
이름 | 형식 | 설명 |
---|---|---|
moby_type | string | 제어할 Moby의 타입입니다. 현재 moby_rp가 지원됩니다. |
step_ip | string | Moby를 제어하고 있는 STEP3의 내부 아이피 주소입니다. Moby-RP에서는 출고시 192.168.214.20으로 설정되어 있습니다. |
use_gyro | bool | Moby의 odometry 계산에 내장된 자이로 센서의 방향 정보를 사용할 지를 결정합니다. |
lidar_ip | dict | LiDAR 센서의 IP 입니다. Moby-RP의 기본 설정은 front/rear 두 개의 LiDAR가 사용되며, 각각 192.168.214.10과 192.168.214.11로 지정되어 있습니다. |
realsense_serial | dict | 탑재된 RGBD 센서의 시리얼 번호입니다. Moby-RP에는 front/rear/left/right 4 개가 설치되어 있으며, 출고시 각 센서에 맞는 시리얼 번호가 입력된 상태로 출고됩니다. |
- moby_bringup.launch.py 실행 시 커맨드 라인에서는 상황에 따라 아래의 옵션들을 지정할 수 있습니다.
이름 | 형식 | 설명 | 기본값 |
---|---|---|---|
name | string | 로봇의 이름 | moby |
prefix | string | 복수의 로봇을 사용할 경우, 각 로봇 구분을 위한 접두사 | 없음 |
launch_rviz | bool | RViz 화면의 실행 여부 | false |
use_joypad | bool | 조이패드 컨트롤의 실행 여부 | true |
moby_bringup.launch.py 파일에서 실행하는 주요 노드들과 각 노드들이 발행하거나 구독하는 주요 토픽 및 기능은 아래와 같습니다.
이름 | 발행 | 구독 | 기능 |
---|---|---|---|
front_lidar | /front_lidar/scan | 전면 LiDAR 데이터 발행 | |
rear_lidar | /rear_lidar/scan | 후면 LiDAR 데이터 발행 | |
laserscan_multi_merger | /scan | /front_lidar/scan, /rear_lidar/scan | 전/후면 LiDAR 데이터를 하나의 토픽으로 병합 |
front_camera | /front_camera/ depth/color/points | 전면 RGBD 센서의 포인트클라우드 데이터 발행 | |
rear_camera | /rear_camera/ depth/color/points | 후면 RGBD 센서의 포인트클라우드 데이터 발행 | |
left_camera | /left_camera/ depth/color/points | 좌측 RGBD 센서의 포인트클라우드 데이터 발행 | |
right_camera | /right_camera/ depth/color/points | 우측 RGBD 센서의 포인트클라우드 데이터 발행 | |
robot_state_publisher | /tf | /joint_states | /joint_states을 받아 순기구학 결과를 /tf에 발행 |
moby_grpc | /imu, /odom_encoders | /cmd_vel | cmd_vel의 명령에 따라 Moby를 구동하고 자이로 센서 데이터 및 odometry 결과를 발행 |
ekf_filter_node | /odom | /imu, /odom_encoders | 자이로 센서 데이터와 odometry 정보에 EKF 필터를 적용해 개선된 odometry 발행 |
rviz2 | RViz 화면을 통해 현재 상황을 그래픽 인터페이스 제공 | ||
joy_linux | /joy | 조이스틱 정보를 /joy 토픽으로 발행 | |
console_controller | /cmd_vel | /joy | /joy 토픽에 따라 속도 명령 발행 |