Top Banner
Martin Peniak Cognitive Robotics Technology and Tools
29

Cognitive robotics tools and technology

Dec 18, 2014

Download

Technology

Martin Peniak

An introductory talk about iCub, iCub simulator, YARP, YARP modules and GPUs, Aquila
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Cognitive robotics tools and technology

Martin Peniak

Cognitive Robotics Technology and Tools

Page 2: Cognitive robotics tools and technology

iCub – iCognitive universal body

YARP – Yet Another Robotics Platform

GPU – Graphics Processing Unit

Aquila – Acquisition of language and actions

Overview

Page 3: Cognitive robotics tools and technology

iCub humanoid robot

The dimensions are similar to that of a 3.5 year old child

53 degrees of freedom

Came from the European Framework 6 project: RobotCub (www.robotcub.org)

There are now 20 iCubs in different labs in Europe and 1 in the US

Continued design - v2.0 to come out

Various ongoing project outcomes are distributed via an open-source software repository and via hardware upgrades

A free iCub simulator is available

Page 4: Cognitive robotics tools and technology

iCub humanoid robotDexterous hands for object manipulation

Page 5: Cognitive robotics tools and technology

iCub humanoid robotAlmost walking

Page 6: Cognitive robotics tools and technology

iCub humanoid robotSimulator

Open-source

Developed as part of a joint effort with the European project iTalk

Widely adopted within cognitive robotics community

V. Tikhanoff, P. Fitzpatrick, F. Nori, L. Natale, G. Metta, and A. Cangelosi, “The icub humanoid robotsimulator,” In International Conference on Intel ligentRObots and Systems IROS, Nice, France, 2008

Page 7: Cognitive robotics tools and technology

Can be broken down into:libYARP_OS - interfacing with the operating system(s) to support easy streaming of data across many threads across many machines

libYARP_sig - performing common signal processing tasks (visual, auditory) in an open manner easily interfaced with other commonly used libraries, for example OpenCV

libYARP_dev - interfacing with common devices used in robotics: framegrabbers, digital cameras, motor control boards, etc.

YARPYet Another Robotic Platform

Supports building a robot control system as a collection of programs communicating via tcp, udp, multicast, local, MPI

Page 8: Cognitive robotics tools and technology

YARPYet Another Robotic Platform

YARP serverYARP module YARP module YARP module

/icub /icubSim

YARP module YARP module

YARP module

Page 9: Cognitive robotics tools and technology

YARP and iCub simulator

Examples

Page 10: Cognitive robotics tools and technology

yarp namespaceyarp pingyarp readyarp regressionyarp resourceyarp rpcyarp rpcserveryarp runyarp serveryarp terminateyarp topicyarp versionyarp waityarp whereyarp write

YARPTerminal commands

yarpyarp helpyarp checkyarp cleanyarp cmakeyarp confyarp detectyarp disconnectyarp existsyarp forwardyarp helpyarp nameyarp name checkyarp name listyarp name unregister

Page 11: Cognitive robotics tools and technology

yarp rpc /icubSim/left_leg/rpc:I6 joints

yarp rpc /icubSim/right_leg/rpc:i 6 joints

yarp rpc /icubSim/torso/rpc:I3 joints

yarp rpc /icubSim/left_arm/rpc:Ithe arm includes the hand for a total of 16 controlled degrees of freedom

yarp rpc /icubSim/right_arm/rpc:Istructure is identical to the left arm

yarp rpc /icubSim/head/rpc:I6 joints

Terminal 1: yarpserverStarts YARP server

Terminal 2: iCub_SIMStarts iCub simulator

Terminal 3: yarp rpc /icubSim/left_arm/rpc:I

Terminal 3: set pos 0 – 90

Terminal 3: set vel 0 50

Terminal 3: set pos 0 90

YARP and iCub simulatorControlling motors

Page 12: Cognitive robotics tools and technology

Terminal 1: yarpserver

Terminal 2: iCub_SIM

Terminal 3: yarpview /left

