what makes a robotic system ? what is ros ? ros ......rqt : a qt based gui developed for ros lots of...
TRANSCRIPT
Contents
● What makes a Robotic System ?
● What is ROS ?
● ROS Architecture
● ROS workflow
● Add Ons
What Makes a Robotic System ?
A cooperative system of sensors and actuators...
IMU Laser scanner
Camera
GPSMotor & Encoder
Robot
...and processors to help in this cooperation
Robot
Raspberry Pi
Intel NUC Arduino
ODROID
Robotic System: Sequential workflow
Sense Think Act
Robotic System: Parallel workflow
Sense-1 Think
Act-1
Sense-2
Act-2
Implementing a Robotic System in Parallel Mode
So, How do we do this ? We all have the used a software that does all this.
Source : Lakshay Garg
Think
The Operating System
ROS to the rescue
Why not let the OS handle the tedious task.
Source : Lakshay Garg
What is ROS ?
● ROS or Robot Operating System.
● Framework for robotic software development providing Operating System
Like functionality, including hardware abstraction, low-level-device control,
message-passing between processes, and package management.
● The origins lie in Stanford Artificial Intelligence Lab and was further
developed at Willow Garage.
● Available for all major operating systems
● Massively growing user base.
ROS is more than just a “middleware”.
Tools Capabilities Plumbing Ecosystem
● Simulation● Visualization● GUI● Data Logging● Debugging● Testing
Libraries for● Mobility● Perception● Manipulation● Control
● Process Management
● Message Passing Interface
● Device Drivers
● Large community of Developers and organizations.
● Documentation● Tutorials
Credit : ETHZ RSL
Philosophy of ROS
● Peer to Peer
○ Individual programs (nodes) communicate over ROS API (messages, etc)
● Distributed
○ Nodes can communicate over a network.
● Multilingual
○ Native support for C++, Python and Lisp, Experimental support exist for
Java and Lua too. Client Libraries for Matlab etc.
● Light Weight
○ Doesn’t slow the programs or even hinder their ability to work with
other frameworks.
● Free and Open SourceCredit : ETHZ RSL
What ROS isn’t ?
● An actual Operating System
● A programming Language
● A programming environment/IDE
● A hardware.
Credit : ETHZ RSL
ROS Architecture
ROS Communication Layer : ROS Core
● ROS Master
○ Centralized Communication Server based on XML and RPC
○ Negotiates the communication connections
○ Registers and looks up names for ROS graph resources
● Parameter Server
○ Stores persistent configuration parameters and other arbitrary data.
● `rosout`
○ Network based `stdout` for human readable messages.
ROS Communication Layer : Graph Abstraction
● Nodes
○ Processes distributed over the network.
○ Serves as source and sink for the data sent over the network
● Parameters
○ Persistent data such as configuration and initialization settings, i.e the
data stored on the parameter server. e.g camera configuration
● Topics
○ Asynchronous many-to-many communication stream
● Services
○ Synchronous one-to-many network based functions
ROS Communication Layer : Graph Abstraction
#1: ros::roscore
● ROS master process is called roscore
● Allows intercommunication between nodes (processes using ROS framework)
● Syntax: $ roscore
#2: ros::Topic
● Topics are used to send messages from a node to other nodes
● Publish = send message to a topic
● Subscribe = receive message
from a topic
#3: ros::Service
● Services are used to send a request to another node and receive a response
● A service is called with a request struct and response struct is returned
● These structs are different from topic messages
● Messages in ROS are used for inter process interactions like topics or services
● Defined as text files with internal variable declarations
● Single file contains both request and response
#4: ros::Message
ROS workflow
ROS workflow : Demo
Please Visit this link and clone the repository.● https://github.com/harshsinh/ros-demo
● git clone https://github.com/harshsinh/ros-demo.git● cp ros-demo/demo ~/catkin_ws/src -rf● cd ~/catkin_ws/● catkin_make
ROS workflow : workspace
The typical ROS workspace would look somewhat like this :● catkin_ws/
○ build/ ○ devel/ ○ src/
■ CMakeLists.txt■ Package_1/■ Package_2/
● CMakeLists.txt● package.xml● include/● launch/● src/
ROS Build System : catkin
● ROS uses a `catkin` build system.○ `catkin_make` or `catkin build` would generate executables,
libraries and interfaces.○ Choose one of the above and stick to it.○ Always `source` your workspace after you build.
● A cross platform build system which treats your entire workspace as a single CMake project where each project is a subproject then on.
Add Ons
rqt : A QT based GUI developed for ROS
rqt : A QT based GUI developed for ROS
● Lots of different plugins.○ `rqt_graph`, `rqt_image_view`, `rqt_console` to name a few.○ `rqt_graph` can be used to view the graph structure of the system, i.e
the nodes, and how are they related etc.● Multiple plugins can be run simultaneously.● Anyone can add more custom plugins written in C++ or Python.
RVIZ : ROS
● A Powerful tool for 3D
Visualization in ROS
● Modular state and sensor
visualization
● Excellent community support.
Gazebo Simulator
● Simulate 3D rigid body dynamics
● Simulate a variety of different sensors, many of them are available online
ready to use.
● Has many environments and robots pre-implemented.
● With ROS interface, it can be used to directly to test the applications inside
a simulation.
● Has even more plugins available.
Further References
● ROS Wiki○ http://wiki.ros.org/
● Tutorials○ http://wiki.ros.org/ROS/Tutorials
● Available Packages○ http://www.ros.org/browse/list.php
● ROS Style Guides○ http://wiki.ros.org/StyleGuide
● ROS Cheat Sheet○ https://www.clearpathrobotics
.com/ros-robot-operating-system-cheat-sheet/
● ROS Answers○ https://answers.ros.org/
Thank You