Artificial intelligence, robotics, PHP, Javascript, hacking, CSS, Photoshop, deep learning, machine learning, Visual basic

Sunday, 31 December 2017

The Challenge of the Robot

The Challenge of the Robot
The fundamental challenge of all robotics is this: It is impossible to ever know the true state of the environment. A robot can only guess the state of the real world based on measurements returned by its sensors. It can only attempt to change the state of the real world through the application of its control signals.
                           Thus, one of the first steps in control design is to come up with an abstraction of the real world, known as a model, with which to interpret our sensor readings and make decisions. As long as the real world behaves according to the assumptions of the model, we can make good guesses and exert control. As soon as the real world deviates from these assumptions, however, we will no longer be able to make good guesses, and control will be lost. Often, control once lost can never be regained. (Unless some benevolent outside force restores it.)
This is one of the key reasons that robotics programming is so difficult.
A key to the advancement of robotics is the development of more complex, flexible, and robust models.

The Robot Simulator

Robot simulation is an essential tool in every roboticist's toolbox. A well-designed simulator makes it possible to rapidly test algorithms, design robots, perform regression testing, and train AI system using realistic scenarios.
Benefits of simulation
§  Reduce costs involved in robot production;
§  Diagnose source code that controls a particular resource or a mix of resources;
§  Simulate various alternatives without involving physical costs;
§  Robot or components can be tested before implementation;
§  Simulation can be done in stages, beneficial for complex projects;
§  Demonstration of a system to determine if is viable or not;
§  Compatibility with a wide range of programming languages;
§  Shorter delivery times.
Disadvantages of simulation
§  An application can simulate just what it is programmed to simulate – it will not simulate internal or external factors which are overlooked in the development phase;
§  A robot can encounter many more scenarios in the real world than there can be simulated.
New versions of simulation software platforms offer increasingly more features that make simulation easier and also very close to real life. Most simulation tools are compatible with programming languages like C/C++, Perl, Python, Java, LabVIEW, URBI or MATLAB, however they offer broadly varied feature sets depending on their purpose or focus areas.
A list of the known robot simulators are;

1.     Player Project (2D simulator - Stage - 3D simulator - Gazebo - and control interface - open source, part of the ROS project)
2.     MORSE (general purpose indoor/outdoor 3D simulator)
3.     Microsoft Robotics Studio (simulator + control interface)
4.     KiKS (Matlab plugin, only for Khepera + control interface)
5.     MobotSim (for point like robots, more of algorithm implementation )
6.     Karel (Pretty Kiddish, I guess it is Pascal/Logo like)
7.     Peekabot (Looks really cool ! )
8.     MRPT (looks very nice, will try it soon)
9.     Carmen (Robot Vision etc is easy to implement in it (?))
10.   Webots (closed source)
11.    Simbad (2D/3D simulator in Java and Jython)
12.   Robocode (A Java/ .NET suit)
13.   Rossum's Playhouse (C/C++ suit)
14.    V-REP (3D, source available, Lua scripting, APIs for C/C++, Python, Java, Matlab, URBI, 2 physics engines, full kinematic solver, etc.)

Some more generic platforms/middlewares also offer simulation tools:
1.     ROS (currently the largest integration of such platforms)
2.     URBI
3.     YARP
4.     OROCOS

Different capabilities of robots
Every robot comes with different capabilities and control concerns. Let’s get familiar with our simulated robot.
       The first thing to note is that, in this guide, our robot will be an autonomous mobile robot. This means that it will move around in space freely, and that it will do so under its own control. This is in contrast to, say, an RC robot (which is not autonomous) or a factory robot arm (which is not mobile). Our robot must figure out for itself how to achieve it’s goals and survive in its environment, which proves to be a surprisingly difficult challenge for a novice robotics programmer.

Control Inputs - Sensors

