SlideShare a Scribd company logo
My ROS Experience
- SJ Kim
- bus710@gmail.com
Speaker
SJ Kim (Seongjun Kim)
- Embedded Software Engineer for 6 years
- MCUs, Linux, Web development
- My goals
1. Build autonomous robots
2. Make my robot runs errand for me
3. Easy web interface for SLAM and navigation
2
• SLAM: Simultaneous localization and mapping
• Navigation: the act, activity, or process of finding the way to get to a place
when you are traveling in a ship, airplane, car, etc. (Merriam-Webster)
Table & Contents
- Before ROS - pyKobuki (GUI app for turtlebot)
- Why ROS?
- Essential Concepts & Commands
- ROS installation
- Project 1 - SULCATA (ROS stack for SLAM)
- Project 2 - Gazebo Factory (steps for original robot)
- Project 3 - Web and ROS
- What's Next?
- Q & A
- Reference
3
Before ROS (pyKobuki)
- https://github.com/bus710/pyKobuki
- A GUI application for driving Kobuki
- Python, Tkinter, threading, serial comm.
https://youtu.be/1CXgpq7vz8k
4
Before ROS (pyKobuki) (cont.)
- Target features: TCP socket, Kinect, SLAM, Manipulator
- A new feature requires a new thread.
- New features cause high complexity/time sensitivity.
- An error from a thread can stop other threads.
Kobuki
OS
Python runtime
Main process
SerialQ ParserGUI
PC
USB
TCP socket
Kinect
Manipulator
5
SLAM
Why ROS?
- Meta OS, Stable middleware, and Modular design
- Several message types (topic, service, and action)
- Various useful packages (Drivers, DSP, and ML)
- Supports several languages (c/c++, java, js, golang, …)
- Free Open Source Software
- Promising roadmap (sync w/ Ubuntu LTS)
6
Kobuki
OS
ROS
MLWebGUI
PC
Manipulator Kinect
Driver
DSP Planner
Essential Concepts & commands
- Roscore: ROS itself.
- Rosrun: runs a single node in a package.
- Roslaunch: runs multiple nodes across multiple packages.
- Catkin: is an extension of cmake for ROS.
- Message between Publisher/Subscriber nodes.
- Topic: message stream between pub/sub nodes.
- Service: is RPC. a node can call another nodes’ func.
- Action: can initiate a long-running task.
7
ROS installation
- CPU: Intel i5 - 3rd gen., RAM: 8GB, HDD: 64GB,
- GPU: HD4000, USB: 3.0
- Ubuntu 14.04, ROS Indigo - Desktop Full
8
$ sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” 
> /etc/apt/sources.list.d/ros-latest.list’
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 0xB01FA116
$ sudo apt-get update
$ sudo apt-get install ros-indigo-desktop-full
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt-get install python-rosinstall
$ cd ~
$ mkdir catkin_ws
$ cd catkin_ws
$ catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc ; source ~/.bashrc
http://wiki.ros.org/indigo/Installation/Ubuntu
Project 1 - SULCATA
- A type of tortoise species, which live in the ground.
- Kinect v2, Kobuki, Kobuki supporter kit
- USB Type A to B, Camera mounting screw
- Molex PN : 5566-02B2
9NVIDIA-TK1 (ARM based) Intel I-5 (x64 based)
VS.
Project 1 - SULCATA (cont.)
- Summary for the stack
10
kobuki
Ubuntu
kobuki-slamkobuki-
keyop
rviz
PC
Kinect v2
kobuki-driver
urg-node
libkinect2
iai-kinect2kobuki-node
depth to
laser
ROS 1
235
46
(1) iai-Kinect sends depth image to the dimension converter node.
(2) The converter sends 2D value to urg-node.
(3)&(4) kobuki-slam reads 2D value and tf (time frame) from each nodes.
(5) Rviz visualizes data on GUI.
(6) keyop sends topics for driving kobuki.
Project 1 - SULCATA (cont.)
- Installation & Launch
https://github.com/bus710/sulcata
11
- libkinect2 supports several GPUs (NVIDIA, AMD, Intel, ARM).
- Read the official document carefully to install the driver on your machine.
Project 2 - Gazebo Factory
- Gazebo is OSRF’s 3D robot simulator.
- Supports ground, flight, underwater env. & robot.
- Various physics engines (ODE, Bullet, Simbody, and DART)
- Compatible with ROS. Good for proof of concept.
12
UbuntuPC
ROS
Model System World
World
Plugin
System
plugin
Model
plugin
Gazebo
Project 2 - Gazebo Factory (cont.)
- 3 files for model description.
(1) model.config
(2) model.sdf
(3) link*.dae (by Blender, Solidworks, or Rhino)
- 6 files for ROS package and Gazebo world setting.
(4) CMakeLists.txt
(5) package.xml
(6) launch/PROJECT_NAME.launch
13
/home/USER_NAME/ .gazebo/models/ROBOT_NAME/
catkin_ws/src/PROJECT_NAME/
(1) model.config
(2) model.sdf
(3) link*.dae
(4) CMakeLists.txt
(5) package.xml
(6) launch/PROJECT_NAME.launch
(7) worlds/WORLD_NAME.world
(8) src/GAZEBO_PLUGIN.cc
(8) src/ROS_NODE.py
(7) worlds/WORLD_NAME.world
(8) src/GAZEBO_PLUGIN.cc
(9) src/ROS_NODE.py
Project 2 - Gazebo Factory (cont.)
- Installation & Launch
https://github.com/bus710/gz_factory
14
https://youtu.be/lGlfi2OWBnE
Project 3 - Web and ROS
- ROS bridge package supports web socket.
- A good fit for real-time web applications.
- Any computer has web browser. (no install for client)
- There is a missing link between ROS bridge and browser.
- Browser requires web page before it accesses web socket
15
ROS coreROS bridge
Web
browser
???
Client Robot
This layer must deliver web page for browser
Project 3 - Web and ROS (cont.)
- To deliver web pages, we need a web server.
- Node.js has lightweight web server, Express.
16
Node.js stack ROS stackWeb Browser
Client Robot
User starts
- ROS core.
- ROS simulator node.
- ROS bridge (port 9090).
User starts node stack
(port 3000).User accesses Robot via web
browser. Then, Web browser
requests index.html.
Node returns index.html.
Web browser requests client.js
Node returns client.js.
User clicks button on web.
Then, the loaded Client.js
sends JSON packet via
WebSocket (port 9090).
ROS bridge
- Converts JSON to ROS topic.
- Assigns topic to simulator.
1
2
3
4
n User actions Http exchange Web socket access
Project 3 - Web and ROS (cont.)
- Installation & Launch
https://github.com/bus710/rosbridge-usage
- Result
What's next
- Build a combination with SULCATA + ROS Bridge.
- Research on robotics topics about SLAM & navigation.
- Eventually, make my robot runs errands for me.
18
Q&A
19
Reference
20
[1] http://wiki.ros.org/
[2] http://gazebosim.org/
[3] https://github.com/OpenKinect/libfreenect2
[4] https://github.com/code-iai/iai_kinect2
[5] https://github.com/robotpilot/rosbook_kr
[6] “Programming Robots with ROS”, Morgan Quigley, Brian Gerkey, and William D. Smart
[7] http://wiki.ros.org/urg_node
[8] http://wiki.ros.org/depthimage_to_laserscan
[9] OROCA, the best ROS community in Korea

