> For the complete documentation index, see [llms.txt](https://robertchoi.gitbook.io/ros2/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://robertchoi.gitbook.io/ros2/00-1-ros1-vs-ros2.md).

# 00장-1 ROS1 VS ROS2

* **ROS(Robot Operating System)**

* Language : C++03, Python 2

* Bulid system : rosbuild → catkin

* Messages, Services : \*.msg, \*.srv

* roslaunch : XML

* multiple nodes : one node in a process

* real-time : external frameworks like OROCOS

* Graph API : remapping at startup time only

* Embedded systems : rosserial (UART)

* Node manager : ROS Master

* Node communication : XMLRPC(XML-Remote Procedure Call: 마스터구)+ TCPROS

* ROS 1 code under the 3-clause (or “new”) BSD License

* **ROS 2(Robot Operating System 2)**

* Language : C++14, Python 3 (3.5+)

* Bulid system : ament, colcon

* Messages, Services : new \*.msg, \*.srv, \*.msg.idl, \*.srv.idl

* roslaunch : written in Python

* multiple nodes : multiple nodes in a process

* real-time : real-time nodes when using a proper RTOS with carefully written user code

* Graph API : remapping at runtime

* Embedded systems : FreeRTPS, microRTPS, microROS, ros2arduino

* Node manager : No

* Node communication : IDL, DDS, DDS-I RTPS

* Multi-platform : Supported by Linux, Windows and MacOS

* Real-time & Embedded OSs와 같은 새로운 플랫폼으로의 관심과 투자.

* Interoperability with ROS 1 : ROS 2는 ROS1과의 양방향 통신을 처리하는 bridge를 포함. 기존 ROS 1 응용 프로그램을 사용할 경우, 요구 사항 및 사용 가능한 리소스에 따라 bridge를 통해 응용 프로그램을 점진적으로 porting하여 ROS 2에서 이용가능.

* &#x20;Permissive open source license  : ROS 2 code is licensed under Apache 2.0 License(ROS1과 ROS2 lisence 모두, 사용자의 지적 재산에 영향을 미치지 않고 소프트웨어를 허용.)
