SlideShare a Scribd company logo
1 of 41
Download to read offline
First steps
with Gazebo simulation
for Robocar
Sergey Matyunin
August 2020
Plan
● Motivation
● Intro to ROS
● Building a simulation for roborace in Gazebo
2
Motivation
● Preparing for robocar competition 2019
○ Meetup
○ First steps with robotics
○ Low-cost self driving car
● Donkeycar software
○ https://www.donkeycar.com/
○ Easy to start with
○ Active community
○ Specialized software stack
● Robot Operating System (ROS)
○ flexible framework for writing robot software.
○ It is a collection of tools, libraries, and conventions
○ https://www.ros.org/about-ros/
3
https://www.donkeycar.com/
ROS: Overview
4
How does ROS look like?
● Set up environment
● Write code with ROS libraries in C++ or
python
○ Use built-in modules as building blocks
○ Define message types
○ Write configs
● Launch
● Use visualization and debug tools
5
…
…
Projects with ROS
● Robocar
○ github V1 - race 2019, wiki
○ github V2 (ongoing)
● Project Omicron
○ target: https://www.robocup.org/
○ blog https://project-omicron.github.io/
○ code https://github.com/project-omicron/
6
Porting Donkeycar to ROS
● Inspiration
○ Donkeycar
○ Project Omicron
○ ….
● Hardware was customized a bit
● ROS for Raspberry Pi
○ Installing ROS Kinetic on the Raspberry Pi
○ ROS melodic on Raspberry Pi 3 B+
● Robocar on github
7
Why simulation
● I had two projects ongoing, when Corona happened
● How to develop if you don’t have hardware at hand?
● Donkeycar simulator
○ https://github.com/tawnkramer/sdsandbox
○ Learning to Drive Smoothly in Minutes
● Gazebo simulator
8
What is Gazebo
● Gazebo is an open-source 3D robotics simulator.
○ Physics engine
○ 3D rendering
○ Sensor simulation
○ Integration with ROS
● Let’s launch some simulation (video)
○ $ sudo apt-get install ros-<distro>-husky-simulator
○ $ source /opt/ros/melodic/setup.bash
○ $ export HUSKY_GAZEBO_DESCRIPTION=$(rospack find husky_gazebo)/urdf/description.gazebo.xacro
○ $ roslaunch husky_gazebo husky_playpen.launch kinect_enabled:=true
○ In another terminal to check that the sensors work
# activate ROS
$ rqt_image_view
○ In another terminal to control
# activate ROS
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
9
Another example
● Project Omicron https://github.com/project-omicron/gazebo_simulation
○ Check out the README, install the dependencies.
○
○ Controlling
cd ~/catkin_ws/ && source devel/setup.bash
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
10
Another example
11
Resources for learning
● Tutorials
○ http://wiki.ros.org/urdf_tutorial
○ http://gazebosim.org/tutorials
● Learning by copying
○ turtlebot3 https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/
○ husky http://wiki.ros.org/husky_gazebo/Tutorials/Simulating%20Husky
○ husky + slam https://github.com/incebellipipo/carto_demo
● More advanced examples
○ https://github.com/AutoRally/autorally
○ https://mushr.io/tutorials/intro-to-ros/
12
Simulation for robocar race
13
Simulation for robocar race
├──
├──
│ └──
├──
└──
14
changing package.xml
15
launch file
16
launch file - results
17
Defining the (empty) world
18
Defining the (empty) world
19
Defining a robot
To define a robot we have to describe all the parts (aka links) and connections
between them (aka joints).
Ros and Gazebo take care of
● geometrical transformations (tf module),
● physics simulation and rendering.
http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF 20
Defining a robot - URDF/XACRO (not working)
21
Defining a model - XACRO for Gazebo
22
Defining a model - Updating launch file
23
…
…
…
Defining a model - Results
24
Defining a model - Results
25
Let’s add some wheels - XACRO update
26
…
…
Let’s add some wheels - launch.xml
27
……
Let’s add some wheels - controller
28
Launching
29
A realistic car with Ackermann steering
https://en.wikipedia.org/wiki/Ackermann_steering_geometry
https://github.com/trainman419/ackermann_vehicle-1, blog post
30
A realistic car with Ackermann steering
Changes in launch file:
<node name="controller_spawner" pkg="controller_manager" type="spawner"
args="$(arg joint_params)" output="screen"/>
<!-- Control the steering, axle, and shock absorber joints. -->
<node name="ackermann_controller" pkg="robocar_simulation"
type="ackermann_controller.py"
output="screen">
<param name="cmd_timeout" value="$(arg cmd_timeout)"/>
<rosparam file="$(find robocar_simulation)/config/em_3905_ackermann_ctrlr_params.yaml"
command="load"/>
</node>
<!-- required to get geometrical transformations from ackermann_controller -->
<node name="vehicle_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher">
<param name="publish_frequency" value="30.0"/>
</node>
31
A realistic car with Ackermann steering
Publishing ackermann_msgs:
roslaunch robocar_simulation robocar_sim.launch model:=$(rospack find
robocar_ackermann_description)/urdf/car.xacro joint_params:=$(rospack find
robocar_simulation)/config/em_3905_joint_ctrlr_params.yaml
Results:
https://www.youtube.com/watch?v=oXl0L4rbr3o
32
Defining the track
33
https://github.com/project-omicron/gazebo_simulation
Defining the track
34
Defining the track
35
└──
├──
│ ├──
│ │ ├──
│ │ └──
│ └──
│ ├──
│ ├──
│ └──
├──
├──
├──
├──
├──
└──
Defining the track (model.sdf)
36
Defining the track (3d model and materials)
37
Results
https://youtu.be/vllWGL7J_i8
38
What is missing?
● Simulating sensors
○ Raspberry pi camera
https://github.com/UbiquityRobotics/raspic
am_node.git
○ Realsense camera
https://github.com/SyrianSpock/realsense_
gazebo_plugin.git
○ Lidar
http://gazebosim.org/tutorials?tut=add_las
er#AddingaLaser
○ IMU
http://wiki.ros.org/hector_gazebo_plugins
○ Some usage examples:
https://github.com/project-omicron/gazebo
_simulation
● Algorithm of the robot steering
39
Possible future topics
● More about ROS
● ROS on Arduino
● Simultaneous localization and mapping (SLAM)
○ Basics
○ SLAM in ROS
● Sensors simulation for Gazebo
40
Join us!
Autonomous Mobility Slack channel
https://join.slack.com/t/autonom-mobility/shared
_invite/zt-2srteszk-KUI6yVDE33PXo9xE_f1JXw
41
Advanced Computer Vision Study Group
https://www.meetup.com/advanced-computer-vision/
https://advancedcomputervision.github.io/
Scope: reading and discussing state of the art papers
First topic: Unsupervised depth estimation
Paper: 3D Packing for Self-Supervised Monocular Depth
Estimation, by Vitor Guizilini et al, 2020

