diff --git a/_data/navigation.yml b/_data/navigation.yml index 60b17258..04d1a0ee 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -9,40 +9,12 @@ wiki: - title: Wiki Index url: /wiki/ - title: Contribute - url: /docs/index/ - - title: Software Bootcamp - url: /wiki/bootcamp/ - children: - - title: Bootcamp Guide - url: /wiki/bootcamp/bootcamp-guide/ - - title: Robotics Project Guide - url: /wiki/robotics-project-guide/master-guide/ - children: - - title: Define your goals and requirements - url: /wiki/robotics-project-guide/define-your-goals-and-requirements/ - - title: Choose a robot - url: /wiki/robotics-project-guide/choose-a-robot/ - - title: Make a robot - url: /wiki/robotics-project-guide/make-a-robot/ - - title: Choose a language (or languages) - url: /wiki/robotics-project-guide/choose-a-language/ - - title: Robot communication - url: /wiki/robotics-project-guide/choose-comm/ - - title: Choose a simulator - url: /wiki/robotics-project-guide/choose-a-sim/ - - title: Test and debug your robot - url: /wiki/robotics-project-guide/test-and-debug/ - - title: Demo day! - url: /wiki/robotics-project-guide/demo-day/ - - title: A Comprehensive Overview of Humanoid Robot Planning, Control, and Skill Learning - url: /wiki/robotics-project-guide/humanoid-robot/ + url: /docs/ - title: System Design & Development url: /wiki/system-design-development/ children: - title: System Engineering url: /wiki/system-design-development/system-engineering/ - - title: Finite State Machines - url: /wiki/system-design-development/finite-state-machine/ - title: Mechanical Design url: /wiki/system-design-development/mechanical-design/ - title: Printed Circuit Board Design @@ -64,23 +36,13 @@ wiki: url: /wiki/project-management/risk-management/ - title: Jira url: /wiki/project-management/jira/ - - title: Using Notion for Project Management - url: /wiki/project-management/using-notion-for-project-management/ - title: Common Platforms url: /wiki/common-platforms/ children: - title: DJI Breakdown for Technical Projects url: /wiki/common-platforms/dji-drone-breakdown-for-technical-projects/ - - title: Building a Custom Drone for the DARPA Triage Challenge - url: /wiki/common-platforms/building-custom-drone-for-darpa-triage-challenge/ - title: DJI SDK url: /wiki/common-platforms/dji-sdk/ - - title: Unitree G1 - url: /wiki/common-platforms/unitree-g1/ - - title: Unitree Go1 - url: /wiki/common-platforms/unitree-go1/ - - title: Interfacing with the Nvidia Orin - url: /wiki/common-platforms/interfacing-with-nvidia-orin/ - title: Pixhawk url: /wiki/common-platforms/pixhawk/ - title: Asctec Pelican UAV Setup Guide @@ -113,12 +75,12 @@ wiki: url: /wiki/common-platforms/ros2-navigation-for-clearpath-husky/ - title: Hello Robot Stretch RE1 url: /wiki/common-platforms/hello-robot - - title: Building an iOS App for ROS 2 Integration - url: /wiki/common-platforms/ros2-ios-app-with-swift/ - - title: Configure VS Code for ROS 2 - url: /wiki/common-platforms/configure-vscode-for-ros2/ - - title: Building ROS2 Custom Packages - url: /wiki/common-platforms/ros/ros2-custom-package/ + - title: Unitree G1 Humanoid Robot + url: /wiki/common-platforms/unitree-g1/ + - title: Unitree Go1 + url: /wiki/common-platforms/unitree-go1/ + - title: Interfacing with the Nvidia Orin + url: /wiki/common-platforms/interfacing-with-nvidia-orin/ - title: Sensing url: /wiki/sensing/ children: @@ -128,6 +90,8 @@ wiki: url: /wiki/sensing/adafruit-gps/ - title: AprilTags url: /wiki/sensing/apriltags/ + - title: Azure Block Detection + url: /wiki/sensing/azure-block-detection/ - title: Stag url: /wiki/sensing/stag/ - title: Camera Calibration @@ -138,6 +102,8 @@ wiki: url: /wiki/sensing/computer-vision-considerations/ - title: Delphi ESR Radar url: /wiki/sensing/delphi-esr-radar/ + - title: DWM1001 UltraWideband Positioning System + url: /wiki/sensing/ultrawideband-beacon-positioning/ - title: Point Cloud Library, 3D Sensors and Applications url: /wiki/sensing/pcl/ - title: Photometric Calibration @@ -156,21 +122,13 @@ wiki: url: /wiki/sensing/realsense/ - title: Robotic Total Station (Leica TS16) url: /wiki/sensing/robotic-total-stations/ + - title: Reducing Sensor Noise in Thermal or Visual Imaging sensors + url: /wiki/sensing/thermal-visual-sensor-noise-reduction/ + - title: Robot-Centric Elevation Mapping + url: /wiki/sensing/elevation-mapping/ - title: Thermal Cameras url: /wiki/sensing/thermal-cameras/ - - title: Azure Block Detection - url: /wiki/sensing/azure-block-detection/ - - title: DWM1001 UltraWideband Positioning System - url: /wiki/sensing/ultrawideband-beacon-positioning/ - - title: Reducing Sensor Noise in Thermal or Visual Imaging sensors - url: /wiki/sensing/sensor-noise/ - - title: Apple Vision Pro for Robotics - url: /wiki/sensing/apple-vision-pro/ - - title: Robotics with the Microsoft Hololens2 - url: /wiki/sensing/hololens-101/ - - title: Perception via Thermal Imaging - url: /wiki/sensing/thermal-perception/ - - title: Controls & Actuation + - title: Actuation url: /wiki/actuation/ children: - title: Motor Controller Feedback @@ -184,20 +142,15 @@ wiki: - title: Vedder Electronic Speed Controller url: /wiki/actuation/vedder-electronic-speed-controller/ - title: Pure Pursuit Controller for Skid Steering - url: /wiki/actuation/Pure-Pursuit-Controller-for-Skid-Steering-Robot/ + url: /wiki/actuation/Pure-Pursuit-Controller-for-Skid-Steering-Robot.md - title: MoveIt Motion Planning and HEBI Actuator Setup and Integration - url: /wiki/actuation/moveit-and-HEBI-integration/ + url: /wiki/actuation/moveit-and-HEBI-integration.md - title: Model Predictive Control Introduction and Setup url: /wiki/actuation/model-predictive-control/ - title: Task Prioritization Control for Advanced Manipulator Control url: /wiki/actuation/task-prioritization-control/ - title: Drive-by-wire Conversion for Autonomous Vehicle url: /wiki/actuation/drive-by-wire/ - - title: Manipulators - url: /wiki/manipulators/ - children: - - title: Integrating KUKA LBR Manipulators with MoveIt2 - url: /wiki/manipulators/integrating-kuka-lbr-manipulators-with-moveit2/ - title: Machine Learning url: /wiki/machine-learning/ children: @@ -208,34 +161,15 @@ wiki: - title: Python libraries for Reinforcement Learning url: /wiki/machine-learning/python-libraries-for-reinforcement-learning/ - title: Reinforcement Learning - url: /wiki/machine-learning/intro-to-rl/ - - title: Diffusion Models and Diffusion Policy - url: /wiki/machine-learning/intro-to-diffusion/ - - title: GRPO for Diffusion Policies - url: /wiki/machine-learning/grpo-diffusion-policies/ + url: /wiki/machine-learning/intro-to-rl - title: YOLO Integration with ROS and Running with CUDA GPU url: /wiki/sensing/ros-yolo-gpu/ - title: YOLOv5 Training and Deployment on NVIDIA Jetson Platforms url: /wiki/machine-learning/yolov5-tensorrt/ - title: Mediapipe - Live ML anywhere - url: /wiki/machine-learning/mediapipe-live-ml-anywhere/ + url: /wiki/machine-learning/mediapipe-live-ml-anywhere.md/ - title: NLP for robotics - url: /wiki/machine-learning/nlp-for-robotics/ - - title: Distributed Training With PyTorch Tutorial - url: /wiki/machine-learning/distributed-training-with-pytorch/ - - title: Imitation Learning With a Focus on Humanoids - url: /wiki/machine-learning/imitation-learning/ - - title: Reinforcement Learning - url: /wiki/reinforcement-learning/ - children: - - title: Key Concepts in Reinforcement Learning (RL) - url: /wiki/reinforcement-learning/key-concepts-in-rl/ - - title: Reinforcement Learning Algorithms - url: /wiki/reinforcement-learning/reinforcement-learning-algorithms/ - - title: Policy Gradient Methods - url: /wiki/reinforcement-learning/intro-to-policy-gradient-methods/ - - title: Foundation of Value-Based Reinforcement Learning - url: /wiki/reinforcement-learning/value-based-reinforcement-learning/ + url: /wiki/machine-learning/nlp_for_robotics.md/ - title: State Estimation url: /wiki/state-estimation/ children: @@ -251,10 +185,6 @@ wiki: url: /wiki/state-estimation/visual-servoing/ - title: Cartographer SLAM ROS Integration url: /wiki/state-estimation/Cartographer-ROS-Integration/ - - title: Externally Referenced State Estimation for GPS Lacking Environments - url: /wiki/state-estimation/gps-lacking-state-estimation-sensors/ - - title: Using g2o for Pose Graph Optimization in C++ - url: /wiki/state-estimation/g2o-pose-graphs/ - title: Programming url: /wiki/programming/ children: @@ -262,26 +192,20 @@ wiki: url: /wiki/programming/boost-library/ - title: Boost Maps and Vectors url: /wiki/programming/boost-maps-vectors/ - - title: Building Software from Source - url: /wiki/programming/build-from-source/ - title: Cmake url: /wiki/programming/cmake/ - title: Eigen Library url: /wiki/programming/eigen-library/ - title: Git url: /wiki/programming/git/ - - title: Multithreaded Programming - url: /wiki/programming/multithreaded-programming/ - title: Programming Interviews url: /wiki/programming/google-programming-interviews/ + - title: Multithreaded Programming + url: /wiki/programming/multithreaded-programming/ - title: Programming Tutorials and Resources url: /wiki/programming/tutorials-resources/ - title: Python Construct url: /wiki/programming/python-construct/ - - title: ROS 2 Yasmin State Machine - url: /wiki/programming/yasmin-ros2-state-machine/ - - title: ROS2 Action Servers for Asynchronous Tasks - url: /wiki/programming/ros2-async-action-servers/ - title: Networking url: /wiki/networking/ children: @@ -295,8 +219,6 @@ wiki: url: /wiki/networking/ros-distributed/ - title: Setting up WiFi hotspot at the boot up for Linux devices url: /wiki/networking/wifi-hotspot/ - - title: Real-Time Video Processing on Jetson with GStreamer - url: /wiki/networking/gstreamer-jetson-realtime-video/ - title: Simulation url: /wiki/simulation/ children: @@ -308,15 +230,9 @@ wiki: url: /wiki/simulation/Spawning-and-Controlling-Vehicles-in-CARLA - title: NDT Matching with Autoware url: /wiki/simulation/NDT-Matching-with-Autoware/ - - title: Gazebo Classic Simulation of Graspable and Breakable Objects - url: /wiki/simulation/gazebo-classic-simulation-of-graspable-and-breakable-objects - - title: NVIDIA Isaac Sim Setup and ROS2 Workflow - url: /wiki/simulation/simulation-isaacsim-setup/ - title: Interfacing url: /wiki/interfacing/ children: - - title: Apple Vision Pro for Robotics Applications - url: /wiki/interfacing/apple-vision-pro-for-robotics-applications/ - title: Myo url: /wiki/interfacing/myo/ - title: Blink(1) LED @@ -325,25 +241,17 @@ wiki: url: /wiki/interfacing/microros-for-ros2-on-microcontrollers/ - title: ROS 1 - ROS 2 Bridge url: /wiki/interfacing/ros1_ros2_bridge/ - - title: Low Level Buffer issue debugging - url: /wiki/interfacing/buffer-issues/ - title: Computing url: /wiki/computing/ children: - title: Amazon Web Services Quickstart - url: /wiki/computing/aws-quickstart/ - - title: Arduino + url: wiki/computing/aws-quickstart.md + - title: Adruino url: /wiki/computing/arduino/ - - title: Basic Arduino Components - url: /wiki/computing/basic-arduino-components/ - title: Single Board Computers url: /wiki/computing/single-board-computers/ - - title: Comparing Commercial Off The Shelf Embedded Platforms - url: /wiki/computing/comparing-cots-embedded-systems/ - - title: Jetson Orin AGX - url: /wiki/computing/jetson-orin-agx/ - title: Upgrading Ubuntu Kernels - url: /wiki/computing/upgrading-ubuntu-kernel/ + url: /wiki/computing/upgrading-ubuntu-kenel/ - title: Ubuntu 14.04 on Chromebook url: /wiki/computing/ubuntu-chromebook/ - title: Setup your GPU System for Computer Vision @@ -373,10 +281,6 @@ wiki: url: /wiki/fabrication/cube-pro/ - title: Series A Pro Printer url: /wiki/fabrication/series-A-pro/ - - title: Ultimaker Series (3/S3) - url: /wiki/fabrication/ultimaker-series/ - - title: Onshape Tutorial - url: /wiki/fabrication/onshape-tutorial/ - title: Math url: /wiki/math/ children: @@ -389,10 +293,6 @@ wiki: children: - title: Docker url: /wiki/tools/docker/ - - title: Docker Security - url: /wiki/tools/docker-security - - title: Docker for PyTorch - url: /wiki/tools/docker-for-pytorch/ - title: Vim url: /wiki/tools/vim/ - title: Altium Circuitmaker @@ -415,20 +315,12 @@ wiki: url: /wiki/tools/stream-rviz/ - title: Web-Based Visualization using ROS JavaScript Library url: /wiki/tools/roslibjs/ - - title: MapViz for Map Based Visualization in ROS2 - url: /wiki/planning/mapviz/ - title: Gazebo Simulation url: /wiki/tools/gazebo-simulation/ - title: Code Editors - Introduction to VS Code and Vim url: /wiki/tools/code-editors-Introduction-to-vs-code-and-vim/ - title: Qtcreator UI development with ROS url: /wiki/tools/Qtcreator-ros/ - - title: xarm_ros Guide - url: /wiki/tools/xarm-ros-guide/ - - title: ROS2 Humble Intra-Process Communication Recorder - url: /wiki/tools/ros2-humble-ipc-recorder/ - - title: Docker for Robotics - url: /wiki/tools/docker-for-robotics/ - title: Datasets url: /wiki/datasets/ children: @@ -443,30 +335,16 @@ wiki: url: /wiki/planning/planning-overview/ - title: A* Planner Implementation Guide url: /wiki/planning/astar_planning_implementation_guide/ - - title: Extensions To A* for Dynamic Planning - url: /wiki/planning/non-a-star-planning/ - - title: Behavior Trees - url: /wiki/planning/behavior-tree/ - - title: Specialized Planners - url: /wiki/planning/pilz-chomp/ - title: Coverage Planner Implementation Guide url: /wiki/planning/coverage-planning-implementation-guide/ - title: Resolved Rates url: /wiki/planning/resolved-rates/ - - title: Multi-Robot Planning + - title: Multi Robot Planning Design url: /wiki/planning/multi-robot-planning/ - - title: Sampling-Based RRT and PRM Variants - url: /wiki/planning/rrt-prm-planning/ - - title: Motion Planning in Frenet Frame - url: /wiki/planning/frenet-frame-planning/ + - title: Motion Planning in frenet frame + url: /wiki/planning/frenet-frame-planning.md/ - title: Move Base Flex url: /wiki/planning/move-base-flex/ - - title: CHOMP Path Planning - url: /wiki/planning/chomp-planning/ - - title: Google Linear Optimization Package (GLOP) - url: /wiki/planning/glop/ - - title: Advanced MoveIt usage for Manipulator Motion Planning - url: /wiki/planning/advanced-moveit-manipulator-planning/ # Main links appear in the header. main: - title: Wiki @@ -487,7 +365,7 @@ docs: - title: Wiki Index url: /wiki/ - title: Contribute - url: /docs/index/ + url: /docs/ - title: Contribute children: - title: Introduction diff --git a/wiki/sensing/elevation-mapping.md b/wiki/sensing/elevation-mapping.md new file mode 100644 index 00000000..07b82cb2 --- /dev/null +++ b/wiki/sensing/elevation-mapping.md @@ -0,0 +1,58 @@ +--- +date: 2023-12-04 # YYYY-MM-DD +title: Robot-Centric Elevation Mapping +--- + +In the realm of robotics, navigating complex terrains poses significant challenges. This article delves into robot-centric elevation mapping, a way for map representation offering a dynamic and detailed understanding of the environment from the robot's perspective. Leveraging the Grid Map library, this approach facilitates the generation of 2.5D grid maps, enhancing robotic navigation capabilities in environments where traditional mapping techniques are inadequate. + +## Introduction to Robot-Centric Elevation Mapping +Robot-centric elevation mapping represents a significant advancement in robotic navigation, especially for local navigation tasks in complex environments. This ROS package, designed for mobile robots, integrates pose estimation (such as IMU & odometry) and distance sensing technologies (like structured light sensors, laser range sensors, and stereo cameras) to create detailed elevation maps. These maps are centered around the robot, capturing the terrain within its immediate vicinity. Crucially, this method accounts for pose uncertainty aggregated through the robot's motion, addressing the challenge of drift in robot pose estimation. This article explores how the Grid Map library facilitates the creation of these detailed 2.5D maps, offering robots a nuanced understanding of their surroundings and enhancing their autonomy and efficiency. + +### Understanding the Grid Map Library +The Grid Map library, a comprehensive C++ tool with ROS integration, is at the forefront of elevation mapping. It excels in managing two-dimensional grid maps with multiple data layers, making it ideal for storing diverse data types such as elevation, variance, and color. Key features of this library include: + +- **Multi-Layered Support**: Ability to handle various layers of data, providing a rich, multi-faceted view of the terrain. +- **Efficient Map Re-positioning**: Implements a two-dimensional circular buffer for non-destructive map shifting, crucial for dynamic environments. +- **Eigen Integration**: Utilizes Eigen data types for storing grid map data, allowing for efficient and versatile data manipulation. +- **ROS and OpenCV Interfaces**: Ensures seamless integration with ROS message types and OpenCV image types, enhancing its applicability in robotic systems. +- **Customizable Filters**: A notable feature of the Grid Map library is its customizable filters. These filters can be adapted to meet the specific requirements of a robot, enabling the processing and interpretation of map data in ways that are most relevant to the robot's tasks. For example, filters can be used to assess the traversability of a region by analyzing terrain features like slopes, roughness, or obstacles. This functionality is essential for robots operating in varied and unpredictable environments, as it empowers them to make informed navigation and path planning decisions. + +## Robot-Centric Elevation Mapping in Practice +Robot-centric elevation mapping, utilizing the Grid Map library, focuses on generating maps that center around the robot's position. This approach is particularly effective in accounting for pose uncertainty and drift in robot pose estimation, which are common challenges in rough terrain navigation. Key aspects and services include: + +- **Pose Uncertainty Handling**: By focusing on the robot's position, the mapping accounts for and adjusts to the uncertainties in the robot's orientation and location. +- **Dynamic Map Updating**: As the robot moves, the elevation map updates in real-time, providing continuous situational awareness. +- **Fusion of Sensor Data**: The framework fuses data from various sensors, such as LiDAR, stereo cameras, or structured light sensors, to create a comprehensive elevation map. + +### Key Services in Elevation Mapping +The Elevation Mapping framework offers several services to enhance its functionality: + +1. **Trigger Fusion**: This service triggers the fusion process of the elevation map, integrating the latest sensor data into the map. It's essential for updating the map with the most recent measurements. +2. **Get Submap**: It allows retrieval of a specific sub-section of the elevation map. This is particularly useful for focusing on areas of interest or for detailed analysis of a particular terrain section. +3. **Clear Map**: This service is used to reset or clear the elevation map. It's useful in scenarios where the robot starts a new mapping session or when the existing map data is no longer relevant. +4. **Save and Load Map**: These services enable saving the current state of the elevation map to a file and loading it back when needed. This is crucial for persistent mapping and for scenarios where pre-mapped data is beneficial. +5. **Masked Replace**: This advanced feature allows selective editing of the elevation map. It's used to update specific areas of the map while leaving the rest unchanged, based on a provided mask. +6. **Parameter Adjustment**: Real-time adjustment of various parameters of the elevation mapping process, allowing for dynamic adaptation to different environments and sensor setups. + +These services make the Elevation Mapping framework a versatile tool for robotic navigation, enabling detailed terrain analysis and real-time adaptability to changing environments. + +## Applications and Use Cases +The applications of robot-centric elevation mapping are vast and varied, extending from industrial automation to planetary exploration. In disaster response scenarios, for instance, robots equipped with this technology can navigate debris and uneven surfaces to locate survivors or assess structural stability. In planetary exploration, such systems enable rovers to traverse unknown and uneven lunar or Martian terrains. + +## Summary +The integration of the Grid Map library in robot-centric elevation mapping represents a paradigm shift in robotic navigation. This technology not only enhances the ability of robots to navigate complex and unpredictable environments but also opens new avenues in robotic exploration and assistance. + +## See Also +- [ROS Mapping and Localization](/wiki/common-platforms/ros/ros-mapping-localization/) +- [ROS Cost Maps](/wiki/common-platforms/ros/ros-cost-maps/) +- [Point Cloud Library (PCL)](/wiki/sensing/pcl/) + +## Further Reading +- [Grid Map Library on GitHub](https://github.com/anybotics/grid_map) +- [Elevation Mapping Project on GitHub](https://github.com/ANYbotics/elevation_mapping) +- P. Fankhauser and M. Hutter, "A Universal Grid Map Library: Implementation and Use Case for Rough Terrain Navigation," in *Robot Operating System (ROS): The Complete Reference (Volume 1)*, A. Koubaa, Ed. Cham: Springer International Publishing, 2016, pp. 541–576. + +## References +- [1] P. Fankhauser, M. Bloesch, and M. Hutter, "Probabilistic Terrain Mapping for Mobile Robots with Uncertain Localization," *IEEE Robotics and Automation Letters*, vol. 3, no. 4, pp. 3019–3026, Oct. 2018. +- [2] P. Fankhauser, M. Bloesch, C. Gehring, M. Hutter, and R. Siegwart, "Robot-Centric Elevation Mapping with Uncertainty Estimates," in *Proc. Int. Conf. on Climbing and Walking Robots (CLAWAR)*, 2014. +- [3] P. Fankhauser and M. Hutter, "A Universal Grid Map Library: Implementation and Use Case for Rough Terrain Navigation," in *Robot Operating System (ROS): The Complete Reference (Volume 1)*, A. Koubaa, Ed. Cham: Springer International Publishing, 2016, pp. 541–576. diff --git a/wiki/sensing/index.md b/wiki/sensing/index.md index 7cdd95b7..eb197c0c 100644 --- a/wiki/sensing/index.md +++ b/wiki/sensing/index.md @@ -56,12 +56,15 @@ This section dives into various sensing modalities such as GPS modules, fiducial - **[Realsense RGB-D Camera](/wiki/sensing/realsense/):** Introduces Intel RealSense cameras and details SDK installation, ROS integration, calibration, and tuning methods. -- **[Robotic Total Station (Leica TS16)](/wiki/sensing/robotic-total-stations/):** - Discusses the use of robotic total stations for high-precision 3D positioning and their applications in surveying and robotics. - - **[Reducing Sensor Noise in Thermal or Visual Imaging sensors](/wiki/sensing/sensor-noise/):** Explains various techniques for reducing noise in thermal and visual imaging sensors, including filtering and post-processing methods. +- **[Robot-Centric Elevation Mapping](/wiki/sensing/elevation-mapping/):** + Explains robot-centric elevation mapping using the Grid Map library to create 2.5D maps centered around the robot, accounting for pose uncertainty. + +- **[Robotic Total Station (Leica TS16)](/wiki/sensing/robotic-total-stations/):** + Discusses the use of robotic total stations for high-precision 3D positioning and their applications in surveying and robotics. + - **[Robotics with the Microsoft Hololens2](/wiki/sensing/hololens-101/):** Introduces the Microsoft HoloLens 2 as an AR headset for robotics applications, focusing on accessing its onboard sensors (RGB, Greyscale, Depth, and IMU) using a Unity-Python API.