Skip to content

Latest commit

 

History

History
211 lines (149 loc) · 7.82 KB

File metadata and controls

211 lines (149 loc) · 7.82 KB

🤖 Cross-Embodiment Navigation System

A Cross-Embodiment navigation solution based on the ROS Navigation framework, featuring both global and local navigation options, designed for easy integration into your robot platform.

ROS Ubuntu C++

🎯 Project Introduction

We have developed a complete robot navigation solution based on the ROS Navigation framework, capable of achieving Cross-Embodiment navigation. The system includes both global and local navigation options, featuring a concise and user-friendly design that allows for easy embedding into your existing robot navigation solutions.

✨ Key Features

  • 🚀 Plug and Play - Simple interface design for quick integration into existing systems
  • 🎯 High-Precision Navigation - Based on real-time point cloud data, providing accurate localization and path planning
  • 🔄 Flexible Configuration - Supports multiple navigation modes to adapt to different scenario requirements
  • 📊 Real-time Performance - Optimized algorithm implementation ensures real-time responsiveness

💻 Development Environment

Component Version Requirement
Operating System Ubuntu 22.04 LTS
ROS Version ROS1 Noetic
C++ Standard C++ 14

📦 Dependency Installation

# Install ROS Noetic base packages
sudo apt-get install ros-noetic-desktop-full

# Install necessary dependencies
sudo apt-get install \
  ros-noetic-navigation \
  ros-noetic-slam-gmapping \
  ros-noetic-pointcloud-to-laserscan \
  libeigen3-dev \
  libpcl-dev

Contributors

Junfeng Zhu 朱峻锋Axiang Sun 孙阿祥Zhongxia Zhao 赵仲夏, Dongliang Li 李栋梁, Gaohao Zhou 周高豪,Yihao Xu 许益豪, Xin Li 李鑫, Xiang An 安翔, Ziyong Feng 冯子勇,Huajie Tan 谭桦杰

🧭 Navigation Architecture

🌍 Global Navigation

Based on our previous work on FAST_LIO.

The global navigation module is based on our optimized Fast-LIO workflow, providing critical real-time data processing capabilities for the navigation system:

  • Real-time Point Cloud Data Support - Efficiently processes LiDAR point cloud data
  • Accurate Localization Information - Provides centimeter-level (sub-centimeter) localization accuracy
  • Global Map Building - Supports large-scale environment mapping
  • Real-time Performance - Optimized algorithms ensure real-time responsiveness

📍 Local Navigation

We offer two local navigation solutions; choose based on your actual needs:

Option One: Dynamic Update Region (Recommended)

  • Principle: Defines a dynamic update region centered on the robot body
  • Map Maintenance: Local map information is maintained in real-time in the background
  • Performance Advantage: Low computational overhead, fast response speed
  • Applicable Scenarios: Dynamic environments, applications requiring high real-time performance

Option Two: Gmapping Integration (Standard)

  • Principle: Based on the official ROS gmapping tool
  • Map Maintenance: Gmapping maintains the map based on real-time point cloud data
  • Mature and Stable: Based on the established ROS ecosystem tools
  • Applicable Scenarios: Traditional applications requiring full SLAM functionality

🚀 Quick Start

1. Set Up Workspace

# Create the workspace directory
mkdir -p ~/catkin_src/src
# Navigate to the workspace src directory
cd ~/catkin_src/src

2. Clone Project Code

# Clone the navigation system repository
git clone https://github.com/deepglint/Cross-Embodiment-Navigation.git

3. Compile Project

# Return to the workspace root directory
cd ~/catkin_src
# Install project dependencies
rosdep install --from-paths src --ignore-src -r -y
# Compile the project (standard output)
catkin_make

4. Set Environment Variables

# Add the following to ~/.bashrc
echo "source ~/catkin_src/devel/setup.bash" >> ~/.bashrc
# Source the environment variables immediately
source ~/.bashrc

5. Launch Navigation System

You can launch global navigation using the commands below. Note that static map data must be pre-configured before launching global navigation. You can publish your raw 3D point cloud map by running roslaunch ply_map publish_ply.launch. Then, run roslaunch octomap_nav octomap_server.launch to compute the OctoMap from the point cloud map.

# Launch the fast_lio script; an initial robot pose must be provided for localization after launch
cd scripy
chmod +x start_global_navigation1.sh
./start_global_navigation1.sh
# Open a new terminal to launch the subsequent script for robot localization and global navigation
cd scripy
chmod +x start_global_navigation2.sh
./start_global_navigation2.sh

You can launch local navigation using the commands below, which does not require a global map of the current environment.

# Local navigation based on Dynamic Update Region
cd scripy
chmod +x start_local_navigation_our.sh
./start_local_navigation_our.sh

# Local navigation based on Gmapping
cd scripy
chmod +x start_local_navigation_gmapping.sh
./start_local_navigation_gmapping.sh

📖 Usage Guide

Basic Usage Flow

Step Terminal Command Description
1. Terminal 1 roscore Start the ROS Master
2. 2 start scripy Start the Navigation System
3. 3 rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped '{header: {frame_id: "map"}, pose: {position: {x: 1.0, y: 0.5, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}}' Send Navigation Goal (Example)

⚙️ Configuration Details

Main Configuration Files

All configuration files are located in the config/ directory:

  • config/global_costmap_params.yaml: Global costmap parameters
  • config/local_costmap_params.yaml: Local costmap parameters
  • config/dwa_local_planner_params.yaml: DWA local planner parameters
  • config/teb_local_planner_params.yaml: TEB local planner parameters

🐛 Frequently Asked Questions

1. Compilation Errors

Problem Solution Steps
Dependency error during compilation 1. Ensure rosdep is updated: rosdep update
2. Re-install dependencies: rosdep install --from-paths src --ignore-src -r -y

2. Navigation Performance Issues

Problem Resolution Focus
Robot navigation is slow or unresponsive 1. Adjust local planner (e.g., DWA/TEB) parameters
2. Decrease map update frequency (update_frequency)
3. Check sensor data latency (rostopic hz /your/sensor/topic)

⭐ If this project is helpful to you, please give it a Star!

Making robot navigation simpler and smarter

📦 Acknowledgments

In this work, the robot sdk refers to go2_ros_sdk, thanks to their great work.