Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Robotic Exploration and Mapping with Pharo
1. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Robotic Exploration and Mapping with Pharo
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi
IMT Lille – Douai, France
Mai 18, 2017
2. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Table of Contents
1 Introduction to Localization and Mapping
2 ROS & PhaROS
3 Developing in Pharo
4 Conclusion
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 2/31
3. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
What is SLAM?
Our robots
Introduction to Localization and Mapping
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 3/31
4. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
What is SLAM?
Our robots
What is SLAM?
Simultaneous Localization And Mapping (SLAM)
A chicken–and–egg problem:
to locate ourself, we need a map
to create/update a map, we need to know our location
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 4/31
5. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
What is SLAM?
Our robots
Robots in our lab:
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 5/31
6. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
What is SLAM?
Our robots
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 6/31
7. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
ROS
PhaROS
ROS & PhaROS
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 7/31
8. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
ROS
PhaROS
ROS & PhaROS
What is the Robot Operation System (ROS)?
ROS is:
the de-facto standard middleware used in robotics
written in C++ and Python
provides an architecture with a central control structure
has a modular design, build on nodes
organizes data flow via topics
supports distribute systems
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 8/31
9. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
ROS
PhaROS
ROS & PhaROS
Example architecture of a ROS system
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 9/31
10. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
ROS
PhaROS
ROS & PhaROS
Inter–node communication
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 10/31
11. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
ROS
PhaROS
ROS & PhaROS
Two systems with one common master
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 11/31
12. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
ROS
PhaROS
ROS & PhaROS
PhaROS allows us to use Pharo within
the ROS framework to:
create nodes (written in Pharo)
use topics
to transmit and receive data
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 12/31
13. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 13/31
14. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Our setup:
Pharo 5 (+latest PhaROS)
Linux (Ubuntu 16.04 LTS)
ROS kinetic
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 14/31
15. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
What is different when working in robotics?
working with hardware (robots) and simulations
heterogenous systems
distributed systems
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 15/31
16. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Limitations in Pharo and how to deal with them
multithreading support
linear algebra / matrices
no 32bit floats
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 16/31
17. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Multithreading support
Pharo supports multiple threads, but only uses a single CPU
core.
split the node into multiple smaller nodes, running each
node in its own image
communication between nodes requires (de-)serialization
of objects
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 17/31
18. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Linear algebra & matrices
Only basic support for linear algebra.
DhbMatrix as basis
extensions by us, for example to compute eigen vectors &
values
Geometry utility classes in PhaROS
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 18/31
19. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Testing
visual debugging
also test on real robots
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 19/31
20. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Visual debugging
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 20/31
21. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Developing in Pharo
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 21/31
22. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Bugs
Bugs in Pharo
Athens: random freezes
Rectangle #center message
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 22/31
23. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Rectangle bug
Rectangle #center message
Code example:
rect := Rectangle o r i g i n : 0.2@0.2 corner : 0.8@0. 8 .
center := rect center .
rect containsPoint : center . ” false ”
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 23/31
24. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Rectangle bug
What happened?
#center answers with the coordinates floored to the next
integer. In our example the result is 0@0, which is indeed
outside of the rectangle.
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 24/31
25. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Rectangle bug
How to fix it?
First try: fix the #center message.
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 25/31
26. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Rectangle bug
Result: broke some GUI code with the bugfix
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 26/31
27. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Working in robotics
Limitations
Testing
Bugs
Rectangle bug
Second try: derive new class from Rectangle and fix there
Result: works, but requires some refactoring in our code
Tracker link:
https://pharo.fogbugz.com/f/cases/20015
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 27/31
28. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Conclusion
Future work
Conclusion
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 28/31
29. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Conclusion
Future work
Conclusion
robotics with Pharo is quite doable
performance can be limiting in pharo
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 29/31
30. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Conclusion
Future work
Future work
automated tests with the full setup
working with multiple robots at once
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 30/31
31. Introduction to Localization and Mapping
ROS & PhaROS
Developing in Pharo
Conclusion
Conclusion
Future work
Thanks for listening!
Any questions?
Johann Dichtl, Luc Fabresse, and Noury Bouraqadi Robotic Exploration and Mapping with Pharo 31/31