From 5271cb2b932fbeb0c4d9477c0a1c8173e43c65c6 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Fri, 23 Jul 2021 12:31:07 +0200 Subject: [PATCH 01/13] Initialize agent with args input --- CMakeLists.txt | 15 ++++- package.xml | 1 + .../test_agent.hpp | 60 ++++++++++++------- 3 files changed, 53 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8692552d..a46659d6 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,12 +26,20 @@ if(BUILD_TESTING) find_package(fastrtps REQUIRED) find_package(fastrtps_cmake_module REQUIRED) find_package(microxrcedds_agent REQUIRED) + find_package(micro_ros_agent REQUIRED) find_package(rclcpp REQUIRED) find_package(rmw REQUIRED) find_package(std_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(example_interfaces REQUIRED) + find_package(rosidl_typesupport_fastrtps_cpp REQUIRED) + find_package(rosidl_runtime_cpp REQUIRED) + find_package(rosidl_typesupport_cpp REQUIRED) + find_package(rmw_dds_common REQUIRED) + find_package(rmw_fastrtps_shared_cpp REQUIRED) + find_package(micro_ros_msgs REQUIRED) + # ament_lint_auto_find_test_dependencies() ament_add_gtest(${PROJECT_NAME}_test @@ -40,17 +48,20 @@ if(BUILD_TESTING) string(TOUPPER $ENV{ROS_DISTRO} ROS_DISTRO) target_compile_options(${PROJECT_NAME}_test PRIVATE -DROS_DISTRO_${ROS_DISTRO}) - target_include_directories(${PROJECT_NAME}_test PRIVATE include src test) + target_include_directories(${PROJECT_NAME}_test PRIVATE include src test micro_ros_agent_INCLUDE_DIR) target_link_libraries(${PROJECT_NAME}_test fastcdr fastrtps - microxrcedds_agent) + microxrcedds_agent + micro_ros_agent + ) ament_target_dependencies(${PROJECT_NAME}_test fastcdr fastrtps microxrcedds_agent + micro_ros_agent rclcpp rmw std_msgs diff --git a/package.xml b/package.xml index b7383d5d..89e3257d 100755 --- a/package.xml +++ b/package.xml @@ -19,6 +19,7 @@ example_interfaces microxrcedds_agent + micro_ros_agent ament_cmake diff --git a/test/micro_ros_renesas_testbench/test_agent.hpp b/test/micro_ros_renesas_testbench/test_agent.hpp index bee9364f..55c4a99e 100644 --- a/test/micro_ros_renesas_testbench/test_agent.hpp +++ b/test/micro_ros_renesas_testbench/test_agent.hpp @@ -27,6 +27,8 @@ #include #include +#include + class TestAgent { public: @@ -73,61 +75,77 @@ class TestAgent static std::string getIPAddress(); private: - std::shared_ptr agent_thread_; - uint16_t port_; + std::unique_ptr micro_ros_agent; + std::vector agent_args; + std::string port_; std::string dev_; - std::string command_; + std::string verbosity_; }; TestAgent::TestAgent(uint16_t port, uint8_t verbosity = 6) { - port_ = port; - command_ = "ros2 run micro_ros_agent micro_ros_agent udp4 --port " + std::to_string(port_) + " -v" + std::to_string(verbosity); + verbosity_ = "-v" + std::to_string(verbosity); + port_ = std::to_string(port); + + agent_args.push_back(""); + agent_args.push_back("udp4"); + agent_args.push_back("--port"); + agent_args.push_back(port_.c_str()); + agent_args.push_back(verbosity_.c_str()); + micro_ros_agent.reset(new uros::agent::Agent); } TestAgent::TestAgent(std::string dev, uint8_t verbosity = 6) { + verbosity_ = "-v" + std::to_string(verbosity); dev_ = dev; - command_ = "ros2 run micro_ros_agent micro_ros_agent serial --dev " + dev_ + " -v" + std::to_string(verbosity); + + agent_args.push_back(""); + agent_args.push_back("serial"); + agent_args.push_back("--dev"); + agent_args.push_back(dev_.c_str()); + agent_args.push_back(verbosity_.c_str()); + micro_ros_agent.reset(new uros::agent::Agent); } TestAgent::TestAgent(Transport transport, std::string args, uint8_t verbosity = 6) { - std::string transport_type; - + verbosity_ = "-v" + std::to_string(verbosity); + agent_args.push_back(""); + switch (transport) { case Transport::UDP_THREADX_TRANSPORT: case Transport::UDP_FREERTOS_TRANSPORT: - transport_type = "udp4"; + port_ = args; + agent_args.push_back("udp4"); + agent_args.push_back("--port"); + agent_args.push_back(port_.c_str()); break; case Transport::SERIAL_TRANSPORT: case Transport::USB_TRANSPORT: - transport_type = "serial"; + dev_ = args; + agent_args.push_back("serial"); + agent_args.push_back("--dev"); + agent_args.push_back(dev_.c_str()); break; default: break; } - command_ = "ros2 run micro_ros_agent micro_ros_agent " + transport_type + " " + args + " -v" + std::to_string(verbosity); + agent_args.push_back(verbosity_.c_str()); + micro_ros_agent.reset(new uros::agent::Agent); } void TestAgent::start() { - stop(); - agent_thread_.reset(new std::thread( - [&]() -> void { - system(command_.c_str()); - } - )); + micro_ros_agent->create(agent_args.size(), const_cast (agent_args.data())); + agent_args.clear(); } void TestAgent::stop() { - system("pkill micro_ros_agent"); - if(agent_thread_) { - agent_thread_->join(); - } + micro_ros_agent->stop(); } std::string TestAgent::getIPAddress(){ From 7704532a8d540ac8808e76cd7e71500182a3bd06 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Mon, 26 Jul 2021 13:12:05 +0200 Subject: [PATCH 02/13] Update with changes --- test/micro_ros_renesas_testbench/test_agent.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/micro_ros_renesas_testbench/test_agent.hpp b/test/micro_ros_renesas_testbench/test_agent.hpp index 55c4a99e..23d9c70a 100644 --- a/test/micro_ros_renesas_testbench/test_agent.hpp +++ b/test/micro_ros_renesas_testbench/test_agent.hpp @@ -75,7 +75,7 @@ class TestAgent static std::string getIPAddress(); private: - std::unique_ptr micro_ros_agent; + uros::agent::Agent& micro_ros_agent; std::vector agent_args; std::string port_; std::string dev_; @@ -83,6 +83,7 @@ class TestAgent }; TestAgent::TestAgent(uint16_t port, uint8_t verbosity = 6) +: micro_ros_agent(micro_ros_agent.getInstance()) { verbosity_ = "-v" + std::to_string(verbosity); port_ = std::to_string(port); @@ -92,10 +93,10 @@ TestAgent::TestAgent(uint16_t port, uint8_t verbosity = 6) agent_args.push_back("--port"); agent_args.push_back(port_.c_str()); agent_args.push_back(verbosity_.c_str()); - micro_ros_agent.reset(new uros::agent::Agent); } TestAgent::TestAgent(std::string dev, uint8_t verbosity = 6) +: micro_ros_agent(micro_ros_agent.getInstance()) { verbosity_ = "-v" + std::to_string(verbosity); dev_ = dev; @@ -105,10 +106,10 @@ TestAgent::TestAgent(std::string dev, uint8_t verbosity = 6) agent_args.push_back("--dev"); agent_args.push_back(dev_.c_str()); agent_args.push_back(verbosity_.c_str()); - micro_ros_agent.reset(new uros::agent::Agent); } TestAgent::TestAgent(Transport transport, std::string args, uint8_t verbosity = 6) +: micro_ros_agent(micro_ros_agent.getInstance()) { verbosity_ = "-v" + std::to_string(verbosity); agent_args.push_back(""); @@ -134,18 +135,17 @@ TestAgent::TestAgent(Transport transport, std::string args, uint8_t verbosity = } agent_args.push_back(verbosity_.c_str()); - micro_ros_agent.reset(new uros::agent::Agent); } void TestAgent::start() { - micro_ros_agent->create(agent_args.size(), const_cast (agent_args.data())); + micro_ros_agent.create(agent_args.size(), const_cast (agent_args.data())); agent_args.clear(); } void TestAgent::stop() { - micro_ros_agent->stop(); + micro_ros_agent.stop(); } std::string TestAgent::getIPAddress(){ From 5e9570208741353fa31e2c2fab10c2c9def844b8 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Mon, 26 Jul 2021 13:42:41 +0200 Subject: [PATCH 03/13] Fix memory leak --- test/micro_ros_renesas_testbench/test.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/micro_ros_renesas_testbench/test.hpp b/test/micro_ros_renesas_testbench/test.hpp index bdb3b1e9..dc04d734 100644 --- a/test/micro_ros_renesas_testbench/test.hpp +++ b/test/micro_ros_renesas_testbench/test.hpp @@ -109,7 +109,7 @@ class HardwareTestBase : public ::testing::Test // Set domain id rcl_allocator_t allocator = rcl_get_default_allocator(); - rcl_init_options_t init_options = rcl_get_zero_initialized_init_options(); + init_options = rcl_get_zero_initialized_init_options(); ASSERT_EQ(rcl_init_options_init(&init_options, allocator), RCL_RET_OK); rmw_init_options_t* rmw_options = rcl_init_options_get_rmw_init_options(&init_options); @@ -126,6 +126,7 @@ class HardwareTestBase : public ::testing::Test void TearDown() override { agent->stop(); rclcpp::shutdown(); + (void) rcl_init_options_fini(&init_options); } bool checkConnection(){ @@ -204,6 +205,7 @@ class HardwareTestBase : public ::testing::Test std::shared_ptr agent; std::shared_ptr node; rclcpp::InitOptions options; + rcl_init_options_t init_options; std::string cwd; std::string project_name; From b2de9e96d1aefee6c739d72809fb1338f9a35441 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 10:38:08 +0200 Subject: [PATCH 04/13] Update agent branch --- requirements.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.repos b/requirements.repos index d55eef28..2501befb 100644 --- a/requirements.repos +++ b/requirements.repos @@ -7,7 +7,7 @@ repositories: micro-ROS-Agent: type: git url: https://github.com/micro-ROS/micro-ROS-Agent.git - version: galactic + version: feature/stop_agent Micro-XRCE-DDS-Agent: type: git url: https://github.com/eProsima/Micro-XRCE-DDS-Agent.git From b6744e9063c8e95cbc35f9ae19bee9519a6e7c67 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 10:57:57 +0200 Subject: [PATCH 05/13] Set branch --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 609ae0ea..5891d709 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: with: path: ros_ws/src/micro_ros_renesas_testbench submodules: recursive - ref: ${{ matrix.ros_distribution }} + ref: feature/agent_API token: ${{ secrets.PRIVATE_KEY }} - name: Download dependencies run: | From 87357ee1da53a17e5d5bfd139e4e4e883e1e9c55 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 11:00:45 +0200 Subject: [PATCH 06/13] Set branch --- .github/workflows/build_agent.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 7bd38afd..7b2c4f9f 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -23,7 +23,7 @@ jobs: with: path: ros_ws/src/micro_ros_renesas_testbench submodules: recursive - ref: ${{ matrix.ros_distribution }} + ref: feature/agent_API token: ${{ secrets.PRIVATE_KEY }} - name: Download dependencies run: | From 3b540edd56210e394f41500f35ca00bb2f775da4 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 11:50:52 +0200 Subject: [PATCH 07/13] Update to only run on galactic --- .github/workflows/build_agent.yml | 2 +- .github/workflows/ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 7b2c4f9f..958775e3 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - ros_distribution: [ foxy, galactic ] + ros_distribution: [ galactic ] runs-on: rpi-ros2-${{ matrix.ros_distribution }} steps: # - uses: ros-tooling/setup-ros@0.2.1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5891d709..850ed956 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - ros_distribution: [ foxy, galactic ] + ros_distribution: [ galactic ] runs-on: rpi-ros2-${{ matrix.ros_distribution }} steps: # - uses: ros-tooling/setup-ros@0.2.1 From 7feb753cb57513d9a47e85540fdfb047ed0cfae8 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 13:24:30 +0200 Subject: [PATCH 08/13] Update agent build ci --- .github/workflows/build_agent.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 958775e3..7e98092c 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -13,7 +13,10 @@ jobs: strategy: fail-fast: false matrix: - ros_distribution: [ galactic ] + - ros_distribution: galactic + agent_branch: feature/stop_agent + - ros_distribution: foxy + agent_branch: backport/stop_agent runs-on: rpi-ros2-${{ matrix.ros_distribution }} steps: # - uses: ros-tooling/setup-ros@0.2.1 @@ -23,7 +26,7 @@ jobs: with: path: ros_ws/src/micro_ros_renesas_testbench submodules: recursive - ref: feature/agent_API + ref: ${{ matrix.agent_branch }} token: ${{ secrets.PRIVATE_KEY }} - name: Download dependencies run: | From b13c24015e6ac8d9f533060311f71e1a98936485 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 13:32:09 +0200 Subject: [PATCH 09/13] Test ci --- .github/workflows/build_agent.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 7e98092c..8066e6c3 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -13,11 +13,14 @@ jobs: strategy: fail-fast: false matrix: - - ros_distribution: galactic - agent_branch: feature/stop_agent - - ros_distribution: foxy - agent_branch: backport/stop_agent + ros_distribution: [foxy, galactic] runs-on: rpi-ros2-${{ matrix.ros_distribution }} + variables: + AGENT_BRANCH: "feature/stop_agent" + rules: + - if: ${{ matrix.ros_distribution }} == foxy + variables: + AGENT_BRANCH: "backport/stop_agent" # at the job level. steps: # - uses: ros-tooling/setup-ros@0.2.1 # with: From e8bccc3a36e252d2ac592118dbf97d012673702b Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 13:46:51 +0200 Subject: [PATCH 10/13] Test IF on ci --- .github/workflows/build_agent.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 8066e6c3..45b3fc1a 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -15,12 +15,6 @@ jobs: matrix: ros_distribution: [foxy, galactic] runs-on: rpi-ros2-${{ matrix.ros_distribution }} - variables: - AGENT_BRANCH: "feature/stop_agent" - rules: - - if: ${{ matrix.ros_distribution }} == foxy - variables: - AGENT_BRANCH: "backport/stop_agent" # at the job level. steps: # - uses: ros-tooling/setup-ros@0.2.1 # with: @@ -29,7 +23,7 @@ jobs: with: path: ros_ws/src/micro_ros_renesas_testbench submodules: recursive - ref: ${{ matrix.agent_branch }} + ref: (if [ "${{ matrix.agent_branch }}" == "foxy" ]; then "backport/stop_agent"; else "feature/stop_agent"; fi); token: ${{ secrets.PRIVATE_KEY }} - name: Download dependencies run: | From 80f2acfb10f4556264d86c2831b3872804fa6192 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 13:49:22 +0200 Subject: [PATCH 11/13] Test IF on ci --- .github/workflows/build_agent.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 45b3fc1a..32602c90 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -15,6 +15,9 @@ jobs: matrix: ros_distribution: [foxy, galactic] runs-on: rpi-ros2-${{ matrix.ros_distribution }} + variables: + AGENT_BRANCH: (if [ "${{ matrix.agent_branch }}" == "foxy" ]; then "backport/stop_agent"; else "feature/stop_agent"; fi); + steps: # - uses: ros-tooling/setup-ros@0.2.1 # with: @@ -23,7 +26,7 @@ jobs: with: path: ros_ws/src/micro_ros_renesas_testbench submodules: recursive - ref: (if [ "${{ matrix.agent_branch }}" == "foxy" ]; then "backport/stop_agent"; else "feature/stop_agent"; fi); + ref: ${AGENT_BRANCH} token: ${{ secrets.PRIVATE_KEY }} - name: Download dependencies run: | From 0757b6c06706a6d50050b3e4990e95de0b2fe5c9 Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 13:53:02 +0200 Subject: [PATCH 12/13] Test on CI --- .github/workflows/build_agent.yml | 34 +++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 32602c90..7212d9e1 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -9,15 +9,10 @@ on: - cron: '00 4 * * *' jobs: - micro_ros_renesas_testbench: + micro_ros_renesas_testbench_galactic: strategy: fail-fast: false - matrix: - ros_distribution: [foxy, galactic] - runs-on: rpi-ros2-${{ matrix.ros_distribution }} - variables: - AGENT_BRANCH: (if [ "${{ matrix.agent_branch }}" == "foxy" ]; then "backport/stop_agent"; else "feature/stop_agent"; fi); - + runs-on: rpi-ros2-galactic steps: # - uses: ros-tooling/setup-ros@0.2.1 # with: @@ -26,7 +21,28 @@ jobs: with: path: ros_ws/src/micro_ros_renesas_testbench submodules: recursive - ref: ${AGENT_BRANCH} + ref: feature/stop_agent + token: ${{ secrets.PRIVATE_KEY }} + - name: Download dependencies + run: | + cd ros_ws + vcs import --force --shallow --input src/micro_ros_renesas_testbench/requirements.repos src + - name: Build micro-ROS agent + run: | + source /opt/ros/galactic/setup.sh + cd ros_ws + colcon build --cmake-clean-cache --cmake-force-configure --packages-up-to micro_ros_agent + + micro_ros_renesas_testbench_foxy: + strategy: + fail-fast: false + runs-on: rpi-ros2-foxy + steps: + - uses: actions/checkout@v2 + with: + path: ros_ws/src/micro_ros_renesas_testbench + submodules: recursive + ref: backport/stop_agent token: ${{ secrets.PRIVATE_KEY }} - name: Download dependencies run: | @@ -34,6 +50,6 @@ jobs: vcs import --force --shallow --input src/micro_ros_renesas_testbench/requirements.repos src - name: Build micro-ROS agent run: | - source /opt/ros/${{ matrix.ros_distribution }}/setup.sh + source /opt/ros/foxy/setup.sh cd ros_ws colcon build --cmake-clean-cache --cmake-force-configure --packages-up-to micro_ros_agent \ No newline at end of file From 28c6bfb4fe1e8bb301bb742977e28f6962d543ff Mon Sep 17 00:00:00 2001 From: Antonio cuadros Date: Tue, 27 Jul 2021 13:55:40 +0200 Subject: [PATCH 13/13] Disable changes --- .github/workflows/build_agent.yml | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml index 7212d9e1..958775e3 100755 --- a/.github/workflows/build_agent.yml +++ b/.github/workflows/build_agent.yml @@ -9,10 +9,12 @@ on: - cron: '00 4 * * *' jobs: - micro_ros_renesas_testbench_galactic: + micro_ros_renesas_testbench: strategy: fail-fast: false - runs-on: rpi-ros2-galactic + matrix: + ros_distribution: [ galactic ] + runs-on: rpi-ros2-${{ matrix.ros_distribution }} steps: # - uses: ros-tooling/setup-ros@0.2.1 # with: @@ -21,7 +23,7 @@ jobs: with: path: ros_ws/src/micro_ros_renesas_testbench submodules: recursive - ref: feature/stop_agent + ref: feature/agent_API token: ${{ secrets.PRIVATE_KEY }} - name: Download dependencies run: | @@ -29,27 +31,6 @@ jobs: vcs import --force --shallow --input src/micro_ros_renesas_testbench/requirements.repos src - name: Build micro-ROS agent run: | - source /opt/ros/galactic/setup.sh - cd ros_ws - colcon build --cmake-clean-cache --cmake-force-configure --packages-up-to micro_ros_agent - - micro_ros_renesas_testbench_foxy: - strategy: - fail-fast: false - runs-on: rpi-ros2-foxy - steps: - - uses: actions/checkout@v2 - with: - path: ros_ws/src/micro_ros_renesas_testbench - submodules: recursive - ref: backport/stop_agent - token: ${{ secrets.PRIVATE_KEY }} - - name: Download dependencies - run: | - cd ros_ws - vcs import --force --shallow --input src/micro_ros_renesas_testbench/requirements.repos src - - name: Build micro-ROS agent - run: | - source /opt/ros/foxy/setup.sh + source /opt/ros/${{ matrix.ros_distribution }}/setup.sh cd ros_ws colcon build --cmake-clean-cache --cmake-force-configure --packages-up-to micro_ros_agent \ No newline at end of file