User:Mindstormers

The Future of Robots
Robots are a product of computer technology and as a reprogrammable multi-function manipulator. The robots are also designed to move material parts, tools through programmed motions for the performance of variety of tasks. The majority of people view robots as a machine-man that possesses super-human capabilities and functions in a technological sphere between people and machines. Some day in the future one would assume that robots might conquer the world by being able to lighten the workload on humanity and even be able to provide companionship. On the hand robots might even become closer and closer to the decision making ability of humans. During the RoboBusines showcases fledgling mobile robot industry in October 2007, through various presentations and an exhibition the showcases highlighted the most current commercial robot world. In the showcases they were able to find key capabilities of the future robots, which include the following: I.	Telepresence This kind of robot allows people to hold remote controlled videoconferences from far distances, rather than traveling great distances in order to have face to face meeting. On the other hand, telepresence is another way of letting the users perceives no difference from the actual presence. This ability to be able to manipulate a remote object or environment is an important aspect of real telepresence systems. In remote controlled telepresence the movements of the user’s hands are sensed by wired gloves, inertial sensors and then a robot in a remote location copies those movements. For example, physicians use videoconferences to be able to talk with their patients when not close with them.

'''II. Rescue and lifting''' This kind of robot capability is mostly used in battle field. They are used in battlefield to            help soldiers clear out building, and also sense if there is danger in buildings before they enter.

'''III. Navigation''' Navigation could allow the robots to be able to create their own route plans to deliver items or scan for assets. On the other hand, a robot programmed for navigation purposes for example might guide people through a museum, instead of people.

'''IV. Humanoid robots''' These kinds of robots are autonomous, because they change to their environment while reaching their goal. A fully functioning autonomous robot has the ability to do the following tasks: I.	Gain information about the environment. II. Work without the help of human in extended period of time. III. Able to mobilize all its parts without human’s assistance in its environment. IV. Capable of avoiding situations that are harmful to people, property.

Since humanoid robot try to simulate the human structure and behavior they are most of the times more complex than any other kinds of robots. Humanoid robots are created to imitate some of the physical and mental tasks that human undergo daily. Scientists from different kinds of fields combine efforts that one day humanoid will be able to understand human intelligence reason and act like human.

Programming Concepts
The programming concept for robots is to describe the desired robot behavior and must be supported by a programming system. These programming systems can be distinguished by both their aim and by their method of programming. Programming system is typically undertaken by developers before the low or medium level tasks. Level tasks programming is the allocation of tasks by consumers. Robot programming concepts is a sophisticated human-robot interactions techniques programming. The robot must model and reason about the human programmer’s intentions and be able to recognize plans presented by human. Robots systems have special programming demand related to their complex interactions in real environment, their complex sensors, and actuators. These programming demands provide appropriate human-robot programming interactions such as programming languages, tools, and distributed infrastructures. Robot programming system has three important conceptual components that include: 1.	The programming component that includes designs for programming languages, libraries and application programming interfaces (APIs), which enable a programmer to describe desired robot behavior.

2.	The underlying infrastructure includes the designs for architectures that support and execute robot behavior descriptions, especially in distributed environments.

3.	The design of interactive systems that allow the human programmer to interact with the programming component, to create, modify and examine programs and system resources, both statically and during execution.

The programming system consists of the two main programming methods which are the manual programming and automatic programming.

Manual programming – involves text based or graphical system, which is common in industry where languages are used in simple robots. Text based systems have diverged from robot specific languages to develop more higher level programming such as C++, Java, Haskell, Robot C.

Automatic programming – includes the programming by demonstration (PBD), which is currently popular for training specific tasks, particularly in industry. Of the two main programming methods, considerable effort is aimed at improving the PBD system. For example, in automatic programming a robot may pick out important movements and plan on its own path between points, or execute the key steps in different order.

