0% found this document useful (0 votes)
5 views3 pages

Multi-Map Robot Navigation System

The assignment involves creating a multi-map navigation system for a robot that can navigate between separately mapped rooms using a wormhole mechanism. Key tasks include mapping rooms, establishing overlapping regions for wormholes, integrating an SQL database for wormhole positions, and implementing C++ code for navigation and an action server. Deliverables include mapped rooms, a database schema, source code, a functional action server, and comprehensive documentation.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views3 pages

Multi-Map Robot Navigation System

The assignment involves creating a multi-map navigation system for a robot that can navigate between separately mapped rooms using a wormhole mechanism. Key tasks include mapping rooms, establishing overlapping regions for wormholes, integrating an SQL database for wormhole positions, and implementing C++ code for navigation and an action server. Deliverables include mapped rooms, a database schema, source code, a functional action server, and comprehensive documentation.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Multi-Map Navigation and Wormhole Implementation

Task Overview

In this assignment, you will work on a multi-map navigation system where a robot can navigate between

different mapped rooms. Each room will be mapped in separate sessions, and a "wormhole" mechanism will

be created to allow the robot to switch between rooms. This mechanism will include an overlapping region

around the wormhole and use an SQL database to save the wormhole positions. The assignment will

require you to write C++ code, create an action server, and manage navigation between maps.

Challenge

Creating a multi-map navigation system requires mapping different rooms, establishing connections

(wormholes) between them, and ensuring seamless navigation. The robot must be able to recognize when it

needs to switch maps and navigate accordingly.

Scenario

Imagine a robot operating in a facility with multiple rooms. Each room is mapped separately, and the robot

needs to switch between these maps seamlessly. The wormhole mechanism enables the robot to transition

from one room to another through overlapping regions.

Task Objectives

1.​Mapping and Wormhole Creation:

-​Map each room in separate sessions. Each map should only contain one room.

-​Identify and create overlapping regions (wormholes) between rooms.

2.​SQL Database Integration:

-​Use an SQL database to save the positions of the wormholes

3.​C++ Code Implementation:

-​Write C++ code to manage navigation between maps.

-​Implement an action server to handle navigation goals.


4.​Action Server Implementation:

-​ Create an action server where the goal contains the position of the goal and a string with the target

map name.

-​If the robot is in the same map, directly send a move_base goal.

-​ If the robot needs to switch maps, navigate to the wormhole, switch maps, initialize, and move to the

target position.

Deliverables

1.​Mapped Rooms:

-​Separate maps for each room with defined wormhole regions.

2.​SQL Database:

-​Database schema and entries for wormhole positions.

3.​C++ Code:

-​Source code implementing the navigation logic and action server.

4.​Action Server:

-​Fully functional action server handling multi-map navigation goals.

5.​Documentation:

-​Detailed documentation of the code functionality.

Candidates can score additional points by :

●​ including the algorithm or pseudocode for their trajectory collection, storage, and visualization

processes in the README file.

●​ Designing the nodes in a modular fashion, allowing for easy integration into existing ROS systems

and flexibility for future enhancements or modifications.

●​ Providing clear and comprehensive documentation for the codebase, including comments within the

source code, README file


●​ Utilizing Object-Oriented Programming (OOP) principles in C++, including classes with separate

header and source files for enhanced modularity and maintainability.

●​ Avoiding hard coding of file paths and topic names in the source code, ensuring flexibility and

ease of configuration.

●​ Adhering to coding guidelines for improved readability and maintainability.

Note:

●​ The candidate can make use of our ROS wiki or any existing projects for AMR functionality (eg

turtlebot3)

●​ Make a recording showcasing the functionality of your ROS package, including navigation between

each map, switching maps, and localisation in a new map.

●​ Once completed, please submit the recording along with the ROS package you've developed to the

provided Submission Form. The maximum allotted timeline for completing the assignment is 48

hours from the reception of the task.

Below are helpful links to guide the candidate in their development process:

[Link]

[Link]

[Link]

[Link]

Common questions

Powered by AI

