Mobile Robot Control 2023 Wall-E: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
Line 20: Line 20:
|Sjoerd van der Velden
|Sjoerd van der Velden
|1375229
|1375229
|}
==Task description==
{| class="wikitable"
|+Task descriptions
!Name
!Tasks week 8
!Tasks week 9
!Tasks week 10
|-
|Lars Blommers
|1. Localisation (particle filter)
|1. Main file state flow
|1. Combine different elements in main file
2. Combine A* with localisation
|-
|Joris Bongers
|1. Navigation (combining global
and local navigation)
|1. Update wiki with interface,
coordinator information
|1. Combine different elements in main file
2. Combine A* with localisation
|-
|Erick Hoogstrate
|1. Localisation (particle filter)
|1. Finish up localisation (particle filter)
|1. Combine A* with localisation
|-
|Noortje Hagelaars
|1. Adjust state and data diagram
after feedback from tutors
2. Navigation (A* algorithm)
|1. Robot implementation of A*
|1. Create vector map of final challenge,
node placement for A*
|-
|Merlijn van Duijn
|1. Navigation (A* algorithm)
|1. Robot implementation of A*
| -
|-
|Sjoerd van der Velden
|1. Adjust state and data diagram
after feedback from tutors
2. Navigation (combining global
and local navigation)
|1. Update wiki with interface,
coordinator information
2. Assist with robot testing A*
|1. Combine A* with local navigation
|}
|}


==Design presentation==
==Design presentation==
<gallery>
<gallery mode="nolines" showfilename="yes">
File:Design Presentation Group WallE.pdf
File:Design Presentation Group WallE.pdf
</gallery><br />
</gallery>
<br />
==Introduction==
==Introduction==


For the last several years, restaurants have suffered from a labor shortage. Everywhere around the country restaurants workers are subjected to a heavy workload with no end in sight. In an attempt to resolve this problem, we set out as a group of 6 students to design an algorithm for a robot that can deliver orders to tables. In the span of 10 weeks, we learned all about software design and autonomous robots and immidiately put our new knowledge to work in exercises and challenges.  
For the last several years, restaurants have suffered from a labor shortage. Everywhere around the country restaurants workers are subjected to a heavy workload with no end in sight. In an attempt to resolve this problem, we set out as a group of 6 students to design an algorithm for a robot that can deliver orders to tables. In the span of 10 weeks, we learned all about software design and autonomous robots and immediately put our new knowledge to work in exercises and challenges.  


On this wiki page the following aspects of the project are discussed. First, the strategy with regards to the restaurant challenge is discussed. Next, the software architecture and robustness is explained. Finally, the results are evaluated and a conclusion is drawn.  
On this wiki page the following aspects of the project are discussed. First, the strategy with regards to the restaurant challenge is discussed. Next, the software architecture and robustness is explained. Finally, the results are evaluated and a conclusion is drawn.  
Line 90: Line 34:
<br />
<br />
==State flow diagram==
==State flow diagram==
<gallery>
File:Wall-E data flow.png
</gallery>




==Data flow diagram==
==Data flow diagram==
<gallery widths="500" heights="300">
 
File:Wall-E data flow.png|Data flow for restaurant implementation
</gallery>
==Strategy description Restaurant challenge==
==Strategy description Restaurant challenge==


Line 247: Line 189:




== Task description ==
{| class="wikitable"
|+Task decriptions
!Name
!Tasks week 8
!Tasks week 9
!Tasks week 10
|-
|Lars Blommers
|1. Localisation (particle filter)
|1. Main file state flow
|1. Combine different elements in main file
2. Combine A* with localisation
|-
|Joris Bongers
|1. Navigation (combining global
and local navigation)
|1. Update wiki with interface,
coordinator information
|1. Combine different elements in main file
2. Combine A* with localisation
|-
|Erick Hoogstrate
|1. Localisation (particle filter)
|1. Finish up localisation (particle filter)
|1. Combine A* with localisation
|-
|Noortje Hagelaars
|1. Adjust state and data diagram
after feedback from tutors


<br />
2. Navigation (A* algorithm)
|1. Robot implementation of A*
|1. Create vector map of final challenge,
node placement for A*
|-
|Merlijn van Duijn
|1. Navigation (A* algorithm)
|1. Robot implementation of A*
| -
|-
|Sjoerd van der Velden
|1. Adjust state and data diagram
after feedback from tutors
 
2. Navigation (combining global
 
and local navigation)
|1. Update wiki with interface,
coordinator information
 
2. Assist with robot testing A*
|1. Combine A* with local navigation
|}

Revision as of 13:52, 27 June 2023

Group members:

Caption
Name student ID
Lars Blommers 1455893
Joris Bongers 1446193
Erick Hoogstrate 1455176
Noortje Hagelaars 1367846
Merlijn van Duijn 1323385
Sjoerd van der Velden 1375229

Design presentation

Introduction

For the last several years, restaurants have suffered from a labor shortage. Everywhere around the country restaurants workers are subjected to a heavy workload with no end in sight. In an attempt to resolve this problem, we set out as a group of 6 students to design an algorithm for a robot that can deliver orders to tables. In the span of 10 weeks, we learned all about software design and autonomous robots and immediately put our new knowledge to work in exercises and challenges.

On this wiki page the following aspects of the project are discussed. First, the strategy with regards to the restaurant challenge is discussed. Next, the software architecture and robustness is explained. Finally, the results are evaluated and a conclusion is drawn.