Robot Control
The main component in robot control is the brick shaped computer called the NXT intelligent Brick. It is the state-of the art programmable intelligent brick that acts as the brain for robots. The NXT intelligent Brick can take input from up to four sensors and control up to three motors. The brick has a 100 × 64 pixel monochrome LCD display and four buttons that can be used to navigate a user interface using hierarchical menus. The speaker is also on the brick that can play sound files at sampling rates up to 8 kHz. Power is supplied by 6 AA (1.5 V each) batteries and by a Li-ion rechargeable battery and with a charger. In addition to the NXT intelligent Brick, robot control has the following capabilities: Motors – the motors are the primary source of power. The robot will use the motors to move around, lift loads, operate arms, grab objects, pump air, and perform any other task that requires power. There are also different kinds of electric motors that share the property of converting electrical energy into mechanical energy. Touch Sensors – the touch sensors work more or less like the push button portion of the doorbell, when pressed a circuit it completed and electricity flows through it. Light Sensors – the light sensors defect light and measure its intensity. In spite of its limitations you can sue it for a broad range of applications. Probably the biggest problem facing a robot control is the overall system reliability. A robot might face any combination of the following failure modes: Mechanical failures – these might range from a temporarily jammed movement to wedged gear trains or a serious mechanical breakdown. Electrical failures – this is when a computer itself will not fail but loose connections of motors and sensors which are a common problem. Sensor unreliability – sensors will provide noisy data (data that is sometimes accurate, sometimes not) or data that is simply incorrect (touch sensor fails to be triggered).

Robot Hardware
The NXT Lego Mindstorms kit consists of the following robot hardware:

NXT programming Lego Brick Ultra sensor Sound sensor Light sensor Touch sensor 3 Interactive servo Motors USB cable Building Instructions User Guide Easy to use software Test panel 577 pieces

Mathematics of Robot Control
Mathematics of robot control is a powerful tool for system design and control especially models of system’s dynamics. This applies to any system but more specifically on human and humanoid robots. The dynamic control is generally a desirable solution if the dynamics can be calculated so the dynamic effects are important for a particular control problem. Computations time reduces rapidly with new computers, some dynamic problems (like link flexibility) are still considered time consuming. Robotics was started from mathematical modeling of robot kinematics and dynamic. Two leg walking was considered with the aim of generating a stable gait, and the arm and hand were modeled in order to allow manipulation. For example, rehabilitation devices appeared to suitable where prostheses were made for leg, arm and hand, and also orthosis for arm and legs, thus resulting in an active exoskeleton. Some of these mutilegged robots were designed while trying to solve the transport on rough terrain. Regarding the mathematical description full kinematic and dynamics were involved from the very beginning of robotics. In this mathematical modeling of a walking robot, Newton’s and Euler’s equations were used to describe the mathematical of robot control.

Robot Programming Languages
The development of modern robot programming languages started in the mid 70’s. Some examples of programming languages in the mid 70’s are VAL (predecessor of Adept’s V+) and AML. These programming languages represent some of the early robot programming languages which had sophisticated data structures. One of the essential ingredients of modern robot programming languages is through usage of frame concept. Languages using the frame concept should supply programmers with multitude of built-in functions to specify such transform. For instance the ZERO ++ programming languages provides many functions to convert x,y,z coordinates.

There is no single robot programming language available, allowing flexible specifications of functional interdependences of path properties. The choice on which language to choose depends on following few points:

I. Having previous experiences and making sure that you are comfortable with the kind of programming language to use. II. The time and effort you plan to work on the program, because not every programming language is equally hard or easy to work with.

Text based programming is common in industry where simple robot languages are used, they are typically provided by the robot developer. With the development of technology nowadays, text based system has diverged from these robot languages to develop more general purposed in higher level programming languages that are suitable for any robot. Typically this involves extending existing languages such as C++, java, Haskell.

The LEGO MINDSTORMS NXT kit comes with programmable languages called NXC. The NXC stands for Not eXactly C, this is a simple programming language for the Lego Mindstorms. The NXT has a bytecode interpreter which is provided by LEGO that can be used to execute programs. The NXC compiler translates a source program into NXT btyecodes, which can then be executed on the target itself.

The NXC is not a general purpose programming language there are many restrictions that stem from limitations of the NXT bytecode interpreter. The NXC Application Programming Interface (API) describes the system functions, constants, and macros that can be used by programs. All Application Programming Interface are defined in a special file known as the “header file” which is automatically included when compiling a program. Both the NXC languages and the API provide information needed to write the NXC programs.