More Related Content

PPTX
Guide to ROS tools
PDF
ROS+GAZEBO
PDF
Lab-1-ROS-Intro.pdf
PDF
Robot Control using ROS: an Introduction
PDF
Simulating TUM Drone 2.0 by ROS
PDF
Ros platform overview
PPTX
ROS Based Programming and Visualization of Quadrotor Helicopters
PPT
Robot operating systems (ros) overview & (1)
Guide to ROS tools
ROS+GAZEBO
Lab-1-ROS-Intro.pdf
Robot Control using ROS: an Introduction
Simulating TUM Drone 2.0 by ROS
Ros platform overview
ROS Based Programming and Visualization of Quadrotor Helicopters
Robot operating systems (ros) overview & (1)

What's hot (20)

PDF
Robotics and ROS
PPTX
ROS - an open-source Robot Operating System
PPTX
An Introduction to ROS-Industrial
PPTX
Robot operating system [ROS]
PPTX
Introduction to ROS (Robot Operating System)
PPTX
Robotics and Automation_Case Studies
PDF
ROS and Unity.pdf
PDF
Introduce to Rust-A Powerful System Language
PPTX
Basic Concept of Node.js & NPM
PPT
Android Radio Layer Interface
PPTX
Industrial robotics
PPTX
Dart ppt
PPTX
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
PPTX
Humanoid Robots || PPT || for electronic and electrical engineering
PPTX
Industrial robotics
PDF
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
PDF
Android Camera
PPTX
Go Programming Language (Golang)
PDF
JavaScript Inheritance
PPTX
HUMANOID ROBOTS
Robotics and ROS
ROS - an open-source Robot Operating System
An Introduction to ROS-Industrial
Robot operating system [ROS]
Introduction to ROS (Robot Operating System)
Robotics and Automation_Case Studies
ROS and Unity.pdf
Introduce to Rust-A Powerful System Language
Basic Concept of Node.js & NPM
Android Radio Layer Interface
Industrial robotics
Dart ppt
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
Humanoid Robots || PPT || for electronic and electrical engineering
Industrial robotics
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Android Camera
Go Programming Language (Golang)
JavaScript Inheritance
HUMANOID ROBOTS
Ad