State flow diagram

Data flow diagram

Strategy description Restaurant challenge

1.       Initialization:

-       Receive the list of tables to visit in the correct order.

-       Load the provided map of the restaurant.


2.       Localization and Mapping:

-       Use the particle filter as localization algorithm to estimate the robot's position within the restaurant environment.

-       Process the LiDAR data to build and update a map of the environment.

-       Incorporate the static object information into the world model.


3.       Global Path Planning:

-       Use the A* algorithm as the global path planner to generate an initial path from the robot's current position to the first table on the list. The global path consist of waypoints which the robot has to follow

-       Consider the map information, such as walls, doors, and tables, to plan a collision-free path. Doors can be open or closed, the robot should now that where the doors are to avoid local path planning at this location when the door is closed. The robot should make a sound signal to open the door.


4.       Local Path Planning (Open space approach):

-       Continuously check the LiDAR data, for detecting obstacles.

-       If an unknown or unexpected obstacle is detected, switch from global to local path planning for obstacle avoidance.

-       Reassess the obstacle situation continuously and adjust the local path if needed. When using the open space approach the robot will check where the the most room is available and will drive in this direction. When an object suddenly comes too close the robot will totally stop and will wait until the moving obstacle disappears.

-       Reaching a safe region: Switch back to global path planning once the robot reaches a safe distance from the obstacle.


5.     Switching Back to Global Path Planning:

When the decision is made to switch back to global path planning:

-       Pause or slow down the robot's motion temporarily to ensure safety during the planning phase.

-       Replan the global path using the current robot position, updated map information including the obstacle encountered during local path planning.

-       Calculate the new global path as a revised sequence of waypoints to follow.


6.      Table Delivery:

-       Drive the robot to the first table, following the global path.

-       Position the robot near the table. Make sure the robot is facing the table with a suitable range for the order delivery.

-       Use a sound signal to announce the robot's arrival at the table.

-       Wait for a predefined time period to ensure the delivery is complete.

-       Repeat the above steps for each table on the list, following the specified order.


6. Error Handling and Replanning:

-       Errors can occur due to unexpected situations, such as failed table delivery attempts. When this happens, the robot should replan to generate an alternative path or recovery strategy.

-       Replan the global path considering the current robot position, remaining tables, and updated environment information.

Software Architecture Restaurant challenge

Function description

In this paragraph every function is discussed. The input and output data and the way this data is processed are the main aims of this paragraph.


User input

Inputs: User defined sequence of numbers inputted through terminal

Outputs: Array with table numbers in correct order

This is a simple function that requests the sequence of table numbers as a user input. It then converts these numbers into an array where every index of the array is a table number.


Coordinator

Inputs: Array with table numbers, Signal that the robot has arrived at the table

Outputs: Table number, Stop signal

The coordinator keeps track of the table number that the robot has as goal. Once the robot arrives at this table, the coordinator sets the next table in the queue as the new goal. Once all tables have been visited, it stops the robot.


Localization

Inputs: Laser data, odometer data, map data

Outputs: xy position of robot, rotation of robot

This function is the heart of the system. It takes the laser, odometer and map data and combines them to determine the position of the robot with regards to the map. It uses the ParticleFilter as designed in the exercises to achieve this goal.


Global Path planning

Inputs: Node locations, Current position of the robot, Goal table number

Outputs: Sequence of nodes for Path

The global path planning function makes use the A* algorithm as defined in the exercises. It looks at the current position of the robot and calculates a path through predefined nodes. It sends the sequence of nodes that the robot needs to follow to arrive at the goal.


Follow path

Inputs: Location of the robot, Sequence of nodes for Path.

Outputs: control commands for robot

When the sequence of nodes is defined, this function makes sure the robot moves from node to node until it reaches its goal. It uses either the open spaces or artificial vector field approach for this.


Obstacle detected

Inputs: laser data

Outputs: control commands for robot

When an object is in the path of the robot, it needs to be avoided. This function will take care of that. It overrules the path following function.


Signal arrival

Inputs: location of the robot, location of the table

Outputs: Sound message, signal to coordinator to set next table as goal.

This function looks if the robot has arrived at the table by calculation the distance between the robot and the table. Once this value is under a certain threshold, a sound message is sent to the robot and the coordinator is informed that the robot has reached the table.



Robustness Restaurant challenge

Evaluation Restaurant challenge


Conclusion

Task description

Task decriptions
Name Tasks week 8 Tasks week 9 Tasks week 10
Lars Blommers 1. Localisation (particle filter) 1. Main file state flow 1. Combine different elements in main file

2. Combine A* with localisation

Joris Bongers 1. Navigation (combining global

and local navigation)

1. Update wiki with interface,

coordinator information

1. Combine different elements in main file

2. Combine A* with localisation

Erick Hoogstrate 1. Localisation (particle filter) 1. Finish up localisation (particle filter) 1. Combine A* with localisation
Noortje Hagelaars 1. Adjust state and data diagram

after feedback from tutors

2. Navigation (A* algorithm)

1. Robot implementation of A* 1. Create vector map of final challenge,

node placement for A*

Merlijn van Duijn 1. Navigation (A* algorithm) 1. Robot implementation of A* -
Sjoerd van der Velden 1. Adjust state and data diagram

after feedback from tutors

2. Navigation (combining global

and local navigation)

1. Update wiki with interface,

coordinator information

2. Assist with robot testing A*

1. Combine A* with local navigation