Skip to content

ROS 로봇이 목적지로 이동하면서 장애물을 피하도록 미리 정의된 GPS 지점을 활용합니다.

Notifications You must be signed in to change notification settings

hallowmelting/gps-waypoint-based-autonomous-navigation-in-ros

 
 

Repository files navigation

GPS-waypoint-based-Autonomous-Navigation-in-ROS

로봇은 장애물을 피하며 목적지로 안전하게 이동하기 위해 미리 정의된 GPS 지점을 따라갑니다.

이 저장소 패키지는 다음에서 테스트되었습니다:

Custom Rover 스펙

  • 엔비디아 젯슨 TX2 Ubuntu 18.04
  • Razor 9DOF IMU
  • ZED F9P (RTK2) GPS
  • RPLidar A1 lidar

The base station

  • Laptop with Ubuntu 18.04

동기부여

이 작업은 Interplanetar 팀(BUET Mars Rover Robotics Team)이 2019년 대학 로버 챌린지(University Rover Challenge, URC)에 참가하기 위해 수행되었습니다. 이 작업을 오픈 소스로 공개한 Daniel Snider에게 특별한 감사를 전합니다:

Run the package

터미널에서 catkin_ws의 소스(src) 디렉터리로 이동한 다음 다음 명령을 실행하세요:

cd catkin_ws/src
git clone https://github.com/ArghyaChatterjee/gps-waypoint-based-autonomous-navigation-in-ros.git gps_waypoint_nav
cd ..
catkin_make --only-pkg-with-deps gps_waypoint_nav

그 터미널에서 navigation 파일을 실행하세요:

source devel/setup.bash
roslaunch gps_waypoint_nav gps_waypoint_nav.launch

다른 터미널에서 joystick controller 파일을 실행하세요:

source devel/setup.bash
roslaunch gps_waypoint_nav joy_launch_control.launch

조이스틱으로 로버를 실행하세요. 실행 중에 "LB" 버튼을 눌러 웨이포인트 수집을 시작하세요. 웨이포인트는 'points_outdoor.txt' 파일에 저장됩니다. 실행이 완료되면 "RB" 버튼을 눌러 웨이포인트를 따라가기 시작하세요.

패키지 설명

이 패키지는 다음 패키지들의 조합을 사용합니다:

  • ekf_localization: 오도메트리 데이터를 IMU와 GPS 데이터와 융합합니다.
  • navsat_transform: GPS 데이터를 오도메트리로 변환하고, 위도 및 경도 포인트를 로봇의 오도메트리 좌표 시스템으로 변환합니다.
  • GMapping: 지도를 생성하고 장애물을 감지합니다.
  • move_base: 장애물을 피하면서 목표지점으로 이동합니다.
  • 목표지점은 녹화된 또는 입력된 웨이포인트를 사용하여 설정됩니다.

노드 설명

이 저장소의 네비게이션 패키지에는 다음과 같은 사용자 정의 노드가 포함되어 있습니다:

  • gps_waypoint: 웨이포인트 파일을 읽어 웨이포인트를 지도 프레임 내의 점으로 변환한 다음 목표지점을 move_base로 전송합니다.
  • gps_waypoint_continuous1: 하나의 컨트롤러를 사용하여 웨이포인트 간 지속적인 내비게이션을 수행합니다.
  • gps_waypoint_continuous2: 다른 별도의 컨트롤러를 사용하여 웨이포인트 간 지속적인 내비게이션을 수행합니다.
  • collect_gps_waypoint: 사용자가 로봇을 주행하며 자신만의 웨이포인트를 수집할 수 있도록 합니다.
  • calibrate_heading: 시작 시 로봇의 헤딩을 설정하고, 열악한 자기계 데이터 문제를 해결합니다.
  • plot_gps_waypoints: 그래프 작성 목적으로 GPS의 원시 데이터를 저장합니다.
  • gps_waypoint_mapping: Mandala Robotics의 3D 매핑 소프트웨어와 웨이포인트 내비게이션을 결합하여 3D 매핑을 수행합니다.

위도 경도를 로컬 오도메트리 메시지로 변환

만약 GPS 센서의 /navsat/fix 토픽을 로컬 좌표 프레임인 /navsat/odom 토픽으로 변환하려면, 다음 두 패키지를 직접 사용하세요:

패키지의 상세한 이해

ROS에서 활용되는 GPS 관련 드라이버들

관련 이슈

ROS 로봇과 관련된 구현 예시

  • Robot Localization using GPS <website>

사용자 인터페이스 데모

Mapviz package

우리는 경로와 좌표를 시각화하기 위해 mapviz 패키지를 사용했습니다.