NXC is also a case- sensitive language just like C and C++, which means that the identifier for example “xYz” is not the same identifier as “Xyz”. Similarly the “if” statement begins with the keyword “if” but “IF”, “If”, or “IF’ are all just identifiers. NXC also uses lexical rules to describe how sources file break into individual tokens. This basically includes the way comments are written and valid characters for identifiers.

ROBOTC one on the robot programming languages is a C programming Language that has an easy to use development environment. ROBOTC is supported by several different kinds of robotics platforms which include the popular platforms such as LEGO MINDSSTORMS NXT. This is a high performance program that can easily pinpoint the problem.

The following is an example of a simple ROBOTC program: task main { nxtDisplayString (4,”Hello World!”) wait1Msec (5000); } Basically the above program when run, it will display the words “Hello World” on the NXT display screen.

Obstacle Avoidance
Obstacle avoidance is one of the most important aspects of the robotics world. Without having a way to avoid obstacles, robots would be very limited in what they could do, especially those that rely on a program that requires them to navigate around or to a specific location. For instance, if a robot was programmed to move from point A to point B and had no way of detecting obstacles so that it can avoid it, that robot would not be able to get to its location if the path to the designated location was not a straight line with no obstacles in its way. The robot will eventually run into an obstacle and will continue to try to move against it because it could not detect the obstacle in its path.

With a way to avoid obstacles, robots would have a better navigations system and be able to traverse obstacles with ease. Detectors such as touch or light sensors help robots to detect obstacles. Through the use of programs, the robot can be directed to move in a number of ways around the obstacle to avoid it once it is detected. The robot could be programmed to reverse and then turn to find a different path or simply turn left or right as soon as the obstacle is detected. Using the light sensor, the robot can detect lines on the floor that it can either avoid or can be programmed to follow. The line can be laid out in a path and once the robot picks up the dark line, it can be programmed to follow it without leaving its path.

Task Planning and Navigation
Task planning and navigation refers to the programming of the robot and how it goes about performing its assigned tasks and how it is able to navigate itself around its environment and be able to avoid obstacles to avoid collisions to be able to continue to function properly. The navigations system of the robot is very important. If a robot is not able to move around in its environment with ease and avoid obstacles then it will not be able to complete its task properly. A robot navigates around its environment using sensors to detect whether it is too close to an object to avoid a collision. This is only one type of sensor that a robot may use to avoid collisions. Other sensors include light sensors that a robot may use to follow a specified path drawn out on the floor. For instance, the robots light sensor can be programmed to pick up a dark colors. Once the sensor picks up the dark color, which can be a black line on the floor, the robot will navigate itself to follow that line. This can be used to program the robot to follow a specific laid out path. Touch sensors can be used to help a robot avoid collisions with obstacles and walls. The robot can be programmed to move around in its environment freely, once it bumps or runs into an obstacle, the touch sensor will activate and depending on how the robot is programmed, it will back up and plot out a new path until it runs into another obstacle. Task planning is important as it lays out the order in which a robot will complete its tasks. A robot can be programmed to complete several tasks, but if the tasks aren’t completed in a certain order, the end result may not be desirable. Task planning can range from plotting out tasks in a routine order or branch off into different decision making paths. For instance if a robot is programmed to go straight until it either hits an obstacle or detects a dark line on its path, it can be programmed to do many tasks depending on the programmer. Not only does task planning have to do with decision making for the robot, but it also controls loops that the robot will perform upon meeting specific requirements. Task planning is important because it keeps the robot in check to make sure that it performs all of its tasks as desired. A robot that isn’t able to plan out its tasks properly would just go about performing random tasks as it sees fit and may be completely undesirable to the way the programmer wants the robot to perform.

Robot Vision
Vision systems are generally used in manufacturing companies to perform simple tasks such as counting objects that pass by on a conveyor belt, reading serial numbers or searching for surface defects. These tasks are simple programs that work through the use of a camera installed on the robot and are detected after the object is scanned. A robot does not process images the same way a human does. While humans can rely on inference systems and assumptions, computing devices must see by examining individual pixels of images, processing them and attempting to develop conclusions with the assistance of knowledge bases and features such as pattern recognition engines. Machine vision and computer vision systems are capable of processing images consistently, but computer-based image processing systems are typically designed to perform single, repetitive tasks.

Applications of machine vision

