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 posepose.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 commandlinear.x, linear.y, angular.z |
/navi/goal_name |
Publish | std_msgs/String | set navigation goaldata : target node name |
/navifra/cmd |
Publish | std_msgs/String | command for navigationdata :"cancel", "pause", "resume" |
/initialpose |
Publish | geometry_msgs /PoseWithCovarianceStamped |
set robot initial posepose.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” : 102s_status :“loading”, “idle”, “running”, “pause”s_next_node :string, node names_current_node :string, node names_goal_node :string, node namef_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 goalname[str]: target node name |