Recording the functionality of the ROS package developed for the multi-map navigation system is significant as it provides a tangible demonstration of the system's operational capabilities. It validates the effectiveness of navigation between maps, map switching, and localization processes. The recorded demonstration is intended for submission as part of the deliverables, offering proof of concept and serving as a basis for evaluating the system's performance. This ensures that all specifications are met and offers a visual guide to the system's integration and synergy .

Integrating the concept of trajectory collection, storage, and visualization into the multi-map navigation task can enhance the system's performance monitoring and debugging capabilities. It allows developers to track the robot's movements and analyze navigation efficiency and path planning. This is beneficial because visualizing trajectories can help identify and troubleshoot navigation anomalies, optimize path planning algorithms, and improve the robot's overall navigation strategy. Implementing trajectory management requires algorithms or pseudocode to collect trajectory data during navigation sessions and visualize them through a dedicated tool .

The integration of an SQL database enhances the functionality of the multi-map navigation system by providing a reliable and structured method for storing the positions of wormholes. This allows for efficient retrieval and management of wormhole data, ensuring that the robot can accurately switch between rooms. Using an SQL database facilitates the handling of dynamic map data and ensures consistency across different sessions, making the navigation system more robust and flexible .

The deliverables of the task, which include mapped rooms, SQL database schema and entries, C++ source code, a functional action server, and documentation, align with the overall objectives by providing all necessary components for a seamless multi-map navigation system. These deliverables ensure that each room is mapped and connected through wormholes, that the database manages necessary transitions, and that the implemented code handles navigation logic efficiently. Comprehensive documentation supports usability and maintenance, collectively fulfilling the project's aim of achieving efficient and reliable multi-map navigation .

The action server in the task implementation plays a crucial role in managing the robot's navigation goals. It receives navigation goals that include both the desired position and the target map name. When the robot is already on the correct map, the action server directly sends a move_base goal to navigate. If switching maps is required, the action server facilitates navigation to the wormhole, manages the map transition, and reinitializes the navigation in the new map. It is vital for ensuring that the robot can systematically handle multi-map navigation goals .

To avoid hard coding file paths and topic names in the ROS package development, developers should utilize configuration files and parameters that can be adjusted independently of the source code. Using launch files and parameter servers in ROS allows for dynamic configuration, making the system more flexible and easier to adapt to different environments. This practice enhances the package's portability and simplifies deployment across various systems. Adhering to these considerations improves the system's maintainability and adaptability .

Object-Oriented Programming (OOP) principles contribute to the modularity and maintainability of the navigation system's C++ implementation by allowing developers to encapsulate data and functionalities within classes. This promotes code reusability and scalability by enabling the creation of modular code components that can be easily integrated and modified without affecting other parts of the system. Using classes with separate header and source files enhances code organization and maintainability, which is crucial for a complex system like multi-map navigation .

The ROS wiki serves as a vital resource for the development of the multi-map navigation system by offering tutorials, documentation, and project examples that can be referenced to implement and enhance autonomous mobile robot (AMR) functionality. It provides guidance on using tools like actionlib and move_base, which are essential for handling navigation goals and path planning in the project. The wiki helps developers understand the integration of various components and ensures they can leverage existing knowledge and frameworks to expedite development .

Providing comprehensive documentation and in-place code comments for the navigation system offers significant advantages, such as improving code readability, aiding future maintenance, and facilitating new developers' understanding of the codebase. This ensures that others can easily grasp system functionalities, troubleshoot issues, and extend or modify existing features. Detailed documentation and comments enhance collaborative development and ensure that the code remains accessible over time, even as team members change .

The primary challenges in implementing a multi-map navigation system include mapping different rooms separately, establishing connections between these rooms, and ensuring the robot can seamlessly navigate between the maps. The concept of 'wormholes' addresses these challenges by creating overlapping regions that allow the robot to transition from one room to another. The 'wormhole' mechanism facilitates inter-map navigation by serving as defined portals that the robot uses to switch maps seamlessly, tackling the issue of discrete and isolated room maps .

You might also like