ABOUT ME. Gianluca Bardaro, PhD student in Robotics Contacts: Research field: goo.gl/dbwhhc.

Similar documents
ABOUT ME. Gianluca Bardaro, PhD student in Robotics Contacts: Research field:

EE-565-Lab2. Dr. Ahmad Kamal Nasir

Gazebo. Amirreza Kabiri Fatemeh Pahlevan Aghababa. Autumn 2017

John Hsu Nate Koenig ROSCon 2012

The Kinematic Chain or Tree can be represented by a graph of links connected though joints between each Link and other links.

ROS-Industrial Basic Developer s Training Class. Southwest Research Institute

You can also export a video of what one of the cameras in the scene was seeing while you were recording your animations.[2]

3D Simulation in ROS. Mihai Emanuel Dolha Intelligent Autonomous Systems Technische Universität München. November 4, 2010

MODELING AND HIERARCHY

Programming for Robotics Introduction to ROS

Modelling of mechanical system CREATING OF KINEMATIC CHAINS

Construction of SCARA robot simulation platform based on ROS

Robot mechanics and kinematics

Inverse Kinematics. Given a desired position (p) & orientation (R) of the end-effector

Lab 2A Finding Position and Interpolation with Quaternions

SDFusion. Release 0.0.

Preface...vii. Printed vs PDF Versions of the Book...ix. 1. Scope of this Volume Installing the ros-by-example Code...3

URDF and You ROSCON David Lu!! Ph.D. Student Washington University In St. Louis. May 19, 2012

Robocup In summary. Amirreza Kabiri Fatemeh Pahlevan Aghababa

Introduction to V-REP

Robot mechanics and kinematics

Creating joints for the NovodeX MAX exporter

Kinematics Fundamentals CREATING OF KINEMATIC CHAINS

Chapter 4. Mechanism Design and Analysis

V-REP. QUICK User manual

ROS-Industrial Basic Developer s Training Class

Distributed Robotic Architecture

Chapter 19- Object Physics

ROBOTICS 01PEEQW. Basilio Bona DAUIN Politecnico di Torino

Robotics kinematics and Dynamics

EEE 187: Robotics Summary 2

Basilio Bona ROBOTICA 03CFIOR 1

What Is SimMechanics?

Game Programming with. presented by Nathan Baur

This allows you to choose convex or mesh colliders for you assets. Convex Collider true = Convex Collider. Convex Collider False = Mesh Collider.

Flexible Modeling and Simulation Architecture for Haptic Control of Maritime Cranes and Robotic Arms

OPENRAVE TUTORIAL. Robot Autonomy Spring 2014

Lesson 1: Introduction to Pro/MECHANICA Motion

Model Library Mechanics