More Related Content

What's hot

Robot operating system [ROS]
Robot operating system [ROS]Robot operating system [ROS]
Robot operating system [ROS]Abrar Mohamed
 
Convolutional Neural Networks
Convolutional Neural NetworksConvolutional Neural Networks
Convolutional Neural NetworksAshray Bhandare
 
Object detection presentation
Object detection presentationObject detection presentation
Object detection presentationAshwinBicholiya
 
An Introduction to ROS-Industrial
An Introduction to ROS-IndustrialAn Introduction to ROS-Industrial
An Introduction to ROS-IndustrialClay Flannigan
 
TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...
TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...
TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...Edureka!
 
Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...
Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...
Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...Simplilearn
 
Robotics in AI
Robotics in AIRobotics in AI
Robotics in AIAkhil TR
 
Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)Piyush Chand
 
Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?Subin An
 
Lidar for Autonomous Driving II (via Deep Learning)
Lidar for Autonomous Driving II (via Deep Learning)Lidar for Autonomous Driving II (via Deep Learning)
Lidar for Autonomous Driving II (via Deep Learning)Yu Huang
 
Google Media Pipe and Computer Vision
Google Media Pipe and Computer VisionGoogle Media Pipe and Computer Vision
Google Media Pipe and Computer VisionMatias Iacono
 
Convolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoConvolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoSeongwon Hwang
 
Intro to Deep Reinforcement Learning
Intro to Deep Reinforcement LearningIntro to Deep Reinforcement Learning
Intro to Deep Reinforcement LearningKhaled Saleh
 
Robotics in-artificial-intelligence
Robotics in-artificial-intelligenceRobotics in-artificial-intelligence
Robotics in-artificial-intelligenceSaqib Ahmed
 
RNN and its applications
RNN and its applicationsRNN and its applications
RNN and its applicationsSungjoon Choi
 

What's hot (20)

Robowars
RobowarsRobowars
Robowars
 
Robot operating system [ROS]
Robot operating system [ROS]Robot operating system [ROS]
Robot operating system [ROS]
 
Convolutional Neural Networks
Convolutional Neural NetworksConvolutional Neural Networks
Convolutional Neural Networks
 
Object detection presentation
Object detection presentationObject detection presentation
Object detection presentation
 
An Introduction to ROS-Industrial
An Introduction to ROS-IndustrialAn Introduction to ROS-Industrial
An Introduction to ROS-Industrial
 
OpenCV Introduction
OpenCV IntroductionOpenCV Introduction
OpenCV Introduction
 
TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...
TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...
TensorFlow Object Detection | Realtime Object Detection with TensorFlow | Ten...
 
Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...
Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...
Convolutional Neural Network - CNN | How CNN Works | Deep Learning Course | S...
 
linear classification
linear classificationlinear classification
linear classification
 
Robotics in AI
Robotics in AIRobotics in AI
Robotics in AI
 
Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)
 
Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?
 
Lidar for Autonomous Driving II (via Deep Learning)
Lidar for Autonomous Driving II (via Deep Learning)Lidar for Autonomous Driving II (via Deep Learning)
Lidar for Autonomous Driving II (via Deep Learning)
 
Google Media Pipe and Computer Vision
Google Media Pipe and Computer VisionGoogle Media Pipe and Computer Vision
Google Media Pipe and Computer Vision
 
Swarm robotics ppt
Swarm robotics pptSwarm robotics ppt
Swarm robotics ppt
 
Convolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoConvolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in Theano
 
Intro to Deep Reinforcement Learning
Intro to Deep Reinforcement LearningIntro to Deep Reinforcement Learning
Intro to Deep Reinforcement Learning
 
ROS vs ROS2
ROS vs ROS2ROS vs ROS2
ROS vs ROS2
 
Robotics in-artificial-intelligence
Robotics in-artificial-intelligenceRobotics in-artificial-intelligence
Robotics in-artificial-intelligence
 
RNN and its applications
RNN and its applicationsRNN and its applications
RNN and its applications
 

Similar to First steps with Gazebo simulation for ROS

Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarDocker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarApplitools
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Boosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore DockerBoosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore DockerPeter Nazarov
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentKarim Yaghmour
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Continuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e JenkinsContinuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e JenkinsBruno Padilha
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernelJohnson Chou
 
Build and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes worldBuild and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes worldJorge Morales
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
ContainerDayVietnam2016: Django Development with Docker
ContainerDayVietnam2016: Django Development with DockerContainerDayVietnam2016: Django Development with Docker
ContainerDayVietnam2016: Django Development with DockerDocker-Hanoi
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...Olivier Destrebecq
 
Super powered Drupal development with docker
Super powered Drupal development with dockerSuper powered Drupal development with docker
Super powered Drupal development with dockerMaciej Lukianski
 
Docker slides
Docker slidesDocker slides
Docker slidesAyla Khan
 
Take care of hundred containers and not go crazy
Take care of hundred containers and not go crazyTake care of hundred containers and not go crazy
Take care of hundred containers and not go crazyHonza Horák
 

