ROS (Robot Operating System) is a popular open source robotic middleware. It is a meta-operating system that provides key capabilities required to develop robots such as hardware abstraction, low-level device control, inter-processes message-passing, package management, etc. In addition, ROS has a rich ecosystem that ranges from software (eg. libraries dealing with key robotic aspects such as navigation) to hardware (eg. sensors). We will start this session by introducing ROS and its core principles. By nature ROS is polyglot (eg. C++, Python) but we will look at the possible options that a Java developer has to leverage ROS and its rich ecosystem.