Terminal 3: yarpview /right

Terminal 3: yarp connect /icubSim/cam/left /left

Terminal 3: yarp connect /icubSim/cam/right /right

Move the iCub’s head and see the vision changing:Terminal 3: yarp rpc /icubSim/head/rpc:I

Terminal 3: set pos 0 -30 (head will move down)

Terminal 3: set pos 0 30 (head will move up)

Easier way is to use the existing graphical user interface:Terminal 3: robotMotorGui

To display camera outputs form the real iCub change the /icubSim prefix with /icub

YARP and iCub simulatorDisplaying camera outputs and controlling joints

Page 13: Cognitive robotics tools and technology

Computation of visual, auditory, and tactile perception while performing elaborate motor control in real-time requires a lot of computation

Page 14: Cognitive robotics tools and technology

YARP can run across any number of machines with different operating systems

Page 15: Cognitive robotics tools and technology

YARPYet Another Robotic Platform

YARP server(Linux)

YARP module(Windows)

YARP module(OSX)

YARP module(Linux)

/icub /icubSim

YARP module(OSX)

YARP module(Linux)

YARP module(Windows)

Page 16: Cognitive robotics tools and technology

Biologically-inspired models used in cognitive robotics are inherently parallel and can greatly benefit from massively parallel devices such as GPU processors

Page 17: Cognitive robotics tools and technology

The GPU Computing Revolution CPUGPU

Page 18: Cognitive robotics tools and technology

Different goals produce different designsGPU assumes work load is highly parallelCPU must be good at everything, parallel or not

CPU: minimize latency experienced by 1 threadbig on-chip cachessophisticated control logic

GPU: maximize throughput of all threads# threads in flight limited by resources => lots of resources (registers, bandwidth, etc.)multithreading can hide latency => skip the big cachesshare control logic across many threads

CPU vs. GPU

Page 19: Cognitive robotics tools and technology

CPU vs. GPU

Page 20: Cognitive robotics tools and technology

High throughput computationGeForce GTX 690: 2 x 2811 GFLOP/s

High bandwidth memoryGeForce GTX 690: 2 x 192 GB/s

High availability to all200+ million CUDA-capable GPUs in the world

GPU Evolution

1995 2000 2005 2010

RIVA 1283M xtors

GeForce 256 23M xtors

GeForce FX125M xtors

GeForce 8800

681M xtors

GeForce 3 60M xtors

“Fermi”3B xtors

“Kepler”

7B xtors

2012

Page 21: Cognitive robotics tools and technology

21

Nvidia creates CUDA to facilitate the development of parallel programs on GPUs (2007)

The CUDA language is ANSI C extended with very few keywords for labeling data-parallel functions (kernels) and their associated data

Nvidia technology benefits from massive economies of scale in the gaming market, CUDA-enabled cards are very inexpensive for the performance they provide

Programming GPUs with CUDAHistory

Page 22: Cognitive robotics tools and technology

Cognitive robotics research toolkit

Aquila

Page 23: Cognitive robotics tools and technology

InspirationSimplification of commonly used features on the iCub and the simulator

Page 24: Cognitive robotics tools and technology

InspirationDevelopment of bio-inspired models and tools

Page 25: Cognitive robotics tools and technology

InspirationScalability modularity and platform-independency

/aquila/yarprun/0 /aquila/yarprun/1 /aquila/yarprun/2

GPUCPU

Page 26: Cognitive robotics tools and technology

InspirationOvercoming computational constrains by using GPU processors

Motion compliance < 1 ms

Vision (30fps) < 33 ms

Vision (60fps) < 16 ms

We typically take 33 ms as the cut-off time. 1 complete cycle of everything critical MUST be completed in that time.

Of course some processes are not critical and their information can be used as and when it becomes available, subject to various constraints.

Page 27: Cognitive robotics tools and technology

Aquila 2.0

Page 28: Cognitive robotics tools and technology
Page 29: Cognitive robotics tools and technology

Questions?