SlideShare a Scribd company logo
1 of 26
Download to read offline
ROS AND UNITY
A COMPREHENSIVE INTRODUCTION
Danial Bagheri
Supervisor: Sebastian Starke
1
Content:
Ø ROS
§ Introduction
§ What uses ROS at the moment?
§ Peripheral units
§ What make ROS outstanding?
§ Core modules
§ Standard Message Definitions
§ Robot Geometry Library
§ ROS visualizer (RVIZ)
§ Robot Description Language (URDF)
§ Side modules
§ GAZEBO
§ MoveIt
§ OpenCV
§ Arduino
§ How ROS works
§ Publisher- subscriber Topic-
Message
§ Service-client
Ø Unity Introduction
Ø Unity with ROS
Ø Stand alone Unity
2
ROS : Introduction[1]
Ø ROS stands for Robot Operating System . Collection of tools, libraries, and conventions
to simplify the task of creating robot across a wide variety of robotic platforms. [1]
Ø Stablishing and controlling communication between peripheral modules of a robot :
sensors, cameras , physical fingers and etc. [1]
Ø ROS started at Stanford Artificial Intelligence Lab then further developed at Willow
Garage. [2]
Ø ROS is fully functional on Ubuntu and partially functional on other OS like Windows or
Mac[5]
Ø ROS is open source Therefore[5]:
§ It is free
§ There is a large community of contributors. You can be one of them.
http://wiki.ros.org/
3
[3 - Willow Garage http://www.willowgarage.com/pages/software/ros-platform]
[1]
[3]
[4]
[5]
[4 - Ubuntu - The Ubuntu stacked logo http://design.ubuntu.com/brand/ubuntu-logo]
[5 – Wiki.ros.org - Introduction- http://wiki.ros.org/ROS/Introduction]
[1 - Powering the world’s Robots- ROS.ORG- http://www.ros.org/]
[2 - Powering the world’s Robots- ROS.ORG - History http://www.ros.org/history]
What uses ROS at the moment? [1]
Ø Almost all robots you have seen in Academic and to some extend in industry.
Ø Humanoid Robots : Nao®, GeRo®, Robonaut 2, ROBOTIS Thormang3, REEM® , …
Ø Manipulators: Barrett WAM ®, Baxter®, …
Ø Multi-fingered graspers : BarrettHand® , shadowHand, ..
Ø Intelligent vehicles : quadrotor helicopters, Autonomous cars , …
4
[3 – Robotnic – BARRETT WAM - http://www.robotnik.eu/robotics-arms/barrett-wam/]
[4 - ROS Spotlight: Pal Robotics' REEM-C http://www.ros.org/news/2013/12/ros-spotlight-pal-robotics-reem-c.html]
[5 – German robot - Opensource humanoid robot http://www.german-robot.com/]
[1 - Powering the world’s Robots- ROS.ORG – Robots - http://wiki.ros.org/Robots]
[2 – Pullman Academic – Baxter robot- http://www.pullmanacademic.com.au/Products_Robotics_Baxter.html]
[2] [3] [4] [5]
[6]
[7]
[6 – Generation Robotics –NAO - https://www.generationrobots.com/en/401617-programmable-humanoid-
nao-evolution-robot-red.html]
[7 –Shadow Robot Company – Shadowhand -https://www.shadowrobot.com/products/dexterous-hand]
[8 – Barrett Technologies - http://www.barrett.com/products-hand.htm]
[8]
Peripheral units[1]
Ø 1D range finders : TeraRanger, Sharp IR range finder
Ø 2D range finders : SICK LMS2xx lasers, Leuze rotoScan lase
Ø 3D Sensors : DUO3D™ stereo camera, Kinect, PMD Camcube 3.0, …
Ø Cameras : USB Cameras , Ethernet camera, ….
Ø Force/Torque/Touch Sensors: ATI f/t sensors, Nano17 6-axis, …
Ø Motion Capture: OptiTrack, VICON, LEAP Motion , …
Ø Pose Estimation (GPS/IMU) : BOSCH® IMU, Razor's® IMU, …
Ø RFID : UHF RFID Reader
5
[2]
[3] [4]
[5]
[8]
[6]
[7]
[3 – Drexel University- SICK LMS200 tutorial - http://www.pages.drexel.edu/~kws23/tutorials/sick/sick.html
[4 - Digital-circuitry : SICK LMS-200 / LMS-291 LIDAR LASER SCANNER RS-232 INTERFACING WITH UBUNTU &
R.O.S. - http://www.digital-circuitry.com/Wordpress/sick-lms-200-lidar-laser-scanner-interfacing-with-ubuntu/]
[5 – Microsoft –Kinect for Xbox 360 - http://www.xbox.com/en-US/xbox 360/accessories/kinect]
[1 - Powering the world’s Robots- ROS.ORG – Sensors - http://wiki.ros.org/Sensors]
[2 – TeraRanger One - http://www.teraranger.com/product/teraranger-one-distance-sensor-for-drones-and-robotics/]
[6 – Bosch – Mobility sensors SMI130 SMG130 SMA 130- http://www.bosch-
semiconductors.de/en/automotive_electronics/news_4/ces/ces_1.html]
[7 – 9 Degrees of Freedom - Razor IMU - https://www.sparkfun.com/products/retired/10736]
[8 – ATI Industrial Automation - Multi-Axis Force / Torque Sensors- http://www.ati-ia.com/products/ft/sensors.aspx]
What make ROS outstanding?
Ø ROS is completely modular :
Ø Packages : A collection of Nodes, Messages , services.
§ Nodes: a process that uses ROS framework
§ Messages: Standard definition for passing information between nodes.
Ø Stack: Set of multiple package
Ø ROS is multi-language:
Ø C++ : full functionality with ROSCPP library
Ø Python : full functionality with ROSPY library
Ø JAVA, LISP, Octave, LUA : experimental development.
Ø Large set of tools out of box :Standard Robot Messages, Robot Description
Language, pose estimation, localization in a map, building a map, and even mobile
navigation.
Ø Integration with other libraries for: Simulation, Image processing and etc.
6
Powerful ROS libraries
Ø Standard Message Definitions
For Each peripheral module or concept
code compatibility with all other part of the
robotic eco system.
categorized by types in different packages.
Package : geometry_msgs
§ Message Types available in this package:
§ Point
§ Pose
§ Transform
§ …
Ø Example of a message structure:
§ Package : sensor_msgs
§ Message Type : Imu
std_msgs/Header header
geometry_msgs/Quaternion orientation
float64[9] orientation_ covariance
geometry_msgs/Vector3 angular_velocity
float64[9] angular_veloci ty_covariance
geometry_msgs/Vector3 linear_acceleration
float64[9] linear_acceleration_covariance
7
Powerful ROS libraries
Ø Robot Geometry Library
This is essential to keep track of position of each part of robot ,
regarding to the other parts. where is the hand, in respect to
the head ? Where is robot1 regarding to the hand of robot2 ?
§ Transform library (TF) is a core library of ROS and provides
a coordinate tracking system.
§ TF is not a centralized library
§ works base on publisher/subscriber messaging system of
ROS.
Every node has :
§ Publisher (user needs to write)
§ Listener (user needs to write)
Ø TF listeners listen to the frames and
provides a Tree which describes how
coordinate systems are related to each
other.
/map
/robot1/odom
/robot1/base
/robot1/laser /robot1/camera /robot2/laser /robot2/camera
/robot2/odom
/robot2/base
8
[1]
[1 - ROS.ORG – Robot Geometry Library - http://www.ros.org/core-components/]
[2]
[2 – TF ROS tutorial - https://www.youtube.com/watch?v=Xf25dVrG5ks]
Powerful ROS libraries
Ø ROS visualizer (RVIZ)
§ RVIZ is the default 3D visualization tool for.
§ RVIZ is not a ”simulator”.
§ RVIZ can show data that it has a plugin for
displaying (DisplayTypes ) and has been
published by nodes:
§ Axes : Displays a set of Axes
§ Camera: Creates a new rendering window
from the perspective of a camera
§ Map : Displays a map on the ground plane
§ Pose : Draws a pose as an arrow or axes.
§ …..
§ Complete set:
http://wiki.ros.org/rviz/DisplayTypes
§ Each DisplayType uses specific message.
Axes => sensor_msgs/JointStates
9
[Powering the world’s Robots- ROS.ORG - RVIZ Camera type
http://wiki.ros.org/rviz/DisplayTypes/Camera]
Powerful ROS libraries
Ø Robot Description Language (URDF)
Describe a robot in a machine readable format.
URDF is an XML file describing following physical properties:
§ Main parts: cylinder, box, length, radius, …
§ Joints : continuous joints, prismatic joint, planar joint, Joint Dynamics
(friction, damping) , Inertia
Used by different tools for simulation, visualization and motion planning:
§ Rviz
§ Gazebo
§ Moveit
§ Stage
Ø Example of an URDF file:
<?xml version="1.0"?>
<robot name="multipleshapes">
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</visual>
</link>
<link name="right_leg">
<visual>
<geometry>
<box size="0.6 .1 .2"/>
</geometry>
</visual>
</link>
<joint name="base_to_right_leg" type="fixed">
<parent link="base_link"/>
<child link="right_leg"/>
</joint>
</robot>
10
[ROS.ORG - Building a Visual Robot Model with URDF from Scratch
http://wiki.ros.org/urdf/Tutorials/Building a Visual Robot Model with URDF from Scratch
Powerful ROS 3rd party tools
§ URDF in Gazebo : URDF describes kinematic
and dynamic properties of a robot.
§ Not enough information for Gazebo for
accurate simulation : pose, friction, …
§ Simulation Description Format(SDF)
invented for simulation in Gazebo.
§ Stable, robust, and extensible format for
describing all aspects of robots, static and
dynamic objects, lighting, friction and even
physics.
§ SDF uses XML files like URDF.
Ø GAZEBO
§ Simulation environment and supports many
robots and sensors.
§ Developing and test a node without a physical
robot.
§ Deployment of after test with minimal change.
§ Start with ’gazebo’ command
§ ’gzserver’ :
§ Run the physics
§ Sensor data generation
§ Can be used without any GUI
§ ’gzclient’:
§ Provide a GUI for visualization of
simulation
11
Powerful ROS 3rd party tools
Ø GAZEBO
§ Converting URDF to SDF
§ Add tags and modify the URDF for example:
§ An <inertia> element within each <link> element
must be properly specified and configured.
§ Add a <gazebo> element for every <link>
§ Add a <gazebo> element for every <joint>
§ Add a <gazebo> element for the <robot> element
§ …
§ The complete instruction in Gazebo website.
Ø Part of an SDF as example
<camera name="head">
<horizontal_fov>1.3962634</horizontal_fov>
<image>
<width>800</width>
<height>800</height>
<format>R8G8B8</format>
</image>
<clip>
<near>0.02</near>
<far>300</far>
</clip>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.007</stddev>
</noise>
</camera>
12
Powerful ROS 3rd party tools
Ø Moveit
§ The most widely used open-source
software for manipulation, motion
planning and analyzing of robot
interaction with environment.
§ Capabilities:
§ Collision checking
§ Integrated kinematics
§ Motion planning
§ Integrated perceptions about
environment
§ Execution and monitoring
§ Interactive
13
MoveIt in Rviz moving the ABB robot around - https://www.youtube.com/watch?v=0hS0XUOgYXk -
Pablo Negrete
Powerful ROS 3rd party tools
Ø OpenCV
§ The most powerful image processing library
§ Implemented in Python and C++.
§ Many functionalities out of box : Face
detectio, Object tracking ,motion analysis,
Feature detection and …
§ ROS have drivers for many sort of cameras:
§ openni_kinect for Microsoft kinect
§ gscam for most webcams
§ swissranger_camera
§ …
§ ROS uses sensor_msgs/Image message
and OpenCV need matrices for images.
§ Conversion by cv_bridge stack.
§ Conversion by cv_bridge : ready functions
cv_ptr = cv_bridge::toCvCopy(msg,
sensor_msgs::image_encodings::BGR8);
cv::circle(cv_ptr->image, cv::Point(50, 50),
10, CV_RGB(255,0,0));
14
[ROS.ORG- vision_opencv - http://wiki.ros.org/vision_opencv]
ROS and external hardware : Arduino
Ø Arduino
§ A microcontroller with powerful interface
library for different hardware.
§ Different I/O ports : Analog and digital
§ C-like language and syntax , Easy to
program. Many open source projects.
§ Implementation
§ ROS side : rosserial stack for serialization of message
over USB [3]
§ Arduino side: rosserial_arduino to create messages,
publish, subscribe. [3]
ros_lib UART
Arduino
USB rosserial_python
serial_node.py
tty
ROS
#include <ros.h> <std_msgs/String.h>
ros::NodeHandle n; std_msgs::String msg;
ros::Publisher pub("/my_topic", &msg); int count = 0;
char data[100];
void setup(){
n.initNode();
n.advertise(pub);
}
void loop(){
sprintf(data, "Hello world %d", ++count);
msg.data = data;
pub.publish(&msg);
n.spinOnce();
delay(1000);
}
15
[1 - Arduino Products - https://www.arduino.cc/en/Main/Products]
[1] [2]
[3]
[2 – German robot - Opensource humanoid robot http://www.german-robot.com/]
http://wiki.ros.org/rosserial_arduino
[3 – Wiki.ros.org - rosserial_arduinoTutorials - http://wiki.ros.org/rosserial_arduino/Tutorials]
How ROS works ?
Ø Nodes – Messages – Topics
§ Node : a process that uses ROS framework.
ROSCORE connects all nodes together and
provide connectivity.
ROSCORE Node
Node
§ Message: Standard definitions for
transferring data between nodes.
§ Topic: Mechanism of transferring data
between nodes.
§ Publisher: A node which produce message
and publish them.
§ Subscriber: A node which receives the
messages.
Ø Workflow:
1. Node A publish a message to a topic
2. All nodes which are subscribed to that
topic, will receive the message.
Node A :
Publisher
Topic :
Odometry
Node B:
subscriber
Node C:
subscriber
Ø Nodes commands:
§ rosrun package
executable
§ Roslaunch
package_name
file.launch
Ø Topiccommands:
#show list of messages inside
topic
§ Rostopic echo /topicName
§ Rostopic list
§ Rostopic info topicName
16
How ROS works ?
Ø Service-Client
The publish/subscribe model is very flexible but not enough for a
distributed system.
§ Service-Client is way to retrieve the data immediately instead
of waiting for a message to be published.
§ A node provides a service , the client node call the service by
sending request message.
§ Service-client => one-to-one
§ Topic- message => one-to-one, one-to-many, many-to-many
ROS Node
Service
ROS Node
Client
Request Response
17
[Mathwork -
https://de.mathworks.com/help/robotics/examples/
call-and-provide-ros-services.html]
Implementation example : Message-Topic
Ø Subscribing to a topic
# Initialize rospy
NODE_NAME = 'localization'
import roslib; roslib.load_manifest(NODE_NAME)
import rospy
# Import LaserScan message type
from nav_msgs.Odometry import *
# Scan message handler
def odom_handler(msg):
# this code is executed whenever a scan is published
[...]
# Main function
def main():
rospy.init_node(NODE_NAME)
rospy.Subscriber("/odom", Odometry, odom_handler)
rospy.spin()
Topic name
This is a callback
function.
This is called whenever a
message of type
Odometry is received.
Callback function
18
Implementation example : Message-Topic
Ø Publishing to a topic
# Initialize rospy
NODE_NAME = 'localization'
import roslib; roslib.load_manifest(NODE_NAME)
import rospy
# Import standard String message type
from std_msgs.msg import *
# Main function
def main():
pub = rospy.Publisher(“/scout/viewer”, String)
rospy.init_node(NODE_NAME)
msg = “Hello world”
pub.publish( String(msg) )
Topic name
Publish function
Constructor call of
message
Ø Main benefits of message/topic system
§ capture messages in a file And replay them
later independently
§ Clear communication structure between side
tools and libraries. As pointed out for
example in RVIZ
19
Implementation example : Service-client
Ø Service
# Initialize rospy
NODE_NAME = 'localization'
import roslib; roslib.load_manifest(NODE_NAME)
import rospy
# Import standard String message type
from std_msgs.msg import *
# Service handler
def handler(req):
# this code is executed whenever the service is called
return LocalizationSrvResponse()
# Main function
def main():
rospy.init_node(NODE_NAME)
rospy.Service("/scout/localization", LocalizationSrv, handler)
rospy.spin()
Service name
Service type
Service functionality
Ø client
# Initialize rospy
NODE_NAME = ‘viewer '
import roslib; roslib.load_manifest(NODE_NAME)
import rospy
# Import standard String message type
from std_msgs.msg import *
# Main function
def main():
srv = rospy.ServiceProxy("/scout/localization",LocalizationSrv)
rospy.init_node(NODE_NAME)
response = srv(1, x, y, theta)
20
How nodes find each other : ROS Master
Ø One node is a ROS Master by running
roscore command on it.
Ø Keep track of publishers, subscribers and
topics.
Ø After nodes locate each other, they
communicate peer-to-peer.
Master
Camera
(Publisher)
Image Viewer
Publish on
Image topic
Master
Camera
(Publisher)
Image
Viewer
Subscribe
to image topic
Image
Master
Camera
(Publisher)
Image
Viewer
Image
topic
topic
21
[ROS.ORG – ROS Master - http://wiki.ros.org/Master ]
Ø Steps:
Publisher informs the ROS master about the topic and start
publishing.
Subscriber informs the ROS master about the interested
topics
ROS master inform Publisher that who is interested , and
publisher start sending messages to them.
Unity: Introduction
Ø Unity is game engine used to created high qualified visual
scenes.
Ø Unity is visualization tool not a simulation.
Ø Unity is widely used for virtual reality (VR) tasks because:
§ Multi-platform : OSX, Windows, MAC, Android , ….
§ Powerful physics engine : gravity and collisions
§ Very GUI lets you drag and drop elements
§ Programming languages : C# and Javascript
22
[3- Unity Interface overview - Unity Official Tutorials - https://www.youtube.com/watch?v=5cPYpI6_yLs]
[1 – Deviant art – Angry birds logo - http://www.deviantart.com/morelikethis/421156366]
[1]
[3]
[2]
[2 – Geforde – Assassin's Creed Unity Graphics & Performance Guide - http://www.geforce.com/whats-new/guides/assassins-creed-unity-graphics-and-performance-guide]
Ø Unity interface
Unity with ROS
Ø Unity instead of RVIZ For visualization?
Not a good idea but possible.
§ ROS messages => events processed by
rendering loop in Unity.
§ liveliness of visualization is lost because
rendering should be fast.
§ Method : Connection between ROS-Unity by ROS
bridge.
§ Rosbrige : connection to outside world by JSON
API through web sockets
§ roslaunch rosbridge_server
rosbridge_websocket.launch
Creates a web socket server working on port 9090
§ Outside software call the server/port for
communication
Ros bridge
ROS
Web socket
server
Unity
API
rosserial_python
serial_node.py
Rendering
lib
JSON
Data
{"op": "subscribe",
"topic": "/clock",
"type": "rosgraph_msgs/Clock”}.
{"op": "publish",
"topic": "/unity/joy",
"msg": msg}.
Ø JSON Data examples:
23
Stand alone Unity
Ø Graphical robot controller : The reverse of previous
project
§ Sending move commands from graphical robot to
physical robot
§ Input from environment by camera, Kinect , etc to
control graphical robot.
Ø Physical Robot => Arduino robotic frame
ware
Ø Calculation of position, etc => Unity
Ø Unity to Arduino Connection => USB
Ø Benefit : Control robot in Real time with
human interaction
24
[1 - The Robot Engine - Making The Unity 3D Game Engine Work For HRI
Christoph Bartneck, Marius Soucy, Kevin Fleuret, Eduardo B. Sandoval]
[1]
Conclusions
ØComplete OS for Robotics
ØNo equivalent
ØSuitable for industrial large
scale robotic projects
ØPowerful visualization tool
ØSome equivalents: Unreal, DirectX, …
ØSuitable for game, design and graphic
industry
ØTo some extend Human Robot Interaction
ØResearch subject : Combining
Unity3D and ROS for nice
environment simulation.
ØWhat about sensor data ?????
25
References:
§ ROS wiki - http://wiki.ros.org/
§ Powering the world’s Robots- ROS.ORG- http://www.ros.org/
§ The Robot Engine - Making The Unity 3D Game Engine Work For HRI - Christoph Bartneck,
Marius Soucy, Kevin Fleuret, Eduardo B. Sandoval
§ From ROS to Unity: leveraging robot and virtual environment middleware for immersive
teleoperation - R. Codd-Downey, P. Mojiri Forooshani, A. Speers, H. Wang and M. Jenkin
§ GAZEBO - Robot simulation made easy - http://gazebosim.org/
§ MoveIt! Motion Planning Framework - http://moveit.ros.org/
§ Unity3D - https://unity3d.com/
§ Mathwork - https://de.mathworks.com/help/robotics/examples/call-and-provide-ros-
services.html
26

More Related Content

What's hot

Robot Control using ROS: an Introduction
Robot Control using ROS: an IntroductionRobot Control using ROS: an Introduction
Robot Control using ROS: an IntroductionJago Robotika Indonesia
 
Introduction to ROS (Robot Operating System)
Introduction to ROS (Robot Operating System) Introduction to ROS (Robot Operating System)
Introduction to ROS (Robot Operating System) hvcoup
 
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법Yoonseok Pyo
 
ROS SERIAL and OpenCR
ROS SERIAL and OpenCRROS SERIAL and OpenCR
ROS SERIAL and OpenCRYoonseok Pyo
 
An Introduction to ROS-Industrial
An Introduction to ROS-IndustrialAn Introduction to ROS-Industrial
An Introduction to ROS-IndustrialClay Flannigan
 
The humanoid robots
The humanoid robotsThe humanoid robots
The humanoid robotsRajeev Verma
 
ROS+GAZEBO
ROS+GAZEBOROS+GAZEBO
ROS+GAZEBOicmike
 
Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)jeffz
 
Robotics project ppt
Robotics project pptRobotics project ppt
Robotics project pptYash Bhawre
 
Robot operating system [ROS]
Robot operating system [ROS]Robot operating system [ROS]
Robot operating system [ROS]Abrar Mohamed
 
Introduction robotics
Introduction roboticsIntroduction robotics
Introduction roboticsIjal Mustofa
 
Presentation of robotics
Presentation of roboticsPresentation of robotics
Presentation of roboticsQaiserAnsari3
 
Que es la robotica y su importancia
Que es la robotica y su importanciaQue es la robotica y su importancia
Que es la robotica y su importanciaAndres Jara
 
Robotics: The Study of Robots
Robotics: The Study of RobotsRobotics: The Study of Robots
Robotics: The Study of RobotsIjajAhmedJaman
 

What's hot (20)

Robot Control using ROS: an Introduction
Robot Control using ROS: an IntroductionRobot Control using ROS: an Introduction
Robot Control using ROS: an Introduction
 
Introduction to ROS (Robot Operating System)
Introduction to ROS (Robot Operating System) Introduction to ROS (Robot Operating System)
Introduction to ROS (Robot Operating System)
 
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
 
Robotics ppt
Robotics pptRobotics ppt
Robotics ppt
 
ROS SERIAL and OpenCR
ROS SERIAL and OpenCRROS SERIAL and OpenCR
ROS SERIAL and OpenCR
 
An Introduction to ROS-Industrial
An Introduction to ROS-IndustrialAn Introduction to ROS-Industrial
An Introduction to ROS-Industrial
 
The humanoid robots
The humanoid robotsThe humanoid robots
The humanoid robots
 
ROS+GAZEBO
ROS+GAZEBOROS+GAZEBO
ROS+GAZEBO
 
Robotics Presentation
Robotics PresentationRobotics Presentation
Robotics Presentation
 
Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)
 
Robotics project ppt
Robotics project pptRobotics project ppt
Robotics project ppt
 
Robot operating system [ROS]
Robot operating system [ROS]Robot operating system [ROS]
Robot operating system [ROS]
 
Robotics and ROS
Robotics and  ROSRobotics and  ROS
Robotics and ROS
 
Introduction robotics
Introduction roboticsIntroduction robotics
Introduction robotics
 
Axure Basic Concepts
Axure Basic ConceptsAxure Basic Concepts
Axure Basic Concepts
 
Presentation of robotics
Presentation of roboticsPresentation of robotics
Presentation of robotics
 
Robotics ppt
Robotics pptRobotics ppt
Robotics ppt
 
robotics ppt
robotics ppt robotics ppt
robotics ppt
 
Que es la robotica y su importancia
Que es la robotica y su importanciaQue es la robotica y su importancia
Que es la robotica y su importancia
 
Robotics: The Study of Robots
Robotics: The Study of RobotsRobotics: The Study of Robots
Robotics: The Study of Robots
 

Similar to ROS and Unity.pdf

Robotics Operating System Research Tool
Robotics Operating System Research Tool Robotics Operating System Research Tool
Robotics Operating System Research Tool Bahaa Elden Ali
 
ROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor HelicoptersROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor HelicoptersAtılay Mayadağ
 
ROS2 on WebOS - Brian Shin(LG)
ROS2 on WebOS - Brian Shin(LG)ROS2 on WebOS - Brian Shin(LG)
ROS2 on WebOS - Brian Shin(LG)AI Robotics KR
 
ROS_Course_Syllabus learning path for operating system
ROS_Course_Syllabus learning path for operating systemROS_Course_Syllabus learning path for operating system
ROS_Course_Syllabus learning path for operating systemNandhakumarNANDY1
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Pierre Joye
 
An ontology-based approach to improve the accessibility of ROS-based robotic ...
An ontology-based approach to improve the accessibility of ROS-based robotic ...An ontology-based approach to improve the accessibility of ROS-based robotic ...
An ontology-based approach to improve the accessibility of ROS-based robotic ...Vrije Universiteit Amsterdam
 
Open Source Storage at Scale: Ceph @ GRNET
Open Source Storage at Scale: Ceph @ GRNETOpen Source Storage at Scale: Ceph @ GRNET
Open Source Storage at Scale: Ceph @ GRNETNikos Kormpakis
 
Raspberry Pi + ROS
Raspberry Pi + ROSRaspberry Pi + ROS
Raspberry Pi + ROSArnoldBail
 
Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirHideki Takase
 
Building Your Robot using AWS Robomaker
Building Your Robot using AWS RobomakerBuilding Your Robot using AWS Robomaker
Building Your Robot using AWS RobomakerAlex Barbosa Coqueiro
 
Building Robotics Application at Scale using OpenSource from Zero to Hero
Building Robotics Application at Scale using OpenSource from Zero to HeroBuilding Robotics Application at Scale using OpenSource from Zero to Hero
Building Robotics Application at Scale using OpenSource from Zero to HeroAlex Barbosa Coqueiro
 
Copmuter Languages
Copmuter LanguagesCopmuter Languages
Copmuter Languagesactanimation
 
Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-onBill Ott
 

Similar to ROS and Unity.pdf (20)

Robotics Operating System Research Tool
Robotics Operating System Research Tool Robotics Operating System Research Tool
Robotics Operating System Research Tool
 
Ros Kd
Ros KdRos Kd
Ros Kd
 
ROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor HelicoptersROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor Helicopters
 
6202942
62029426202942
6202942
 
ROS ROV AUV
ROS ROV AUVROS ROV AUV
ROS ROV AUV
 
ROS2 on WebOS - Brian Shin(LG)
ROS2 on WebOS - Brian Shin(LG)ROS2 on WebOS - Brian Shin(LG)
ROS2 on WebOS - Brian Shin(LG)
 
Ros rov talk
Ros rov talk Ros rov talk
Ros rov talk
 
ROS_Course_Syllabus learning path for operating system
ROS_Course_Syllabus learning path for operating systemROS_Course_Syllabus learning path for operating system
ROS_Course_Syllabus learning path for operating system
 
librados
libradoslibrados
librados
 
librados
libradoslibrados
librados
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
An ontology-based approach to improve the accessibility of ROS-based robotic ...
An ontology-based approach to improve the accessibility of ROS-based robotic ...An ontology-based approach to improve the accessibility of ROS-based robotic ...
An ontology-based approach to improve the accessibility of ROS-based robotic ...
 
Open Source Storage at Scale: Ceph @ GRNET
Open Source Storage at Scale: Ceph @ GRNETOpen Source Storage at Scale: Ceph @ GRNET
Open Source Storage at Scale: Ceph @ GRNET
 
Raspberry Pi + ROS
Raspberry Pi + ROSRaspberry Pi + ROS
Raspberry Pi + ROS
 
Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 
Building Your Robot using AWS Robomaker
Building Your Robot using AWS RobomakerBuilding Your Robot using AWS Robomaker
Building Your Robot using AWS Robomaker
 
Building Robotics Application at Scale using OpenSource from Zero to Hero
Building Robotics Application at Scale using OpenSource from Zero to HeroBuilding Robotics Application at Scale using OpenSource from Zero to Hero
Building Robotics Application at Scale using OpenSource from Zero to Hero
 
Killer Robots 101 with Gobot
Killer Robots 101 with GobotKiller Robots 101 with Gobot
Killer Robots 101 with Gobot
 
Copmuter Languages
Copmuter LanguagesCopmuter Languages
Copmuter Languages
 
Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-on
 

Recently uploaded

Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...srsj9000
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)Dr SOUNDIRARAJ N
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx959SahilShah
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)dollysharma2066
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfAsst.prof M.Gokilavani
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort servicejennyeacort
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
DATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage exampleDATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage examplePragyanshuParadkar1
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfme23b1001
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...Chandu841456
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineeringmalavadedarshan25
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
EduAI - E learning Platform integrated with AI
EduAI - E learning Platform integrated with AIEduAI - E learning Platform integrated with AI
EduAI - E learning Platform integrated with AIkoyaldeepu123
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvLewisJB
 

Recently uploaded (20)

Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
 
young call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Serviceyoung call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Service
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
DATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage exampleDATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage example
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdf
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineering
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
EduAI - E learning Platform integrated with AI
EduAI - E learning Platform integrated with AIEduAI - E learning Platform integrated with AI
EduAI - E learning Platform integrated with AI
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvv
 

ROS and Unity.pdf

  • 1. ROS AND UNITY A COMPREHENSIVE INTRODUCTION Danial Bagheri Supervisor: Sebastian Starke 1
  • 2. Content: Ø ROS § Introduction § What uses ROS at the moment? § Peripheral units § What make ROS outstanding? § Core modules § Standard Message Definitions § Robot Geometry Library § ROS visualizer (RVIZ) § Robot Description Language (URDF) § Side modules § GAZEBO § MoveIt § OpenCV § Arduino § How ROS works § Publisher- subscriber Topic- Message § Service-client Ø Unity Introduction Ø Unity with ROS Ø Stand alone Unity 2
  • 3. ROS : Introduction[1] Ø ROS stands for Robot Operating System . Collection of tools, libraries, and conventions to simplify the task of creating robot across a wide variety of robotic platforms. [1] Ø Stablishing and controlling communication between peripheral modules of a robot : sensors, cameras , physical fingers and etc. [1] Ø ROS started at Stanford Artificial Intelligence Lab then further developed at Willow Garage. [2] Ø ROS is fully functional on Ubuntu and partially functional on other OS like Windows or Mac[5] Ø ROS is open source Therefore[5]: § It is free § There is a large community of contributors. You can be one of them. http://wiki.ros.org/ 3 [3 - Willow Garage http://www.willowgarage.com/pages/software/ros-platform] [1] [3] [4] [5] [4 - Ubuntu - The Ubuntu stacked logo http://design.ubuntu.com/brand/ubuntu-logo] [5 – Wiki.ros.org - Introduction- http://wiki.ros.org/ROS/Introduction] [1 - Powering the world’s Robots- ROS.ORG- http://www.ros.org/] [2 - Powering the world’s Robots- ROS.ORG - History http://www.ros.org/history]
  • 4. What uses ROS at the moment? [1] Ø Almost all robots you have seen in Academic and to some extend in industry. Ø Humanoid Robots : Nao®, GeRo®, Robonaut 2, ROBOTIS Thormang3, REEM® , … Ø Manipulators: Barrett WAM ®, Baxter®, … Ø Multi-fingered graspers : BarrettHand® , shadowHand, .. Ø Intelligent vehicles : quadrotor helicopters, Autonomous cars , … 4 [3 – Robotnic – BARRETT WAM - http://www.robotnik.eu/robotics-arms/barrett-wam/] [4 - ROS Spotlight: Pal Robotics' REEM-C http://www.ros.org/news/2013/12/ros-spotlight-pal-robotics-reem-c.html] [5 – German robot - Opensource humanoid robot http://www.german-robot.com/] [1 - Powering the world’s Robots- ROS.ORG – Robots - http://wiki.ros.org/Robots] [2 – Pullman Academic – Baxter robot- http://www.pullmanacademic.com.au/Products_Robotics_Baxter.html] [2] [3] [4] [5] [6] [7] [6 – Generation Robotics –NAO - https://www.generationrobots.com/en/401617-programmable-humanoid- nao-evolution-robot-red.html] [7 –Shadow Robot Company – Shadowhand -https://www.shadowrobot.com/products/dexterous-hand] [8 – Barrett Technologies - http://www.barrett.com/products-hand.htm] [8]
  • 5. Peripheral units[1] Ø 1D range finders : TeraRanger, Sharp IR range finder Ø 2D range finders : SICK LMS2xx lasers, Leuze rotoScan lase Ø 3D Sensors : DUO3D™ stereo camera, Kinect, PMD Camcube 3.0, … Ø Cameras : USB Cameras , Ethernet camera, …. Ø Force/Torque/Touch Sensors: ATI f/t sensors, Nano17 6-axis, … Ø Motion Capture: OptiTrack, VICON, LEAP Motion , … Ø Pose Estimation (GPS/IMU) : BOSCH® IMU, Razor's® IMU, … Ø RFID : UHF RFID Reader 5 [2] [3] [4] [5] [8] [6] [7] [3 – Drexel University- SICK LMS200 tutorial - http://www.pages.drexel.edu/~kws23/tutorials/sick/sick.html [4 - Digital-circuitry : SICK LMS-200 / LMS-291 LIDAR LASER SCANNER RS-232 INTERFACING WITH UBUNTU & R.O.S. - http://www.digital-circuitry.com/Wordpress/sick-lms-200-lidar-laser-scanner-interfacing-with-ubuntu/] [5 – Microsoft –Kinect for Xbox 360 - http://www.xbox.com/en-US/xbox 360/accessories/kinect] [1 - Powering the world’s Robots- ROS.ORG – Sensors - http://wiki.ros.org/Sensors] [2 – TeraRanger One - http://www.teraranger.com/product/teraranger-one-distance-sensor-for-drones-and-robotics/] [6 – Bosch – Mobility sensors SMI130 SMG130 SMA 130- http://www.bosch- semiconductors.de/en/automotive_electronics/news_4/ces/ces_1.html] [7 – 9 Degrees of Freedom - Razor IMU - https://www.sparkfun.com/products/retired/10736] [8 – ATI Industrial Automation - Multi-Axis Force / Torque Sensors- http://www.ati-ia.com/products/ft/sensors.aspx]
  • 6. What make ROS outstanding? Ø ROS is completely modular : Ø Packages : A collection of Nodes, Messages , services. § Nodes: a process that uses ROS framework § Messages: Standard definition for passing information between nodes. Ø Stack: Set of multiple package Ø ROS is multi-language: Ø C++ : full functionality with ROSCPP library Ø Python : full functionality with ROSPY library Ø JAVA, LISP, Octave, LUA : experimental development. Ø Large set of tools out of box :Standard Robot Messages, Robot Description Language, pose estimation, localization in a map, building a map, and even mobile navigation. Ø Integration with other libraries for: Simulation, Image processing and etc. 6
  • 7. Powerful ROS libraries Ø Standard Message Definitions For Each peripheral module or concept code compatibility with all other part of the robotic eco system. categorized by types in different packages. Package : geometry_msgs § Message Types available in this package: § Point § Pose § Transform § … Ø Example of a message structure: § Package : sensor_msgs § Message Type : Imu std_msgs/Header header geometry_msgs/Quaternion orientation float64[9] orientation_ covariance geometry_msgs/Vector3 angular_velocity float64[9] angular_veloci ty_covariance geometry_msgs/Vector3 linear_acceleration float64[9] linear_acceleration_covariance 7
  • 8. Powerful ROS libraries Ø Robot Geometry Library This is essential to keep track of position of each part of robot , regarding to the other parts. where is the hand, in respect to the head ? Where is robot1 regarding to the hand of robot2 ? § Transform library (TF) is a core library of ROS and provides a coordinate tracking system. § TF is not a centralized library § works base on publisher/subscriber messaging system of ROS. Every node has : § Publisher (user needs to write) § Listener (user needs to write) Ø TF listeners listen to the frames and provides a Tree which describes how coordinate systems are related to each other. /map /robot1/odom /robot1/base /robot1/laser /robot1/camera /robot2/laser /robot2/camera /robot2/odom /robot2/base 8 [1] [1 - ROS.ORG – Robot Geometry Library - http://www.ros.org/core-components/] [2] [2 – TF ROS tutorial - https://www.youtube.com/watch?v=Xf25dVrG5ks]
  • 9. Powerful ROS libraries Ø ROS visualizer (RVIZ) § RVIZ is the default 3D visualization tool for. § RVIZ is not a ”simulator”. § RVIZ can show data that it has a plugin for displaying (DisplayTypes ) and has been published by nodes: § Axes : Displays a set of Axes § Camera: Creates a new rendering window from the perspective of a camera § Map : Displays a map on the ground plane § Pose : Draws a pose as an arrow or axes. § ….. § Complete set: http://wiki.ros.org/rviz/DisplayTypes § Each DisplayType uses specific message. Axes => sensor_msgs/JointStates 9 [Powering the world’s Robots- ROS.ORG - RVIZ Camera type http://wiki.ros.org/rviz/DisplayTypes/Camera]
  • 10. Powerful ROS libraries Ø Robot Description Language (URDF) Describe a robot in a machine readable format. URDF is an XML file describing following physical properties: § Main parts: cylinder, box, length, radius, … § Joints : continuous joints, prismatic joint, planar joint, Joint Dynamics (friction, damping) , Inertia Used by different tools for simulation, visualization and motion planning: § Rviz § Gazebo § Moveit § Stage Ø Example of an URDF file: <?xml version="1.0"?> <robot name="multipleshapes"> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> </visual> </link> <link name="right_leg"> <visual> <geometry> <box size="0.6 .1 .2"/> </geometry> </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> </joint> </robot> 10 [ROS.ORG - Building a Visual Robot Model with URDF from Scratch http://wiki.ros.org/urdf/Tutorials/Building a Visual Robot Model with URDF from Scratch
  • 11. Powerful ROS 3rd party tools § URDF in Gazebo : URDF describes kinematic and dynamic properties of a robot. § Not enough information for Gazebo for accurate simulation : pose, friction, … § Simulation Description Format(SDF) invented for simulation in Gazebo. § Stable, robust, and extensible format for describing all aspects of robots, static and dynamic objects, lighting, friction and even physics. § SDF uses XML files like URDF. Ø GAZEBO § Simulation environment and supports many robots and sensors. § Developing and test a node without a physical robot. § Deployment of after test with minimal change. § Start with ’gazebo’ command § ’gzserver’ : § Run the physics § Sensor data generation § Can be used without any GUI § ’gzclient’: § Provide a GUI for visualization of simulation 11
  • 12. Powerful ROS 3rd party tools Ø GAZEBO § Converting URDF to SDF § Add tags and modify the URDF for example: § An <inertia> element within each <link> element must be properly specified and configured. § Add a <gazebo> element for every <link> § Add a <gazebo> element for every <joint> § Add a <gazebo> element for the <robot> element § … § The complete instruction in Gazebo website. Ø Part of an SDF as example <camera name="head"> <horizontal_fov>1.3962634</horizontal_fov> <image> <width>800</width> <height>800</height> <format>R8G8B8</format> </image> <clip> <near>0.02</near> <far>300</far> </clip> <noise> <type>gaussian</type> <mean>0.0</mean> <stddev>0.007</stddev> </noise> </camera> 12
  • 13. Powerful ROS 3rd party tools Ø Moveit § The most widely used open-source software for manipulation, motion planning and analyzing of robot interaction with environment. § Capabilities: § Collision checking § Integrated kinematics § Motion planning § Integrated perceptions about environment § Execution and monitoring § Interactive 13 MoveIt in Rviz moving the ABB robot around - https://www.youtube.com/watch?v=0hS0XUOgYXk - Pablo Negrete
  • 14. Powerful ROS 3rd party tools Ø OpenCV § The most powerful image processing library § Implemented in Python and C++. § Many functionalities out of box : Face detectio, Object tracking ,motion analysis, Feature detection and … § ROS have drivers for many sort of cameras: § openni_kinect for Microsoft kinect § gscam for most webcams § swissranger_camera § … § ROS uses sensor_msgs/Image message and OpenCV need matrices for images. § Conversion by cv_bridge stack. § Conversion by cv_bridge : ready functions cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8); cv::circle(cv_ptr->image, cv::Point(50, 50), 10, CV_RGB(255,0,0)); 14 [ROS.ORG- vision_opencv - http://wiki.ros.org/vision_opencv]
  • 15. ROS and external hardware : Arduino Ø Arduino § A microcontroller with powerful interface library for different hardware. § Different I/O ports : Analog and digital § C-like language and syntax , Easy to program. Many open source projects. § Implementation § ROS side : rosserial stack for serialization of message over USB [3] § Arduino side: rosserial_arduino to create messages, publish, subscribe. [3] ros_lib UART Arduino USB rosserial_python serial_node.py tty ROS #include <ros.h> <std_msgs/String.h> ros::NodeHandle n; std_msgs::String msg; ros::Publisher pub("/my_topic", &msg); int count = 0; char data[100]; void setup(){ n.initNode(); n.advertise(pub); } void loop(){ sprintf(data, "Hello world %d", ++count); msg.data = data; pub.publish(&msg); n.spinOnce(); delay(1000); } 15 [1 - Arduino Products - https://www.arduino.cc/en/Main/Products] [1] [2] [3] [2 – German robot - Opensource humanoid robot http://www.german-robot.com/] http://wiki.ros.org/rosserial_arduino [3 – Wiki.ros.org - rosserial_arduinoTutorials - http://wiki.ros.org/rosserial_arduino/Tutorials]
  • 16. How ROS works ? Ø Nodes – Messages – Topics § Node : a process that uses ROS framework. ROSCORE connects all nodes together and provide connectivity. ROSCORE Node Node § Message: Standard definitions for transferring data between nodes. § Topic: Mechanism of transferring data between nodes. § Publisher: A node which produce message and publish them. § Subscriber: A node which receives the messages. Ø Workflow: 1. Node A publish a message to a topic 2. All nodes which are subscribed to that topic, will receive the message. Node A : Publisher Topic : Odometry Node B: subscriber Node C: subscriber Ø Nodes commands: § rosrun package executable § Roslaunch package_name file.launch Ø Topiccommands: #show list of messages inside topic § Rostopic echo /topicName § Rostopic list § Rostopic info topicName 16
  • 17. How ROS works ? Ø Service-Client The publish/subscribe model is very flexible but not enough for a distributed system. § Service-Client is way to retrieve the data immediately instead of waiting for a message to be published. § A node provides a service , the client node call the service by sending request message. § Service-client => one-to-one § Topic- message => one-to-one, one-to-many, many-to-many ROS Node Service ROS Node Client Request Response 17 [Mathwork - https://de.mathworks.com/help/robotics/examples/ call-and-provide-ros-services.html]
  • 18. Implementation example : Message-Topic Ø Subscribing to a topic # Initialize rospy NODE_NAME = 'localization' import roslib; roslib.load_manifest(NODE_NAME) import rospy # Import LaserScan message type from nav_msgs.Odometry import * # Scan message handler def odom_handler(msg): # this code is executed whenever a scan is published [...] # Main function def main(): rospy.init_node(NODE_NAME) rospy.Subscriber("/odom", Odometry, odom_handler) rospy.spin() Topic name This is a callback function. This is called whenever a message of type Odometry is received. Callback function 18
  • 19. Implementation example : Message-Topic Ø Publishing to a topic # Initialize rospy NODE_NAME = 'localization' import roslib; roslib.load_manifest(NODE_NAME) import rospy # Import standard String message type from std_msgs.msg import * # Main function def main(): pub = rospy.Publisher(“/scout/viewer”, String) rospy.init_node(NODE_NAME) msg = “Hello world” pub.publish( String(msg) ) Topic name Publish function Constructor call of message Ø Main benefits of message/topic system § capture messages in a file And replay them later independently § Clear communication structure between side tools and libraries. As pointed out for example in RVIZ 19
  • 20. Implementation example : Service-client Ø Service # Initialize rospy NODE_NAME = 'localization' import roslib; roslib.load_manifest(NODE_NAME) import rospy # Import standard String message type from std_msgs.msg import * # Service handler def handler(req): # this code is executed whenever the service is called return LocalizationSrvResponse() # Main function def main(): rospy.init_node(NODE_NAME) rospy.Service("/scout/localization", LocalizationSrv, handler) rospy.spin() Service name Service type Service functionality Ø client # Initialize rospy NODE_NAME = ‘viewer ' import roslib; roslib.load_manifest(NODE_NAME) import rospy # Import standard String message type from std_msgs.msg import * # Main function def main(): srv = rospy.ServiceProxy("/scout/localization",LocalizationSrv) rospy.init_node(NODE_NAME) response = srv(1, x, y, theta) 20
  • 21. How nodes find each other : ROS Master Ø One node is a ROS Master by running roscore command on it. Ø Keep track of publishers, subscribers and topics. Ø After nodes locate each other, they communicate peer-to-peer. Master Camera (Publisher) Image Viewer Publish on Image topic Master Camera (Publisher) Image Viewer Subscribe to image topic Image Master Camera (Publisher) Image Viewer Image topic topic 21 [ROS.ORG – ROS Master - http://wiki.ros.org/Master ] Ø Steps: Publisher informs the ROS master about the topic and start publishing. Subscriber informs the ROS master about the interested topics ROS master inform Publisher that who is interested , and publisher start sending messages to them.
  • 22. Unity: Introduction Ø Unity is game engine used to created high qualified visual scenes. Ø Unity is visualization tool not a simulation. Ø Unity is widely used for virtual reality (VR) tasks because: § Multi-platform : OSX, Windows, MAC, Android , …. § Powerful physics engine : gravity and collisions § Very GUI lets you drag and drop elements § Programming languages : C# and Javascript 22 [3- Unity Interface overview - Unity Official Tutorials - https://www.youtube.com/watch?v=5cPYpI6_yLs] [1 – Deviant art – Angry birds logo - http://www.deviantart.com/morelikethis/421156366] [1] [3] [2] [2 – Geforde – Assassin's Creed Unity Graphics & Performance Guide - http://www.geforce.com/whats-new/guides/assassins-creed-unity-graphics-and-performance-guide] Ø Unity interface
  • 23. Unity with ROS Ø Unity instead of RVIZ For visualization? Not a good idea but possible. § ROS messages => events processed by rendering loop in Unity. § liveliness of visualization is lost because rendering should be fast. § Method : Connection between ROS-Unity by ROS bridge. § Rosbrige : connection to outside world by JSON API through web sockets § roslaunch rosbridge_server rosbridge_websocket.launch Creates a web socket server working on port 9090 § Outside software call the server/port for communication Ros bridge ROS Web socket server Unity API rosserial_python serial_node.py Rendering lib JSON Data {"op": "subscribe", "topic": "/clock", "type": "rosgraph_msgs/Clock”}. {"op": "publish", "topic": "/unity/joy", "msg": msg}. Ø JSON Data examples: 23
  • 24. Stand alone Unity Ø Graphical robot controller : The reverse of previous project § Sending move commands from graphical robot to physical robot § Input from environment by camera, Kinect , etc to control graphical robot. Ø Physical Robot => Arduino robotic frame ware Ø Calculation of position, etc => Unity Ø Unity to Arduino Connection => USB Ø Benefit : Control robot in Real time with human interaction 24 [1 - The Robot Engine - Making The Unity 3D Game Engine Work For HRI Christoph Bartneck, Marius Soucy, Kevin Fleuret, Eduardo B. Sandoval] [1]
  • 25. Conclusions ØComplete OS for Robotics ØNo equivalent ØSuitable for industrial large scale robotic projects ØPowerful visualization tool ØSome equivalents: Unreal, DirectX, … ØSuitable for game, design and graphic industry ØTo some extend Human Robot Interaction ØResearch subject : Combining Unity3D and ROS for nice environment simulation. ØWhat about sensor data ????? 25
  • 26. References: § ROS wiki - http://wiki.ros.org/ § Powering the world’s Robots- ROS.ORG- http://www.ros.org/ § The Robot Engine - Making The Unity 3D Game Engine Work For HRI - Christoph Bartneck, Marius Soucy, Kevin Fleuret, Eduardo B. Sandoval § From ROS to Unity: leveraging robot and virtual environment middleware for immersive teleoperation - R. Codd-Downey, P. Mojiri Forooshani, A. Speers, H. Wang and M. Jenkin § GAZEBO - Robot simulation made easy - http://gazebosim.org/ § MoveIt! Motion Planning Framework - http://moveit.ros.org/ § Unity3D - https://unity3d.com/ § Mathwork - https://de.mathworks.com/help/robotics/examples/call-and-provide-ros- services.html 26