Embedded Motion Control 2016 Group 5: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
Line 83: Line 83:


The figure below shows the interface:
The figure below shows the interface:
[[File:Interface.jpg|right|top|500px]]
[[File:Interface.jpg|500px]]


= Design Document Download =  
= Design Document Download =  

Revision as of 16:13, 29 May 2016

Group Members

0976517 Rohan Lakhotia r dot lakhotia at student dot tue dot nl
0976553 Parth Sharma
0977462 Xixiao Wang
0977242 Satyaki Chaudhuri s.chaudhuri@student.tue.nl

Basic Design Idea

Requirements

For this assignment, we are expected to develop and implement a software code so that Pico can autonomously solve a maze. The assignment consists of the following challenges:

  1. Corridor Challenge
    1. Pico must drive through a corridor and take the first exit.
    2. It must not touch the wall.
    3. Must detect the exit on its own.
    4. We have total 5 minutes to complete the challenge.
  1. Maze Challenge
    1. Pico must be able to solve the maze and find the exit point which is not known.
    2. It should detect the door and send the request command for the door to open.
    3. The door opens when the robot is stationary.
    4. We have total 7 minutes to complete the challenge.

Functionality

Based on the requirements mentioned above, certain functionalities of the robot at task were detected. Based on levels of complexity these can be divided into 3 main groups:

  1. Highest Abstraction Level- Tasks

These tasks directly lead to the realization of the goal, they are considerably complex and use various combination of skills for their accomplishment.

    1. Maze Solving Algorithm

This is the highest level of logic, decision algorithms which enable the autonomous system to negotiate the maze in the shortest time possible. Critical decisions like recognizing dead-ends and intersections and the optimum turning direction fall in this category. This involved various skill selection at different stages of the maze.

    1. Track Position of Robot: The robot should be able to track the time variance of its

position with respect to a Global Coordinate System (planer). This will be beneficial in avoiding movement in closed loop trajectories.

Skills are localized decision making event which enable realization of Tasks, they are of a lower complexity level and often involve computation in a specific situation.

    1. Avoid Collision with walls: The robot is required to maintain a safe distance from the walls at all points of time. This skill will typically be incorporated at all points of the maze and corridor challenge.
    2. Recognizing Intersections: The robot should be able to detect intersection of walls. In case of a simple turn in the maze, the robot will be able to decide the correct turning direction. A three way intersection will have to be judged based on the position trajectory of the robot.
    3. Recognizing Dead-Ends: The robot identifies a dead-end and beeps for a door to be opened. It has to wait a certain amount of time and monitor the walls for them to open.
    4. Detect End of the Maze: The robot should be able to detect the end of the maze once it appears and complete it eventually.
  1. Lowest Abstraction Level Functions:

These are the very basic functions of the robot which enable the realization of the skills and eventually the tasks. These are the fundamental abilities of the robot which do not involve development of any algorithms on our part.

    1. Mobility: The robot is equipped with holonomic wheels which enable it to translate and rotate on a planar field. Due to the nature of the challenge, these actuators are sufficient for the robot to complete the maze.
    2. Sensors: The robot is equipped with Laser Range Finder and Wide Angle Camera to perceive its environment and be able to relay this information to higher levels of functional abstractions.

Components and Specifications

  1. Hardware components:
    1. Laser Range Finder: A laser range finder uses a laser beam to determine the distance to an object. Here, the laser range finder will be used to calculate the distance between Pico and the walls.
    2. Wheel encoders/Rotary encoder/Shaft encoder: It is an electro-mechanical device that converts the angular position or motion of a shaft or axle to an analog or digital code. Here, it can be used to get information of robot such as speed, distance and position.
    3. Wide Angle Camera: With good image processing algorithm, it can be used to localize the position of the robot with respect to the surrounding environment, also to differentiate between walls and door and to interpret different signs (if there is a visual difference between the two).
    4. Computer with intel i7 processor
    5. Actuators
      1. Wheels & Motors: Omni wheels. The effect is that the wheel can be driven with full force, but will also slide laterally with great ease.
      2. Pan/ Tilt Head: The head can be moved to look around for obstacles.
  2. Software Components
    1. Ubuntu 14.04
    2. Qt Creator

Interface

The control of robots can be done by calling the functions in the emc library, which will communicate with ROS topics for data exchange. By running C++ programs, data can be obtained, processed and transmitted from and to certain topics.

  1. The libraries are: < emc=rate:h > < emc=io:h >
  2. The sensor data can be obtained by: io.readLaserData(), io.readOdometryData().
  3. The structures of data are saved in: emc::LaserData, emc::OdometryData.
  4. For driving the robot: io.sendBaseReference & io.sendBaseVelocity.

The figure below shows the interface: Interface.jpg

Design Document Download

The design document can be downloaded here


First Design Presentation

Functionality

Functionality subdivision.PNG

We realised that a detailed inspection and understanding of the robot functionalities was essential, this would enable us to design the software structure. On the most generic level, functionality was divided into Functions, Skills and Tasks as described in our Design Idea. Skills consisted of a tasks which were of wide complexity, we have further divided that into three different segments.

  1. Basic Complexity: This consists Processing Laser Range-finder and Odometer data. This skill segment enables PICO to understand the environment and also provide data for high levels of skill-sets.
  2. Medium Complexity: This skill-set performs the safety function. It consists of two actions. The first one is to align and center the robot at all points of its travel in the corridor. The second one is to maintain a certain amount of distance from walls at all points of time, it avoids collision.
  3. Higher Complexity: This skill-set uses the environment data to detect intersections and their nature. In the corridor challenge, it will consist software which will detect the exit and respond accordingly. While in the maze challenge, the software will have to map its position in the maze, in order to avoid travelling in loops.

The design presentation can be downloaded here

Corridor Challenge

The corridor competition was held on May 18th at the RoboCup soccer field. We did not manage to complete the challenge and are in the process of understanding what went wrong.

Next Steps

We are now working on fixing our algorithm and getting ready for the Maze competition which is on 8th June.