The applications of machine vision (MV) are diverse, covering areas of endeavour including, but not limited to: •	Large-scale industrial manufacture •	Short-run unique object manufacture •	Safety systems in industrial environments •	Inspection of pre-manufactured objects (e.g. quality control, failure investigation) •	Visual stock control and management systems (counting, barcode reading, store interfaces for digital systems) •	Control of automated guided vehicles (AGVs) •	Quality control and refinement of food products •	Retail automation

Knowledge Based Vision Systems
Vision systems are generally used in manufacturing companies to perform simple tasks such as counting objects that pass by on a conveyor belt, reading serial numbers or searching for surface defects. These tasks are simple programs that work through the use of a camera installed on the robot and are detected after the object is scanned. A robot does not process images the same way a human does. While humans can rely on inference systems and assumptions, computing devices must see by examining individual pixels of images, processing them and attempting to develop conclusions with the assistance of knowledge bases and features such as pattern recognition engines. Machine vision and computer vision systems are capable of processing images consistently, but computer-based image processing systems are typically designed to perform single, repetitive tasks. A knowledge based vision system would allow a robot to make inferences and assumptions. The robot would be able to identify an object and then be able to determine if that object were to be dangerous or not. The robot would first be given a list of objects to identify. Using its knowledge system, the robot would use the web to find images of the items it was given to find. Once it finds and identifies all of the objects, the robot will start on its search for the objects. Not only are the vision sensors an essential part in this process but the motion controls must also be functioning. The robot must be able to move and traverse through obstacles to be able to find its objects.

A knowledge based visions system in turn links to the artificial intelligence of a robot. To be able to create a fully functional android, the robot must have a working artificial intelligence and a working knowledge based visions system. Not only will the android be able to think on its own, it will be able to view the world as a human does. Whatever the robot sees, it will be able to make its own assumptions and own perceptions of its surrounding and the objects that it identifies.

Robots and Artificial Intelligence
Artificial Intelligence can be described as the mind of a robot. It is their ability to learn, reason, solve problems, perceive, and how they understand everything around them. You can build a robot and program it to do certain tasks but it will not be intelligent. That robot will perform only those tasks in which it was programmed to do in a continuous loop. If you programmed the robot to pick up a box in a specific location and move it to another destination and you were to move the box at the starting destination not too far away from where it is supposed to be, the robot will not be able to process in its mind that the box has moved. It will register that the box is not there so it will halt what it was programmed to do until the box is back where it is supposed to be. That robot may be able to move and do what it is programmed to do but without an artificial intelligence, it will not be able to learn or perceive the the changes in the envirnoment around it. One of the main challenges today is implementing an advanced artificial intelligence into a robot. Although robots may only be able to perform tasks that they are programmed to do, one day, the creation of an artificial intellegince will allows robots to learn and think just as humans do. Not only will these robots be able to perform tasks that they have been programmed to do, they will be able to adapt to their environments and situations, learn, reason, solve problems, and even be able to process and understand language. Robots will one day be able to think and act like humans and even be able to interact and communicate with humans also.

When most people think of artificial intellegice and its use in robots, the most common image that will pop up is the image of a humanoid robot. This image of the robot is of one that can talk and think like a human being and is capable of making its own decisions. Although this is one way that artifical intellegince can be implemented into robots, it is not the only way. Artificial intellegince can be used for more then just androids. If implemented into a machine that has the task of monitoring something, that machine will be able to perform its task more efficiently and will be able to do more then just simple tasks.

Advantages: 1.	Provide answers for decisions, processes and tasks that are repetitive 2.	Hold huge amounts of information 3.	Minimize employee training costs 4.	Centralize the decision making process 5.	Make things more efficient by reducing the time needed to solve problems 6.	Combine various human expert intelligences 7.	Reduce the number of human errors 8.	Provide strategic and comparative advantages that may create problems for competitors 9.	Look over transactions that human experts may not think of

Disadvantages: 1.	No common sense used in making decisions 2.	Lack of creative responses that human experts are capable of 3.	Not capable of explaining the logic and reasoning behind a decision 4.	It is not easy to automate complex processes 5.	There is no flexibility and ability to adapt to changing environments 6.	Not able to recognize when there is no answer --192.107.46.241 (talk) 02:26, 12 May 2010 (UTC)St. Peters College Advanced Robotics  11 May 2010