Viewers also liked (8)

PDF
Raspberry Pi + ROS
PDF
ROS distributed architecture
PDF
Maģistra studijas informācijas tehnoloģijā
PDF
제2회 오픈 로보틱스 세미나 (제10세션 ROS를 활용한 SLAM과 내비게이션)
PDF
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRV
PPTX
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
PDF
Cvpr2010 open source vision software, intro and training part vi robot operat...
PPT
ROS - Robotics Operation System
Raspberry Pi + ROS
ROS distributed architecture
Maģistra studijas informācijas tehnoloģijā
제2회 오픈 로보틱스 세미나 (제10세션 ROS를 활용한 SLAM과 내비게이션)
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRV
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Cvpr2010 open source vision software, intro and training part vi robot operat...
ROS - Robotics Operation System
Ad

Similar to My ROS Experience (20)

PDF
Effective Robotics Programming with ROS Third Edition Anil Mahtani Luis Sanch...
PDF
Effective Robotics Programming with ROS Third Edition Anil Mahtani Luis Sanch...
PPTX
10. ROS (1).pptx
PPTX
ROS Tutorials with examples for beginners.pptx
PDF
ROS (Robot Operating System) Comparison
PPTX
Ros Kd
PPTX
rosnotes_1djsjsmsmmsmsndndndndndndnndndnjdjd
PDF
HuongdanlaptrinhECE5463_ROSTutorialLecture3
PDF
Effective Robotics Programming with ROS Anil Mahtani
PDF
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...
PDF
Robotics_L7 - ROS_for_beginner_for _all.pdf
PDF
Building Your Robot using AWS Robomaker
PDF
Robotic os (cheatsheet)
PDF
Building Robotics Application at Scale using OpenSource from Zero to Hero
PDF
ROS Overview - Málaga 2012
PDF
Killer Robots 101 with Gobot
PDF
NewROSBlock for basic knowledge and beginner
PDF
ROS - An open source platform for robotics software developers (lecture).pdf
Effective Robotics Programming with ROS Third Edition Anil Mahtani Luis Sanch...
Effective Robotics Programming with ROS Third Edition Anil Mahtani Luis Sanch...
10. ROS (1).pptx
ROS Tutorials with examples for beginners.pptx
ROS (Robot Operating System) Comparison
Ros Kd
rosnotes_1djsjsmsmmsmsndndndndndndnndndnjdjd
HuongdanlaptrinhECE5463_ROSTutorialLecture3
Effective Robotics Programming with ROS Anil Mahtani
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...
Robotics_L7 - ROS_for_beginner_for _all.pdf
Building Your Robot using AWS Robomaker
Robotic os (cheatsheet)
Building Robotics Application at Scale using OpenSource from Zero to Hero
ROS Overview - Málaga 2012
Killer Robots 101 with Gobot
NewROSBlock for basic knowledge and beginner
ROS - An open source platform for robotics software developers (lecture).pdf

Recently uploaded (20)

