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.
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.
- ๐ 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
| Component | Version Requirement |
|---|---|
| Operating System | Ubuntu 22.04 LTS |
| ROS Version | ROS1 Noetic |
| C++ Standard | C++ 14 |
# 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-devJunfeng Zhu ๆฑๅณป้๏ผAxiang Sun ๅญ้ฟ็ฅฅ๏ผZhongxia Zhao ่ตตไปฒๅค, Dongliang Li ๆๆ ๆข, Gaohao Zhou ๅจ้ซ่ฑช,Yihao Xu ่ฎธ็่ฑช, Xin Li ๆ้ซ, Xiang An ๅฎ็ฟ, Ziyong Feng ๅฏๅญๅ๏ผHuajie Tan ่ฐญๆกฆๆฐ
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
We offer two local navigation solutions; choose based on your actual needs:
- 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
- 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
# Create the workspace directory
mkdir -p ~/catkin_src/src
# Navigate to the workspace src directory
cd ~/catkin_src/src# Clone the navigation system repository
git clone https://github.com/deepglint/Cross-Embodiment-Navigation.git# 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# Add the following to ~/.bashrc
echo "source ~/catkin_src/devel/setup.bash" >> ~/.bashrc
# Source the environment variables immediately
source ~/.bashrcYou 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.shYou 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
| 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) |
All configuration files are located in the config/ directory:
config/global_costmap_params.yaml: Global costmap parametersconfig/local_costmap_params.yaml: Local costmap parametersconfig/dwa_local_planner_params.yaml: DWA local planner parametersconfig/teb_local_planner_params.yaml: TEB local planner parameters
| Problem | Solution Steps |
|---|---|
| Dependency error during compilation | 1. Ensure rosdep is updated: rosdep update2. Re-install dependencies: rosdep install --from-paths src --ignore-src -r -y |
| 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
In this work, the robot sdk refers to go2_ros_sdk, thanks to their great work.