There are many different ways a robot may be equipped to monitor its environment. These can include anything from proximity sensors, light sensors, bumpers, cameras, and so forth. In addition, robots may communicate with external sensors that give it information the robot itself cannot directly observe.
       Our robot is equipped with 9 infrared proximity sensors arranged in a “skirt” in every direction. There are more sensors facing the front of the robot than the back, because it is usually more important for the robot to know what is in front of it than what is behind it.
          In addition to the proximity sensors, the robot has a pair of wheel tickers that track how many rotations each wheel has made. One full forward turn of a wheel counts off 2765 ticks. Turns in the opposite direction count backwards.

Control Outputs - Mobility

Some robots move around on legs. Some roll like a ball. Some even slither like a snake.
 Our robot is a differential drive robot, meaning that it rolls around on two wheels. When both wheels turn at the same speed, the robot moves in a straight line. When the wheels move at different speeds, the robot turns. Thus, controlling movement of this robot comes down to properly controlling the rates at which each of these two wheels turn.

API

In Sobot Rimulator, the separation between the robot “computer” and the (simulated) physical world is embodied by the file robot_supervisor_interface.py, which defines the entire API for interacting with the “real world” as such:
·         read_proximity_sensors() returns an array of 9 values in the sensors’ native format
·         read_wheel_encoders() returns an array of 2 values indicating total ticks since start
·         set_wheel_drive_rates( v_l, v_r ) takes two values, in radians-per-second

The Goal

Robots, like people, need purpose in life. The goal of programming this robot will be very simple: it will attempt to make its way to a predetermined goal point. The coordinates of the goal are programmed into the control software before the robot is activated.
     However, to complicate matters, the environment of the robot may be strewn with obstacles. The robot MAY NOT collide with an obstacle on its way to the goal. Therefore, if the robot encounters an obstacle, it will have to find its way around so that it can continue on its way to the goal.

A Simple Model

First, our robot will have a very simple model. It will make many assumptions about the world. Some of the important ones include:
·         the terrain is always flat and even
·         obstacles are never round
·         the wheels never slip
·         nothing is ever going to push the robot around
·         the sensors never fail or give false readings
·         the wheels always turn when they are told to

The Control Loop

A robot is a dynamic system. The state of the robot, the readings of its sensors, and the effects of its control signals, are in constant flux. Controlling the way events play out involves the following three steps:
1.     Apply control signals.
2.     Measure the results.
3.     Generate new control signals calculated to bring us closer to our goal.
These steps are repeated over and over until we have achieved our goal.


Share:

Saturday, 30 December 2017

Best programming languages for AI development

The 7 best programming languages for AI development


Are you an AI (artificial intelligence) aspirant who's confused on which programming language to pick for your next project? If so, you've come to the right place, as here we are going to look at the best 4 programming languages for AI development.
·         Python
·           C++
·          Lisp
·          Prolog
·          Java
·          Haskell
·          AIML

Python

Homepage: https://www.python.org
Initial release: 1991, latest release: 2017
OS: cross-platform

 Python takes the first place in the list of AI development languages due to its simple and seamless structure. Simple syntax and rich text processing tool allowed it to become a perfect solution for NLP problems. Programmers can build neural networks in Python, and machine learning with Python is also much easier. 
                           Python is one of the most widely used programming languages in the AI field of Artificial Intelligence thanks to its simplicity. It can seamlessly be used with the data structures and other frequently used AI algorithms. The choice of Python for AI projects also stems from the fact that there are plenty of useful libraries that can be used in AI. For example, Numpy offers scientific computation capability, Scypy for advanced computing and Pybrain for machine learning in Python.
Features:
– short development time (as compared to Lips, Java or C++);
– large variety of libraries;
– high level sytax;
– supposerts object-oriented, functional and procedural styles of programming;
– good for testing algorithms without implementing them.

Java

Homepage: https://www.oracle.com/java/index.html
First release: 1995, latest release: 2014
OS: cross-platform