PPTX
Sustainable Sites - Green Building Construction
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
DOCX
573137875-Attendance-Management-System-original
PPTX
OOP with Java - Java Introduction (Basics)
PPT
Project quality management in manufacturing
PPTX
Welding lecture in detail for understanding
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PPTX
additive manufacturing of ss316l using mig welding
PPTX
UNIT 4 Total Quality Management .pptx
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
CH1 Production IntroductoryConcepts.pptx
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
Internet of Things (IOT) - A guide to understanding
PDF
PPT on Performance Review to get promotions
Sustainable Sites - Green Building Construction
CYBER-CRIMES AND SECURITY A guide to understanding
Model Code of Practice - Construction Work - 21102022 .pdf
573137875-Attendance-Management-System-original
OOP with Java - Java Introduction (Basics)
Project quality management in manufacturing
Welding lecture in detail for understanding
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Foundation to blockchain - A guide to Blockchain Tech
Arduino robotics embedded978-1-4302-3184-4.pdf
additive manufacturing of ss316l using mig welding
UNIT 4 Total Quality Management .pptx
Embodied AI: Ushering in the Next Era of Intelligent Systems
Lecture Notes Electrical Wiring System Components
CH1 Production IntroductoryConcepts.pptx
Operating System & Kernel Study Guide-1 - converted.pdf
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
Internet of Things (IOT) - A guide to understanding
PPT on Performance Review to get promotions

