Skip to content

Navifra ROS

1. Introduction

본 매뉴얼은 Moby에 탑재되어있는 자율주행 시스템을 간단하게 사용하기 위한 방법을 안내드립니다.

Navicore는 자율주행 솔루션 업체 Navifra의 소프트웨어로, 모비의 주행관련 Web UI와 ROS를 제공합니다.

Navicore는 모비에 기본적으로 설치되어있어 별도의 설치과정이 필요없으며, 자율주행에 대한 지식이 없는 사용자도 간단하게 사용 가능합니다.

ROS의 Topic은 rospy, roscpp 등의 패키지를 사용하여 API처럼 사용할 수 있습니다.

Web UI와 함께 사용하는 것을 권장드리며, 아래의 주소로 Navifra의 Web UI 사용 매뉴얼을 요청할 수 있습니다.

2. Setup

Navicore는 Moby 기본 구성에 포함된 Navifra PC에 설치되어있으나, 기존의 주행관련 설정을 변경할 여지가 있어 별도의 PC를 이용한 방법을 권장드립니다.

동일 네트워크에 있는 별도의 ROS Noetic 환경 PC에서 모비에 내장된 주행 PC의 ROS Master로 연결하여 주행 및 데이터 읽기가 가능합니다.

ROS Noetic 패키지는 Ubuntu 20.04에서 설치가 가능하며,

설치 방법은 링크의 가이드를 따라 진행하시면 됩니다.

Noetic 패키지의설치가 완료되었다면 터미널에서 다음의 명령으로 ROS 연결 설정이 가능합니다.

export ROS_MASTER_URI=http://192.168.214.21:11311
export ROS_HOSTNAME=localhost

echo "export ROS_MASTER_URI=http://192.168.214.21:11311" >> ~/.bashrc
echo "export ROS_HOSTNAME=localhost" >> ~/.bashrc

3. ROS Topic List

다음은 주로 사용되는 Topic List입니다. 사용자는 각 토픽을 Publish하거나 Subscribe 하는 것으로 명령을 내리거나 데이터를 읽을 수 있습니다. 아래 리스트에서 대부분의 토픽은 주행 명령과 현재 상태에 대한 데이터를 읽는 역할을 합니다. 때문에 Web UI로 맵핑 및 주행 노드(주행 목표 지점), 링크(주행 노드 사이의 경로) 설정 후 사용하시는 것을 권장드립니다. 터미널에서 rostopic list 명령어를 입력하여 더 많은 토픽을 확인할 수 있습니다.

Topic Name Pub/Sub Message Type description
/scan_cloud Subscribe sensor_msgs/PointCloud merged lidar data as pointcloud(z=0)
/scan_merge Subscribe sensor_msgs/LaserScan merged lidar data as laserscan
/localization/robot_pos Subscribe geometry_msgs
/PoseWithCovarianceStamped
current robot pose
pose.pose.position, pose.pose.orientation
/navi/current_node Subscribe std_msgs/String data: current node name
/navi/next_node Subscribe std_msgs/String data: next node name
/navi/goal_node Subscribe std_msgs/String data: goal node name
/navi/s_status Subscribe std_msgs/String current robot status
“loading”: Initializing
“idle”: Waif for command
“running”: Navigating
“pause”: Pausing
/navi/on_path Subscribe std_msgs/Bool check if robot is located on path
true: on path, false: not on path
/navi/path_progress Subscribe std_msgs/Float32 progress of navigated path
: 0 ~ 100
/navi/cur_pos Subscribe std_msgs/Float32MultiArray current robot pose
[x[m], y[m], yaw[rad]]
/navi/goal_pos Subscribe std_msgs/Float32MultiArray goal node pose
[x[m], y[m], yaw[rad]]
/cmd_vel Publish geometry_msgs/Twist manual drive command
linear.x, linear.y, angular.z
/navi/goal_name Publish std_msgs/String set navigation goal
data: target node name
/navifra/cmd Publish std_msgs/String command for navigation
data:"cancel", "pause", "resume"
/initialpose Publish geometry_msgs
/PoseWithCovarianceStamped
set robot initial pose
pose.pose.position, pose.pose.orientation

4. Local ROS Topic List

나비프라에서 제공하는 토픽은 범용 메세지 뿐만 아니라 커스텀 메세지도 사용합니다. /navifra로 시작하는 토픽 명을 가지고있으며, 별도의 메세지 파일이 없다면 나비프라 PC 내부에서만 사용 가능합니다. 다음은 커스텀 메세지를 사용하는 주요 Topic List입니다.

Topic Name Pub/Sub Message Type description
/navifra/info Subscribe core_msgs/NavicoreStatus n_status:“loading” : 99, “idle” : 100, “running” : 101, “pause” : 102
s_status:“loading”, “idle”, “running”, “pause”
s_next_node:string, node name
s_current_node:string, node name
s_goal_node:string, node name
f_path_progress
f_goal_pos_x_m
f_goal_pos_y_m
f_goal_pos_deg
f_robot_pos_x_m
f_robot_pos_y_m
f_robot_pos_deg
f_robot_current_linear_vel_x
f_robot_current_angular_vel_w
n_on_path:0:not on path, 1:on path
/navifra/goal_id Publish core_msgs/Goal set navigation goal
name[str]: target node name