MatODE. Wouter Caarls and Erik Schuitema {w.caarls, December 21, 2011

Big Bad Beetle Blocks» Linux Magazine

Not For Sale. Offline Scratch Development. Appendix B. Scratch 1.4

Lecture VI: Constraints and Controllers

Introduction to the Robot Operating System (ROS) Middleware

Robotics Prof. Dilip Kumar Pratihar Department of Mechanical Engineering Indian Institute of Technology, Kharagpur

Master Thesis LSRO ROS interface and URDF parser for Webots

1. Introduction 1 2. Mathematical Representation of Robots

Lecture VI: Constraints and Controllers. Parts Based on Erin Catto s Box2D Tutorial

Robotics (Kinematics) Winter 1393 Bonab University

WEEKS 1-2 MECHANISMS

Lecture «Robot Dynamics»: Kinematics 3

Lecture «Robot Dynamics»: Multi-body Kinematics

The Python Mini-Degree Development Environment Guide

Gazebo Tutorial (by Rasko Pjesivac )

A Different Approach for Continuous Physics. Vincent ROBERT Physics Programmer at Ubisoft

Robotics Configuration of Robot Manipulators

Industrial Calibration. Chris Lewis Southwest Research Institute

Design of a dynamic simulation system for VR applications

: A Fast Symbolic, Dynamic Simulator interfaced with

Game Programming. Bing-Yu Chen National Taiwan University

Modeling. Anuj Agrawal Dan Bibyk Joe Pompeani Hans Winterhalter

Lecture «Robot Dynamics»: Kinematics 3

animation computer graphics animation 2009 fabio pellacini 1 animation shape specification as a function of time

animation computer graphics animation 2009 fabio pellacini 1

Articulated Objects Dataset

CS 352: Computer Graphics. Hierarchical Graphics, Modeling, And Animation

Kinematics of Machines. Brown Hills College of Engineering & Technology

Hands-On Session: Robotic Control

Creating Mercator s Map Projection

10/25/2018. Robotics and automation. Dr. Ibrahim Al-Naimi. Chapter two. Introduction To Robot Manipulators

S7316: Real-Time Robotics Control and Simulation for Deformable Terrain Applications Using the GPU

animation projects in digital art animation 2009 fabio pellacini 1

An Improved Approach for Mechanics Simulation Based on Game Engine

Tolerance Analysis of Deformable Assembly

TENTH WORLD CONGRESS ON THE THEORY OF MACHINE AND MECHANISMS Oulu, Finland, June 20-24, 1999 Finding Innitesimal Motions of Objects in Assemblies Usin

ME 321 Kinematics and Dynamics of Machines

Animation. Keyframe animation. CS4620/5620: Lecture 30. Rigid motion: the simplest deformation. Controlling shape for animation

ROBOT OPERATING SYSTEM AN INTRODUCTION BY SYED MUHAMMAD ABBAS LUMS SCHOOL OF SCIENCE & ENGINEERING, PAKISTAN

INF Introduction to Robot Operating System

Kinematics. Kinematics analyzes the geometry of a manipulator, robot or machine motion. The essential concept is a position.

Jane Li. Assistant Professor Mechanical Engineering Department, Robotic Engineering Program Worcester Polytechnic Institute

Introduction to Unity. What is Unity? Games Made with Unity /666 Computer Game Programming Fall 2013 Evan Shimizu

Final Project Report by Ai Ti Cheng. Topic: Creation and rendering of realistic trees Jason Weber and Joseph Penn

Creating the Tilt Game with Blender 2.49b

Kinematic Synthesis. October 6, 2015 Mark Plecnik

IntroductionToRobotics-Lecture02

Kinematics of the Stewart Platform (Reality Check 1: page 67)

Introduction to Digital Modelling and Animation in Design week 4 Textures

Geometry proxies (in 2D): a Convex Polygon

Hand. Desk 4. Panda research 5. Franka Control Interface (FCI) Robot Model Library. ROS support. 1 technical data is subject to change

Easy View Manual Nicolaudie-Sunlite

Project Chrono. Overview, structure, capabilities

ME451 Kinematics and Dynamics of Machine Systems

2 Installing the Software

ARGoS Plug-ins for Experiments in Autonomous Construction

Last Time? Inverse Kinematics. Today. Keyframing. Physically-Based Animation. Procedural Animation

Kinematics - Introduction. Robotics. Kinematics - Introduction. Vladimír Smutný

Modeling Objects. Modeling. Symbol-Instance Table. Instance Transformation. Each appearance of the object in the model is an instance

V-REP Robot Simulator as a Validation Tool for Computer Vision

10/11/07 1. Motion Control (wheeled robots) Representing Robot Position ( ) ( ) [ ] T

Transcription:

ABOUT ME Gianluca Bardaro, PhD student in Robotics Contacts: gianluca.bardaro@polimi.it 02 2399 3565 Research field: Formal approach to robot development Robot and robot architecture models Robot simulation

GAZEBOSIM AND SDF ROBOTICS

WHAT IS A SIMULATION Simulation is the imitation of the operation of a real-world process or system over time. The act of simulating something first requires that a model be developed; this model represents the key characteristics or behaviors/functions of the selected physical or abstract system or process. The model represents the system itself, whereas the simulation represents the operation of the system over time.

FOR WHAT PURPOSE? Robots are small and safe can be easily tested in the filed require real world interactions But robots can be big and dangerous need to be tested in some specific conditions have a behavior based on software which is prone to bugs Moreover as engineers we know that everything should be based on a well detailed project and should be tested and verified before any real application

FOR WHAT PURPOSE? Robots are small and safe can be easily tested in the filed require real world interactions But robots can be big and dangerous need to be tested in some specific conditions have a behavior based on software which is prone to bugs Moreover as engineers we know that everything should be based on a well detailed project and should be tested and verified before any real application

FOR WHAT PURPOSE? Robots are small and safe can be easily tested in the filed require real world interactions But robots can be big and dangerous need to be tested in some specific conditions have a behavior based on software which is prone to bugs Moreover as engineers we know that everything should be based on a well detailed project and should be tested and verified before any real application Remember to test and simulate, it can save your life!

ROBOT SIMULATORS Real world interaction Integration with robot frameworks Physics simulation GOOD SIMULATOR Flexibility Sensors simulation Simplicity in building robot models

ROBOT SIMULATORS

BACK IN THE DAY ROS become famous Standard de facto in robot software development Gazebo become part of ROS Development frozen at v2.0 Currently at version 8.0 Only available 3D simulator for ROS Gazebo become famous Gazebo regain its independence No more part of ROS, but still compatible

WHY GAZEBO? Main features of Gazebo Dynamic simulation based on various physics engines (ODE, Bullet, Simbody and DART) Sensors (with noise) simulation Plugin to customize robots, sensors and the environment Realistic rendering of the environment and the robots Library of robot models and model editor ROS integration Advanced features Remote & cloud simulation Open source

SYSTEM REQUIREMENTS Gazebo is currently best used on Ubuntu. I strongly suggest a computer with: A dedicated GPU Any modern CPU At least 500MB of free disk space Ubuntu Xenial Versions used in this course: Ubuntu 16.04.2 LTS (Xenial Xerus) & Gazebo 7.0

INSTALLATION In a working installation of Ubuntu 16.04.2: $ sudo apt-get update $ sudo apt-get install gazebo7 To run Gazebo: $ gazebo

PREDICTABLE QUESTIONS What kind of existing knowledge do I need to use Gazebo? LITTLE Can I use a different/newer/older version of Gazebo? YES (5.0/6.0/8.0) Can I use a different/newer/older version of Ubuntu? YES Can I use a different Linux distribution? YES Can I use Windows/OS X? NO Can I use a virtual machine? YES Is the use of the simulator required for the project? YES I know Gazebo and I hate it! Can I use another simulator? NO

CUSTOMIZATION What kind of customization are we looking for in a simulator? Modifying existing robot or sensor models Building our own robot or sensor models Modifying the behavior of existing robot models Controlling and defining a behavior for our own robot models Creating specific environment compatible with our experiments Integrating the simulation with the user and the robot architecture

CREATING AND MODIFYING A MODEL Using the model editor Newer versions of Gazebo provide tools to create and modify models directly form the user interface Create object and change their shape or position using graphical tools Nice little windows to customize physical and geometrical parameters Easily connect two object with a joint Using simulation description format (SDF) SDF is an evolution of the unified robot description format (URDF) An XML file format that describes environments, objects and robots for robotic simulation Hierarchical and well defined Compact description of a complete simulated world Let s see it in action! Sounds complex but it s powerful and necessary

SIMULATION DESCRIPTION FORMAT As any XML file is composed by tags, but differently from some XML files the structure is quite simple Tag structure: sdf world model actor light <?xml version='1.0'?> <?xml version='1.0'?> <sdf version='1.6'> <sdf version='1.6'> <world name='default'> <actor name='act'>...... </world> </actor> </sdf> </sdf> <?xml version='1.0'?> <?xml version='1.0'?> <sdf version='1.6'> <sdf version='1.6'> <model name='model'> <light name='light'>...... </model> </light> </sdf> </sdf>

SDF/ WORLD The world represent everything inside the simulation ready to be simulated Most important available child tags are: scene, light, model, actor, plugin, gui, include Physics related child tags: physics, gravity, magnetic_field, spherical_coordinates More child tags: audio, atmosphere, wind, road, state, population sdf/(light, model, actor) VS world/(light, model, actor) SDF is an evolution and a substitute of URDF, so it must maintain the same functionalities A valid SDF file may contain only a single or a list object and act as an archive Object defined outside the tag world can be used with the tag include

SDF/MODEL What is a model? A container for the elements of the robot (attributes: name) Composed by links and joints, or other models. Use the include tag to include previously defined models. Recursion can create really complex structures. What is a link? Any rigid element of the robot. Child of the model tag. It has physical and visual properties and collisions

SDF/MODEL What is a joint? Connects two links together with kinematic and dynamics properties Various type of joint are available depending on the behavior of the links (revolute, spherical, ) Always defined between a parent link and a child link pose and frame are two key elements of each of these component. Together they define the position and orientation of each element with respect to another. The correct use of reference frame can vastly simplify the construction of any complex robot.

ABOUT JOINTS Degree of freedom definition: In a mechanical system is the number of independent parameters that define its configuration.

ABOUT JOINTS Revolute (1 DoF) Prismatic (1 DoF) Screw (1 DoF) Cilindric (2 DoF) Sphere (3 DoF) Planar (3 DoF)

MORE ABOUT MODELS Models have complex structures may include various component to improve they appearance and behavior. A specific folder structure is used to define a model:.gazebo/models/my_model: our model folder inside the main Gazebo folder model.config: Meta-data about the model model.sdf: SDF description of the model meshes: a directory for all COLLADA and STL files materials/texture & material/scripts: texture images and material scripts plugins: a directory for all the code used to define the behavior of the model

SDF DEFINITION Looks pretty simple, is this all?! Of course not You can find the complete description of SDF here: http://sdformat.org/spec

LET S SEE AN EXAMPLE Create a model directory mkdir -p ~/.gazebo/models/willy2 Create the configuration file gedit ~/.gazebo/models/willy2/model.config Fill the configuration file Create the sdf file gedit ~/.gazebo/models/willy2/model.sdf Fill the sdf file <?xml version='1.0'?> <sdf version='1.4'> <model name="my_robot"> </model> </sdf> <?xml version="1.0"?> <model> <name>willy2</name> <version>1.0</version> <sdf version='1.4'>willy2.sdf</sdf> <author> <name>builder Bob</name> <email>robert.builder@polimi.it</email> </author> <description> A two wheeled robot. </description> </model>

BUILDING THE ROBOT It s important to build the robot progressively, start with a simple base and add up the other elements The result we want it s something like this: For this we need only a simple link shaped like a box <link name='chassis'> <pose>0 0.1 0 0 0</pose> <collision name='collision'> <geometry> <box> <size>.4.2.1</size> </box> </geometry> </collision> <visual name='visual'> <geometry> <box> <size>.4.2.1</size> </box> </geometry> </visual> </link>

ADDING A CASTER A caster is a simple wheel with no constraint, it s not connected to the body of the robot using a joint, it s used only to sustain the weight. Since there is no joint we can add it to the base using a second collision without defining a new link.

ADDING A CASTER <collision name='caster_collision'> <pose>-0.15 0-0.05000</pose> <geometry> <sphere> <radius>.05</radius> </sphere> </geometry> <surface> <friction> <ode> <mu>0</mu> <mu2>0</mu2> <slip1>1.0</slip1> <slip2>1.0</slip2> </ode> </friction> </surface> </collision> <visual name='caster_visual'> <pose>-0.15 0-0.05000</pose> <geometry> <sphere> <radius>.05</radius> </sphere> </geometry> </visual>

ADDING THE WHEELS The two wheels are real wheels, not like the caster. They are the source of the movement of the robot and they will be controlled. The wheels are defined as links and are connected to the body of the robot using joints.

ADDING THE WHEELS <link name="left_wheel"> <pose>0.1 0.13 0.1 0 1.5707 1.5707</pose> <collision name="collision"> <geometry> <cylinder> <radius>.1</radius> <length>.05</length> </cylinder> </geometry> </collision> <visual name="visual"> <geometry> <cylinder> <radius>.1</radius> <length>.05</length> </cylinder> </geometry> </visual> </link> <link name="right_wheel"> <pose>0.1-0.13 0.1 0 1.5707 1.5707</pose>... </link>

ADDING THE JOINTS <joint type="revolute" name="left_wheel_hinge"> <pose>0 0-0.03 0 0 0</pose> We use joints to connect the wheels to the chassis. Since the wheels are constrained in any direction of movement except for the rotation around an axis we use a revolute joint. <child>left_wheel</child> <parent>chassis</parent> <axis> <xyz>0 1 0</xyz> </axis> </joint> <joint type="revolute" name="right_wheel_hinge"> <pose>0 0 0.03 0 0 0</pose> <child>right_wheel</child>... </joint>

THE ROBOT IS COMPLETE