My ROS Experience

  • 1. My ROS Experience - SJ Kim - bus710@gmail.com
  • 2. Speaker SJ Kim (Seongjun Kim) - Embedded Software Engineer for 6 years - MCUs, Linux, Web development - My goals 1. Build autonomous robots 2. Make my robot runs errand for me 3. Easy web interface for SLAM and navigation 2 • SLAM: Simultaneous localization and mapping • Navigation: the act, activity, or process of finding the way to get to a place when you are traveling in a ship, airplane, car, etc. (Merriam-Webster)
  • 3. Table & Contents - Before ROS - pyKobuki (GUI app for turtlebot) - Why ROS? - Essential Concepts & Commands - ROS installation - Project 1 - SULCATA (ROS stack for SLAM) - Project 2 - Gazebo Factory (steps for original robot) - Project 3 - Web and ROS - What's Next? - Q & A - Reference 3
  • 4. Before ROS (pyKobuki) - https://github.com/bus710/pyKobuki - A GUI application for driving Kobuki - Python, Tkinter, threading, serial comm. https://youtu.be/1CXgpq7vz8k 4
  • 5. Before ROS (pyKobuki) (cont.) - Target features: TCP socket, Kinect, SLAM, Manipulator - A new feature requires a new thread. - New features cause high complexity/time sensitivity. - An error from a thread can stop other threads. Kobuki OS Python runtime Main process SerialQ ParserGUI PC USB TCP socket Kinect Manipulator 5 SLAM
  • 6. Why ROS? - Meta OS, Stable middleware, and Modular design - Several message types (topic, service, and action) - Various useful packages (Drivers, DSP, and ML) - Supports several languages (c/c++, java, js, golang, …) - Free Open Source Software - Promising roadmap (sync w/ Ubuntu LTS) 6 Kobuki OS ROS MLWebGUI PC Manipulator Kinect Driver DSP Planner
  • 7. Essential Concepts & commands - Roscore: ROS itself. - Rosrun: runs a single node in a package. - Roslaunch: runs multiple nodes across multiple packages. - Catkin: is an extension of cmake for ROS. - Message between Publisher/Subscriber nodes. - Topic: message stream between pub/sub nodes. - Service: is RPC. a node can call another nodes’ func. - Action: can initiate a long-running task. 7
  • 8. ROS installation - CPU: Intel i5 - 3rd gen., RAM: 8GB, HDD: 64GB, - GPU: HD4000, USB: 3.0 - Ubuntu 14.04, ROS Indigo - Desktop Full 8 $ sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’ $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 0xB01FA116 $ sudo apt-get update $ sudo apt-get install ros-indigo-desktop-full $ sudo rosdep init $ rosdep update $ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc $ source ~/.bashrc $ sudo apt-get install python-rosinstall $ cd ~ $ mkdir catkin_ws $ cd catkin_ws $ catkin_make $ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc ; source ~/.bashrc http://wiki.ros.org/indigo/Installation/Ubuntu
  • 9. Project 1 - SULCATA - A type of tortoise species, which live in the ground. - Kinect v2, Kobuki, Kobuki supporter kit - USB Type A to B, Camera mounting screw - Molex PN : 5566-02B2 9NVIDIA-TK1 (ARM based) Intel I-5 (x64 based) VS.
  • 10. Project 1 - SULCATA (cont.) - Summary for the stack 10 kobuki Ubuntu kobuki-slamkobuki- keyop rviz PC Kinect v2 kobuki-driver urg-node libkinect2 iai-kinect2kobuki-node depth to laser ROS 1 235 46 (1) iai-Kinect sends depth image to the dimension converter node. (2) The converter sends 2D value to urg-node. (3)&(4) kobuki-slam reads 2D value and tf (time frame) from each nodes. (5) Rviz visualizes data on GUI. (6) keyop sends topics for driving kobuki.
  • 11. Project 1 - SULCATA (cont.) - Installation & Launch https://github.com/bus710/sulcata 11 - libkinect2 supports several GPUs (NVIDIA, AMD, Intel, ARM). - Read the official document carefully to install the driver on your machine.
  • 12. Project 2 - Gazebo Factory - Gazebo is OSRF’s 3D robot simulator. - Supports ground, flight, underwater env. & robot. - Various physics engines (ODE, Bullet, Simbody, and DART) - Compatible with ROS. Good for proof of concept. 12 UbuntuPC ROS Model System World World Plugin System plugin Model plugin Gazebo
  • 13. Project 2 - Gazebo Factory (cont.) - 3 files for model description. (1) model.config (2) model.sdf (3) link*.dae (by Blender, Solidworks, or Rhino) - 6 files for ROS package and Gazebo world setting. (4) CMakeLists.txt (5) package.xml (6) launch/PROJECT_NAME.launch 13 /home/USER_NAME/ .gazebo/models/ROBOT_NAME/ catkin_ws/src/PROJECT_NAME/ (1) model.config (2) model.sdf (3) link*.dae (4) CMakeLists.txt (5) package.xml (6) launch/PROJECT_NAME.launch (7) worlds/WORLD_NAME.world (8) src/GAZEBO_PLUGIN.cc (8) src/ROS_NODE.py (7) worlds/WORLD_NAME.world (8) src/GAZEBO_PLUGIN.cc (9) src/ROS_NODE.py
  • 14. Project 2 - Gazebo Factory (cont.) - Installation & Launch https://github.com/bus710/gz_factory 14 https://youtu.be/lGlfi2OWBnE
  • 15. Project 3 - Web and ROS - ROS bridge package supports web socket. - A good fit for real-time web applications. - Any computer has web browser. (no install for client) - There is a missing link between ROS bridge and browser. - Browser requires web page before it accesses web socket 15 ROS coreROS bridge Web browser ??? Client Robot This layer must deliver web page for browser
  • 16. Project 3 - Web and ROS (cont.) - To deliver web pages, we need a web server. - Node.js has lightweight web server, Express. 16 Node.js stack ROS stackWeb Browser Client Robot User starts - ROS core. - ROS simulator node. - ROS bridge (port 9090). User starts node stack (port 3000).User accesses Robot via web browser. Then, Web browser requests index.html. Node returns index.html. Web browser requests client.js Node returns client.js. User clicks button on web. Then, the loaded Client.js sends JSON packet via WebSocket (port 9090). ROS bridge - Converts JSON to ROS topic. - Assigns topic to simulator. 1 2 3 4 n User actions Http exchange Web socket access
  • 17. Project 3 - Web and ROS (cont.) - Installation & Launch https://github.com/bus710/rosbridge-usage - Result
  • 18. What's next - Build a combination with SULCATA + ROS Bridge. - Research on robotics topics about SLAM & navigation. - Eventually, make my robot runs errands for me. 18
  • 20. Reference 20 [1] http://wiki.ros.org/ [2] http://gazebosim.org/ [3] https://github.com/OpenKinect/libfreenect2 [4] https://github.com/code-iai/iai_kinect2 [5] https://github.com/robotpilot/rosbook_kr [6] “Programming Robots with ROS”, Morgan Quigley, Brian Gerkey, and William D. Smart [7] http://wiki.ros.org/urg_node [8] http://wiki.ros.org/depthimage_to_laserscan [9] OROCA, the best ROS community in Korea