Similar to First steps with Gazebo simulation for ROS (20)

Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013
 
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarDocker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Boosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore DockerBoosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore Docker
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Continuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e JenkinsContinuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e Jenkins
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernel
 
Build and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes worldBuild and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes world
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
ContainerDayVietnam2016: Django Development with Docker
ContainerDayVietnam2016: Django Development with DockerContainerDayVietnam2016: Django Development with Docker
ContainerDayVietnam2016: Django Development with Docker
 
Set up a Development Environment in 5 Minutes
Set up a Development Environment in 5 MinutesSet up a Development Environment in 5 Minutes
Set up a Development Environment in 5 Minutes
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
 
Super powered Drupal development with docker
Super powered Drupal development with dockerSuper powered Drupal development with docker
Super powered Drupal development with docker
 
Docker slides
Docker slidesDocker slides
Docker slides
 
Take care of hundred containers and not go crazy
Take care of hundred containers and not go crazyTake care of hundred containers and not go crazy
Take care of hundred containers and not go crazy
 

Recently uploaded

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 

Recently uploaded (20)

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 

First steps with Gazebo simulation for ROS

  • 1. First steps with Gazebo simulation for Robocar Sergey Matyunin August 2020
  • 2. Plan ● Motivation ● Intro to ROS ● Building a simulation for roborace in Gazebo 2
  • 3. Motivation ● Preparing for robocar competition 2019 ○ Meetup ○ First steps with robotics ○ Low-cost self driving car ● Donkeycar software ○ https://www.donkeycar.com/ ○ Easy to start with ○ Active community ○ Specialized software stack ● Robot Operating System (ROS) ○ flexible framework for writing robot software. ○ It is a collection of tools, libraries, and conventions ○ https://www.ros.org/about-ros/ 3 https://www.donkeycar.com/
  • 5. How does ROS look like? ● Set up environment ● Write code with ROS libraries in C++ or python ○ Use built-in modules as building blocks ○ Define message types ○ Write configs ● Launch ● Use visualization and debug tools 5 … …
  • 6. Projects with ROS ● Robocar ○ github V1 - race 2019, wiki ○ github V2 (ongoing) ● Project Omicron ○ target: https://www.robocup.org/ ○ blog https://project-omicron.github.io/ ○ code https://github.com/project-omicron/ 6
  • 7. Porting Donkeycar to ROS ● Inspiration ○ Donkeycar ○ Project Omicron ○ …. ● Hardware was customized a bit ● ROS for Raspberry Pi ○ Installing ROS Kinetic on the Raspberry Pi ○ ROS melodic on Raspberry Pi 3 B+ ● Robocar on github 7
  • 8. Why simulation ● I had two projects ongoing, when Corona happened ● How to develop if you don’t have hardware at hand? ● Donkeycar simulator ○ https://github.com/tawnkramer/sdsandbox ○ Learning to Drive Smoothly in Minutes ● Gazebo simulator 8
  • 9. What is Gazebo ● Gazebo is an open-source 3D robotics simulator. ○ Physics engine ○ 3D rendering ○ Sensor simulation ○ Integration with ROS ● Let’s launch some simulation (video) ○ $ sudo apt-get install ros-<distro>-husky-simulator ○ $ source /opt/ros/melodic/setup.bash ○ $ export HUSKY_GAZEBO_DESCRIPTION=$(rospack find husky_gazebo)/urdf/description.gazebo.xacro ○ $ roslaunch husky_gazebo husky_playpen.launch kinect_enabled:=true ○ In another terminal to check that the sensors work # activate ROS $ rqt_image_view ○ In another terminal to control # activate ROS rosrun teleop_twist_keyboard teleop_twist_keyboard.py 9
  • 10. Another example ● Project Omicron https://github.com/project-omicron/gazebo_simulation ○ Check out the README, install the dependencies. ○ ○ Controlling cd ~/catkin_ws/ && source devel/setup.bash rosrun teleop_twist_keyboard teleop_twist_keyboard.py 10
  • 12. Resources for learning ● Tutorials ○ http://wiki.ros.org/urdf_tutorial ○ http://gazebosim.org/tutorials ● Learning by copying ○ turtlebot3 https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/ ○ husky http://wiki.ros.org/husky_gazebo/Tutorials/Simulating%20Husky ○ husky + slam https://github.com/incebellipipo/carto_demo ● More advanced examples ○ https://github.com/AutoRally/autorally ○ https://mushr.io/tutorials/intro-to-ros/ 12
  • 14. Simulation for robocar race ├── ├── │ └── ├── └── 14
  • 17. launch file - results 17
  • 20. Defining a robot To define a robot we have to describe all the parts (aka links) and connections between them (aka joints). Ros and Gazebo take care of ● geometrical transformations (tf module), ● physics simulation and rendering. http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF 20
  • 21. Defining a robot - URDF/XACRO (not working) 21
  • 22. Defining a model - XACRO for Gazebo 22
  • 23. Defining a model - Updating launch file 23 … … …
  • 24. Defining a model - Results 24
  • 25. Defining a model - Results 25
  • 26. Let’s add some wheels - XACRO update 26 … …
  • 27. Let’s add some wheels - launch.xml 27 ……
  • 28. Let’s add some wheels - controller 28
  • 30. A realistic car with Ackermann steering https://en.wikipedia.org/wiki/Ackermann_steering_geometry https://github.com/trainman419/ackermann_vehicle-1, blog post 30
  • 31. A realistic car with Ackermann steering Changes in launch file: <node name="controller_spawner" pkg="controller_manager" type="spawner" args="$(arg joint_params)" output="screen"/> <!-- Control the steering, axle, and shock absorber joints. --> <node name="ackermann_controller" pkg="robocar_simulation" type="ackermann_controller.py" output="screen"> <param name="cmd_timeout" value="$(arg cmd_timeout)"/> <rosparam file="$(find robocar_simulation)/config/em_3905_ackermann_ctrlr_params.yaml" command="load"/> </node> <!-- required to get geometrical transformations from ackermann_controller --> <node name="vehicle_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"> <param name="publish_frequency" value="30.0"/> </node> 31
  • 32. A realistic car with Ackermann steering Publishing ackermann_msgs: roslaunch robocar_simulation robocar_sim.launch model:=$(rospack find robocar_ackermann_description)/urdf/car.xacro joint_params:=$(rospack find robocar_simulation)/config/em_3905_joint_ctrlr_params.yaml Results: https://www.youtube.com/watch?v=oXl0L4rbr3o 32
  • 35. Defining the track 35 └── ├── │ ├── │ │ ├── │ │ └── │ └── │ ├── │ ├── │ └── ├── ├── ├── ├── ├── └──
  • 36. Defining the track (model.sdf) 36
  • 37. Defining the track (3d model and materials) 37
  • 39. What is missing? ● Simulating sensors ○ Raspberry pi camera https://github.com/UbiquityRobotics/raspic am_node.git ○ Realsense camera https://github.com/SyrianSpock/realsense_ gazebo_plugin.git ○ Lidar http://gazebosim.org/tutorials?tut=add_las er#AddingaLaser ○ IMU http://wiki.ros.org/hector_gazebo_plugins ○ Some usage examples: https://github.com/project-omicron/gazebo _simulation ● Algorithm of the robot steering 39
  • 40. Possible future topics ● More about ROS ● ROS on Arduino ● Simultaneous localization and mapping (SLAM) ○ Basics ○ SLAM in ROS ● Sensors simulation for Gazebo 40
  • 41. Join us! Autonomous Mobility Slack channel https://join.slack.com/t/autonom-mobility/shared _invite/zt-2srteszk-KUI6yVDE33PXo9xE_f1JXw 41 Advanced Computer Vision Study Group https://www.meetup.com/advanced-computer-vision/ https://advancedcomputervision.github.io/ Scope: reading and discussing state of the art papers First topic: Unsupervised depth estimation Paper: 3D Packing for Self-Supervised Monocular Depth Estimation, by Vitor Guizilini et al, 2020