====== Robot Operating System ====== {{tag>software}} The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. It is organised in nodes, topic and services. Each node can subscribe or publish on a topic, allowing the node to communicate. The nodes can also proposed services that can be used by others nodes. For example, a node can have the addition service, if another node send a request to this service with two number, the node will answer with the sum of this numbers.http://wiki.ros.org/ ===== Version ===== The version of ROS used is the **Kinetic distro** with the **Catkin format** for the packages. ===== Tutorials ===== You can find some tutorials on the official website. It is advised to do the beginner level in order to understand how ROS works. Do not forget to check the distro and the type of package used. http://wiki.ros.org/ROS/Tutorials ===== Packages ===== Here is a list of the different packages used on the previous projects {{topic>ros_package}} [[openai_ros]] ==== What is ROS ==== http://www.ros.org/core-components/ http://www.clearpathrobotics.com/2014/01/how-to-guide-ros-101 : "a particular sensor’s driver might be implemented as a node, which publishes sensor data in a stream of messages. These messages could be consumed by any number of other nodes, including filters, loggers, and also higher-level systems such as guidance, pathfinding, etc." http://www.generationrobots.com/en/content/55-ros-robot-operating-system ===== Best practice ===== Still thinking about how to write this part. In the meantime, here are some good links on that topic: https://github.com/ethz-asl/ros_best_practices/wiki http://wiki.ros.org/ROS/Patterns/Communication#Topics_vs_Services_vs_Actionlib%E2%80%A6 http://wiki.ros.org/CppStyleGuide http://wiki.ros.org/DevelopersGuide#Standardization http://wiki.ros.org/ROS/Patterns/Conventions#Naming_ROS_Resources ===== Advices ===== * It is advice to add the line "source path_to_your/catkin_ws/devel/setup.bash" to ~/.bashrc ===== Projects using ROS in our lab ===== {{topic>ROS}}