Java is a great choice. It is an object-oriented programming language that focuses on providing all the high-level features needed to work on AI projects, it's portable, and it offers in-built garbage collection. The Java community is also a plus point as there will be someone to help you with your queries and problems.
                     Java is also a good choice as it offers an easy way to code algorithms, and AI is full of algorithms, be they search algorithms, natural language processing algorithms or neural networks. Not to mention that Java also allows for scalability, which is a must-have feature for AI projects.
 Java AI programming is a good solution for neural networks, NLP and search algorithms. Java is an object-oriented programming language that follows the principle of WORA (“write once, read everywhere”). It runs on all platforms without any additional recompilation due to Virtual Machine Technology. Some more advantages of Java is that this language is easy to use and easy to debug. However, in term of speed, it loses against C++. Java AI programming is a good solution for neural networks, NLP and search algorithms.
Features:
-in-build garbge collection;
– portable;
– easy to code algorithms;
– scalability.

Lisp

Initial release: 1959
Influenced: Python

Lisp fares well in the AI field because of its excellent prototyping capabilities and its support for symbolic expressions. It's a powerful programming language and is used in major AI projects, such as Macsyma, DART, and CYC.
                      The Lisp language is mostly used in the Machine Learning/ ILP sub-field because of its usability and symbolic structure. Peter Norvig, the famous computer scientist who works extensively in the AI field, and also the writer of the famous AI book, “Artificial Intelligence: A modern approach,”.
                 Lisp, being the second oldest programming language in the world (after Fortran), still holds a top position in AI creating due to its unique features. For example, Lisp has a special macro system which makes possible to develop a domain specific level of abstraction and build the next level on it. Lisp in artificial intelligence development is known for its unique flexibility as it adapts to the problem you need to solve on the contrary to the other languages that are chosen because they can complete this or that task. Developers opt for Lisp in machine learning and inductive logic projects.
Features:
– fast prototyping capabilities;
-support for symbolic expressions;
– automatic garbage collection which actually was invented for the Lisp language;
– library of connection types including dynamically-sized lists and hastables;
– efficient coding due to compilers;
– interactive evaluation of components and recompilation of files while the program is running.

Prolog 

Initial release: 1972
Influenced: Mercury, XSB
Dialects: Edinburgh Prolog, ISO Prolog

Prolog stands alongside Lisp when it comes to usefulness and usability. According to the literature, Prolog Programming for Artificial Intelligence, Prolog is one of those programming languagesfor some basic mechanisms, which can be extremely useful for AI programming. For example, it offers pattern matching, automatic backtracking, and tree-based data structuring mechanisms. Combining these mechanisms provides a flexible framework to work with.
Prolog is extensively used in expert systems for AI and is also useful for working on medical projects.
The name of Prolog speaks for itself; it’s one of the oldest logic programming languages. If we compare it with other languages, we can see it is declarative. It means that the logic of any program will be represented by rules and facts. Prolog programming for artificial intelligence can create expert systems and solving logic problems. Some scholars claim that an average AI developer is bilingual – they code both Lisp and Prolog.
Features:
– pattern matching;
– tree-based data structuring;
– good for rapid prototyping;
– automatic backtracking.

C++

Homepage: https://isocpp.org
Initial release: 1983, latest release: 2104
Influenced: Java, Python
The major advantage of C++ for AI is its speed, and one can find C++ among the fastest programming languages in the world. Since AI development demands lots of calculation fast-running programs are of ultimate importance. C++ is highly recommended for machine learning and neural network building.
 C++ is the fastest programming language in the world. Its ability to talk at the hardware level enables developers to improve their program execution time. C++ is extremely useful for AI projects, which are time-sensitive. Search engines, for example, can utilize C++ extensively.
In AI, C++ can be used for statistical AI techniques like those found in neural networks. Algorithms can also be written extensively in the C++ for speed execution, and AI in games is mostly coded in C++ for faster execution and response time.
Features:
-high level of abstraction;
– good for high performance;
– organize data according to object oriented pricniples;
– STL collection.