바이너리 설치:

sudo apt-get install ros-melodic-mapviz \
                       ros-melodic-mapviz-plugins \
                       ros-melodic-tile-map \
                       ros-melodic-multires-image		       

소스 설치:

cd catkin_ws/src
git clone https://github.com/swri-robotics/mapviz.git
rosdep install --from-paths src --ignore-src
catkin_make

이전에 사용하던 구성 파일을 모두 삭제해주세요. 패널 내 플러그인의 순서가 중요합니다. Mapviz는 플러그인 패널에 나열된 순서대로 플러그인을 표시합니다. 만약 navsat 플러그인이 가장 먼저 나열되어 있다면, 그것을 먼저 표시하고 그 위에 tile_map 플러그인이 표시될 것입니다. 따라서 위치 정보를 볼 수 없을 수 있습니다.

sudo rm ~/.mapviz_config

하나의 터미널에서 다음을 실행하세요:

roscore

다른 터미널에서 mapviz 파일을 실행하세요. mapviz.launch 파일은 다음과 같아야 합니다:

<launch>

  <node pkg="mapviz" type="mapviz" name="mapviz"></node>

  <node pkg="swri_transform_util" type="initialize_origin.py" name="initialize_origin" >
    <param name="local_xy_frame" value="/map"/>
    <param name="local_xy_origin" value="auto"/>
    <!--<param name="local_xy_origin" value="swri"/>-->
    <rosparam param="local_xy_origins">
      [{ name: swri,
         latitude: 29.45196669,
         longitude: -98.61370577,
         altitude: 233.719,
         heading: 0.0},

       { name: back_40,
         latitude: 29.447507,
         longitude: -98.629367,
         altitude: 200.0,
         heading: 0.0}]
    </rosparam>
    <remap from="fix" to="/navsat/fix"/>
  </node>

  <node pkg="tf" type="static_transform_publisher" name="swri_transform" args="0 0 0 0 0 0 /map /origin 100"  />

</launch>

mapviz.launch 파일을 실행하려면 다음 명령을 사용하세요:

cd catkin_ws
source devel/setup.bash
roslaunch mapviz mapviz.launch

패널에서 첫 번째 상자 (고정 프레임 "Map" 및 대상 프레임 "None")는 그대로 두고, tile_map을 추가한 다음 navsat 플러그인을 추가하세요 (/navsat/fix 토픽 선택). 이것을 순차적으로 수행하세요.

Mapviz 테스트:

이제 /navsat/fix 토픽에 GPS를 게시할 샘플 bag 파일이 필요합니다. 여기에서 rosbag을 다운로드하세요. 다른 터미널에서 rosbag을 실행하세요:

rosbag play CA-20190828184706_blur_align.bag

Rviz 위성 패키지

소스 설치 방법:

cd catkin_ws/src
git clone https://github.com/nobleo/rviz_satellite.git
catkin_make

rviz.launch 파일을 실행하려면 다음 명령을 사용하세요:

cd catkin_ws
source devel/setup.bash
roslaunch rviz_satellite demo.launch

Rviz 위성 테스트:

/navsat/fix 토픽에 GPS를 게시할 샘플 bag 파일이 필요합니다. 여기에서 rosbag을 다운로드하세요. 다른 터미널에서 rosbag을 실행하세요:

rosbag play CA-20190828184706_blur_align.bag

Rosboard 패키지

설치

소스 설치:

cd catkin_ws/src
git clone https://github.com/dheera/rosboard.git
catkin_make

rviz.launch 파일을 실행하려면 다음 명령을 사용하세요:

cd catkin_ws
source devel/setup.bash
rosrun rosboard rosboard_node

Rosboard 테스트:

/navsat/fix 토픽에 GPS를 게시할 샘플 bag 파일이 필요합니다. 여기에서 rosbag을 다운로드하세요. 다른 터미널에서 rosbag을 실행하세요:

rosbag play CA-20190828184706_blur_align.bag

로컬 브라우저에서 http://localhost:8888 주소로 이동하십시오 (로봇은 http://your-robot-ip:8888/). 왼쪽 상단 메뉴에서 시각화하려는 토픽을 추가하세요. 이렇게 하면 토픽을 시각화할 수 있어야 합니다.

감사의 말

이 저장소를 만들면서 도움을 받은 웹사이트들에게 감사의 인사를 전합니다.

About

ROS 로봇이 목적지로 이동하면서 장애물을 피하도록 미리 정의된 GPS 지점을 활용합니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 72.0%
  • Python 25.6%
  • CMake 1.9%
  • Shell 0.5%