This document provides an overview of ROS (Robot Operating System) and how it can be used with Unity. It discusses key ROS components like core modules, standard message definitions, the robot geometry library, ROS visualizer (RVIZ), and the robot description language (URDF). It also covers popular ROS tools like Gazebo for simulation, MoveIt for motion planning, and OpenCV for computer vision. Finally, it describes how ROS works using its publisher-subscriber and service-client communication patterns and how Unity can integrate with ROS.
ROS Based Programming and Visualization of Quadrotor HelicoptersAtılay Mayadağ
ROS Based Programming and Visualization of Quadrotor Helicopters
Contents
Purpose of Thesis
Robot Operating System ( ROS )
What is Robot Operating System ( ROS ) ?
ROS structure
HOW does ROS work ?
Navigation of Robot with ROS
URDF : Unified Robot Description Format
ROS with 3D Modelling and Simulation
Quadrotor Simulation on Rviz and Gazebo with ROS
Conclusion and Recommendation
ROS publish / subscribe method
unmanned air vehicle
Robot Operating System
ATILAY MAYADAG
This is the first slide in the series on Robot Control using ROS tutorial. In this first modul, we give an introduction to the topic, including the definition of Robot, Control, ROS (Robot Operating System), and the goal of this tutorial.
You can find the tutorial on our youtube playlist: https://www.youtube.com/watch?v=yL4Rllx70vs&list=PL4T23RsIw5Qz2wDcZHZMVA33hjkzwx_Iq
Next slide: https://www.slideshare.net/jagorobotika/robot-control-using-ros-kinematic-modelling-of-mobile-robots
ROS Based Programming and Visualization of Quadrotor HelicoptersAtılay Mayadağ
ROS Based Programming and Visualization of Quadrotor Helicopters
Contents
Purpose of Thesis
Robot Operating System ( ROS )
What is Robot Operating System ( ROS ) ?
ROS structure
HOW does ROS work ?
Navigation of Robot with ROS
URDF : Unified Robot Description Format
ROS with 3D Modelling and Simulation
Quadrotor Simulation on Rviz and Gazebo with ROS
Conclusion and Recommendation
ROS publish / subscribe method
unmanned air vehicle
Robot Operating System
ATILAY MAYADAG
This is the first slide in the series on Robot Control using ROS tutorial. In this first modul, we give an introduction to the topic, including the definition of Robot, Control, ROS (Robot Operating System), and the goal of this tutorial.
You can find the tutorial on our youtube playlist: https://www.youtube.com/watch?v=yL4Rllx70vs&list=PL4T23RsIw5Qz2wDcZHZMVA33hjkzwx_Iq
Next slide: https://www.slideshare.net/jagorobotika/robot-control-using-ros-kinematic-modelling-of-mobile-robots
ROS, Robot Operating System is widely used in robotics development. It provides robust communication mechanism and a uniform interface.
A Blog is also available on medium and a video is also available for this presentation: https://youtu.be/0636IpOUCnc
Portfolio: https://khansaadbinhasan.github.io/
Medium: https://medium.com/@khansaadbinhasan
Linkedin: https://www.linkedin.com/in/khan-saad...
Github: https://github.com/khansaadbinhasan
Twitter: https://www.twitter.com/KhanSaadBinHas1
Youtube: https://www.youtube.com/channel/UCudVNfZNUhH4oWyFcB4I0gg?view_as=subscriber
ROS now has 2 different editions. The traditional ROS and the new reinvented ROS 2. Both have their own pros and cons. Check which one suits your need.
ROS - an open-source Robot Operating Systemabirpahlwan
A presentation based on
"ROS - an open-source Robot Operating System" by Willow Garage.
Available at http://www.willowgarage.com/sites/default/files/icraoss09-ROS.pdf
Modeling and Control Robot Arm using Gazebo, MoveIt!, ros_controlByeongKyu Ahn
본 문서는 8축 로봇팔을 Gazebo, ROS, MovieIt을 이용한 시뮬레이션 과정에 대한 것으로 제2회 오로카 세미나(http://cafe.naver.com/openrt.cafe)에서 발표되었습니다.
This document represent working process for simulation 8-dof robot arm using Gazebo, ROS, MoveIt. And, this document presented on 2nd OROCA seminar in KOREA.
Flutter festival - Write your first Flutter applicationApoorv Pandey
Write your first hello world app in Flutter. This is a follow along PPT for Flutter Festival Bhopal. Conducted and organized by GDSC UIT RGPV and Flutter Bhopal 2022
Robotics Operating System is Tool for Robotics Programming , This Presentation Show The Features of Robot Operating System and how to Work with it. Implement Simple Robot Simulation Model.
ROS, Robot Operating System is widely used in robotics development. It provides robust communication mechanism and a uniform interface.
A Blog is also available on medium and a video is also available for this presentation: https://youtu.be/0636IpOUCnc
Portfolio: https://khansaadbinhasan.github.io/
Medium: https://medium.com/@khansaadbinhasan
Linkedin: https://www.linkedin.com/in/khan-saad...
Github: https://github.com/khansaadbinhasan
Twitter: https://www.twitter.com/KhanSaadBinHas1
Youtube: https://www.youtube.com/channel/UCudVNfZNUhH4oWyFcB4I0gg?view_as=subscriber
ROS now has 2 different editions. The traditional ROS and the new reinvented ROS 2. Both have their own pros and cons. Check which one suits your need.
ROS - an open-source Robot Operating Systemabirpahlwan
A presentation based on
"ROS - an open-source Robot Operating System" by Willow Garage.
Available at http://www.willowgarage.com/sites/default/files/icraoss09-ROS.pdf
Modeling and Control Robot Arm using Gazebo, MoveIt!, ros_controlByeongKyu Ahn
본 문서는 8축 로봇팔을 Gazebo, ROS, MovieIt을 이용한 시뮬레이션 과정에 대한 것으로 제2회 오로카 세미나(http://cafe.naver.com/openrt.cafe)에서 발표되었습니다.
This document represent working process for simulation 8-dof robot arm using Gazebo, ROS, MoveIt. And, this document presented on 2nd OROCA seminar in KOREA.
Flutter festival - Write your first Flutter applicationApoorv Pandey
Write your first hello world app in Flutter. This is a follow along PPT for Flutter Festival Bhopal. Conducted and organized by GDSC UIT RGPV and Flutter Bhopal 2022
Robotics Operating System is Tool for Robotics Programming , This Presentation Show The Features of Robot Operating System and how to Work with it. Implement Simple Robot Simulation Model.
Presentation held at GRNET Digital Technology Symposium on November 5-6, 2018 at the Stavros Niarchos Foundation Cultural Center, Athens, Greece.
• Introduction to Ceph and its internals
• Presentation of GRNET's Ceph deployments (technical specs, operations)
• Usecases: ESA Copernicus, ~okeanos, ViMa
The presentation is the result of my investigating if there is an open source development framework that can manage complex robotic systems. If so,should it be recommended to be used in advanced high school/undergraduate levels.
Rclex: A Library for Robotics meet ElixirHideki Takase
Presentation at Code BEAM America 2021
https://codesync.global/conferences/code-beam-sf-2021
https://codesync.global/speaker/hideki-takase/
How do we install the magic of Elixir into robot systems? One of the solutions is "Rclex", that is a client library for ROS 2 platform. ROS (Robot Operating System) provides publish/subscribe based messaging mechanism between robot modules with the DDS (Data Distribution Service) stack. We suggest that the force of Erlang/Elixir can power up the scalability of ROS 2 communication. This talk will introduce how did we integrate ROS 2 and Elixir by using NIFs, and discuss the possibility of this library in the IoT field.
UBC’s Cloud Innovation Centre (CIC) invites students to our AWS RoboMaker webinar and live lab on Thursday, July 22 from 1:00 to 3:30 pm PST. In this session, special guest Alex Coqueiro, will introduce you to AWS Robomaker, a service that makes it easy to develop, test, and deploy intelligent robotics applications at scale. We walk through the features of integrating key components into robotics, deploying a single solution, and discuss the uniquely designed models that allow for optimized robots use cases to get you to production fast. We will cover use cases, implementation, simulation, and deployment. Demos will be implemented using Python.
Building Robotics Application at Scale using OpenSource from Zero to HeroAlex Barbosa Coqueiro
Today, organizations are using robotics to address a host of business challenges, from the self-driving car to autonomous walkers to assist older adults, exploring various environments from deep oceans to other planets like Mars. In the past, the integration of these robots took a significant amount of time and effort, and it required specialized expertise in this field. Still, this scenario has dramatically changed thanks to adopting a real-time production system with Linux and the Robot Operating System (ROS). ROS is an open-source software framework for robot development, including middleware, drivers, libraries, tools, and commonly used algorithms for robotics. In this session, we walk the audience through the steps from design to deployment robots using ROS2 Foxy (new version of ROS) from zero to hero using live demo using Python 3 (rclpy) with DDS (Data Distribution Service) simulating real-world environments with Gazebo (open-source 3D robotics simulator). In a nutshell, I will cover designing, developing, testing, and deploying intelligent robotics applications at scale, including integration with critical components, and discuss models that allow for optimized large fleet management.
This presentation was given to the Dallas Spring User Group http://www.springdallasug.org/ for educational purposes and made available as a non-profit contribution to the learning community.
Redfish is an IPMI replacement standardized by the DMTF. It provides a RESTful API for server out of band management and a lightweight data model specification that is scalable, discoverable and extensible. (Cf: http://www.dmtf.org/standards/redfish). This presentation will start by detailing its role and the features it provides with examples. It will demonstrate the benefits it provides to system administrator by providing a standardized open interface for multiple servers, and also storage systems.
We will then cover various tools such as the DMTF ones and the python-redfish library (Cf: https://github.com/openstack/python-redfish) offering Redfish abstractions.
Immunizing Image Classifiers Against Localized Adversary Attacksgerogepatton
This paper addresses the vulnerability of deep learning models, particularly convolutional neural networks
(CNN)s, to adversarial attacks and presents a proactive training technique designed to counter them. We
introduce a novel volumization algorithm, which transforms 2D images into 3D volumetric representations.
When combined with 3D convolution and deep curriculum learning optimization (CLO), itsignificantly improves
the immunity of models against localized universal attacks by up to 40%. We evaluate our proposed approach
using contemporary CNN architectures and the modified Canadian Institute for Advanced Research (CIFAR-10
and CIFAR-100) and ImageNet Large Scale Visual Recognition Challenge (ILSVRC12) datasets, showcasing
accuracy improvements over previous techniques. The results indicate that the combination of the volumetric
input and curriculum learning holds significant promise for mitigating adversarial attacks without necessitating
adversary training.
Cosmetic shop management system project report.pdfKamal Acharya
Buying new cosmetic products is difficult. It can even be scary for those who have sensitive skin and are prone to skin trouble. The information needed to alleviate this problem is on the back of each product, but it's thought to interpret those ingredient lists unless you have a background in chemistry.
Instead of buying and hoping for the best, we can use data science to help us predict which products may be good fits for us. It includes various function programs to do the above mentioned tasks.
Data file handling has been effectively used in the program.
The automated cosmetic shop management system should deal with the automation of general workflow and administration process of the shop. The main processes of the system focus on customer's request where the system is able to search the most appropriate products and deliver it to the customers. It should help the employees to quickly identify the list of cosmetic product that have reached the minimum quantity and also keep a track of expired date for each cosmetic product. It should help the employees to find the rack number in which the product is placed.It is also Faster and more efficient way.
HEAP SORT ILLUSTRATED WITH HEAPIFY, BUILD HEAP FOR DYNAMIC ARRAYS.
Heap sort is a comparison-based sorting technique based on Binary Heap data structure. It is similar to the selection sort where we first find the minimum element and place the minimum element at the beginning. Repeat the same process for the remaining elements.
We have compiled the most important slides from each speaker's presentation. This year’s compilation, available for free, captures the key insights and contributions shared during the DfMAy 2024 conference.
About
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
Technical Specifications
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
Key Features
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface
• Compatible with MAFI CCR system
• Copatiable with IDM8000 CCR
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
Application
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERSveerababupersonal22
It consists of cw radar and fmcw radar ,range measurement,if amplifier and fmcw altimeterThe CW radar operates using continuous wave transmission, while the FMCW radar employs frequency-modulated continuous wave technology. Range measurement is a crucial aspect of radar systems, providing information about the distance to a target. The IF amplifier plays a key role in signal processing, amplifying intermediate frequency signals for further analysis. The FMCW altimeter utilizes frequency-modulated continuous wave technology to accurately measure altitude above a reference point.
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...ssuser7dcef0
Power plants release a large amount of water vapor into the
atmosphere through the stack. The flue gas can be a potential
source for obtaining much needed cooling water for a power
plant. If a power plant could recover and reuse a portion of this
moisture, it could reduce its total cooling water intake
requirement. One of the most practical way to recover water
from flue gas is to use a condensing heat exchanger. The power
plant could also recover latent heat due to condensation as well
as sensible heat due to lowering the flue gas exit temperature.
Additionally, harmful acids released from the stack can be
reduced in a condensing heat exchanger by acid condensation. reduced in a condensing heat exchanger by acid condensation.
Condensation of vapors in flue gas is a complicated
phenomenon since heat and mass transfer of water vapor and
various acids simultaneously occur in the presence of noncondensable
gases such as nitrogen and oxygen. Design of a
condenser depends on the knowledge and understanding of the
heat and mass transfer processes. A computer program for
numerical simulations of water (H2O) and sulfuric acid (H2SO4)
condensation in a flue gas condensing heat exchanger was
developed using MATLAB. Governing equations based on
mass and energy balances for the system were derived to
predict variables such as flue gas exit temperature, cooling
water outlet temperature, mole fraction and condensation rates
of water and sulfuric acid vapors. The equations were solved
using an iterative solution technique with calculations of heat
and mass transfer coefficients and physical properties.
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