Haskell

Homepage: https://www.haskell.org
Initial release: 1990, latest release: 2010
OS: cross-platform
Haskell is a purely functional programming language that can boast about its lazy evaluation and type interface features. LogicT monads facilitate expressing non-deterministic algorithms, and algorithms can be expressed in a compositional way.
Features:
– major algorithms available via cabal;
– CUDA binding;
– compiled to bytecode;
– can be executed on multple CPU in cloud.

AIML

Homepage: http://www.alicebot.org/aiml.html
Initial release: 2001, latest release: 2011
Extended from: XML
AIML (Artificial Intelligence Markup Language) is a dialect of XML used to create chatbots. Due to AIML one can create conversation partners speaking a natural language.
The language has categories showing a unit of knowledge; patterns of possible utterance addressed to a chatbot, and templates of possible answers.


Share:

Wednesday, 27 December 2017

Robotics; Explaination

Robotics

Robotics is an interdisciplinary branch of engineering and science that includes mechanical engineeringelectrical engineeringcomputer science, and others. Robotics deals with the design, construction, operation, and use of robots, as well as computer systems for their control, sensory feedback, and information processing.
                                    These technologies are used to develop machines that can substitute for humans. Robots can be used in any situation and for any purpose, but today many are used in dangerous environments (including bomb detection and de-activation), manufacturing processes, or where humans cannot survive. Robots can take on any form but some are made to resemble humans in appearance. This is said to help in the acceptance of a robot in certain replicative behaviors usually performed by people. Such robots attempt to replicate walking, lifting, speech, cognition, and basically anything a human can do. Many of today's robots are inspired by nature, contributing to the field of bio-inspired robotics.
                 The concept of creating machines that can operate autonomously dates back to classical times, but research into the functionality and potential uses of robots did not grow substantially until the 20th century. Throughout history, it has been frequently assumed that robots will one day be able to mimic human behavior and manage tasks in a human-like fashion.

