diff --git a/_docs/concepts/client_library/execution_management/index.md b/_docs/concepts/client_library/execution_management/index.md index d0eae0e7..d8eb3560 100644 --- a/_docs/concepts/client_library/execution_management/index.md +++ b/_docs/concepts/client_library/execution_management/index.md @@ -470,7 +470,7 @@ The RCLC Executor is an Executor for C applications and can be used with default publishing needs to be atomic ### Download -The RCLC-Executor can be downloaded from the [micro-ROS rclc repository](https://github.com/micro-ROS/rclc). In this repository, the [rclc package](https://github.com/micro-ROS/rclc/tree/master/rclc) provides the RCLC-Executor and the [rclc_examples package](https://github.com/micro-ROS/rclc/tree/master/rclc_examples) provides several demos. Further more, the rclc Executor is also available from the [ros2/rclc repository](https://github.com/ros2/rclc). +The RCLC-Executor can be downloaded from the [micro-ROS rclc repository](https://github.com/ros2/rclc). In this repository, the [rclc package](https://github.com/ros2/rclc/tree/master/rclc) provides the RCLC-Executor and the [rclc_examples package](https://github.com/ros2/rclc/tree/master/rclc_examples) provides several demos. Further more, the rclc Executor is also available from the [ros2/rclc repository](https://github.com/ros2/rclc). diff --git a/_docs/overview/ROS_2_feature_comparison/index.md b/_docs/overview/ROS_2_feature_comparison/index.md index b35bd71d..5adea33c 100644 --- a/_docs/overview/ROS_2_feature_comparison/index.md +++ b/_docs/overview/ROS_2_feature_comparison/index.md @@ -16,9 +16,9 @@ Comparison of micro-ROS features with ROS 2 features. The following list has bee ROS 2 Feature | | Availability in micro-ROS -- | -- | -- -Common core client library that is wrapped by language-specific libraries | ✓∘ | Use of the client support library [rcl](https://github.com/ros2/rcl/) from ROS 2 as-is. The [rclc](https://github.com/micro-ROS/rclc) package provides convenience functions and an executor for use of rcl+rclc as client library for the C programming language. *Roadmap: migrate all functionalities to the rclc, so as to make it an independent abstraction layer on top of the rcl that serves as user's API.* +Common core client library that is wrapped by language-specific libraries | ✓∘ | Use of the client support library [rcl](https://github.com/ros2/rcl/) from ROS 2 as-is. The [rclc](https://github.com/ros2/rclc) package provides convenience functions and an executor for use of rcl+rclc as client library for the C programming language. *Roadmap: migrate all functionalities to the rclc, so as to make it an independent abstraction layer on top of the rcl that serves as user's API.* Composition of node components at compile-, link- or dlopen-time | | Composition at compile-time only. Composition at runtime would depend highly on the RTOS. -Support for nodes with managed lifecycles | | The [rclc_lifecycle](https://github.com/micro-ROS/rclc/blob/master/rclc_lifecycle/) package provides an `rclc_lifecycle_node` type which bundles an rcl node with the lifecycle state machine as well as corresponding convenience functions. +Support for nodes with managed lifecycles | | The [rclc_lifecycle](https://github.com/ros2/rclc/blob/master/rclc_lifecycle/) package provides an `rclc_lifecycle_node` type which bundles an rcl node with the lifecycle state machine as well as corresponding convenience functions. ### Seamless integration with ROS 2 @@ -63,7 +63,7 @@ Supported Operating Systems | | micro- Feature | | Availability in micro-ROS -- | -- | -- Demos of an all-ROS 2 mobile robot | | Demos of several ROS 2 + micro-ROS robots available. See [https://micro-ros.github.io/docs/tutorials/demos/](https://micro-ros.github.io/docs/tutorials/demos/). -Support for real-time code | | Real-time behaviour is key to micro-ROS typical usages. The [rclc Executor](https://github.com/micro-ROS/rclc/tree/master/rclc) provides mechanisms for implementing real-time-critical applications. At lower levels, the Micro XRCE-DDS library exhibits real-timeness and determinism for being dynamic memory free and for providing functions to perform tasks within well-defined periods of time. +Support for real-time code | | Real-time behaviour is key to micro-ROS typical usages. The [rclc Executor](https://github.com/ros2/rclc/tree/master/rclc) provides mechanisms for implementing real-time-critical applications. At lower levels, the Micro XRCE-DDS library exhibits real-timeness and determinism for being dynamic memory free and for providing functions to perform tasks within well-defined periods of time. Support for "bare-metal" microcontrollers | | Bringing ROS 2 onto MCUs is all that micro-ROS is about. The standard approach to micro-ROS assumes an RTOS underneath (e.g., [FreeRTOS](https://www.freertos.org/), [Zephyr](https://www.zephyrproject.org/), or [NuttX](http://nuttx.apache.org/)). Recent developments aim at loosening this requirement, with the integration into [Arduino IDE](https://github.com/micro-ROS/micro_ros_arduino) being a first step towards true micro-ROS bare-metal support. Continuous Integration | ✓∘ | Currently, the CI for micro-ROS is distributed to GitHub and GitLab. *Until the end of 2020, all CI should be moved migrated completely to the new CI actions of GitHub.* Please note that those packages that are released for standard ROS 2 are also built and tested on [build.ros2.org](http://build.ros2.org/). Documentation | | High-level documentation at [micro-ros.github.io](https://micro-ros.github.io/). For detailed information please consult the README.md files in the relevant micro-ROS repositories at [github.com/micro-ROS/](https://github.com/micro-ROS/). For information on the middleware implementation, take a look at the [Micro XRCE-DDS documentation](https://micro-xrce-dds.docs.eprosima.com/en/latest/). diff --git a/_docs/overview/docker_ci_status/index.md b/_docs/overview/docker_ci_status/index.md index a401d9f3..db0b2033 100644 --- a/_docs/overview/docker_ci_status/index.md +++ b/_docs/overview/docker_ci_status/index.md @@ -35,7 +35,7 @@ Most repositories can be found in GitHub's micro-ROS organization at [github.com | [micro-ROS-Agent](https://github.com/micro-ROS/micro-ROS-Agent) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/micro-ROS/micro-ROS-Agent/tree/dashing) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro-ROS-Agent/tree/foxy) | Agent (bridge) to ROS 2 | [![](https://img.shields.io/github/workflow/status/micro-ROS/micro-ROS-Agent/CI%20micro-ROS%20Agent)](https://github.com/micro-ROS/micro-ROS-Agent/actions?query=workflow%3A%22CI+micro-ROS+Agent%22) | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS-Agent.svg)](https://github.com/micro-ROS/micro-ROS-Agent/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS-Agent.svg)](https://github.com/micro-ROS/micro-ROS-Agent/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-Agent/blob/master/README.md) | | [micro-ros-msgs](https://github.com/micro-ROS/micro_ros_msgs) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro_ros_msgs/tree/foxy) | Specific ROS 2 messages used within micro-ROS architecture | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_msgs.svg)](https://github.com/micro-ROS/micro_ros_msgs/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_msgs.svg)](https://github.com/micro-ROS/micro_ros_msgs/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_msgs/blob/main/README.md) | | [system_modes](https://github.com/micro-ROS/system_modes) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/micro-ROS/system_modes/releases) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/micro-ROS/system_modes/releases) | Extension for `rclcpp` | [![Build Status](https://img.shields.io/github/workflow/status/micro-ROS/system_modes/Test%20system%20modes)](https://github.com/micro-ROS/system_modes/actions?query=workflow%3A%22Test+system+modes%22) | [![](https://img.shields.io/github/issues/micro-ROS/system_modes.svg)](https://github.com/micro-ROS/system_modes/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/system_modes.svg)](https://github.com/micro-ROS/system_modes/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/system_modes/blob/master/README.md) | -| [rclc](https://github.com/micro-ROS/rclc) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/micro-ROS/rclc/tree/dashing) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/micro-ROS/rclc/tree/master) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/rclc/tree/master) | Set of convenience functions and additional concepts, such as executor, to extend the capabilities of ROS 2 `rcl` in C | [![Build Status](https://img.shields.io/github/workflow/status/micro-ROS/rclc/CI%20RCLC)](https://github.com/micro-ROS/rclc/actions?query=workflow%3A%22CI+RCLC%22) | [![](https://img.shields.io/github/issues/micro-ROS/rclc.svg)](https://github.com/micro-ROS/rclc/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/rclc.svg)](https://github.com/micro-ROS/rclc/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/rclc/blob/master/README.md) | +| [rclc](https://github.com/ros2/rclc) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/ros2/rclc/tree/dashing) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/ros2/rclc/tree/master) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/ros2/rclc/tree/master) | Set of convenience functions and additional concepts, such as executor, to extend the capabilities of ROS 2 `rcl` in C | [![Build Status](https://img.shields.io/github/workflow/status/ros2/rclc/CI%20RCLC)](https://github.com/ros2/rclc/actions?query=workflow%3A%22CI+RCLC%22) | [![](https://img.shields.io/github/issues/ros2/rclc.svg)](https://github.com/ros2/rclc/issues) [![](https://img.shields.io/github/issues-pr/ros2/rclc.svg)](https://github.com/ros2/rclc/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/ros2/rclc/blob/master/README.md) | ## Example Application Repositories Status diff --git a/_docs/tutorials/core/create_dds_entities_by_ref/index.md b/_docs/tutorials/core/create_dds_entities_by_ref/index.md index a60530f9..4d7491cb 100644 --- a/_docs/tutorials/core/create_dds_entities_by_ref/index.md +++ b/_docs/tutorials/core/create_dds_entities_by_ref/index.md @@ -8,7 +8,7 @@ This tutorial explains the procedure for creating micro-ROS entities using fully - By XML (the default option in micro-ROS RMW) - By reference -Using the *default option* the micro-ROS user will be able to create entities using RCLC functions such as `rclc_publisher_init_default` for reliable communications or `rclc_publisher_init_best_effort` for best effort communications. Please check [RCLC](https://github.com/micro-ROS/rclc) for an updated list of convenience functions. +Using the *default option* the micro-ROS user will be able to create entities using RCLC functions such as `rclc_publisher_init_default` for reliable communications or `rclc_publisher_init_best_effort` for best effort communications. Please check [RCLC](https://github.com/ros2/rclc) for an updated list of convenience functions. For those familiar with the QoS XML format in DDS (click [here](https://fast-dds.docs.eprosima.com/en/latest/fastdds/dds_layer/core/policy/policy.html) for detailed information), the underlying QoS profile used by this default mode looks like this: diff --git a/_docs/tutorials/core/programming_rcl_rclc/index.md b/_docs/tutorials/core/programming_rcl_rclc/index.md index baf59308..4638d0de 100644 --- a/_docs/tutorials/core/programming_rcl_rclc/index.md +++ b/_docs/tutorials/core/programming_rcl_rclc/index.md @@ -3,7 +3,7 @@ title: Programming with rcl and rclc permalink: /docs/tutorials/core/programming_rcl_rclc/ --- -In this tutorial, you'll learn the basics of the micro-ROS C API. The major concepts (publishers, subscriptions, services,timers, ...) are identical with ROS 2. They even rely on the *same* implementation, as the micro-ROS C API is based on the ROS 2 client support library (rcl), enriched with a set of convenience functions by the package [rclc](https://github.com/micro-ROS/rclc/). That is, rclc does not add a new layer of types on top of rcl (like rclcpp and rclpy do) but only provides functions that ease the programming with the rcl types. New types are introduced only for concepts that are missing in rcl, such as the concept of an executor. +In this tutorial, you'll learn the basics of the micro-ROS C API. The major concepts (publishers, subscriptions, services,timers, ...) are identical with ROS 2. They even rely on the *same* implementation, as the micro-ROS C API is based on the ROS 2 client support library (rcl), enriched with a set of convenience functions by the package [rclc](https://github.com/ros2/rclc/). That is, rclc does not add a new layer of types on top of rcl (like rclcpp and rclpy do) but only provides functions that ease the programming with the rcl types. New types are introduced only for concepts that are missing in rcl, such as the concept of an executor. * [Creating a node](#node) * [Publishers and subscriptions](#pub_sub) @@ -14,7 +14,7 @@ In this tutorial, you'll learn the basics of the micro-ROS C API. The major conc ## Creating a Node -To simplify the creation of a node with rcl, rclc provides two functions `rclc_support_init(..)` and `rclc_node_init_default(..)` in [rclc/init.h](https://github.com/micro-ROS/rclc/blob/master/rclc/include/rclc/init.h) and [rclc/node.h](https://github.com/micro-ROS/rclc/blob/master/rclc/include/rclc/node.h), respectively. The first lines of the main function of a micro-ROS programm are: +To simplify the creation of a node with rcl, rclc provides two functions `rclc_support_init(..)` and `rclc_node_init_default(..)` in [rclc/init.h](https://github.com/ros2/rclc/blob/master/rclc/include/rclc/init.h) and [rclc/node.h](https://github.com/ros2/rclc/blob/master/rclc/include/rclc/node.h), respectively. The first lines of the main function of a micro-ROS programm are: ```C rcl_allocator_t allocator = rcl_get_default_allocator(); @@ -39,7 +39,7 @@ if (rc != RCL_RET_OK) { Publishers and subscribers are most easily created with the rclc package. -Creating a publisher by `rclc_publisher_init_default(..)` from [rclc/publisher.h](https://github.com/micro-ROS/rclc/blob/master/rclc/include/rclc/publisher.h): +Creating a publisher by `rclc_publisher_init_default(..)` from [rclc/publisher.h](https://github.com/ros2/rclc/blob/master/rclc/include/rclc/publisher.h): ```C rcl_publisher_t my_pub; @@ -64,7 +64,7 @@ snprintf(pub_string, 13, "%s", "Hello World!"); rosidl_generator_c__String__assignn(&pub_msg, pub_string, PUB_MSG_SIZE); ``` -Creating a subscription by `rclc_subscription_init_default(..)` from [rclc/subscription.h](https://github.com/micro-ROS/rclc/blob/master/rclc/include/rclc/subscription.h): +Creating a subscription by `rclc_subscription_init_default(..)` from [rclc/subscription.h](https://github.com/ros2/rclc/blob/master/rclc/include/rclc/subscription.h): ```C rcl_subscription_t my_sub = rcl_get_zero_initialized_subscription(); @@ -198,7 +198,7 @@ while(1){ ## Timers A timer can be created with the rclc-package with the function -`rclc_timer_init_default(..)` in [rclc/timer.h](https://github.com/micro-ROS/rclc/blob/master/rclc/include/rclc/timer.h): +`rclc_timer_init_default(..)` in [rclc/timer.h](https://github.com/ros2/rclc/blob/master/rclc/include/rclc/timer.h): ```C // create a timer, which will call the publisher with period=`timer_timeout` ms in the 'my_timer_callback' @@ -292,9 +292,9 @@ rc += rcl_lifecycle_node_fini(&my_lifecycle_node, &allocator); ### Example and Limitations -An example of the rclc Lifecycle Node is given in the file `lifecycle_node.c` in the [rclc_examples](https://github.com/micro-ROS/rclc/tree/master/rclc_examples) package. +An example of the rclc Lifecycle Node is given in the file `lifecycle_node.c` in the [rclc_examples](https://github.com/ros2/rclc/tree/master/rclc_examples) package. -The state machine publishes state changes, however, lifecycle services are not yet exposed via ROS 2 services ([micro-ROS/rclc#40](https://github.com/micro-ROS/rclc/issues/40)). +The state machine publishes state changes, however, lifecycle services are not yet exposed via ROS 2 services ([ros2/rclc#40](https://github.com/ros2/rclc/issues/40)). ## rclc Executor @@ -305,13 +305,13 @@ In this tutorial we provide two examples: * Example 1: Hello-World example consisting of one executor and one publisher, timer and subscription. * Example 2: Triggered execution example, demonstrating the capability of synchronizing the execution of callbacks based on the availability of new messages -Further examples for using the rclc Executor in mobile robotics scenarios and real-time embedded applications can be found in the [rclc](https://github.com/micro-ROS/rclc/tree/master/rclc) repository. +Further examples for using the rclc Executor in mobile robotics scenarios and real-time embedded applications can be found in the [rclc](https://github.com/ros2/rclc/tree/master/rclc) repository. ### Example 1: 'Hello World' To start with, we provide a very simple example for an rclc Executor with one timer and one subscription, so to say, a 'Hello world' example. It consists of a publisher, sending a 'hello world' message to a subscriber, which then prints out the received message on the console. -First, you include some header files, in particular the [rclc/rclc.h](https://github.com/micro-ROS/rclc/blob/master/rclc/include/rclc/rclc.h) and [rclc/executor.h](https://github.com/micro-ROS/rclc/blob/master/rclc/include/rclc/executor.h). +First, you include some header files, in particular the [rclc/rclc.h](https://github.com/ros2/rclc/blob/master/rclc/include/rclc/rclc.h) and [rclc/executor.h](https://github.com/ros2/rclc/blob/master/rclc/include/rclc/executor.h). ```C #include @@ -529,7 +529,7 @@ return 0; } // main ``` -This completes the example. The source code can be found in the package rclc-examples [rclc-examples/example_executor_convenience.c](https://github.com/micro-ROS/rclc/blob/master/rclc_examples/src/example_executor_convenience.c). +This completes the example. The source code can be found in the package rclc-examples [rclc-examples/example_executor_convenience.c](https://github.com/ros2/rclc/blob/master/rclc_examples/src/example_executor_convenience.c). #### Example 2: Triggered execution @@ -1050,4 +1050,4 @@ The following code will setup the executor accordingly: The custom structs `pub_trigger_object_t` are used to save the pointer of the handles. The timers `my_string_timer` and `my_int_timer` for the publishing executor; and, likewise, the subscriptions `my_string_sub` and `my_int_sub` for the subscribing executor. The configuration is done also with the `rclc_executor_set_trigger` by passing the trigger function and the trigger object, e.g. `pub_trigger` and `comm_obj_pub` for the `executor_pub`, respectivly. -The complete source code of this example can be found in the file [rclc-examples/example_executor_trigger.c](https://github.com/micro-ROS/rclc/rclc_examples/example_executor_trigger.c). +The complete source code of this example can be found in the file [rclc-examples/example_executor_trigger.c](https://github.com/ros2/rclc/rclc_examples/example_executor_trigger.c).