DESARROLLO DEL PROYECTO
3.1 Implementación del SPSS y AMOS
3.1.6 Análisis factorial confirmatorio
In general, an algorithm is a set of rules, simple or complex, which are used by a device to make decisions. The device could be a human, robot, or anything that can take action based on the results of the algorithm. Algorithms in robotics give a form of intelligence and enable autonomous behaviors. In individual robotics, maze-solving algorithms (never intended to be used with robots) can be used to allow a robot to find the exit to a maze.
An algorithm needs to be custom tailored in order to meet the specific design and end goal criteria. In a system of robots, a collaboration algorithm must be developed in order to efficiently manage their locations and activities. The algorithms developed will also depend on the type of network used for the system. If a star network is used, the central computer will run the algorithms and issue orders to the client robots. If a mesh network is used, the algorithms run individually on all of the nodes and each member
must resolve conflict using shared data. The robot may only have data from a few neighboring nodes and must make decisions without knowledge of every robot’s current state.
An applicable task to collaborative robotics is to create a map of a large area. This could be a square mile of land requiring containing landmines, which need to be disarmed. If a star network was used to solve this problem, the algorithm would be designed to disperse the individual robots into optimal intervals and then send them on task to mark the landmines. Large obstructions in the area will require the robots to navigate around them. This will lead to scenarios where robots must not collide with each other. If a faster route around the obstacle is discovered by a nearby robot, an intelligent decision can be made to have robots re-route and take the new path. A level of uncertainty must be accounted for. The algorithm must decide if it is better to continue around an object of unknown size, or turn around and take a known path around the object. This scenario is depicted in Figure 8.3.
As the number of units increase, the time required to solve a problem should decrease. This is true until the number of units becomes so many that more time is spent avoiding collision with other robots. This is another area where algorithms will be used to evaluate the number of robot detections compared to the number of fixed obstacle collisions. If robots are clustered together, preventing efficient movement, action can be taken to allow the robots to disperse to different regions.
Keeping track of the number of robot-to-robot collusions allows a threshold to be set. Once this threshold is exceeded, algorithms tailored for specific situations can be applied. In the case of congestion, the logic in Figure 8.4 can be applied in order to resolve the conflict.
1) If surrounded by neighbors, stop moving.
2) If movement forward is possible, move forward. 3) If movement left is possible, move left.
4) If movement right is possible, move right.
5) If movement backward is possible, move backward.
Figure 8.4 Outward Dispersion Algorithm
If the robots were placed in the center of a room in a group all facing one
direction, this algorithm would evenly disperse them from the center out. Changing the order or removing certain steps will have significant effects on the group. If line 5 was completely removed, the robots would only advance forward and more time would be required to evenly disperse them. If line 5 is moved up to the third position as shown in Figure 8.5, the movement outward would be more elongated since forward and backward movement has a higher precedence over lateral movements.
1) If surrounded by neighbors, stop moving.
2) If movement forward is possible, move forward. 3) If movement backward is possible, move backward. 4) If movement left is possible, move left.
5) If movement right is possible, move right.
Figure 8.5 Linear Dispersion Algorithm
In the collaboration demonstration of this work, the algorithm is very simple. Data sharing allows each robot to stay on task until a critical update occurs. The critical update in this scenario is that the light has been detected and assistance is needed. A visualization of this algorithm can be seen in Figure 8.6.
Algorithms will often nest within other algorithms. In the scenario in Figure 8.6, two additional algorithms will execute once assistance has been requested. In this work, two robots are searching for the target. When assistance is requested, the algorithm is simple, send the only available robot. If many robots were tasked, the coordinator must search through a list based on current states such as distance, availability, and tool set (if the robots were not identical). Once the designated robot(s) are selected to assist, they must run a modification of the original top-level algorithm, which allows them to reach the appropriate destination.
8.8 Summary
A layered approach is often taken in any embedded system even if an RTOS is not used. It is however valuable to maintain this style of coding when using an RTOS since it provides the same benefits of portability and readability. The use of threads to manage logical blocks of code provides more of a software development environment compatible to algorithm and collaboration research. While threads can simplify some aspects of the logic, it introduces new factors that must be kept in mind such as concurrent access to the same device. It should be noted that while the RTOS does provide benefits of abstraction, the ability to navigate datasheets is still required in order to solve the problems that will invariable arise. In order to allow system collaboration, care must be taken when managing shared resources. Operating system concepts such as mutexes and semaphores prevent race conditions. Collaboration algorithms are required in order to efficiently manage large resource pools.