Three Laws of Robotics  
The Three Laws of Robotics (often shortened to The Three Laws or known as Asimov's Laws) are a set of rules devised by the science fiction author Isaac Asimov. The rules were introduced in his 1942 short story "Runaround" (included in the 1950 collection I, Robot), although they had been foreshadowed in a few earlier stories. The Three Laws, quoted as being from the "Handbook of Robotics, 56th Edition, 2058 A.D.", are:
1.     A robot may not injure a human being or, through inaction, allow a human being to come to harm.
2.     A robot must obey the orders given it by human beings except where such orders would conflict with the First Law.
3.     A robot must protect its own existence as long as such protection does not conflict with the First or Second Laws.

Applications of robotics
As more and more robots are designed for specific tasks this method of classification becomes more relevant. For example, many robots are designed for assembly work, which may not be readily adaptable for other applications. They are termed as "assembly robots". For seam welding, some suppliers provide complete welding systems with the robot i.e. the welding equipment along with other material handling facilities like turntables etc. as an integrated unit. Such an integrated robotic system is called a "welding robot" even though its discrete manipulator unit could be adapted to a variety of tasks. Some robots are specifically designed for heavy load manipulation, and are labelled as "heavy duty robots".
Current and potential applications include:
·         Military robots
·         Caterpillar plans to develop remote controlled machines and expects to develop fully autonomous heavy robots by 2021. Some cranes already are remote controlled.
·         It was demonstrated that a robot can perform a herding task.
·         Robots are increasingly used in manufacturing (since the 1960s). In the auto industry, they can amount for more than half of the "labor". There are even "lights off" factories such as an IBM keyboard manufacturing factory in Texas that is 100% automated.
·         Robots such as HOSPI are used as couriers in hospitals (hospital robot). Other hospital tasks performed by robots are receptionists, guides and porters helpers.
·         Robots can serve as waiters and cooks, also at home. Boris is a robot that can load a dishwasherRotimatic is a robotics kitchen appliance that cooks flatbreadsautomatically.
·         Robot combat for sport – hobby or sport event where two or more robots fight in an arena to disable each other. This has developed from a hobby in the 1990s to several TV series worldwide.
·         Cleanup of contaminated areas, such as toxic waste or nuclear facilities.
·         Agricultural robots (AgRobots).
·         Domestic robots, cleaning and caring for the elderly
·         Medical robots performing low-invasive surgery
·         Household robots with full use.
·         Nanorobots
·         Swarm robotics

Robotics Technologies
Professionals in robotics technologies blend computer science with electrical and mechanical engineering to create automated, intelligent machines. If you're interested in this field, read on to learn how to turn your interest into expertise and begin a career in robotics technologies.
Inside Robotics Technologies
Robotics technologies consist of all processes necessary to design, build and maintain robots and other intelligent machines. Robots are sophisticated, intelligent systems used to assist pilots and maneuver spacecraft without direct human intervention. They're also the commonplace automated systems that fill our factories and everyday lives.
                                    Because of this diversity of robotics applications, professionals in the field work in a wide variety of industries, from defense and aerospace to manufacturing and design. Within these industries, there are two main roles for personnel with training in robotics technologies. Robotics workers can be divided into robotics engineers and robotics technicians. Robotics engineers are responsible for developing new robotics systems and upgrading the old ones to meet contemporary demands. Technicians, on the other hand, maintain and repair already-existing robotics technology.
                         Robotics technology is a multifarious field with many different opportunities for education and employment. The articles at Study.com have the information you need to choose the path in robotics technologies that's right for you.
Education Information
Robotics engineers must have bachelor's degrees in an applicable field and state licensure to qualify for entry-level employment. According to The Princeton Review, advancement to more competitive jobs in robotics design and research usually entails a graduate degree (www.princetonreview.com). The review also notes that robotics engineers with backgrounds in both engineering and computer sciences may see greater advancement opportunities.
                                       Compared to engineers, the education requirements for robotics engineers are less stringent. According to the U.S. Bureau of Labor Statistics (BLS), a robotics technician associate's degree is typically sufficient for employment as a technician (www.bls.gov). Further postsecondary education, such as a 4-year degree in robotics technology, may open possibilities for a career as an applied engineer or technologist.
                Some universities offer degrees specifically in robotics technologies, but a degree in computer science or mechanical or electrical engineering can be just as attractive to employers. Here are a few links to start you on your education search.
  • Robotics Degrees by Level
  • Computer Science Bachelor's Degree
  • Computer Science Graduate Degrees
  • Mechanical Engineering Bachelor's Degree
  • Electrical Engineering Bachelor's Degree
Distance Learning Options
Since so much of robotics is hands-on work, most distance learning degree programs in the field require some on-campus instruction. There's a variety of online degrees to choose from, and these articles will help you explore your options.
  • Choosing an Online Robotics Program
  • Online Robotics Certificate
  • Online Robotics Degree
  • Online Robotics Courses
Career Options
As discussed above, there are opportunities for employment as both a technician and engineer within the field of robotics. Below are links to articles that delve further into these careers.
  • Robotics Career Overview
  • Robotics Technician
  • Robotics Technologist
  • Robotics Engineer
Employment Information
In May 2013, the BLS reported that electro-mechanical technicians (the group in which robotics technicians fall) made an average annual wage of $$54,160. Employment of these techs is expected to increase four percent between 2012 and 2022, which is slower than average. During the same decade, the BLS projects that employment of electrical and electronics engineers will also grow at the same rate.
Robots 
Rodney Brooks and his team at MIT Artificial Intelligence Lab are working on creating such humanoid robots.
       The type of robots that you will encounter most frequently are robots that do work that is too dangerous, boring, onerous, or just plain nasty. Most of the robots in the world are of this type. They can be found in auto, medical, manufacturing and space industries. Some robots like the Mars Rover Sojourner and the upcoming Mars Exploration Rover, or the underwater robot Caribou help us learn about places that are too dangerous for us to go. While other types of robots are just plain fun for kids of all ages. Popular toys such as Teckno, Polly or AIBO ERS-220 seem to hit the store shelves every year around Christmas time.

But what exactly is a robot?
As strange as it might seem, there really is no standard definition for a robot. However, there are some essential characteristics that a robot must have and this might help you to decide what is and what is not a robot. It will also help you to decide what features you will need to build into a machine before it can count as a robot.
A robot has these essential characteristics:
  • Sensing First of all your robot would have to be able to sense its surroundings. It would do this in ways that are not unsimilar to the way that you sense your surroundings. Giving your robot sensors: light sensors (eyes), touch and pressure sensors (hands), chemical sensors (nose), hearing and sonar sensors (ears), and taste sensors (tongue) will give your robot awareness of its environment.
  • Movement A robot needs to be able to move around its environment. Whether rolling on wheels, walking on legs or propelling by thrusters a robot needs to be able to move. To count as a robot either the whole robot moves, like the Sojourner or just parts of the robot moves, like the Canada Arm.
  • Energy A robot needs to be able to power itself. A robot might be solar powered, electrically powered, battery powered. The way your robot gets its energy will depend on what your robot needs to do.
  • Intelligence A robot needs some kind of "smarts." This is where programming enters the pictures. A programmer is the person who gives the robot its 'smarts.' The robot will have to have some way to receive the program so that it knows what it is to do.
So what is a robot?
Well it is a system that contains sensors, control systems, manipulators, power supplies and software all working together to perform a task. Designing, building, programming and testing a robots is a combination of physics, mechanical engineering, electrical engineering, structural engineering, mathematics and computing. In some cases biology, medicine, chemistry might also be involved. A study of robotics means that students are actively engaged with all of these disciplines in a deeply problem-posing problem-solving environment.

Types of robots
There are six main types of industrial robots: cartesian, SCARA, cylindrical, delta, polar and vertically articulated. However, there are several additional types of robot configurations. Each of these types offers a different joint configuration.

Common Types of Industrial Robots:

Articulated - This robot design features rotary joints and can range from simple two joint structures to 10 or more joints. The arm is connected to the base with a twisting joint. The links in the arm are connected by rotary joints. Each joint is called an axis and provides an additional degree of freedom, or range of motion. Industrial robots commonly have four or six axes.

Cartesian - These are also called rectilinear or gantry robots. Cartesian robots have three linear joints that use the Cartesian coordinate system (X, Y, and Z). They also may have an attached wrist to allow for rotational movement. The three prismatic joints deliver a linear motion along the axis.

Cylindrical - The robot has at least one rotary joint at the base and at least one prismatic joint to connect the links. The rotary joint uses a rotational motion along the joint axis, while the prismatic joint moves in a linear motion. Cylindrical robots operate within a cylindrical-shaped work envelope.

Polar - Also called spherical robots, in this configuration the arm is connected to the base with a twisting joint and a combination of two rotary joints and one linear joint.  The axes form a polar coordinate system and create a spherical-shaped work envelope.

SCARA - Commonly used in assembly applications, this selectively compliant arm for robotic assembly is primarily cylindrical in design. It features two parallel joints that provide compliance in one selected plane.

Delta - These spider-like robots are built from jointed parallelograms connected to a common base. The parallelograms move a single EOAT in a dome-shaped work area. Heavily used in the food, pharmaceutical, and electronic industries, this robot configuration is capable of delicate, precise movement.
    Typical industrial robots are articulated and feature six axes of motion (6 degrees of freedom). This design allows maximum flexibility. Six-axis robots are ideal for:

Arc Welding
Spot Welding
Material Handling
Machine Tending
Other Applications 
Share:

Copyright © Technotalk | Powered by Academy for brilliance