Ver Fonte

recharge_cpp_1

shensiying há 3 meses atrás
pai
commit
ac1db60fbe
100 ficheiros alterados com 7204 adições e 0 exclusões
  1. 22 0
      rechange_ws/.vscode/c_cpp_properties.json
  2. 71 0
      rechange_ws/.vscode/launch.json
  3. 3 0
      rechange_ws/.vscode/settings.json
  4. 60 0
      rechange_ws/.vscode/tasks.json
  5. 1 0
      rechange_ws/install/.colcon_install_layout
  6. 0 0
      rechange_ws/install/COLCON_IGNORE
  7. 407 0
      rechange_ws/install/_local_setup_util_ps1.py
  8. 407 0
      rechange_ws/install/_local_setup_util_sh.py
  9. 36 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__builder.hpp
  10. 236 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__functions.c
  11. 177 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__functions.h
  12. 37 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_fastrtps_c.h
  13. 80 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_fastrtps_cpp.hpp
  14. 26 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_introspection_c.h
  15. 27 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_introspection_cpp.hpp
  16. 44 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__struct.h
  17. 124 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__struct.hpp
  18. 98 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__traits.hpp
  19. 83 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.c
  20. 109 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.cpp
  21. 33 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.h
  22. 31 0
      rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.hpp
  23. 12 0
      rechange_ws/install/interface/include/interface/interface/msg/empty.h
  24. 12 0
      rechange_ws/install/interface/include/interface/interface/msg/empty.hpp
  25. 42 0
      rechange_ws/install/interface/include/interface/interface/msg/rosidl_generator_c__visibility_control.h
  26. 42 0
      rechange_ws/install/interface/include/interface/interface/msg/rosidl_generator_cpp__visibility_control.hpp
  27. 43 0
      rechange_ws/install/interface/include/interface/interface/msg/rosidl_typesupport_fastrtps_c__visibility_control.h
  28. 43 0
      rechange_ws/install/interface/include/interface/interface/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h
  29. 43 0
      rechange_ws/install/interface/include/interface/interface/msg/rosidl_typesupport_introspection_c__visibility_control.h
  30. 114 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__builder.hpp
  31. 483 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__functions.c
  32. 329 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__functions.h
  33. 89 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_fastrtps_c.h
  34. 177 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_fastrtps_cpp.hpp
  35. 47 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_introspection_c.h
  36. 67 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_introspection_cpp.hpp
  37. 64 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__struct.h
  38. 275 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__struct.hpp
  39. 273 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__traits.hpp
  40. 249 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.c
  41. 353 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.cpp
  42. 58 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.h
  43. 71 0
      rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.hpp
  44. 12 0
      rechange_ws/install/interface/include/interface/interface/srv/scene_controls.h
  45. 12 0
      rechange_ws/install/interface/include/interface/interface/srv/scene_controls.hpp
  46. 1 0
      rechange_ws/install/interface/share/ament_index/resource_index/package_run_dependencies/interface
  47. 0 0
      rechange_ws/install/interface/share/ament_index/resource_index/packages/interface
  48. 1 0
      rechange_ws/install/interface/share/ament_index/resource_index/parent_prefix_path/interface
  49. 6 0
      rechange_ws/install/interface/share/ament_index/resource_index/rosidl_interfaces/interface
  50. 1 0
      rechange_ws/install/interface/share/colcon-core/packages/interface
  51. 92 0
      rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_dependencies-extras.cmake
  52. 16 0
      rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_include_directories-extras.cmake
  53. 141 0
      rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_libraries-extras.cmake
  54. 27 0
      rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_targets-extras.cmake
  55. 19 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_cExport-noconfig.cmake
  56. 99 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_cExport.cmake
  57. 99 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_cppExport.cmake
  58. 19 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_pyExport-noconfig.cmake
  59. 114 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_pyExport.cmake
  60. 19 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cExport-noconfig.cmake
  61. 115 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cExport.cmake
  62. 19 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cppExport-noconfig.cmake
  63. 115 0
      rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cppExport.cmake
  64. 14 0
      rechange_ws/install/interface/share/interface/cmake/interfaceConfig-version.cmake
  65. 42 0
      rechange_ws/install/interface/share/interface/cmake/interfaceConfig.cmake
  66. 20 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cExport-noconfig.cmake
  67. 114 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cExport.cmake
  68. 20 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cppExport-noconfig.cmake
  69. 114 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cppExport.cmake
  70. 19 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cExport-noconfig.cmake
  71. 115 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cExport.cmake
  72. 19 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cppExport-noconfig.cmake
  73. 115 0
      rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cppExport.cmake
  74. 4 0
      rechange_ws/install/interface/share/interface/cmake/rosidl_cmake-extras.cmake
  75. 49 0
      rechange_ws/install/interface/share/interface/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake
  76. 23 0
      rechange_ws/install/interface/share/interface/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake
  77. 1 0
      rechange_ws/install/interface/share/interface/environment/ament_prefix_path.dsv
  78. 4 0
      rechange_ws/install/interface/share/interface/environment/ament_prefix_path.sh
  79. 1 0
      rechange_ws/install/interface/share/interface/environment/library_path.dsv
  80. 16 0
      rechange_ws/install/interface/share/interface/environment/library_path.sh
  81. 1 0
      rechange_ws/install/interface/share/interface/environment/path.dsv
  82. 5 0
      rechange_ws/install/interface/share/interface/environment/path.sh
  83. 1 0
      rechange_ws/install/interface/share/interface/environment/pythonpath.dsv
  84. 3 0
      rechange_ws/install/interface/share/interface/environment/pythonpath.sh
  85. 1 0
      rechange_ws/install/interface/share/interface/hook/cmake_prefix_path.dsv
  86. 3 0
      rechange_ws/install/interface/share/interface/hook/cmake_prefix_path.ps1
  87. 3 0
      rechange_ws/install/interface/share/interface/hook/cmake_prefix_path.sh
  88. 1 0
      rechange_ws/install/interface/share/interface/hook/ld_library_path_lib.dsv
  89. 3 0
      rechange_ws/install/interface/share/interface/hook/ld_library_path_lib.ps1
  90. 3 0
      rechange_ws/install/interface/share/interface/hook/ld_library_path_lib.sh
  91. 46 0
      rechange_ws/install/interface/share/interface/local_setup.bash
  92. 4 0
      rechange_ws/install/interface/share/interface/local_setup.dsv
  93. 186 0
      rechange_ws/install/interface/share/interface/local_setup.sh
  94. 59 0
      rechange_ws/install/interface/share/interface/local_setup.zsh
  95. 14 0
      rechange_ws/install/interface/share/interface/msg/Empty.idl
  96. 1 0
      rechange_ws/install/interface/share/interface/msg/Empty.msg
  97. 39 0
      rechange_ws/install/interface/share/interface/package.bash
  98. 11 0
      rechange_ws/install/interface/share/interface/package.dsv
  99. 117 0
      rechange_ws/install/interface/share/interface/package.ps1
  100. 88 0
      rechange_ws/install/interface/share/interface/package.sh

+ 22 - 0
rechange_ws/.vscode/c_cpp_properties.json

@@ -0,0 +1,22 @@
+{
+    "configurations": [
+        {
+            "name": "Linux",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "${workspaceFolder}/include",
+                "/opt/ros/foxy/include/**",
+                "/opt/ros/humble/include/**",
+                "/opt/ros/rolling/include/**",
+                "/usr/include/eigen3",
+                "/usr/include/**"
+            ],
+            "defines": [],
+            "compilerPath": "/usr/bin/gcc",
+            "cStandard": "c17",
+            "cppStandard": "gnu++17",
+            "intelliSenseMode": "linux-gcc-arm64"
+        }
+    ],
+    "version": 4
+}

+ 71 - 0
rechange_ws/.vscode/launch.json

@@ -0,0 +1,71 @@
+{
+  "version": "0.2.0",
+  "configurations": [
+    {
+      "name": "Debug recharge_node",
+      "type": "cppdbg",
+      "request": "launch",
+      "program": "${workspaceFolder}/install/recharge/lib/recharge/recharge_node",
+      "args": [],
+      "stopAtEntry": false,
+      "cwd": "${workspaceFolder}",
+      "environment": [
+        {
+          "name": "RMW_IMPLEMENTATION",
+          "value": "rmw_fastrtps_cpp"
+        },
+        {
+          "name": "RCUTILS_COLORIZED_OUTPUT",
+          "value": "1"
+        }
+      ],
+      "externalConsole": false,
+      "MIMode": "gdb",
+      "setupCommands": [
+        {
+          "description": "Enable pretty-printing for gdb",
+          "text": "-enable-pretty-printing",
+          "ignoreFailures": true
+        }
+      ],
+      "miDebuggerPath": "/usr/bin/gdb"
+    },
+    {
+      "name": "Run without build",
+      "type": "cppdbg",
+      "request": "launch",
+      "program": "${workspaceFolder}/install/recharge/lib/recharge/recharge_node",
+      "args": [],
+      "stopAtEntry": false,
+      "cwd": "${workspaceFolder}",
+      "environment": [],
+      "externalConsole": false,
+      "MIMode": "gdb",
+      "setupCommands": [
+        {
+          "description": "Enable pretty-printing for gdb",
+          "text": "-enable-pretty-printing",
+          "ignoreFailures": true
+        }
+      ],
+      "miDebuggerPath": "/usr/bin/gdb"
+    },
+    {
+            "name": "C++ Debug",
+            "type": "cppdbg",
+            "request": "launch",
+            "program": "${workspaceFolder}/install/recharge/lib/recharge/recharge_node",
+            "args": [],
+            "stopAtEntry": false,
+            "cwd": "${workspaceFolder}",
+            "environment": [
+                {
+                    "name": "LD_LIBRARY_PATH",
+                    "value": "/home/nvidia/zkf/rechange_ws/install/recharge/lib:/home/nvidia/zkf/rechange_ws/install/lib:${env:LD_LIBRARY_PATH}"
+                }
+            ],
+            "externalConsole": false,
+            "MIMode": "gdb"
+        }
+  ]
+}

+ 3 - 0
rechange_ws/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+    "cmake.sourceDirectory": "/home/nvidia/zkf/rechange_ws/src/interface"
+}

+ 60 - 0
rechange_ws/.vscode/tasks.json

@@ -0,0 +1,60 @@
+{
+  "version": "2.0.0",
+  "tasks": [
+    {
+      "label": "build recharge",
+      "type": "shell",
+      "command": "bash",
+      "args": [
+        "-c",
+        "source /opt/ros/${ROS_DISTRO:-foxy}/setup.bash && colcon build --packages-select recharge --cmake-args '-DCMAKE_BUILD_TYPE=Debug' '-DCMAKE_EXPORT_COMPILE_COMMANDS=1' --event-handlers console_direct+"
+      ],
+      "group": {
+        "kind": "build",
+        "isDefault": true
+      },
+      "problemMatcher": [
+        {
+          "base": "$gcc",
+          "fileLocation": ["relative", "${workspaceFolder}/src/recharge"]
+        }
+      ],
+      "presentation": {
+        "reveal": "always",
+        "panel": "dedicated",
+        "showReuseMessage": false,
+        "clear": true
+      },
+      "options": {
+        "cwd": "${workspaceFolder}"
+      }
+    },
+    {
+      "label": "clean build recharge",
+      "type": "shell",
+      "command": "bash",
+      "args": [
+        "-c",
+        "source /opt/ros/${ROS_DISTRO:-foxy}/setup.bash && rm -rf build/recharge install/recharge && colcon build --packages-select recharge --cmake-args '-DCMAKE_BUILD_TYPE=Debug' '-DCMAKE_EXPORT_COMPILE_COMMANDS=1'"
+      ],
+      "group": "build",
+      "problemMatcher": ["$gcc"],
+      "options": {
+        "cwd": "${workspaceFolder}"
+      }
+    },
+    {
+      "label": "check dependencies",
+      "type": "shell",
+      "command": "bash",
+      "args": [
+        "-c",
+        "echo 'Checking dependencies...' && source /opt/ros/${ROS_DISTRO:-foxy}/setup.bash && rosdep install --from-paths src --ignore-src -r -y"
+      ],
+      "group": "build",
+      "options": {
+        "cwd": "${workspaceFolder}"
+      }
+    }
+  ]
+}

+ 1 - 0
rechange_ws/install/.colcon_install_layout

@@ -0,0 +1 @@
+isolated

+ 0 - 0
rechange_ws/install/COLCON_IGNORE


+ 407 - 0
rechange_ws/install/_local_setup_util_ps1.py

@@ -0,0 +1,407 @@
+# Copyright 2016-2019 Dirk Thomas
+# Licensed under the Apache License, Version 2.0
+
+import argparse
+from collections import OrderedDict
+import os
+from pathlib import Path
+import sys
+
+
+FORMAT_STR_COMMENT_LINE = '# {comment}'
+FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"'
+FORMAT_STR_USE_ENV_VAR = '$env:{name}'
+FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"'  # noqa: E501
+FORMAT_STR_REMOVE_LEADING_SEPARATOR = ''  # noqa: E501
+FORMAT_STR_REMOVE_TRAILING_SEPARATOR = ''  # noqa: E501
+
+DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists'
+DSV_TYPE_SET = 'set'
+DSV_TYPE_SET_IF_UNSET = 'set-if-unset'
+DSV_TYPE_SOURCE = 'source'
+
+
+def main(argv=sys.argv[1:]):  # noqa: D103
+    parser = argparse.ArgumentParser(
+        description='Output shell commands for the packages in topological '
+                    'order')
+    parser.add_argument(
+        'primary_extension',
+        help='The file extension of the primary shell')
+    parser.add_argument(
+        'additional_extension', nargs='?',
+        help='The additional file extension to be considered')
+    parser.add_argument(
+        '--merged-install', action='store_true',
+        help='All install prefixes are merged into a single location')
+    args = parser.parse_args(argv)
+
+    packages = get_packages(Path(__file__).parent, args.merged_install)
+
+    ordered_packages = order_packages(packages)
+    for pkg_name in ordered_packages:
+        if _include_comments():
+            print(
+                FORMAT_STR_COMMENT_LINE.format_map(
+                    {'comment': 'Package: ' + pkg_name}))
+        prefix = os.path.abspath(os.path.dirname(__file__))
+        if not args.merged_install:
+            prefix = os.path.join(prefix, pkg_name)
+        for line in get_commands(
+            pkg_name, prefix, args.primary_extension,
+            args.additional_extension
+        ):
+            print(line)
+
+    for line in _remove_ending_separators():
+        print(line)
+
+
+def get_packages(prefix_path, merged_install):
+    """
+    Find packages based on colcon-specific files created during installation.
+
+    :param Path prefix_path: The install prefix path of all packages
+    :param bool merged_install: The flag if the packages are all installed
+      directly in the prefix or if each package is installed in a subdirectory
+      named after the package
+    :returns: A mapping from the package name to the set of runtime
+      dependencies
+    :rtype: dict
+    """
+    packages = {}
+    # since importing colcon_core isn't feasible here the following constant
+    # must match colcon_core.location.get_relative_package_index_path()
+    subdirectory = 'share/colcon-core/packages'
+    if merged_install:
+        # return if workspace is empty
+        if not (prefix_path / subdirectory).is_dir():
+            return packages
+        # find all files in the subdirectory
+        for p in (prefix_path / subdirectory).iterdir():
+            if not p.is_file():
+                continue
+            if p.name.startswith('.'):
+                continue
+            add_package_runtime_dependencies(p, packages)
+    else:
+        # for each subdirectory look for the package specific file
+        for p in prefix_path.iterdir():
+            if not p.is_dir():
+                continue
+            if p.name.startswith('.'):
+                continue
+            p = p / subdirectory / p.name
+            if p.is_file():
+                add_package_runtime_dependencies(p, packages)
+
+    # remove unknown dependencies
+    pkg_names = set(packages.keys())
+    for k in packages.keys():
+        packages[k] = {d for d in packages[k] if d in pkg_names}
+
+    return packages
+
+
+def add_package_runtime_dependencies(path, packages):
+    """
+    Check the path and if it exists extract the packages runtime dependencies.
+
+    :param Path path: The resource file containing the runtime dependencies
+    :param dict packages: A mapping from package names to the sets of runtime
+      dependencies to add to
+    """
+    content = path.read_text()
+    dependencies = set(content.split(os.pathsep) if content else [])
+    packages[path.name] = dependencies
+
+
+def order_packages(packages):
+    """
+    Order packages topologically.
+
+    :param dict packages: A mapping from package name to the set of runtime
+      dependencies
+    :returns: The package names
+    :rtype: list
+    """
+    # select packages with no dependencies in alphabetical order
+    to_be_ordered = list(packages.keys())
+    ordered = []
+    while to_be_ordered:
+        pkg_names_without_deps = [
+            name for name in to_be_ordered if not packages[name]]
+        if not pkg_names_without_deps:
+            reduce_cycle_set(packages)
+            raise RuntimeError(
+                'Circular dependency between: ' + ', '.join(sorted(packages)))
+        pkg_names_without_deps.sort()
+        pkg_name = pkg_names_without_deps[0]
+        to_be_ordered.remove(pkg_name)
+        ordered.append(pkg_name)
+        # remove item from dependency lists
+        for k in list(packages.keys()):
+            if pkg_name in packages[k]:
+                packages[k].remove(pkg_name)
+    return ordered
+
+
+def reduce_cycle_set(packages):
+    """
+    Reduce the set of packages to the ones part of the circular dependency.
+
+    :param dict packages: A mapping from package name to the set of runtime
+      dependencies which is modified in place
+    """
+    last_depended = None
+    while len(packages) > 0:
+        # get all remaining dependencies
+        depended = set()
+        for pkg_name, dependencies in packages.items():
+            depended = depended.union(dependencies)
+        # remove all packages which are not dependent on
+        for name in list(packages.keys()):
+            if name not in depended:
+                del packages[name]
+        if last_depended:
+            # if remaining packages haven't changed return them
+            if last_depended == depended:
+                return packages.keys()
+        # otherwise reduce again
+        last_depended = depended
+
+
+def _include_comments():
+    # skipping comment lines when COLCON_TRACE is not set speeds up the
+    # processing especially on Windows
+    return bool(os.environ.get('COLCON_TRACE'))
+
+
+def get_commands(pkg_name, prefix, primary_extension, additional_extension):
+    commands = []
+    package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv')
+    if os.path.exists(package_dsv_path):
+        commands += process_dsv_file(
+            package_dsv_path, prefix, primary_extension, additional_extension)
+    return commands
+
+
+def process_dsv_file(
+    dsv_path, prefix, primary_extension=None, additional_extension=None
+):
+    commands = []
+    if _include_comments():
+        commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path}))
+    with open(dsv_path, 'r') as h:
+        content = h.read()
+    lines = content.splitlines()
+
+    basenames = OrderedDict()
+    for i, line in enumerate(lines):
+        # skip over empty or whitespace-only lines
+        if not line.strip():
+            continue
+        # skip over comments
+        if line.startswith('#'):
+            continue
+        try:
+            type_, remainder = line.split(';', 1)
+        except ValueError:
+            raise RuntimeError(
+                "Line %d in '%s' doesn't contain a semicolon separating the "
+                'type from the arguments' % (i + 1, dsv_path))
+        if type_ != DSV_TYPE_SOURCE:
+            # handle non-source lines
+            try:
+                commands += handle_dsv_types_except_source(
+                    type_, remainder, prefix)
+            except RuntimeError as e:
+                raise RuntimeError(
+                    "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e
+        else:
+            # group remaining source lines by basename
+            path_without_ext, ext = os.path.splitext(remainder)
+            if path_without_ext not in basenames:
+                basenames[path_without_ext] = set()
+            assert ext.startswith('.')
+            ext = ext[1:]
+            if ext in (primary_extension, additional_extension):
+                basenames[path_without_ext].add(ext)
+
+    # add the dsv extension to each basename if the file exists
+    for basename, extensions in basenames.items():
+        if not os.path.isabs(basename):
+            basename = os.path.join(prefix, basename)
+        if os.path.exists(basename + '.dsv'):
+            extensions.add('dsv')
+
+    for basename, extensions in basenames.items():
+        if not os.path.isabs(basename):
+            basename = os.path.join(prefix, basename)
+        if 'dsv' in extensions:
+            # process dsv files recursively
+            commands += process_dsv_file(
+                basename + '.dsv', prefix, primary_extension=primary_extension,
+                additional_extension=additional_extension)
+        elif primary_extension in extensions and len(extensions) == 1:
+            # source primary-only files
+            commands += [
+                FORMAT_STR_INVOKE_SCRIPT.format_map({
+                    'prefix': prefix,
+                    'script_path': basename + '.' + primary_extension})]
+        elif additional_extension in extensions:
+            # source non-primary files
+            commands += [
+                FORMAT_STR_INVOKE_SCRIPT.format_map({
+                    'prefix': prefix,
+                    'script_path': basename + '.' + additional_extension})]
+
+    return commands
+
+
+def handle_dsv_types_except_source(type_, remainder, prefix):
+    commands = []
+    if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET):
+        try:
+            env_name, value = remainder.split(';', 1)
+        except ValueError:
+            raise RuntimeError(
+                "doesn't contain a semicolon separating the environment name "
+                'from the value')
+        try_prefixed_value = os.path.join(prefix, value) if value else prefix
+        if os.path.exists(try_prefixed_value):
+            value = try_prefixed_value
+        if type_ == DSV_TYPE_SET:
+            commands += _set(env_name, value)
+        elif type_ == DSV_TYPE_SET_IF_UNSET:
+            commands += _set_if_unset(env_name, value)
+        else:
+            assert False
+    elif type_ in (
+        DSV_TYPE_APPEND_NON_DUPLICATE,
+        DSV_TYPE_PREPEND_NON_DUPLICATE,
+        DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS
+    ):
+        try:
+            env_name_and_values = remainder.split(';')
+        except ValueError:
+            raise RuntimeError(
+                "doesn't contain a semicolon separating the environment name "
+                'from the values')
+        env_name = env_name_and_values[0]
+        values = env_name_and_values[1:]
+        for value in values:
+            if not value:
+                value = prefix
+            elif not os.path.isabs(value):
+                value = os.path.join(prefix, value)
+            if (
+                type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and
+                not os.path.exists(value)
+            ):
+                comment = f'skip extending {env_name} with not existing ' \
+                    f'path: {value}'
+                if _include_comments():
+                    commands.append(
+                        FORMAT_STR_COMMENT_LINE.format_map({'comment': comment}))
+            elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE:
+                commands += _append_unique_value(env_name, value)
+            else:
+                commands += _prepend_unique_value(env_name, value)
+    else:
+        raise RuntimeError(
+            'contains an unknown environment hook type: ' + type_)
+    return commands
+
+
+env_state = {}
+
+
+def _append_unique_value(name, value):
+    global env_state
+    if name not in env_state:
+        if os.environ.get(name):
+            env_state[name] = set(os.environ[name].split(os.pathsep))
+        else:
+            env_state[name] = set()
+    # append even if the variable has not been set yet, in case a shell script sets the
+    # same variable without the knowledge of this Python script.
+    # later _remove_ending_separators() will cleanup any unintentional leading separator
+    extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': extend + value})
+    if value not in env_state[name]:
+        env_state[name].add(value)
+    else:
+        if not _include_comments():
+            return []
+        line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+    return [line]
+
+
+def _prepend_unique_value(name, value):
+    global env_state
+    if name not in env_state:
+        if os.environ.get(name):
+            env_state[name] = set(os.environ[name].split(os.pathsep))
+        else:
+            env_state[name] = set()
+    # prepend even if the variable has not been set yet, in case a shell script sets the
+    # same variable without the knowledge of this Python script.
+    # later _remove_ending_separators() will cleanup any unintentional trailing separator
+    extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name})
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': value + extend})
+    if value not in env_state[name]:
+        env_state[name].add(value)
+    else:
+        if not _include_comments():
+            return []
+        line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+    return [line]
+
+
+# generate commands for removing prepended underscores
+def _remove_ending_separators():
+    # do nothing if the shell extension does not implement the logic
+    if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None:
+        return []
+
+    global env_state
+    commands = []
+    for name in env_state:
+        # skip variables that already had values before this script started prepending
+        if name in os.environ:
+            continue
+        commands += [
+            FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}),
+            FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})]
+    return commands
+
+
+def _set(name, value):
+    global env_state
+    env_state[name] = value
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': value})
+    return [line]
+
+
+def _set_if_unset(name, value):
+    global env_state
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': value})
+    if env_state.get(name, os.environ.get(name)):
+        line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+    return [line]
+
+
+if __name__ == '__main__':  # pragma: no cover
+    try:
+        rc = main()
+    except RuntimeError as e:
+        print(str(e), file=sys.stderr)
+        rc = 1
+    sys.exit(rc)

+ 407 - 0
rechange_ws/install/_local_setup_util_sh.py

@@ -0,0 +1,407 @@
+# Copyright 2016-2019 Dirk Thomas
+# Licensed under the Apache License, Version 2.0
+
+import argparse
+from collections import OrderedDict
+import os
+from pathlib import Path
+import sys
+
+
+FORMAT_STR_COMMENT_LINE = '# {comment}'
+FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"'
+FORMAT_STR_USE_ENV_VAR = '${name}'
+FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"'  # noqa: E501
+FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi'  # noqa: E501
+FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi'  # noqa: E501
+
+DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists'
+DSV_TYPE_SET = 'set'
+DSV_TYPE_SET_IF_UNSET = 'set-if-unset'
+DSV_TYPE_SOURCE = 'source'
+
+
+def main(argv=sys.argv[1:]):  # noqa: D103
+    parser = argparse.ArgumentParser(
+        description='Output shell commands for the packages in topological '
+                    'order')
+    parser.add_argument(
+        'primary_extension',
+        help='The file extension of the primary shell')
+    parser.add_argument(
+        'additional_extension', nargs='?',
+        help='The additional file extension to be considered')
+    parser.add_argument(
+        '--merged-install', action='store_true',
+        help='All install prefixes are merged into a single location')
+    args = parser.parse_args(argv)
+
+    packages = get_packages(Path(__file__).parent, args.merged_install)
+
+    ordered_packages = order_packages(packages)
+    for pkg_name in ordered_packages:
+        if _include_comments():
+            print(
+                FORMAT_STR_COMMENT_LINE.format_map(
+                    {'comment': 'Package: ' + pkg_name}))
+        prefix = os.path.abspath(os.path.dirname(__file__))
+        if not args.merged_install:
+            prefix = os.path.join(prefix, pkg_name)
+        for line in get_commands(
+            pkg_name, prefix, args.primary_extension,
+            args.additional_extension
+        ):
+            print(line)
+
+    for line in _remove_ending_separators():
+        print(line)
+
+
+def get_packages(prefix_path, merged_install):
+    """
+    Find packages based on colcon-specific files created during installation.
+
+    :param Path prefix_path: The install prefix path of all packages
+    :param bool merged_install: The flag if the packages are all installed
+      directly in the prefix or if each package is installed in a subdirectory
+      named after the package
+    :returns: A mapping from the package name to the set of runtime
+      dependencies
+    :rtype: dict
+    """
+    packages = {}
+    # since importing colcon_core isn't feasible here the following constant
+    # must match colcon_core.location.get_relative_package_index_path()
+    subdirectory = 'share/colcon-core/packages'
+    if merged_install:
+        # return if workspace is empty
+        if not (prefix_path / subdirectory).is_dir():
+            return packages
+        # find all files in the subdirectory
+        for p in (prefix_path / subdirectory).iterdir():
+            if not p.is_file():
+                continue
+            if p.name.startswith('.'):
+                continue
+            add_package_runtime_dependencies(p, packages)
+    else:
+        # for each subdirectory look for the package specific file
+        for p in prefix_path.iterdir():
+            if not p.is_dir():
+                continue
+            if p.name.startswith('.'):
+                continue
+            p = p / subdirectory / p.name
+            if p.is_file():
+                add_package_runtime_dependencies(p, packages)
+
+    # remove unknown dependencies
+    pkg_names = set(packages.keys())
+    for k in packages.keys():
+        packages[k] = {d for d in packages[k] if d in pkg_names}
+
+    return packages
+
+
+def add_package_runtime_dependencies(path, packages):
+    """
+    Check the path and if it exists extract the packages runtime dependencies.
+
+    :param Path path: The resource file containing the runtime dependencies
+    :param dict packages: A mapping from package names to the sets of runtime
+      dependencies to add to
+    """
+    content = path.read_text()
+    dependencies = set(content.split(os.pathsep) if content else [])
+    packages[path.name] = dependencies
+
+
+def order_packages(packages):
+    """
+    Order packages topologically.
+
+    :param dict packages: A mapping from package name to the set of runtime
+      dependencies
+    :returns: The package names
+    :rtype: list
+    """
+    # select packages with no dependencies in alphabetical order
+    to_be_ordered = list(packages.keys())
+    ordered = []
+    while to_be_ordered:
+        pkg_names_without_deps = [
+            name for name in to_be_ordered if not packages[name]]
+        if not pkg_names_without_deps:
+            reduce_cycle_set(packages)
+            raise RuntimeError(
+                'Circular dependency between: ' + ', '.join(sorted(packages)))
+        pkg_names_without_deps.sort()
+        pkg_name = pkg_names_without_deps[0]
+        to_be_ordered.remove(pkg_name)
+        ordered.append(pkg_name)
+        # remove item from dependency lists
+        for k in list(packages.keys()):
+            if pkg_name in packages[k]:
+                packages[k].remove(pkg_name)
+    return ordered
+
+
+def reduce_cycle_set(packages):
+    """
+    Reduce the set of packages to the ones part of the circular dependency.
+
+    :param dict packages: A mapping from package name to the set of runtime
+      dependencies which is modified in place
+    """
+    last_depended = None
+    while len(packages) > 0:
+        # get all remaining dependencies
+        depended = set()
+        for pkg_name, dependencies in packages.items():
+            depended = depended.union(dependencies)
+        # remove all packages which are not dependent on
+        for name in list(packages.keys()):
+            if name not in depended:
+                del packages[name]
+        if last_depended:
+            # if remaining packages haven't changed return them
+            if last_depended == depended:
+                return packages.keys()
+        # otherwise reduce again
+        last_depended = depended
+
+
+def _include_comments():
+    # skipping comment lines when COLCON_TRACE is not set speeds up the
+    # processing especially on Windows
+    return bool(os.environ.get('COLCON_TRACE'))
+
+
+def get_commands(pkg_name, prefix, primary_extension, additional_extension):
+    commands = []
+    package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv')
+    if os.path.exists(package_dsv_path):
+        commands += process_dsv_file(
+            package_dsv_path, prefix, primary_extension, additional_extension)
+    return commands
+
+
+def process_dsv_file(
+    dsv_path, prefix, primary_extension=None, additional_extension=None
+):
+    commands = []
+    if _include_comments():
+        commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path}))
+    with open(dsv_path, 'r') as h:
+        content = h.read()
+    lines = content.splitlines()
+
+    basenames = OrderedDict()
+    for i, line in enumerate(lines):
+        # skip over empty or whitespace-only lines
+        if not line.strip():
+            continue
+        # skip over comments
+        if line.startswith('#'):
+            continue
+        try:
+            type_, remainder = line.split(';', 1)
+        except ValueError:
+            raise RuntimeError(
+                "Line %d in '%s' doesn't contain a semicolon separating the "
+                'type from the arguments' % (i + 1, dsv_path))
+        if type_ != DSV_TYPE_SOURCE:
+            # handle non-source lines
+            try:
+                commands += handle_dsv_types_except_source(
+                    type_, remainder, prefix)
+            except RuntimeError as e:
+                raise RuntimeError(
+                    "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e
+        else:
+            # group remaining source lines by basename
+            path_without_ext, ext = os.path.splitext(remainder)
+            if path_without_ext not in basenames:
+                basenames[path_without_ext] = set()
+            assert ext.startswith('.')
+            ext = ext[1:]
+            if ext in (primary_extension, additional_extension):
+                basenames[path_without_ext].add(ext)
+
+    # add the dsv extension to each basename if the file exists
+    for basename, extensions in basenames.items():
+        if not os.path.isabs(basename):
+            basename = os.path.join(prefix, basename)
+        if os.path.exists(basename + '.dsv'):
+            extensions.add('dsv')
+
+    for basename, extensions in basenames.items():
+        if not os.path.isabs(basename):
+            basename = os.path.join(prefix, basename)
+        if 'dsv' in extensions:
+            # process dsv files recursively
+            commands += process_dsv_file(
+                basename + '.dsv', prefix, primary_extension=primary_extension,
+                additional_extension=additional_extension)
+        elif primary_extension in extensions and len(extensions) == 1:
+            # source primary-only files
+            commands += [
+                FORMAT_STR_INVOKE_SCRIPT.format_map({
+                    'prefix': prefix,
+                    'script_path': basename + '.' + primary_extension})]
+        elif additional_extension in extensions:
+            # source non-primary files
+            commands += [
+                FORMAT_STR_INVOKE_SCRIPT.format_map({
+                    'prefix': prefix,
+                    'script_path': basename + '.' + additional_extension})]
+
+    return commands
+
+
+def handle_dsv_types_except_source(type_, remainder, prefix):
+    commands = []
+    if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET):
+        try:
+            env_name, value = remainder.split(';', 1)
+        except ValueError:
+            raise RuntimeError(
+                "doesn't contain a semicolon separating the environment name "
+                'from the value')
+        try_prefixed_value = os.path.join(prefix, value) if value else prefix
+        if os.path.exists(try_prefixed_value):
+            value = try_prefixed_value
+        if type_ == DSV_TYPE_SET:
+            commands += _set(env_name, value)
+        elif type_ == DSV_TYPE_SET_IF_UNSET:
+            commands += _set_if_unset(env_name, value)
+        else:
+            assert False
+    elif type_ in (
+        DSV_TYPE_APPEND_NON_DUPLICATE,
+        DSV_TYPE_PREPEND_NON_DUPLICATE,
+        DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS
+    ):
+        try:
+            env_name_and_values = remainder.split(';')
+        except ValueError:
+            raise RuntimeError(
+                "doesn't contain a semicolon separating the environment name "
+                'from the values')
+        env_name = env_name_and_values[0]
+        values = env_name_and_values[1:]
+        for value in values:
+            if not value:
+                value = prefix
+            elif not os.path.isabs(value):
+                value = os.path.join(prefix, value)
+            if (
+                type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and
+                not os.path.exists(value)
+            ):
+                comment = f'skip extending {env_name} with not existing ' \
+                    f'path: {value}'
+                if _include_comments():
+                    commands.append(
+                        FORMAT_STR_COMMENT_LINE.format_map({'comment': comment}))
+            elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE:
+                commands += _append_unique_value(env_name, value)
+            else:
+                commands += _prepend_unique_value(env_name, value)
+    else:
+        raise RuntimeError(
+            'contains an unknown environment hook type: ' + type_)
+    return commands
+
+
+env_state = {}
+
+
+def _append_unique_value(name, value):
+    global env_state
+    if name not in env_state:
+        if os.environ.get(name):
+            env_state[name] = set(os.environ[name].split(os.pathsep))
+        else:
+            env_state[name] = set()
+    # append even if the variable has not been set yet, in case a shell script sets the
+    # same variable without the knowledge of this Python script.
+    # later _remove_ending_separators() will cleanup any unintentional leading separator
+    extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': extend + value})
+    if value not in env_state[name]:
+        env_state[name].add(value)
+    else:
+        if not _include_comments():
+            return []
+        line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+    return [line]
+
+
+def _prepend_unique_value(name, value):
+    global env_state
+    if name not in env_state:
+        if os.environ.get(name):
+            env_state[name] = set(os.environ[name].split(os.pathsep))
+        else:
+            env_state[name] = set()
+    # prepend even if the variable has not been set yet, in case a shell script sets the
+    # same variable without the knowledge of this Python script.
+    # later _remove_ending_separators() will cleanup any unintentional trailing separator
+    extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name})
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': value + extend})
+    if value not in env_state[name]:
+        env_state[name].add(value)
+    else:
+        if not _include_comments():
+            return []
+        line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+    return [line]
+
+
+# generate commands for removing prepended underscores
+def _remove_ending_separators():
+    # do nothing if the shell extension does not implement the logic
+    if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None:
+        return []
+
+    global env_state
+    commands = []
+    for name in env_state:
+        # skip variables that already had values before this script started prepending
+        if name in os.environ:
+            continue
+        commands += [
+            FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}),
+            FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})]
+    return commands
+
+
+def _set(name, value):
+    global env_state
+    env_state[name] = value
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': value})
+    return [line]
+
+
+def _set_if_unset(name, value):
+    global env_state
+    line = FORMAT_STR_SET_ENV_VAR.format_map(
+        {'name': name, 'value': value})
+    if env_state.get(name, os.environ.get(name)):
+        line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+    return [line]
+
+
+if __name__ == '__main__':  # pragma: no cover
+    try:
+        rc = main()
+    except RuntimeError as e:
+        print(str(e), file=sys.stderr)
+        rc = 1
+    sys.exit(rc)

+ 36 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__builder.hpp

@@ -0,0 +1,36 @@
+// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__BUILDER_HPP_
+#define INTERFACE__MSG__DETAIL__EMPTY__BUILDER_HPP_
+
+#include <algorithm>
+#include <utility>
+
+#include "interface/msg/detail/empty__struct.hpp"
+#include "rosidl_runtime_cpp/message_initialization.hpp"
+
+
+namespace interface
+{
+
+namespace msg
+{
+
+
+}  // namespace msg
+
+template<typename MessageType>
+auto build();
+
+template<>
+inline
+auto build<::interface::msg::Empty>()
+{
+  return ::interface::msg::Empty(rosidl_runtime_cpp::MessageInitialization::ZERO);
+}
+
+}  // namespace interface
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__BUILDER_HPP_

+ 236 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__functions.c

@@ -0,0 +1,236 @@
+// generated from rosidl_generator_c/resource/idl__functions.c.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+#include "interface/msg/detail/empty__functions.h"
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "rcutils/allocator.h"
+
+
+bool
+interface__msg__Empty__init(interface__msg__Empty * msg)
+{
+  if (!msg) {
+    return false;
+  }
+  // structure_needs_at_least_one_member
+  return true;
+}
+
+void
+interface__msg__Empty__fini(interface__msg__Empty * msg)
+{
+  if (!msg) {
+    return;
+  }
+  // structure_needs_at_least_one_member
+}
+
+bool
+interface__msg__Empty__are_equal(const interface__msg__Empty * lhs, const interface__msg__Empty * rhs)
+{
+  if (!lhs || !rhs) {
+    return false;
+  }
+  // structure_needs_at_least_one_member
+  if (lhs->structure_needs_at_least_one_member != rhs->structure_needs_at_least_one_member) {
+    return false;
+  }
+  return true;
+}
+
+bool
+interface__msg__Empty__copy(
+  const interface__msg__Empty * input,
+  interface__msg__Empty * output)
+{
+  if (!input || !output) {
+    return false;
+  }
+  // structure_needs_at_least_one_member
+  output->structure_needs_at_least_one_member = input->structure_needs_at_least_one_member;
+  return true;
+}
+
+interface__msg__Empty *
+interface__msg__Empty__create()
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__msg__Empty * msg = (interface__msg__Empty *)allocator.allocate(sizeof(interface__msg__Empty), allocator.state);
+  if (!msg) {
+    return NULL;
+  }
+  memset(msg, 0, sizeof(interface__msg__Empty));
+  bool success = interface__msg__Empty__init(msg);
+  if (!success) {
+    allocator.deallocate(msg, allocator.state);
+    return NULL;
+  }
+  return msg;
+}
+
+void
+interface__msg__Empty__destroy(interface__msg__Empty * msg)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  if (msg) {
+    interface__msg__Empty__fini(msg);
+  }
+  allocator.deallocate(msg, allocator.state);
+}
+
+
+bool
+interface__msg__Empty__Sequence__init(interface__msg__Empty__Sequence * array, size_t size)
+{
+  if (!array) {
+    return false;
+  }
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__msg__Empty * data = NULL;
+
+  if (size) {
+    data = (interface__msg__Empty *)allocator.zero_allocate(size, sizeof(interface__msg__Empty), allocator.state);
+    if (!data) {
+      return false;
+    }
+    // initialize all array elements
+    size_t i;
+    for (i = 0; i < size; ++i) {
+      bool success = interface__msg__Empty__init(&data[i]);
+      if (!success) {
+        break;
+      }
+    }
+    if (i < size) {
+      // if initialization failed finalize the already initialized array elements
+      for (; i > 0; --i) {
+        interface__msg__Empty__fini(&data[i - 1]);
+      }
+      allocator.deallocate(data, allocator.state);
+      return false;
+    }
+  }
+  array->data = data;
+  array->size = size;
+  array->capacity = size;
+  return true;
+}
+
+void
+interface__msg__Empty__Sequence__fini(interface__msg__Empty__Sequence * array)
+{
+  if (!array) {
+    return;
+  }
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+
+  if (array->data) {
+    // ensure that data and capacity values are consistent
+    assert(array->capacity > 0);
+    // finalize all array elements
+    for (size_t i = 0; i < array->capacity; ++i) {
+      interface__msg__Empty__fini(&array->data[i]);
+    }
+    allocator.deallocate(array->data, allocator.state);
+    array->data = NULL;
+    array->size = 0;
+    array->capacity = 0;
+  } else {
+    // ensure that data, size, and capacity values are consistent
+    assert(0 == array->size);
+    assert(0 == array->capacity);
+  }
+}
+
+interface__msg__Empty__Sequence *
+interface__msg__Empty__Sequence__create(size_t size)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__msg__Empty__Sequence * array = (interface__msg__Empty__Sequence *)allocator.allocate(sizeof(interface__msg__Empty__Sequence), allocator.state);
+  if (!array) {
+    return NULL;
+  }
+  bool success = interface__msg__Empty__Sequence__init(array, size);
+  if (!success) {
+    allocator.deallocate(array, allocator.state);
+    return NULL;
+  }
+  return array;
+}
+
+void
+interface__msg__Empty__Sequence__destroy(interface__msg__Empty__Sequence * array)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  if (array) {
+    interface__msg__Empty__Sequence__fini(array);
+  }
+  allocator.deallocate(array, allocator.state);
+}
+
+bool
+interface__msg__Empty__Sequence__are_equal(const interface__msg__Empty__Sequence * lhs, const interface__msg__Empty__Sequence * rhs)
+{
+  if (!lhs || !rhs) {
+    return false;
+  }
+  if (lhs->size != rhs->size) {
+    return false;
+  }
+  for (size_t i = 0; i < lhs->size; ++i) {
+    if (!interface__msg__Empty__are_equal(&(lhs->data[i]), &(rhs->data[i]))) {
+      return false;
+    }
+  }
+  return true;
+}
+
+bool
+interface__msg__Empty__Sequence__copy(
+  const interface__msg__Empty__Sequence * input,
+  interface__msg__Empty__Sequence * output)
+{
+  if (!input || !output) {
+    return false;
+  }
+  if (output->capacity < input->size) {
+    const size_t allocation_size =
+      input->size * sizeof(interface__msg__Empty);
+    rcutils_allocator_t allocator = rcutils_get_default_allocator();
+    interface__msg__Empty * data =
+      (interface__msg__Empty *)allocator.reallocate(
+      output->data, allocation_size, allocator.state);
+    if (!data) {
+      return false;
+    }
+    // If reallocation succeeded, memory may or may not have been moved
+    // to fulfill the allocation request, invalidating output->data.
+    output->data = data;
+    for (size_t i = output->capacity; i < input->size; ++i) {
+      if (!interface__msg__Empty__init(&output->data[i])) {
+        // If initialization of any new item fails, roll back
+        // all previously initialized items. Existing items
+        // in output are to be left unmodified.
+        for (; i-- > output->capacity; ) {
+          interface__msg__Empty__fini(&output->data[i]);
+        }
+        return false;
+      }
+    }
+    output->capacity = input->size;
+  }
+  output->size = input->size;
+  for (size_t i = 0; i < input->size; ++i) {
+    if (!interface__msg__Empty__copy(
+        &(input->data[i]), &(output->data[i])))
+    {
+      return false;
+    }
+  }
+  return true;
+}

+ 177 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__functions.h

@@ -0,0 +1,177 @@
+// generated from rosidl_generator_c/resource/idl__functions.h.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__FUNCTIONS_H_
+#define INTERFACE__MSG__DETAIL__EMPTY__FUNCTIONS_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include "rosidl_runtime_c/visibility_control.h"
+#include "interface/msg/rosidl_generator_c__visibility_control.h"
+
+#include "interface/msg/detail/empty__struct.h"
+
+/// Initialize msg/Empty message.
+/**
+ * If the init function is called twice for the same message without
+ * calling fini inbetween previously allocated memory will be leaked.
+ * \param[in,out] msg The previously allocated message pointer.
+ * Fields without a default value will not be initialized by this function.
+ * You might want to call memset(msg, 0, sizeof(
+ * interface__msg__Empty
+ * )) before or use
+ * interface__msg__Empty__create()
+ * to allocate and initialize the message.
+ * \return true if initialization was successful, otherwise false
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__msg__Empty__init(interface__msg__Empty * msg);
+
+/// Finalize msg/Empty message.
+/**
+ * \param[in,out] msg The allocated message pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__msg__Empty__fini(interface__msg__Empty * msg);
+
+/// Create msg/Empty message.
+/**
+ * It allocates the memory for the message, sets the memory to zero, and
+ * calls
+ * interface__msg__Empty__init().
+ * \return The pointer to the initialized message if successful,
+ * otherwise NULL
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+interface__msg__Empty *
+interface__msg__Empty__create();
+
+/// Destroy msg/Empty message.
+/**
+ * It calls
+ * interface__msg__Empty__fini()
+ * and frees the memory of the message.
+ * \param[in,out] msg The allocated message pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__msg__Empty__destroy(interface__msg__Empty * msg);
+
+/// Check for msg/Empty message equality.
+/**
+ * \param[in] lhs The message on the left hand size of the equality operator.
+ * \param[in] rhs The message on the right hand size of the equality operator.
+ * \return true if messages are equal, otherwise false.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__msg__Empty__are_equal(const interface__msg__Empty * lhs, const interface__msg__Empty * rhs);
+
+/// Copy a msg/Empty message.
+/**
+ * This functions performs a deep copy, as opposed to the shallow copy that
+ * plain assignment yields.
+ *
+ * \param[in] input The source message pointer.
+ * \param[out] output The target message pointer, which must
+ *   have been initialized before calling this function.
+ * \return true if successful, or false if either pointer is null
+ *   or memory allocation fails.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__msg__Empty__copy(
+  const interface__msg__Empty * input,
+  interface__msg__Empty * output);
+
+/// Initialize array of msg/Empty messages.
+/**
+ * It allocates the memory for the number of elements and calls
+ * interface__msg__Empty__init()
+ * for each element of the array.
+ * \param[in,out] array The allocated array pointer.
+ * \param[in] size The size / capacity of the array.
+ * \return true if initialization was successful, otherwise false
+ * If the array pointer is valid and the size is zero it is guaranteed
+ # to return true.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__msg__Empty__Sequence__init(interface__msg__Empty__Sequence * array, size_t size);
+
+/// Finalize array of msg/Empty messages.
+/**
+ * It calls
+ * interface__msg__Empty__fini()
+ * for each element of the array and frees the memory for the number of
+ * elements.
+ * \param[in,out] array The initialized array pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__msg__Empty__Sequence__fini(interface__msg__Empty__Sequence * array);
+
+/// Create array of msg/Empty messages.
+/**
+ * It allocates the memory for the array and calls
+ * interface__msg__Empty__Sequence__init().
+ * \param[in] size The size / capacity of the array.
+ * \return The pointer to the initialized array if successful, otherwise NULL
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+interface__msg__Empty__Sequence *
+interface__msg__Empty__Sequence__create(size_t size);
+
+/// Destroy array of msg/Empty messages.
+/**
+ * It calls
+ * interface__msg__Empty__Sequence__fini()
+ * on the array,
+ * and frees the memory of the array.
+ * \param[in,out] array The initialized array pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__msg__Empty__Sequence__destroy(interface__msg__Empty__Sequence * array);
+
+/// Check for msg/Empty message array equality.
+/**
+ * \param[in] lhs The message array on the left hand size of the equality operator.
+ * \param[in] rhs The message array on the right hand size of the equality operator.
+ * \return true if message arrays are equal in size and content, otherwise false.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__msg__Empty__Sequence__are_equal(const interface__msg__Empty__Sequence * lhs, const interface__msg__Empty__Sequence * rhs);
+
+/// Copy an array of msg/Empty messages.
+/**
+ * This functions performs a deep copy, as opposed to the shallow copy that
+ * plain assignment yields.
+ *
+ * \param[in] input The source array pointer.
+ * \param[out] output The target array pointer, which must
+ *   have been initialized before calling this function.
+ * \return true if successful, or false if either pointer
+ *   is null or memory allocation fails.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__msg__Empty__Sequence__copy(
+  const interface__msg__Empty__Sequence * input,
+  interface__msg__Empty__Sequence * output);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__FUNCTIONS_H_

+ 37 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_fastrtps_c.h

@@ -0,0 +1,37 @@
+// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_
+#define INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_
+
+
+#include <stddef.h>
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/msg/rosidl_typesupport_fastrtps_c__visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+size_t get_serialized_size_interface__msg__Empty(
+  const void * untyped_ros_message,
+  size_t current_alignment);
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+size_t max_serialized_size_interface__msg__Empty(
+  bool & full_bounded,
+  bool & is_plain,
+  size_t current_alignment);
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, interface, msg, Empty)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_

+ 80 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_fastrtps_cpp.hpp

@@ -0,0 +1,80 @@
+// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_
+#define INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h"
+#include "interface/msg/detail/empty__struct.hpp"
+
+#ifndef _WIN32
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wunused-parameter"
+# ifdef __clang__
+#  pragma clang diagnostic ignored "-Wdeprecated-register"
+#  pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
+# endif
+#endif
+#ifndef _WIN32
+# pragma GCC diagnostic pop
+#endif
+
+#include "fastcdr/Cdr.h"
+
+namespace interface
+{
+
+namespace msg
+{
+
+namespace typesupport_fastrtps_cpp
+{
+
+bool
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+cdr_serialize(
+  const interface::msg::Empty & ros_message,
+  eprosima::fastcdr::Cdr & cdr);
+
+bool
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+cdr_deserialize(
+  eprosima::fastcdr::Cdr & cdr,
+  interface::msg::Empty & ros_message);
+
+size_t
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+get_serialized_size(
+  const interface::msg::Empty & ros_message,
+  size_t current_alignment);
+
+size_t
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+max_serialized_size_Empty(
+  bool & full_bounded,
+  bool & is_plain,
+  size_t current_alignment);
+
+}  // namespace typesupport_fastrtps_cpp
+
+}  // namespace msg
+
+}  // namespace interface
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, interface, msg, Empty)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_

+ 26 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_introspection_c.h

@@ -0,0 +1,26 @@
+// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_
+#define INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, msg, Empty)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_

+ 27 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__rosidl_typesupport_introspection_cpp.hpp

@@ -0,0 +1,27 @@
+// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_
+#define INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_
+
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+// TODO(dirk-thomas) these visibility macros should be message package specific
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, msg, Empty)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_

+ 44 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__struct.h

@@ -0,0 +1,44 @@
+// NOLINT: This file starts with a BOM since it contain non-ASCII characters
+// generated from rosidl_generator_c/resource/idl__struct.h.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__STRUCT_H_
+#define INTERFACE__MSG__DETAIL__EMPTY__STRUCT_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+
+// Constants defined in the message
+
+/// Struct defined in msg/Empty in the package interface.
+/**
+  * 空消息,可用于简单触发
+ */
+typedef struct interface__msg__Empty
+{
+  uint8_t structure_needs_at_least_one_member;
+} interface__msg__Empty;
+
+// Struct for a sequence of interface__msg__Empty.
+typedef struct interface__msg__Empty__Sequence
+{
+  interface__msg__Empty * data;
+  /// The number of valid items in data
+  size_t size;
+  /// The number of allocated items in data
+  size_t capacity;
+} interface__msg__Empty__Sequence;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__STRUCT_H_

+ 124 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__struct.hpp

@@ -0,0 +1,124 @@
+// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__STRUCT_HPP_
+#define INTERFACE__MSG__DETAIL__EMPTY__STRUCT_HPP_
+
+#include <algorithm>
+#include <array>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "rosidl_runtime_cpp/bounded_vector.hpp"
+#include "rosidl_runtime_cpp/message_initialization.hpp"
+
+
+#ifndef _WIN32
+# define DEPRECATED__interface__msg__Empty __attribute__((deprecated))
+#else
+# define DEPRECATED__interface__msg__Empty __declspec(deprecated)
+#endif
+
+namespace interface
+{
+
+namespace msg
+{
+
+// message struct
+template<class ContainerAllocator>
+struct Empty_
+{
+  using Type = Empty_<ContainerAllocator>;
+
+  explicit Empty_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL)
+  {
+    if (rosidl_runtime_cpp::MessageInitialization::ALL == _init ||
+      rosidl_runtime_cpp::MessageInitialization::ZERO == _init)
+    {
+      this->structure_needs_at_least_one_member = 0;
+    }
+  }
+
+  explicit Empty_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL)
+  {
+    (void)_alloc;
+    if (rosidl_runtime_cpp::MessageInitialization::ALL == _init ||
+      rosidl_runtime_cpp::MessageInitialization::ZERO == _init)
+    {
+      this->structure_needs_at_least_one_member = 0;
+    }
+  }
+
+  // field types and members
+  using _structure_needs_at_least_one_member_type =
+    uint8_t;
+  _structure_needs_at_least_one_member_type structure_needs_at_least_one_member;
+
+
+  // constant declarations
+
+  // pointer types
+  using RawPtr =
+    interface::msg::Empty_<ContainerAllocator> *;
+  using ConstRawPtr =
+    const interface::msg::Empty_<ContainerAllocator> *;
+  using SharedPtr =
+    std::shared_ptr<interface::msg::Empty_<ContainerAllocator>>;
+  using ConstSharedPtr =
+    std::shared_ptr<interface::msg::Empty_<ContainerAllocator> const>;
+
+  template<typename Deleter = std::default_delete<
+      interface::msg::Empty_<ContainerAllocator>>>
+  using UniquePtrWithDeleter =
+    std::unique_ptr<interface::msg::Empty_<ContainerAllocator>, Deleter>;
+
+  using UniquePtr = UniquePtrWithDeleter<>;
+
+  template<typename Deleter = std::default_delete<
+      interface::msg::Empty_<ContainerAllocator>>>
+  using ConstUniquePtrWithDeleter =
+    std::unique_ptr<interface::msg::Empty_<ContainerAllocator> const, Deleter>;
+  using ConstUniquePtr = ConstUniquePtrWithDeleter<>;
+
+  using WeakPtr =
+    std::weak_ptr<interface::msg::Empty_<ContainerAllocator>>;
+  using ConstWeakPtr =
+    std::weak_ptr<interface::msg::Empty_<ContainerAllocator> const>;
+
+  // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead
+  // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly
+  typedef DEPRECATED__interface__msg__Empty
+    std::shared_ptr<interface::msg::Empty_<ContainerAllocator>>
+    Ptr;
+  typedef DEPRECATED__interface__msg__Empty
+    std::shared_ptr<interface::msg::Empty_<ContainerAllocator> const>
+    ConstPtr;
+
+  // comparison operators
+  bool operator==(const Empty_ & other) const
+  {
+    if (this->structure_needs_at_least_one_member != other.structure_needs_at_least_one_member) {
+      return false;
+    }
+    return true;
+  }
+  bool operator!=(const Empty_ & other) const
+  {
+    return !this->operator==(other);
+  }
+};  // struct Empty_
+
+// alias to use template instance with default allocator
+using Empty =
+  interface::msg::Empty_<std::allocator<void>>;
+
+// constant definitions
+
+}  // namespace msg
+
+}  // namespace interface
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__STRUCT_HPP_

+ 98 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__traits.hpp

@@ -0,0 +1,98 @@
+// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__TRAITS_HPP_
+#define INTERFACE__MSG__DETAIL__EMPTY__TRAITS_HPP_
+
+#include <stdint.h>
+
+#include <sstream>
+#include <string>
+#include <type_traits>
+
+#include "interface/msg/detail/empty__struct.hpp"
+#include "rosidl_runtime_cpp/traits.hpp"
+
+namespace interface
+{
+
+namespace msg
+{
+
+inline void to_flow_style_yaml(
+  const Empty & msg,
+  std::ostream & out)
+{
+  (void)msg;
+  out << "null";
+}  // NOLINT(readability/fn_size)
+
+inline void to_block_style_yaml(
+  const Empty & msg,
+  std::ostream & out, size_t indentation = 0)
+{
+  (void)msg;
+  (void)indentation;
+  out << "null\n";
+}  // NOLINT(readability/fn_size)
+
+inline std::string to_yaml(const Empty & msg, bool use_flow_style = false)
+{
+  std::ostringstream out;
+  if (use_flow_style) {
+    to_flow_style_yaml(msg, out);
+  } else {
+    to_block_style_yaml(msg, out);
+  }
+  return out.str();
+}
+
+}  // namespace msg
+
+}  // namespace interface
+
+namespace rosidl_generator_traits
+{
+
+[[deprecated("use interface::msg::to_block_style_yaml() instead")]]
+inline void to_yaml(
+  const interface::msg::Empty & msg,
+  std::ostream & out, size_t indentation = 0)
+{
+  interface::msg::to_block_style_yaml(msg, out, indentation);
+}
+
+[[deprecated("use interface::msg::to_yaml() instead")]]
+inline std::string to_yaml(const interface::msg::Empty & msg)
+{
+  return interface::msg::to_yaml(msg);
+}
+
+template<>
+inline const char * data_type<interface::msg::Empty>()
+{
+  return "interface::msg::Empty";
+}
+
+template<>
+inline const char * name<interface::msg::Empty>()
+{
+  return "interface/msg/Empty";
+}
+
+template<>
+struct has_fixed_size<interface::msg::Empty>
+  : std::integral_constant<bool, true> {};
+
+template<>
+struct has_bounded_size<interface::msg::Empty>
+  : std::integral_constant<bool, true> {};
+
+template<>
+struct is_message<interface::msg::Empty>
+  : std::true_type {};
+
+}  // namespace rosidl_generator_traits
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__TRAITS_HPP_

+ 83 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.c

@@ -0,0 +1,83 @@
+// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#include <stddef.h>
+#include "interface/msg/detail/empty__rosidl_typesupport_introspection_c.h"
+#include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+#include "rosidl_typesupport_introspection_c/field_types.h"
+#include "rosidl_typesupport_introspection_c/identifier.h"
+#include "rosidl_typesupport_introspection_c/message_introspection.h"
+#include "interface/msg/detail/empty__functions.h"
+#include "interface/msg/detail/empty__struct.h"
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_init_function(
+  void * message_memory, enum rosidl_runtime_c__message_initialization _init)
+{
+  // TODO(karsten1987): initializers are not yet implemented for typesupport c
+  // see https://github.com/ros2/ros2/issues/397
+  (void) _init;
+  interface__msg__Empty__init(message_memory);
+}
+
+void interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_fini_function(void * message_memory)
+{
+  interface__msg__Empty__fini(message_memory);
+}
+
+static rosidl_typesupport_introspection_c__MessageMember interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_member_array[1] = {
+  {
+    "structure_needs_at_least_one_member",  // name
+    rosidl_typesupport_introspection_c__ROS_TYPE_UINT8,  // type
+    0,  // upper bound of string
+    NULL,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface__msg__Empty, structure_needs_at_least_one_member),  // bytes offset in struct
+    NULL,  // default value
+    NULL,  // size() function pointer
+    NULL,  // get_const(index) function pointer
+    NULL,  // get(index) function pointer
+    NULL,  // fetch(index, &value) function pointer
+    NULL,  // assign(index, value) function pointer
+    NULL  // resize(index) function pointer
+  }
+};
+
+static const rosidl_typesupport_introspection_c__MessageMembers interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_members = {
+  "interface__msg",  // message namespace
+  "Empty",  // message name
+  1,  // number of fields
+  sizeof(interface__msg__Empty),
+  interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_member_array,  // message members
+  interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_init_function,  // function to initialize message memory (memory has to be allocated)
+  interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_fini_function  // function to terminate message instance (will not free memory)
+};
+
+// this is not const since it must be initialized on first access
+// since C does not allow non-integral compile-time constants
+static rosidl_message_type_support_t interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_type_support_handle = {
+  0,
+  &interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_members,
+  get_message_typesupport_handle_function,
+};
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, msg, Empty)() {
+  if (!interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_type_support_handle.typesupport_identifier) {
+    interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_type_support_handle.typesupport_identifier =
+      rosidl_typesupport_introspection_c__identifier;
+  }
+  return &interface__msg__Empty__rosidl_typesupport_introspection_c__Empty_message_type_support_handle;
+}
+#ifdef __cplusplus
+}
+#endif

+ 109 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.cpp

@@ -0,0 +1,109 @@
+// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#include "array"
+#include "cstddef"
+#include "string"
+#include "vector"
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_cpp/message_type_support.hpp"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/msg/detail/empty__struct.hpp"
+#include "rosidl_typesupport_introspection_cpp/field_types.hpp"
+#include "rosidl_typesupport_introspection_cpp/identifier.hpp"
+#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp"
+#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp"
+#include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+
+namespace interface
+{
+
+namespace msg
+{
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+void Empty_init_function(
+  void * message_memory, rosidl_runtime_cpp::MessageInitialization _init)
+{
+  new (message_memory) interface::msg::Empty(_init);
+}
+
+void Empty_fini_function(void * message_memory)
+{
+  auto typed_message = static_cast<interface::msg::Empty *>(message_memory);
+  typed_message->~Empty();
+}
+
+static const ::rosidl_typesupport_introspection_cpp::MessageMember Empty_message_member_array[1] = {
+  {
+    "structure_needs_at_least_one_member",  // name
+    ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8,  // type
+    0,  // upper bound of string
+    nullptr,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface::msg::Empty, structure_needs_at_least_one_member),  // bytes offset in struct
+    nullptr,  // default value
+    nullptr,  // size() function pointer
+    nullptr,  // get_const(index) function pointer
+    nullptr,  // get(index) function pointer
+    nullptr,  // fetch(index, &value) function pointer
+    nullptr,  // assign(index, value) function pointer
+    nullptr  // resize(index) function pointer
+  }
+};
+
+static const ::rosidl_typesupport_introspection_cpp::MessageMembers Empty_message_members = {
+  "interface::msg",  // message namespace
+  "Empty",  // message name
+  1,  // number of fields
+  sizeof(interface::msg::Empty),
+  Empty_message_member_array,  // message members
+  Empty_init_function,  // function to initialize message memory (memory has to be allocated)
+  Empty_fini_function  // function to terminate message instance (will not free memory)
+};
+
+static const rosidl_message_type_support_t Empty_message_type_support_handle = {
+  ::rosidl_typesupport_introspection_cpp::typesupport_identifier,
+  &Empty_message_members,
+  get_message_typesupport_handle_function,
+};
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+}  // namespace msg
+
+}  // namespace interface
+
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+template<>
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+get_message_type_support_handle<interface::msg::Empty>()
+{
+  return &::interface::msg::rosidl_typesupport_introspection_cpp::Empty_message_type_support_handle;
+}
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, msg, Empty)() {
+  return &::interface::msg::rosidl_typesupport_introspection_cpp::Empty_message_type_support_handle;
+}
+
+#ifdef __cplusplus
+}
+#endif

+ 33 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.h

@@ -0,0 +1,33 @@
+// generated from rosidl_generator_c/resource/idl__type_support.h.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__TYPE_SUPPORT_H_
+#define INTERFACE__MSG__DETAIL__EMPTY__TYPE_SUPPORT_H_
+
+#include "rosidl_typesupport_interface/macros.h"
+
+#include "interface/msg/rosidl_generator_c__visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
+  rosidl_typesupport_c,
+  interface,
+  msg,
+  Empty
+)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__TYPE_SUPPORT_H_

+ 31 - 0
rechange_ws/install/interface/include/interface/interface/msg/detail/empty__type_support.hpp

@@ -0,0 +1,31 @@
+// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__DETAIL__EMPTY__TYPE_SUPPORT_HPP_
+#define INTERFACE__MSG__DETAIL__EMPTY__TYPE_SUPPORT_HPP_
+
+#include "rosidl_typesupport_interface/macros.h"
+
+#include "interface/msg/rosidl_generator_cpp__visibility_control.hpp"
+
+#include "rosidl_typesupport_cpp/message_type_support.hpp"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_CPP_PUBLIC_interface
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
+  rosidl_typesupport_cpp,
+  interface,
+  msg,
+  Empty
+)();
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__DETAIL__EMPTY__TYPE_SUPPORT_HPP_

+ 12 - 0
rechange_ws/install/interface/include/interface/interface/msg/empty.h

@@ -0,0 +1,12 @@
+// generated from rosidl_generator_c/resource/idl.h.em
+// with input from interface:msg/Empty.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__EMPTY_H_
+#define INTERFACE__MSG__EMPTY_H_
+
+#include "interface/msg/detail/empty__struct.h"
+#include "interface/msg/detail/empty__functions.h"
+#include "interface/msg/detail/empty__type_support.h"
+
+#endif  // INTERFACE__MSG__EMPTY_H_

+ 12 - 0
rechange_ws/install/interface/include/interface/interface/msg/empty.hpp

@@ -0,0 +1,12 @@
+// generated from rosidl_generator_cpp/resource/idl.hpp.em
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__EMPTY_HPP_
+#define INTERFACE__MSG__EMPTY_HPP_
+
+#include "interface/msg/detail/empty__struct.hpp"
+#include "interface/msg/detail/empty__builder.hpp"
+#include "interface/msg/detail/empty__traits.hpp"
+#include "interface/msg/detail/empty__type_support.hpp"
+
+#endif  // INTERFACE__MSG__EMPTY_HPP_

+ 42 - 0
rechange_ws/install/interface/include/interface/interface/msg/rosidl_generator_c__visibility_control.h

@@ -0,0 +1,42 @@
+// generated from rosidl_generator_c/resource/rosidl_generator_c__visibility_control.h.in
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_
+#define INTERFACE__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+// This logic was borrowed (then namespaced) from the examples on the gcc wiki:
+//     https://gcc.gnu.org/wiki/Visibility
+
+#if defined _WIN32 || defined __CYGWIN__
+  #ifdef __GNUC__
+    #define ROSIDL_GENERATOR_C_EXPORT_interface __attribute__ ((dllexport))
+    #define ROSIDL_GENERATOR_C_IMPORT_interface __attribute__ ((dllimport))
+  #else
+    #define ROSIDL_GENERATOR_C_EXPORT_interface __declspec(dllexport)
+    #define ROSIDL_GENERATOR_C_IMPORT_interface __declspec(dllimport)
+  #endif
+  #ifdef ROSIDL_GENERATOR_C_BUILDING_DLL_interface
+    #define ROSIDL_GENERATOR_C_PUBLIC_interface ROSIDL_GENERATOR_C_EXPORT_interface
+  #else
+    #define ROSIDL_GENERATOR_C_PUBLIC_interface ROSIDL_GENERATOR_C_IMPORT_interface
+  #endif
+#else
+  #define ROSIDL_GENERATOR_C_EXPORT_interface __attribute__ ((visibility("default")))
+  #define ROSIDL_GENERATOR_C_IMPORT_interface
+  #if __GNUC__ >= 4
+    #define ROSIDL_GENERATOR_C_PUBLIC_interface __attribute__ ((visibility("default")))
+  #else
+    #define ROSIDL_GENERATOR_C_PUBLIC_interface
+  #endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_

+ 42 - 0
rechange_ws/install/interface/include/interface/interface/msg/rosidl_generator_cpp__visibility_control.hpp

@@ -0,0 +1,42 @@
+// generated from rosidl_generator_cpp/resource/rosidl_generator_cpp__visibility_control.hpp.in
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_
+#define INTERFACE__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+// This logic was borrowed (then namespaced) from the examples on the gcc wiki:
+//     https://gcc.gnu.org/wiki/Visibility
+
+#if defined _WIN32 || defined __CYGWIN__
+  #ifdef __GNUC__
+    #define ROSIDL_GENERATOR_CPP_EXPORT_interface __attribute__ ((dllexport))
+    #define ROSIDL_GENERATOR_CPP_IMPORT_interface __attribute__ ((dllimport))
+  #else
+    #define ROSIDL_GENERATOR_CPP_EXPORT_interface __declspec(dllexport)
+    #define ROSIDL_GENERATOR_CPP_IMPORT_interface __declspec(dllimport)
+  #endif
+  #ifdef ROSIDL_GENERATOR_CPP_BUILDING_DLL_interface
+    #define ROSIDL_GENERATOR_CPP_PUBLIC_interface ROSIDL_GENERATOR_CPP_EXPORT_interface
+  #else
+    #define ROSIDL_GENERATOR_CPP_PUBLIC_interface ROSIDL_GENERATOR_CPP_IMPORT_interface
+  #endif
+#else
+  #define ROSIDL_GENERATOR_CPP_EXPORT_interface __attribute__ ((visibility("default")))
+  #define ROSIDL_GENERATOR_CPP_IMPORT_interface
+  #if __GNUC__ >= 4
+    #define ROSIDL_GENERATOR_CPP_PUBLIC_interface __attribute__ ((visibility("default")))
+  #else
+    #define ROSIDL_GENERATOR_CPP_PUBLIC_interface
+  #endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_

+ 43 - 0
rechange_ws/install/interface/include/interface/interface/msg/rosidl_typesupport_fastrtps_c__visibility_control.h

@@ -0,0 +1,43 @@
+// generated from
+// rosidl_typesupport_fastrtps_c/resource/rosidl_typesupport_fastrtps_c__visibility_control.h.in
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_
+#define INTERFACE__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_
+
+#if __cplusplus
+extern "C"
+{
+#endif
+
+// This logic was borrowed (then namespaced) from the examples on the gcc wiki:
+//     https://gcc.gnu.org/wiki/Visibility
+
+#if defined _WIN32 || defined __CYGWIN__
+  #ifdef __GNUC__
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_interface __attribute__ ((dllexport))
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_interface __attribute__ ((dllimport))
+  #else
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_interface __declspec(dllexport)
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_interface __declspec(dllimport)
+  #endif
+  #ifdef ROSIDL_TYPESUPPORT_FASTRTPS_C_BUILDING_DLL_interface
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_interface
+  #else
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_interface
+  #endif
+#else
+  #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_interface __attribute__ ((visibility("default")))
+  #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_interface
+  #if __GNUC__ >= 4
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface __attribute__ ((visibility("default")))
+  #else
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+  #endif
+#endif
+
+#if __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_

+ 43 - 0
rechange_ws/install/interface/include/interface/interface/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h

@@ -0,0 +1,43 @@
+// generated from
+// rosidl_typesupport_fastrtps_cpp/resource/rosidl_typesupport_fastrtps_cpp__visibility_control.h.in
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_
+#define INTERFACE__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_
+
+#if __cplusplus
+extern "C"
+{
+#endif
+
+// This logic was borrowed (then namespaced) from the examples on the gcc wiki:
+//     https://gcc.gnu.org/wiki/Visibility
+
+#if defined _WIN32 || defined __CYGWIN__
+  #ifdef __GNUC__
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_interface __attribute__ ((dllexport))
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_interface __attribute__ ((dllimport))
+  #else
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_interface __declspec(dllexport)
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_interface __declspec(dllimport)
+  #endif
+  #ifdef ROSIDL_TYPESUPPORT_FASTRTPS_CPP_BUILDING_DLL_interface
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_interface
+  #else
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_interface
+  #endif
+#else
+  #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_interface __attribute__ ((visibility("default")))
+  #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_interface
+  #if __GNUC__ >= 4
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface __attribute__ ((visibility("default")))
+  #else
+    #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+  #endif
+#endif
+
+#if __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_

+ 43 - 0
rechange_ws/install/interface/include/interface/interface/msg/rosidl_typesupport_introspection_c__visibility_control.h

@@ -0,0 +1,43 @@
+// generated from
+// rosidl_typesupport_introspection_c/resource/rosidl_typesupport_introspection_c__visibility_control.h.in
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_
+#define INTERFACE__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+// This logic was borrowed (then namespaced) from the examples on the gcc wiki:
+//     https://gcc.gnu.org/wiki/Visibility
+
+#if defined _WIN32 || defined __CYGWIN__
+  #ifdef __GNUC__
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface __attribute__ ((dllexport))
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_interface __attribute__ ((dllimport))
+  #else
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface __declspec(dllexport)
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_interface __declspec(dllimport)
+  #endif
+  #ifdef ROSIDL_TYPESUPPORT_INTROSPECTION_C_BUILDING_DLL_interface
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface
+  #else
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_interface
+  #endif
+#else
+  #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface __attribute__ ((visibility("default")))
+  #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_interface
+  #if __GNUC__ >= 4
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface __attribute__ ((visibility("default")))
+  #else
+    #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface
+  #endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_

+ 114 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__builder.hpp

@@ -0,0 +1,114 @@
+// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__BUILDER_HPP_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__BUILDER_HPP_
+
+#include <algorithm>
+#include <utility>
+
+#include "interface/srv/detail/scene_controls__struct.hpp"
+#include "rosidl_runtime_cpp/message_initialization.hpp"
+
+
+namespace interface
+{
+
+namespace srv
+{
+
+namespace builder
+{
+
+class Init_SceneControls_Request_start
+{
+public:
+  Init_SceneControls_Request_start()
+  : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP)
+  {}
+  ::interface::srv::SceneControls_Request start(::interface::srv::SceneControls_Request::_start_type arg)
+  {
+    msg_.start = std::move(arg);
+    return std::move(msg_);
+  }
+
+private:
+  ::interface::srv::SceneControls_Request msg_;
+};
+
+}  // namespace builder
+
+}  // namespace srv
+
+template<typename MessageType>
+auto build();
+
+template<>
+inline
+auto build<::interface::srv::SceneControls_Request>()
+{
+  return interface::srv::builder::Init_SceneControls_Request_start();
+}
+
+}  // namespace interface
+
+
+namespace interface
+{
+
+namespace srv
+{
+
+namespace builder
+{
+
+class Init_SceneControls_Response_message
+{
+public:
+  explicit Init_SceneControls_Response_message(::interface::srv::SceneControls_Response & msg)
+  : msg_(msg)
+  {}
+  ::interface::srv::SceneControls_Response message(::interface::srv::SceneControls_Response::_message_type arg)
+  {
+    msg_.message = std::move(arg);
+    return std::move(msg_);
+  }
+
+private:
+  ::interface::srv::SceneControls_Response msg_;
+};
+
+class Init_SceneControls_Response_code
+{
+public:
+  Init_SceneControls_Response_code()
+  : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP)
+  {}
+  Init_SceneControls_Response_message code(::interface::srv::SceneControls_Response::_code_type arg)
+  {
+    msg_.code = std::move(arg);
+    return Init_SceneControls_Response_message(msg_);
+  }
+
+private:
+  ::interface::srv::SceneControls_Response msg_;
+};
+
+}  // namespace builder
+
+}  // namespace srv
+
+template<typename MessageType>
+auto build();
+
+template<>
+inline
+auto build<::interface::srv::SceneControls_Response>()
+{
+  return interface::srv::builder::Init_SceneControls_Response_code();
+}
+
+}  // namespace interface
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__BUILDER_HPP_

+ 483 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__functions.c

@@ -0,0 +1,483 @@
+// generated from rosidl_generator_c/resource/idl__functions.c.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+#include "interface/srv/detail/scene_controls__functions.h"
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "rcutils/allocator.h"
+
+bool
+interface__srv__SceneControls_Request__init(interface__srv__SceneControls_Request * msg)
+{
+  if (!msg) {
+    return false;
+  }
+  // start
+  return true;
+}
+
+void
+interface__srv__SceneControls_Request__fini(interface__srv__SceneControls_Request * msg)
+{
+  if (!msg) {
+    return;
+  }
+  // start
+}
+
+bool
+interface__srv__SceneControls_Request__are_equal(const interface__srv__SceneControls_Request * lhs, const interface__srv__SceneControls_Request * rhs)
+{
+  if (!lhs || !rhs) {
+    return false;
+  }
+  // start
+  if (lhs->start != rhs->start) {
+    return false;
+  }
+  return true;
+}
+
+bool
+interface__srv__SceneControls_Request__copy(
+  const interface__srv__SceneControls_Request * input,
+  interface__srv__SceneControls_Request * output)
+{
+  if (!input || !output) {
+    return false;
+  }
+  // start
+  output->start = input->start;
+  return true;
+}
+
+interface__srv__SceneControls_Request *
+interface__srv__SceneControls_Request__create()
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__srv__SceneControls_Request * msg = (interface__srv__SceneControls_Request *)allocator.allocate(sizeof(interface__srv__SceneControls_Request), allocator.state);
+  if (!msg) {
+    return NULL;
+  }
+  memset(msg, 0, sizeof(interface__srv__SceneControls_Request));
+  bool success = interface__srv__SceneControls_Request__init(msg);
+  if (!success) {
+    allocator.deallocate(msg, allocator.state);
+    return NULL;
+  }
+  return msg;
+}
+
+void
+interface__srv__SceneControls_Request__destroy(interface__srv__SceneControls_Request * msg)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  if (msg) {
+    interface__srv__SceneControls_Request__fini(msg);
+  }
+  allocator.deallocate(msg, allocator.state);
+}
+
+
+bool
+interface__srv__SceneControls_Request__Sequence__init(interface__srv__SceneControls_Request__Sequence * array, size_t size)
+{
+  if (!array) {
+    return false;
+  }
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__srv__SceneControls_Request * data = NULL;
+
+  if (size) {
+    data = (interface__srv__SceneControls_Request *)allocator.zero_allocate(size, sizeof(interface__srv__SceneControls_Request), allocator.state);
+    if (!data) {
+      return false;
+    }
+    // initialize all array elements
+    size_t i;
+    for (i = 0; i < size; ++i) {
+      bool success = interface__srv__SceneControls_Request__init(&data[i]);
+      if (!success) {
+        break;
+      }
+    }
+    if (i < size) {
+      // if initialization failed finalize the already initialized array elements
+      for (; i > 0; --i) {
+        interface__srv__SceneControls_Request__fini(&data[i - 1]);
+      }
+      allocator.deallocate(data, allocator.state);
+      return false;
+    }
+  }
+  array->data = data;
+  array->size = size;
+  array->capacity = size;
+  return true;
+}
+
+void
+interface__srv__SceneControls_Request__Sequence__fini(interface__srv__SceneControls_Request__Sequence * array)
+{
+  if (!array) {
+    return;
+  }
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+
+  if (array->data) {
+    // ensure that data and capacity values are consistent
+    assert(array->capacity > 0);
+    // finalize all array elements
+    for (size_t i = 0; i < array->capacity; ++i) {
+      interface__srv__SceneControls_Request__fini(&array->data[i]);
+    }
+    allocator.deallocate(array->data, allocator.state);
+    array->data = NULL;
+    array->size = 0;
+    array->capacity = 0;
+  } else {
+    // ensure that data, size, and capacity values are consistent
+    assert(0 == array->size);
+    assert(0 == array->capacity);
+  }
+}
+
+interface__srv__SceneControls_Request__Sequence *
+interface__srv__SceneControls_Request__Sequence__create(size_t size)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__srv__SceneControls_Request__Sequence * array = (interface__srv__SceneControls_Request__Sequence *)allocator.allocate(sizeof(interface__srv__SceneControls_Request__Sequence), allocator.state);
+  if (!array) {
+    return NULL;
+  }
+  bool success = interface__srv__SceneControls_Request__Sequence__init(array, size);
+  if (!success) {
+    allocator.deallocate(array, allocator.state);
+    return NULL;
+  }
+  return array;
+}
+
+void
+interface__srv__SceneControls_Request__Sequence__destroy(interface__srv__SceneControls_Request__Sequence * array)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  if (array) {
+    interface__srv__SceneControls_Request__Sequence__fini(array);
+  }
+  allocator.deallocate(array, allocator.state);
+}
+
+bool
+interface__srv__SceneControls_Request__Sequence__are_equal(const interface__srv__SceneControls_Request__Sequence * lhs, const interface__srv__SceneControls_Request__Sequence * rhs)
+{
+  if (!lhs || !rhs) {
+    return false;
+  }
+  if (lhs->size != rhs->size) {
+    return false;
+  }
+  for (size_t i = 0; i < lhs->size; ++i) {
+    if (!interface__srv__SceneControls_Request__are_equal(&(lhs->data[i]), &(rhs->data[i]))) {
+      return false;
+    }
+  }
+  return true;
+}
+
+bool
+interface__srv__SceneControls_Request__Sequence__copy(
+  const interface__srv__SceneControls_Request__Sequence * input,
+  interface__srv__SceneControls_Request__Sequence * output)
+{
+  if (!input || !output) {
+    return false;
+  }
+  if (output->capacity < input->size) {
+    const size_t allocation_size =
+      input->size * sizeof(interface__srv__SceneControls_Request);
+    rcutils_allocator_t allocator = rcutils_get_default_allocator();
+    interface__srv__SceneControls_Request * data =
+      (interface__srv__SceneControls_Request *)allocator.reallocate(
+      output->data, allocation_size, allocator.state);
+    if (!data) {
+      return false;
+    }
+    // If reallocation succeeded, memory may or may not have been moved
+    // to fulfill the allocation request, invalidating output->data.
+    output->data = data;
+    for (size_t i = output->capacity; i < input->size; ++i) {
+      if (!interface__srv__SceneControls_Request__init(&output->data[i])) {
+        // If initialization of any new item fails, roll back
+        // all previously initialized items. Existing items
+        // in output are to be left unmodified.
+        for (; i-- > output->capacity; ) {
+          interface__srv__SceneControls_Request__fini(&output->data[i]);
+        }
+        return false;
+      }
+    }
+    output->capacity = input->size;
+  }
+  output->size = input->size;
+  for (size_t i = 0; i < input->size; ++i) {
+    if (!interface__srv__SceneControls_Request__copy(
+        &(input->data[i]), &(output->data[i])))
+    {
+      return false;
+    }
+  }
+  return true;
+}
+
+
+// Include directives for member types
+// Member `message`
+#include "rosidl_runtime_c/string_functions.h"
+
+bool
+interface__srv__SceneControls_Response__init(interface__srv__SceneControls_Response * msg)
+{
+  if (!msg) {
+    return false;
+  }
+  // code
+  // message
+  if (!rosidl_runtime_c__String__init(&msg->message)) {
+    interface__srv__SceneControls_Response__fini(msg);
+    return false;
+  }
+  return true;
+}
+
+void
+interface__srv__SceneControls_Response__fini(interface__srv__SceneControls_Response * msg)
+{
+  if (!msg) {
+    return;
+  }
+  // code
+  // message
+  rosidl_runtime_c__String__fini(&msg->message);
+}
+
+bool
+interface__srv__SceneControls_Response__are_equal(const interface__srv__SceneControls_Response * lhs, const interface__srv__SceneControls_Response * rhs)
+{
+  if (!lhs || !rhs) {
+    return false;
+  }
+  // code
+  if (lhs->code != rhs->code) {
+    return false;
+  }
+  // message
+  if (!rosidl_runtime_c__String__are_equal(
+      &(lhs->message), &(rhs->message)))
+  {
+    return false;
+  }
+  return true;
+}
+
+bool
+interface__srv__SceneControls_Response__copy(
+  const interface__srv__SceneControls_Response * input,
+  interface__srv__SceneControls_Response * output)
+{
+  if (!input || !output) {
+    return false;
+  }
+  // code
+  output->code = input->code;
+  // message
+  if (!rosidl_runtime_c__String__copy(
+      &(input->message), &(output->message)))
+  {
+    return false;
+  }
+  return true;
+}
+
+interface__srv__SceneControls_Response *
+interface__srv__SceneControls_Response__create()
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__srv__SceneControls_Response * msg = (interface__srv__SceneControls_Response *)allocator.allocate(sizeof(interface__srv__SceneControls_Response), allocator.state);
+  if (!msg) {
+    return NULL;
+  }
+  memset(msg, 0, sizeof(interface__srv__SceneControls_Response));
+  bool success = interface__srv__SceneControls_Response__init(msg);
+  if (!success) {
+    allocator.deallocate(msg, allocator.state);
+    return NULL;
+  }
+  return msg;
+}
+
+void
+interface__srv__SceneControls_Response__destroy(interface__srv__SceneControls_Response * msg)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  if (msg) {
+    interface__srv__SceneControls_Response__fini(msg);
+  }
+  allocator.deallocate(msg, allocator.state);
+}
+
+
+bool
+interface__srv__SceneControls_Response__Sequence__init(interface__srv__SceneControls_Response__Sequence * array, size_t size)
+{
+  if (!array) {
+    return false;
+  }
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__srv__SceneControls_Response * data = NULL;
+
+  if (size) {
+    data = (interface__srv__SceneControls_Response *)allocator.zero_allocate(size, sizeof(interface__srv__SceneControls_Response), allocator.state);
+    if (!data) {
+      return false;
+    }
+    // initialize all array elements
+    size_t i;
+    for (i = 0; i < size; ++i) {
+      bool success = interface__srv__SceneControls_Response__init(&data[i]);
+      if (!success) {
+        break;
+      }
+    }
+    if (i < size) {
+      // if initialization failed finalize the already initialized array elements
+      for (; i > 0; --i) {
+        interface__srv__SceneControls_Response__fini(&data[i - 1]);
+      }
+      allocator.deallocate(data, allocator.state);
+      return false;
+    }
+  }
+  array->data = data;
+  array->size = size;
+  array->capacity = size;
+  return true;
+}
+
+void
+interface__srv__SceneControls_Response__Sequence__fini(interface__srv__SceneControls_Response__Sequence * array)
+{
+  if (!array) {
+    return;
+  }
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+
+  if (array->data) {
+    // ensure that data and capacity values are consistent
+    assert(array->capacity > 0);
+    // finalize all array elements
+    for (size_t i = 0; i < array->capacity; ++i) {
+      interface__srv__SceneControls_Response__fini(&array->data[i]);
+    }
+    allocator.deallocate(array->data, allocator.state);
+    array->data = NULL;
+    array->size = 0;
+    array->capacity = 0;
+  } else {
+    // ensure that data, size, and capacity values are consistent
+    assert(0 == array->size);
+    assert(0 == array->capacity);
+  }
+}
+
+interface__srv__SceneControls_Response__Sequence *
+interface__srv__SceneControls_Response__Sequence__create(size_t size)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  interface__srv__SceneControls_Response__Sequence * array = (interface__srv__SceneControls_Response__Sequence *)allocator.allocate(sizeof(interface__srv__SceneControls_Response__Sequence), allocator.state);
+  if (!array) {
+    return NULL;
+  }
+  bool success = interface__srv__SceneControls_Response__Sequence__init(array, size);
+  if (!success) {
+    allocator.deallocate(array, allocator.state);
+    return NULL;
+  }
+  return array;
+}
+
+void
+interface__srv__SceneControls_Response__Sequence__destroy(interface__srv__SceneControls_Response__Sequence * array)
+{
+  rcutils_allocator_t allocator = rcutils_get_default_allocator();
+  if (array) {
+    interface__srv__SceneControls_Response__Sequence__fini(array);
+  }
+  allocator.deallocate(array, allocator.state);
+}
+
+bool
+interface__srv__SceneControls_Response__Sequence__are_equal(const interface__srv__SceneControls_Response__Sequence * lhs, const interface__srv__SceneControls_Response__Sequence * rhs)
+{
+  if (!lhs || !rhs) {
+    return false;
+  }
+  if (lhs->size != rhs->size) {
+    return false;
+  }
+  for (size_t i = 0; i < lhs->size; ++i) {
+    if (!interface__srv__SceneControls_Response__are_equal(&(lhs->data[i]), &(rhs->data[i]))) {
+      return false;
+    }
+  }
+  return true;
+}
+
+bool
+interface__srv__SceneControls_Response__Sequence__copy(
+  const interface__srv__SceneControls_Response__Sequence * input,
+  interface__srv__SceneControls_Response__Sequence * output)
+{
+  if (!input || !output) {
+    return false;
+  }
+  if (output->capacity < input->size) {
+    const size_t allocation_size =
+      input->size * sizeof(interface__srv__SceneControls_Response);
+    rcutils_allocator_t allocator = rcutils_get_default_allocator();
+    interface__srv__SceneControls_Response * data =
+      (interface__srv__SceneControls_Response *)allocator.reallocate(
+      output->data, allocation_size, allocator.state);
+    if (!data) {
+      return false;
+    }
+    // If reallocation succeeded, memory may or may not have been moved
+    // to fulfill the allocation request, invalidating output->data.
+    output->data = data;
+    for (size_t i = output->capacity; i < input->size; ++i) {
+      if (!interface__srv__SceneControls_Response__init(&output->data[i])) {
+        // If initialization of any new item fails, roll back
+        // all previously initialized items. Existing items
+        // in output are to be left unmodified.
+        for (; i-- > output->capacity; ) {
+          interface__srv__SceneControls_Response__fini(&output->data[i]);
+        }
+        return false;
+      }
+    }
+    output->capacity = input->size;
+  }
+  output->size = input->size;
+  for (size_t i = 0; i < input->size; ++i) {
+    if (!interface__srv__SceneControls_Response__copy(
+        &(input->data[i]), &(output->data[i])))
+    {
+      return false;
+    }
+  }
+  return true;
+}

+ 329 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__functions.h

@@ -0,0 +1,329 @@
+// generated from rosidl_generator_c/resource/idl__functions.h.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__FUNCTIONS_H_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__FUNCTIONS_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include "rosidl_runtime_c/visibility_control.h"
+#include "interface/msg/rosidl_generator_c__visibility_control.h"
+
+#include "interface/srv/detail/scene_controls__struct.h"
+
+/// Initialize srv/SceneControls message.
+/**
+ * If the init function is called twice for the same message without
+ * calling fini inbetween previously allocated memory will be leaked.
+ * \param[in,out] msg The previously allocated message pointer.
+ * Fields without a default value will not be initialized by this function.
+ * You might want to call memset(msg, 0, sizeof(
+ * interface__srv__SceneControls_Request
+ * )) before or use
+ * interface__srv__SceneControls_Request__create()
+ * to allocate and initialize the message.
+ * \return true if initialization was successful, otherwise false
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Request__init(interface__srv__SceneControls_Request * msg);
+
+/// Finalize srv/SceneControls message.
+/**
+ * \param[in,out] msg The allocated message pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Request__fini(interface__srv__SceneControls_Request * msg);
+
+/// Create srv/SceneControls message.
+/**
+ * It allocates the memory for the message, sets the memory to zero, and
+ * calls
+ * interface__srv__SceneControls_Request__init().
+ * \return The pointer to the initialized message if successful,
+ * otherwise NULL
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+interface__srv__SceneControls_Request *
+interface__srv__SceneControls_Request__create();
+
+/// Destroy srv/SceneControls message.
+/**
+ * It calls
+ * interface__srv__SceneControls_Request__fini()
+ * and frees the memory of the message.
+ * \param[in,out] msg The allocated message pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Request__destroy(interface__srv__SceneControls_Request * msg);
+
+/// Check for srv/SceneControls message equality.
+/**
+ * \param[in] lhs The message on the left hand size of the equality operator.
+ * \param[in] rhs The message on the right hand size of the equality operator.
+ * \return true if messages are equal, otherwise false.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Request__are_equal(const interface__srv__SceneControls_Request * lhs, const interface__srv__SceneControls_Request * rhs);
+
+/// Copy a srv/SceneControls message.
+/**
+ * This functions performs a deep copy, as opposed to the shallow copy that
+ * plain assignment yields.
+ *
+ * \param[in] input The source message pointer.
+ * \param[out] output The target message pointer, which must
+ *   have been initialized before calling this function.
+ * \return true if successful, or false if either pointer is null
+ *   or memory allocation fails.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Request__copy(
+  const interface__srv__SceneControls_Request * input,
+  interface__srv__SceneControls_Request * output);
+
+/// Initialize array of srv/SceneControls messages.
+/**
+ * It allocates the memory for the number of elements and calls
+ * interface__srv__SceneControls_Request__init()
+ * for each element of the array.
+ * \param[in,out] array The allocated array pointer.
+ * \param[in] size The size / capacity of the array.
+ * \return true if initialization was successful, otherwise false
+ * If the array pointer is valid and the size is zero it is guaranteed
+ # to return true.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Request__Sequence__init(interface__srv__SceneControls_Request__Sequence * array, size_t size);
+
+/// Finalize array of srv/SceneControls messages.
+/**
+ * It calls
+ * interface__srv__SceneControls_Request__fini()
+ * for each element of the array and frees the memory for the number of
+ * elements.
+ * \param[in,out] array The initialized array pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Request__Sequence__fini(interface__srv__SceneControls_Request__Sequence * array);
+
+/// Create array of srv/SceneControls messages.
+/**
+ * It allocates the memory for the array and calls
+ * interface__srv__SceneControls_Request__Sequence__init().
+ * \param[in] size The size / capacity of the array.
+ * \return The pointer to the initialized array if successful, otherwise NULL
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+interface__srv__SceneControls_Request__Sequence *
+interface__srv__SceneControls_Request__Sequence__create(size_t size);
+
+/// Destroy array of srv/SceneControls messages.
+/**
+ * It calls
+ * interface__srv__SceneControls_Request__Sequence__fini()
+ * on the array,
+ * and frees the memory of the array.
+ * \param[in,out] array The initialized array pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Request__Sequence__destroy(interface__srv__SceneControls_Request__Sequence * array);
+
+/// Check for srv/SceneControls message array equality.
+/**
+ * \param[in] lhs The message array on the left hand size of the equality operator.
+ * \param[in] rhs The message array on the right hand size of the equality operator.
+ * \return true if message arrays are equal in size and content, otherwise false.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Request__Sequence__are_equal(const interface__srv__SceneControls_Request__Sequence * lhs, const interface__srv__SceneControls_Request__Sequence * rhs);
+
+/// Copy an array of srv/SceneControls messages.
+/**
+ * This functions performs a deep copy, as opposed to the shallow copy that
+ * plain assignment yields.
+ *
+ * \param[in] input The source array pointer.
+ * \param[out] output The target array pointer, which must
+ *   have been initialized before calling this function.
+ * \return true if successful, or false if either pointer
+ *   is null or memory allocation fails.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Request__Sequence__copy(
+  const interface__srv__SceneControls_Request__Sequence * input,
+  interface__srv__SceneControls_Request__Sequence * output);
+
+/// Initialize srv/SceneControls message.
+/**
+ * If the init function is called twice for the same message without
+ * calling fini inbetween previously allocated memory will be leaked.
+ * \param[in,out] msg The previously allocated message pointer.
+ * Fields without a default value will not be initialized by this function.
+ * You might want to call memset(msg, 0, sizeof(
+ * interface__srv__SceneControls_Response
+ * )) before or use
+ * interface__srv__SceneControls_Response__create()
+ * to allocate and initialize the message.
+ * \return true if initialization was successful, otherwise false
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Response__init(interface__srv__SceneControls_Response * msg);
+
+/// Finalize srv/SceneControls message.
+/**
+ * \param[in,out] msg The allocated message pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Response__fini(interface__srv__SceneControls_Response * msg);
+
+/// Create srv/SceneControls message.
+/**
+ * It allocates the memory for the message, sets the memory to zero, and
+ * calls
+ * interface__srv__SceneControls_Response__init().
+ * \return The pointer to the initialized message if successful,
+ * otherwise NULL
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+interface__srv__SceneControls_Response *
+interface__srv__SceneControls_Response__create();
+
+/// Destroy srv/SceneControls message.
+/**
+ * It calls
+ * interface__srv__SceneControls_Response__fini()
+ * and frees the memory of the message.
+ * \param[in,out] msg The allocated message pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Response__destroy(interface__srv__SceneControls_Response * msg);
+
+/// Check for srv/SceneControls message equality.
+/**
+ * \param[in] lhs The message on the left hand size of the equality operator.
+ * \param[in] rhs The message on the right hand size of the equality operator.
+ * \return true if messages are equal, otherwise false.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Response__are_equal(const interface__srv__SceneControls_Response * lhs, const interface__srv__SceneControls_Response * rhs);
+
+/// Copy a srv/SceneControls message.
+/**
+ * This functions performs a deep copy, as opposed to the shallow copy that
+ * plain assignment yields.
+ *
+ * \param[in] input The source message pointer.
+ * \param[out] output The target message pointer, which must
+ *   have been initialized before calling this function.
+ * \return true if successful, or false if either pointer is null
+ *   or memory allocation fails.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Response__copy(
+  const interface__srv__SceneControls_Response * input,
+  interface__srv__SceneControls_Response * output);
+
+/// Initialize array of srv/SceneControls messages.
+/**
+ * It allocates the memory for the number of elements and calls
+ * interface__srv__SceneControls_Response__init()
+ * for each element of the array.
+ * \param[in,out] array The allocated array pointer.
+ * \param[in] size The size / capacity of the array.
+ * \return true if initialization was successful, otherwise false
+ * If the array pointer is valid and the size is zero it is guaranteed
+ # to return true.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Response__Sequence__init(interface__srv__SceneControls_Response__Sequence * array, size_t size);
+
+/// Finalize array of srv/SceneControls messages.
+/**
+ * It calls
+ * interface__srv__SceneControls_Response__fini()
+ * for each element of the array and frees the memory for the number of
+ * elements.
+ * \param[in,out] array The initialized array pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Response__Sequence__fini(interface__srv__SceneControls_Response__Sequence * array);
+
+/// Create array of srv/SceneControls messages.
+/**
+ * It allocates the memory for the array and calls
+ * interface__srv__SceneControls_Response__Sequence__init().
+ * \param[in] size The size / capacity of the array.
+ * \return The pointer to the initialized array if successful, otherwise NULL
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+interface__srv__SceneControls_Response__Sequence *
+interface__srv__SceneControls_Response__Sequence__create(size_t size);
+
+/// Destroy array of srv/SceneControls messages.
+/**
+ * It calls
+ * interface__srv__SceneControls_Response__Sequence__fini()
+ * on the array,
+ * and frees the memory of the array.
+ * \param[in,out] array The initialized array pointer.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+void
+interface__srv__SceneControls_Response__Sequence__destroy(interface__srv__SceneControls_Response__Sequence * array);
+
+/// Check for srv/SceneControls message array equality.
+/**
+ * \param[in] lhs The message array on the left hand size of the equality operator.
+ * \param[in] rhs The message array on the right hand size of the equality operator.
+ * \return true if message arrays are equal in size and content, otherwise false.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Response__Sequence__are_equal(const interface__srv__SceneControls_Response__Sequence * lhs, const interface__srv__SceneControls_Response__Sequence * rhs);
+
+/// Copy an array of srv/SceneControls messages.
+/**
+ * This functions performs a deep copy, as opposed to the shallow copy that
+ * plain assignment yields.
+ *
+ * \param[in] input The source array pointer.
+ * \param[out] output The target array pointer, which must
+ *   have been initialized before calling this function.
+ * \return true if successful, or false if either pointer
+ *   is null or memory allocation fails.
+ */
+ROSIDL_GENERATOR_C_PUBLIC_interface
+bool
+interface__srv__SceneControls_Response__Sequence__copy(
+  const interface__srv__SceneControls_Response__Sequence * input,
+  interface__srv__SceneControls_Response__Sequence * output);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__FUNCTIONS_H_

+ 89 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_fastrtps_c.h

@@ -0,0 +1,89 @@
+// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_
+
+
+#include <stddef.h>
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/msg/rosidl_typesupport_fastrtps_c__visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+size_t get_serialized_size_interface__srv__SceneControls_Request(
+  const void * untyped_ros_message,
+  size_t current_alignment);
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+size_t max_serialized_size_interface__srv__SceneControls_Request(
+  bool & full_bounded,
+  bool & is_plain,
+  size_t current_alignment);
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, interface, srv, SceneControls_Request)();
+
+#ifdef __cplusplus
+}
+#endif
+
+// already included above
+// #include <stddef.h>
+// already included above
+// #include "rosidl_runtime_c/message_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_fastrtps_c__visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+size_t get_serialized_size_interface__srv__SceneControls_Response(
+  const void * untyped_ros_message,
+  size_t current_alignment);
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+size_t max_serialized_size_interface__srv__SceneControls_Response(
+  bool & full_bounded,
+  bool & is_plain,
+  size_t current_alignment);
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, interface, srv, SceneControls_Response)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "rosidl_runtime_c/service_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_fastrtps_c__visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_interface
+const rosidl_service_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, interface, srv, SceneControls)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_

+ 177 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_fastrtps_cpp.hpp

@@ -0,0 +1,177 @@
+// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h"
+#include "interface/srv/detail/scene_controls__struct.hpp"
+
+#ifndef _WIN32
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wunused-parameter"
+# ifdef __clang__
+#  pragma clang diagnostic ignored "-Wdeprecated-register"
+#  pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
+# endif
+#endif
+#ifndef _WIN32
+# pragma GCC diagnostic pop
+#endif
+
+#include "fastcdr/Cdr.h"
+
+namespace interface
+{
+
+namespace srv
+{
+
+namespace typesupport_fastrtps_cpp
+{
+
+bool
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+cdr_serialize(
+  const interface::srv::SceneControls_Request & ros_message,
+  eprosima::fastcdr::Cdr & cdr);
+
+bool
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+cdr_deserialize(
+  eprosima::fastcdr::Cdr & cdr,
+  interface::srv::SceneControls_Request & ros_message);
+
+size_t
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+get_serialized_size(
+  const interface::srv::SceneControls_Request & ros_message,
+  size_t current_alignment);
+
+size_t
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+max_serialized_size_SceneControls_Request(
+  bool & full_bounded,
+  bool & is_plain,
+  size_t current_alignment);
+
+}  // namespace typesupport_fastrtps_cpp
+
+}  // namespace srv
+
+}  // namespace interface
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, interface, srv, SceneControls_Request)();
+
+#ifdef __cplusplus
+}
+#endif
+
+// already included above
+// #include "rosidl_runtime_c/message_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h"
+// already included above
+// #include "interface/srv/detail/scene_controls__struct.hpp"
+
+#ifndef _WIN32
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wunused-parameter"
+# ifdef __clang__
+#  pragma clang diagnostic ignored "-Wdeprecated-register"
+#  pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
+# endif
+#endif
+#ifndef _WIN32
+# pragma GCC diagnostic pop
+#endif
+
+// already included above
+// #include "fastcdr/Cdr.h"
+
+namespace interface
+{
+
+namespace srv
+{
+
+namespace typesupport_fastrtps_cpp
+{
+
+bool
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+cdr_serialize(
+  const interface::srv::SceneControls_Response & ros_message,
+  eprosima::fastcdr::Cdr & cdr);
+
+bool
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+cdr_deserialize(
+  eprosima::fastcdr::Cdr & cdr,
+  interface::srv::SceneControls_Response & ros_message);
+
+size_t
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+get_serialized_size(
+  const interface::srv::SceneControls_Response & ros_message,
+  size_t current_alignment);
+
+size_t
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+max_serialized_size_SceneControls_Response(
+  bool & full_bounded,
+  bool & is_plain,
+  size_t current_alignment);
+
+}  // namespace typesupport_fastrtps_cpp
+
+}  // namespace srv
+
+}  // namespace interface
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, interface, srv, SceneControls_Response)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "rmw/types.h"
+#include "rosidl_typesupport_cpp/service_type_support.hpp"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_interface
+const rosidl_service_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, interface, srv, SceneControls)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_

+ 47 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_introspection_c.h

@@ -0,0 +1,47 @@
+// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Request)();
+
+// already included above
+// #include "rosidl_runtime_c/message_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Response)();
+
+#include "rosidl_runtime_c/service_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_interface
+const rosidl_service_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_

+ 67 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__rosidl_typesupport_introspection_cpp.hpp

@@ -0,0 +1,67 @@
+// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_
+
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_interface/macros.h"
+#include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+// TODO(dirk-thomas) these visibility macros should be message package specific
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, srv, SceneControls_Request)();
+
+#ifdef __cplusplus
+}
+#endif
+
+// already included above
+// #include "rosidl_runtime_c/message_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+// TODO(dirk-thomas) these visibility macros should be message package specific
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, srv, SceneControls_Response)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "rosidl_runtime_c/service_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_service_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, srv, SceneControls)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_

+ 64 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__struct.h

@@ -0,0 +1,64 @@
+// generated from rosidl_generator_c/resource/idl__struct.h.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__STRUCT_H_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__STRUCT_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+
+// Constants defined in the message
+
+/// Struct defined in srv/SceneControls in the package interface.
+typedef struct interface__srv__SceneControls_Request
+{
+  int32_t start;
+} interface__srv__SceneControls_Request;
+
+// Struct for a sequence of interface__srv__SceneControls_Request.
+typedef struct interface__srv__SceneControls_Request__Sequence
+{
+  interface__srv__SceneControls_Request * data;
+  /// The number of valid items in data
+  size_t size;
+  /// The number of allocated items in data
+  size_t capacity;
+} interface__srv__SceneControls_Request__Sequence;
+
+
+// Constants defined in the message
+
+// Include directives for member types
+// Member 'message'
+#include "rosidl_runtime_c/string.h"
+
+/// Struct defined in srv/SceneControls in the package interface.
+typedef struct interface__srv__SceneControls_Response
+{
+  int32_t code;
+  rosidl_runtime_c__String message;
+} interface__srv__SceneControls_Response;
+
+// Struct for a sequence of interface__srv__SceneControls_Response.
+typedef struct interface__srv__SceneControls_Response__Sequence
+{
+  interface__srv__SceneControls_Response * data;
+  /// The number of valid items in data
+  size_t size;
+  /// The number of allocated items in data
+  size_t capacity;
+} interface__srv__SceneControls_Response__Sequence;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__STRUCT_H_

+ 275 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__struct.hpp

@@ -0,0 +1,275 @@
+// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__STRUCT_HPP_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__STRUCT_HPP_
+
+#include <algorithm>
+#include <array>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "rosidl_runtime_cpp/bounded_vector.hpp"
+#include "rosidl_runtime_cpp/message_initialization.hpp"
+
+
+#ifndef _WIN32
+# define DEPRECATED__interface__srv__SceneControls_Request __attribute__((deprecated))
+#else
+# define DEPRECATED__interface__srv__SceneControls_Request __declspec(deprecated)
+#endif
+
+namespace interface
+{
+
+namespace srv
+{
+
+// message struct
+template<class ContainerAllocator>
+struct SceneControls_Request_
+{
+  using Type = SceneControls_Request_<ContainerAllocator>;
+
+  explicit SceneControls_Request_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL)
+  {
+    if (rosidl_runtime_cpp::MessageInitialization::ALL == _init ||
+      rosidl_runtime_cpp::MessageInitialization::ZERO == _init)
+    {
+      this->start = 0l;
+    }
+  }
+
+  explicit SceneControls_Request_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL)
+  {
+    (void)_alloc;
+    if (rosidl_runtime_cpp::MessageInitialization::ALL == _init ||
+      rosidl_runtime_cpp::MessageInitialization::ZERO == _init)
+    {
+      this->start = 0l;
+    }
+  }
+
+  // field types and members
+  using _start_type =
+    int32_t;
+  _start_type start;
+
+  // setters for named parameter idiom
+  Type & set__start(
+    const int32_t & _arg)
+  {
+    this->start = _arg;
+    return *this;
+  }
+
+  // constant declarations
+
+  // pointer types
+  using RawPtr =
+    interface::srv::SceneControls_Request_<ContainerAllocator> *;
+  using ConstRawPtr =
+    const interface::srv::SceneControls_Request_<ContainerAllocator> *;
+  using SharedPtr =
+    std::shared_ptr<interface::srv::SceneControls_Request_<ContainerAllocator>>;
+  using ConstSharedPtr =
+    std::shared_ptr<interface::srv::SceneControls_Request_<ContainerAllocator> const>;
+
+  template<typename Deleter = std::default_delete<
+      interface::srv::SceneControls_Request_<ContainerAllocator>>>
+  using UniquePtrWithDeleter =
+    std::unique_ptr<interface::srv::SceneControls_Request_<ContainerAllocator>, Deleter>;
+
+  using UniquePtr = UniquePtrWithDeleter<>;
+
+  template<typename Deleter = std::default_delete<
+      interface::srv::SceneControls_Request_<ContainerAllocator>>>
+  using ConstUniquePtrWithDeleter =
+    std::unique_ptr<interface::srv::SceneControls_Request_<ContainerAllocator> const, Deleter>;
+  using ConstUniquePtr = ConstUniquePtrWithDeleter<>;
+
+  using WeakPtr =
+    std::weak_ptr<interface::srv::SceneControls_Request_<ContainerAllocator>>;
+  using ConstWeakPtr =
+    std::weak_ptr<interface::srv::SceneControls_Request_<ContainerAllocator> const>;
+
+  // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead
+  // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly
+  typedef DEPRECATED__interface__srv__SceneControls_Request
+    std::shared_ptr<interface::srv::SceneControls_Request_<ContainerAllocator>>
+    Ptr;
+  typedef DEPRECATED__interface__srv__SceneControls_Request
+    std::shared_ptr<interface::srv::SceneControls_Request_<ContainerAllocator> const>
+    ConstPtr;
+
+  // comparison operators
+  bool operator==(const SceneControls_Request_ & other) const
+  {
+    if (this->start != other.start) {
+      return false;
+    }
+    return true;
+  }
+  bool operator!=(const SceneControls_Request_ & other) const
+  {
+    return !this->operator==(other);
+  }
+};  // struct SceneControls_Request_
+
+// alias to use template instance with default allocator
+using SceneControls_Request =
+  interface::srv::SceneControls_Request_<std::allocator<void>>;
+
+// constant definitions
+
+}  // namespace srv
+
+}  // namespace interface
+
+
+#ifndef _WIN32
+# define DEPRECATED__interface__srv__SceneControls_Response __attribute__((deprecated))
+#else
+# define DEPRECATED__interface__srv__SceneControls_Response __declspec(deprecated)
+#endif
+
+namespace interface
+{
+
+namespace srv
+{
+
+// message struct
+template<class ContainerAllocator>
+struct SceneControls_Response_
+{
+  using Type = SceneControls_Response_<ContainerAllocator>;
+
+  explicit SceneControls_Response_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL)
+  {
+    if (rosidl_runtime_cpp::MessageInitialization::ALL == _init ||
+      rosidl_runtime_cpp::MessageInitialization::ZERO == _init)
+    {
+      this->code = 0l;
+      this->message = "";
+    }
+  }
+
+  explicit SceneControls_Response_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL)
+  : message(_alloc)
+  {
+    if (rosidl_runtime_cpp::MessageInitialization::ALL == _init ||
+      rosidl_runtime_cpp::MessageInitialization::ZERO == _init)
+    {
+      this->code = 0l;
+      this->message = "";
+    }
+  }
+
+  // field types and members
+  using _code_type =
+    int32_t;
+  _code_type code;
+  using _message_type =
+    std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>>;
+  _message_type message;
+
+  // setters for named parameter idiom
+  Type & set__code(
+    const int32_t & _arg)
+  {
+    this->code = _arg;
+    return *this;
+  }
+  Type & set__message(
+    const std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> & _arg)
+  {
+    this->message = _arg;
+    return *this;
+  }
+
+  // constant declarations
+
+  // pointer types
+  using RawPtr =
+    interface::srv::SceneControls_Response_<ContainerAllocator> *;
+  using ConstRawPtr =
+    const interface::srv::SceneControls_Response_<ContainerAllocator> *;
+  using SharedPtr =
+    std::shared_ptr<interface::srv::SceneControls_Response_<ContainerAllocator>>;
+  using ConstSharedPtr =
+    std::shared_ptr<interface::srv::SceneControls_Response_<ContainerAllocator> const>;
+
+  template<typename Deleter = std::default_delete<
+      interface::srv::SceneControls_Response_<ContainerAllocator>>>
+  using UniquePtrWithDeleter =
+    std::unique_ptr<interface::srv::SceneControls_Response_<ContainerAllocator>, Deleter>;
+
+  using UniquePtr = UniquePtrWithDeleter<>;
+
+  template<typename Deleter = std::default_delete<
+      interface::srv::SceneControls_Response_<ContainerAllocator>>>
+  using ConstUniquePtrWithDeleter =
+    std::unique_ptr<interface::srv::SceneControls_Response_<ContainerAllocator> const, Deleter>;
+  using ConstUniquePtr = ConstUniquePtrWithDeleter<>;
+
+  using WeakPtr =
+    std::weak_ptr<interface::srv::SceneControls_Response_<ContainerAllocator>>;
+  using ConstWeakPtr =
+    std::weak_ptr<interface::srv::SceneControls_Response_<ContainerAllocator> const>;
+
+  // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead
+  // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly
+  typedef DEPRECATED__interface__srv__SceneControls_Response
+    std::shared_ptr<interface::srv::SceneControls_Response_<ContainerAllocator>>
+    Ptr;
+  typedef DEPRECATED__interface__srv__SceneControls_Response
+    std::shared_ptr<interface::srv::SceneControls_Response_<ContainerAllocator> const>
+    ConstPtr;
+
+  // comparison operators
+  bool operator==(const SceneControls_Response_ & other) const
+  {
+    if (this->code != other.code) {
+      return false;
+    }
+    if (this->message != other.message) {
+      return false;
+    }
+    return true;
+  }
+  bool operator!=(const SceneControls_Response_ & other) const
+  {
+    return !this->operator==(other);
+  }
+};  // struct SceneControls_Response_
+
+// alias to use template instance with default allocator
+using SceneControls_Response =
+  interface::srv::SceneControls_Response_<std::allocator<void>>;
+
+// constant definitions
+
+}  // namespace srv
+
+}  // namespace interface
+
+namespace interface
+{
+
+namespace srv
+{
+
+struct SceneControls
+{
+  using Request = interface::srv::SceneControls_Request;
+  using Response = interface::srv::SceneControls_Response;
+};
+
+}  // namespace srv
+
+}  // namespace interface
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__STRUCT_HPP_

+ 273 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__traits.hpp

@@ -0,0 +1,273 @@
+// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TRAITS_HPP_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TRAITS_HPP_
+
+#include <stdint.h>
+
+#include <sstream>
+#include <string>
+#include <type_traits>
+
+#include "interface/srv/detail/scene_controls__struct.hpp"
+#include "rosidl_runtime_cpp/traits.hpp"
+
+namespace interface
+{
+
+namespace srv
+{
+
+inline void to_flow_style_yaml(
+  const SceneControls_Request & msg,
+  std::ostream & out)
+{
+  out << "{";
+  // member: start
+  {
+    out << "start: ";
+    rosidl_generator_traits::value_to_yaml(msg.start, out);
+  }
+  out << "}";
+}  // NOLINT(readability/fn_size)
+
+inline void to_block_style_yaml(
+  const SceneControls_Request & msg,
+  std::ostream & out, size_t indentation = 0)
+{
+  // member: start
+  {
+    if (indentation > 0) {
+      out << std::string(indentation, ' ');
+    }
+    out << "start: ";
+    rosidl_generator_traits::value_to_yaml(msg.start, out);
+    out << "\n";
+  }
+}  // NOLINT(readability/fn_size)
+
+inline std::string to_yaml(const SceneControls_Request & msg, bool use_flow_style = false)
+{
+  std::ostringstream out;
+  if (use_flow_style) {
+    to_flow_style_yaml(msg, out);
+  } else {
+    to_block_style_yaml(msg, out);
+  }
+  return out.str();
+}
+
+}  // namespace srv
+
+}  // namespace interface
+
+namespace rosidl_generator_traits
+{
+
+[[deprecated("use interface::srv::to_block_style_yaml() instead")]]
+inline void to_yaml(
+  const interface::srv::SceneControls_Request & msg,
+  std::ostream & out, size_t indentation = 0)
+{
+  interface::srv::to_block_style_yaml(msg, out, indentation);
+}
+
+[[deprecated("use interface::srv::to_yaml() instead")]]
+inline std::string to_yaml(const interface::srv::SceneControls_Request & msg)
+{
+  return interface::srv::to_yaml(msg);
+}
+
+template<>
+inline const char * data_type<interface::srv::SceneControls_Request>()
+{
+  return "interface::srv::SceneControls_Request";
+}
+
+template<>
+inline const char * name<interface::srv::SceneControls_Request>()
+{
+  return "interface/srv/SceneControls_Request";
+}
+
+template<>
+struct has_fixed_size<interface::srv::SceneControls_Request>
+  : std::integral_constant<bool, true> {};
+
+template<>
+struct has_bounded_size<interface::srv::SceneControls_Request>
+  : std::integral_constant<bool, true> {};
+
+template<>
+struct is_message<interface::srv::SceneControls_Request>
+  : std::true_type {};
+
+}  // namespace rosidl_generator_traits
+
+namespace interface
+{
+
+namespace srv
+{
+
+inline void to_flow_style_yaml(
+  const SceneControls_Response & msg,
+  std::ostream & out)
+{
+  out << "{";
+  // member: code
+  {
+    out << "code: ";
+    rosidl_generator_traits::value_to_yaml(msg.code, out);
+    out << ", ";
+  }
+
+  // member: message
+  {
+    out << "message: ";
+    rosidl_generator_traits::value_to_yaml(msg.message, out);
+  }
+  out << "}";
+}  // NOLINT(readability/fn_size)
+
+inline void to_block_style_yaml(
+  const SceneControls_Response & msg,
+  std::ostream & out, size_t indentation = 0)
+{
+  // member: code
+  {
+    if (indentation > 0) {
+      out << std::string(indentation, ' ');
+    }
+    out << "code: ";
+    rosidl_generator_traits::value_to_yaml(msg.code, out);
+    out << "\n";
+  }
+
+  // member: message
+  {
+    if (indentation > 0) {
+      out << std::string(indentation, ' ');
+    }
+    out << "message: ";
+    rosidl_generator_traits::value_to_yaml(msg.message, out);
+    out << "\n";
+  }
+}  // NOLINT(readability/fn_size)
+
+inline std::string to_yaml(const SceneControls_Response & msg, bool use_flow_style = false)
+{
+  std::ostringstream out;
+  if (use_flow_style) {
+    to_flow_style_yaml(msg, out);
+  } else {
+    to_block_style_yaml(msg, out);
+  }
+  return out.str();
+}
+
+}  // namespace srv
+
+}  // namespace interface
+
+namespace rosidl_generator_traits
+{
+
+[[deprecated("use interface::srv::to_block_style_yaml() instead")]]
+inline void to_yaml(
+  const interface::srv::SceneControls_Response & msg,
+  std::ostream & out, size_t indentation = 0)
+{
+  interface::srv::to_block_style_yaml(msg, out, indentation);
+}
+
+[[deprecated("use interface::srv::to_yaml() instead")]]
+inline std::string to_yaml(const interface::srv::SceneControls_Response & msg)
+{
+  return interface::srv::to_yaml(msg);
+}
+
+template<>
+inline const char * data_type<interface::srv::SceneControls_Response>()
+{
+  return "interface::srv::SceneControls_Response";
+}
+
+template<>
+inline const char * name<interface::srv::SceneControls_Response>()
+{
+  return "interface/srv/SceneControls_Response";
+}
+
+template<>
+struct has_fixed_size<interface::srv::SceneControls_Response>
+  : std::integral_constant<bool, false> {};
+
+template<>
+struct has_bounded_size<interface::srv::SceneControls_Response>
+  : std::integral_constant<bool, false> {};
+
+template<>
+struct is_message<interface::srv::SceneControls_Response>
+  : std::true_type {};
+
+}  // namespace rosidl_generator_traits
+
+namespace rosidl_generator_traits
+{
+
+template<>
+inline const char * data_type<interface::srv::SceneControls>()
+{
+  return "interface::srv::SceneControls";
+}
+
+template<>
+inline const char * name<interface::srv::SceneControls>()
+{
+  return "interface/srv/SceneControls";
+}
+
+template<>
+struct has_fixed_size<interface::srv::SceneControls>
+  : std::integral_constant<
+    bool,
+    has_fixed_size<interface::srv::SceneControls_Request>::value &&
+    has_fixed_size<interface::srv::SceneControls_Response>::value
+  >
+{
+};
+
+template<>
+struct has_bounded_size<interface::srv::SceneControls>
+  : std::integral_constant<
+    bool,
+    has_bounded_size<interface::srv::SceneControls_Request>::value &&
+    has_bounded_size<interface::srv::SceneControls_Response>::value
+  >
+{
+};
+
+template<>
+struct is_service<interface::srv::SceneControls>
+  : std::true_type
+{
+};
+
+template<>
+struct is_service_request<interface::srv::SceneControls_Request>
+  : std::true_type
+{
+};
+
+template<>
+struct is_service_response<interface::srv::SceneControls_Response>
+  : std::true_type
+{
+};
+
+}  // namespace rosidl_generator_traits
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TRAITS_HPP_

+ 249 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.c

@@ -0,0 +1,249 @@
+// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#include <stddef.h>
+#include "interface/srv/detail/scene_controls__rosidl_typesupport_introspection_c.h"
+#include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+#include "rosidl_typesupport_introspection_c/field_types.h"
+#include "rosidl_typesupport_introspection_c/identifier.h"
+#include "rosidl_typesupport_introspection_c/message_introspection.h"
+#include "interface/srv/detail/scene_controls__functions.h"
+#include "interface/srv/detail/scene_controls__struct.h"
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_init_function(
+  void * message_memory, enum rosidl_runtime_c__message_initialization _init)
+{
+  // TODO(karsten1987): initializers are not yet implemented for typesupport c
+  // see https://github.com/ros2/ros2/issues/397
+  (void) _init;
+  interface__srv__SceneControls_Request__init(message_memory);
+}
+
+void interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_fini_function(void * message_memory)
+{
+  interface__srv__SceneControls_Request__fini(message_memory);
+}
+
+static rosidl_typesupport_introspection_c__MessageMember interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_member_array[1] = {
+  {
+    "start",  // name
+    rosidl_typesupport_introspection_c__ROS_TYPE_INT32,  // type
+    0,  // upper bound of string
+    NULL,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface__srv__SceneControls_Request, start),  // bytes offset in struct
+    NULL,  // default value
+    NULL,  // size() function pointer
+    NULL,  // get_const(index) function pointer
+    NULL,  // get(index) function pointer
+    NULL,  // fetch(index, &value) function pointer
+    NULL,  // assign(index, value) function pointer
+    NULL  // resize(index) function pointer
+  }
+};
+
+static const rosidl_typesupport_introspection_c__MessageMembers interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_members = {
+  "interface__srv",  // message namespace
+  "SceneControls_Request",  // message name
+  1,  // number of fields
+  sizeof(interface__srv__SceneControls_Request),
+  interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_member_array,  // message members
+  interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_init_function,  // function to initialize message memory (memory has to be allocated)
+  interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_fini_function  // function to terminate message instance (will not free memory)
+};
+
+// this is not const since it must be initialized on first access
+// since C does not allow non-integral compile-time constants
+static rosidl_message_type_support_t interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_type_support_handle = {
+  0,
+  &interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_members,
+  get_message_typesupport_handle_function,
+};
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Request)() {
+  if (!interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_type_support_handle.typesupport_identifier) {
+    interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_type_support_handle.typesupport_identifier =
+      rosidl_typesupport_introspection_c__identifier;
+  }
+  return &interface__srv__SceneControls_Request__rosidl_typesupport_introspection_c__SceneControls_Request_message_type_support_handle;
+}
+#ifdef __cplusplus
+}
+#endif
+
+// already included above
+// #include <stddef.h>
+// already included above
+// #include "interface/srv/detail/scene_controls__rosidl_typesupport_introspection_c.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+// already included above
+// #include "rosidl_typesupport_introspection_c/field_types.h"
+// already included above
+// #include "rosidl_typesupport_introspection_c/identifier.h"
+// already included above
+// #include "rosidl_typesupport_introspection_c/message_introspection.h"
+// already included above
+// #include "interface/srv/detail/scene_controls__functions.h"
+// already included above
+// #include "interface/srv/detail/scene_controls__struct.h"
+
+
+// Include directives for member types
+// Member `message`
+#include "rosidl_runtime_c/string_functions.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_init_function(
+  void * message_memory, enum rosidl_runtime_c__message_initialization _init)
+{
+  // TODO(karsten1987): initializers are not yet implemented for typesupport c
+  // see https://github.com/ros2/ros2/issues/397
+  (void) _init;
+  interface__srv__SceneControls_Response__init(message_memory);
+}
+
+void interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_fini_function(void * message_memory)
+{
+  interface__srv__SceneControls_Response__fini(message_memory);
+}
+
+static rosidl_typesupport_introspection_c__MessageMember interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_member_array[2] = {
+  {
+    "code",  // name
+    rosidl_typesupport_introspection_c__ROS_TYPE_INT32,  // type
+    0,  // upper bound of string
+    NULL,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface__srv__SceneControls_Response, code),  // bytes offset in struct
+    NULL,  // default value
+    NULL,  // size() function pointer
+    NULL,  // get_const(index) function pointer
+    NULL,  // get(index) function pointer
+    NULL,  // fetch(index, &value) function pointer
+    NULL,  // assign(index, value) function pointer
+    NULL  // resize(index) function pointer
+  },
+  {
+    "message",  // name
+    rosidl_typesupport_introspection_c__ROS_TYPE_STRING,  // type
+    0,  // upper bound of string
+    NULL,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface__srv__SceneControls_Response, message),  // bytes offset in struct
+    NULL,  // default value
+    NULL,  // size() function pointer
+    NULL,  // get_const(index) function pointer
+    NULL,  // get(index) function pointer
+    NULL,  // fetch(index, &value) function pointer
+    NULL,  // assign(index, value) function pointer
+    NULL  // resize(index) function pointer
+  }
+};
+
+static const rosidl_typesupport_introspection_c__MessageMembers interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_members = {
+  "interface__srv",  // message namespace
+  "SceneControls_Response",  // message name
+  2,  // number of fields
+  sizeof(interface__srv__SceneControls_Response),
+  interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_member_array,  // message members
+  interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_init_function,  // function to initialize message memory (memory has to be allocated)
+  interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_fini_function  // function to terminate message instance (will not free memory)
+};
+
+// this is not const since it must be initialized on first access
+// since C does not allow non-integral compile-time constants
+static rosidl_message_type_support_t interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_type_support_handle = {
+  0,
+  &interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_members,
+  get_message_typesupport_handle_function,
+};
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Response)() {
+  if (!interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_type_support_handle.typesupport_identifier) {
+    interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_type_support_handle.typesupport_identifier =
+      rosidl_typesupport_introspection_c__identifier;
+  }
+  return &interface__srv__SceneControls_Response__rosidl_typesupport_introspection_c__SceneControls_Response_message_type_support_handle;
+}
+#ifdef __cplusplus
+}
+#endif
+
+#include "rosidl_runtime_c/service_type_support_struct.h"
+// already included above
+// #include "interface/msg/rosidl_typesupport_introspection_c__visibility_control.h"
+// already included above
+// #include "interface/srv/detail/scene_controls__rosidl_typesupport_introspection_c.h"
+// already included above
+// #include "rosidl_typesupport_introspection_c/identifier.h"
+#include "rosidl_typesupport_introspection_c/service_introspection.h"
+
+// this is intentionally not const to allow initialization later to prevent an initialization race
+static rosidl_typesupport_introspection_c__ServiceMembers interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_service_members = {
+  "interface__srv",  // service namespace
+  "SceneControls",  // service name
+  // these two fields are initialized below on the first access
+  NULL,  // request message
+  // interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_Request_message_type_support_handle,
+  NULL  // response message
+  // interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_Response_message_type_support_handle
+};
+
+static rosidl_service_type_support_t interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_service_type_support_handle = {
+  0,
+  &interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_service_members,
+  get_service_typesupport_handle_function,
+};
+
+// Forward declaration of request/response type support functions
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Request)();
+
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Response)();
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_interface
+const rosidl_service_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls)() {
+  if (!interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_service_type_support_handle.typesupport_identifier) {
+    interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_service_type_support_handle.typesupport_identifier =
+      rosidl_typesupport_introspection_c__identifier;
+  }
+  rosidl_typesupport_introspection_c__ServiceMembers * service_members =
+    (rosidl_typesupport_introspection_c__ServiceMembers *)interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_service_type_support_handle.data;
+
+  if (!service_members->request_members_) {
+    service_members->request_members_ =
+      (const rosidl_typesupport_introspection_c__MessageMembers *)
+      ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Request)()->data;
+  }
+  if (!service_members->response_members_) {
+    service_members->response_members_ =
+      (const rosidl_typesupport_introspection_c__MessageMembers *)
+      ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, interface, srv, SceneControls_Response)()->data;
+  }
+
+  return &interface__srv__detail__scene_controls__rosidl_typesupport_introspection_c__SceneControls_service_type_support_handle;
+}

+ 353 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.cpp

@@ -0,0 +1,353 @@
+// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#include "array"
+#include "cstddef"
+#include "string"
+#include "vector"
+#include "rosidl_runtime_c/message_type_support_struct.h"
+#include "rosidl_typesupport_cpp/message_type_support.hpp"
+#include "rosidl_typesupport_interface/macros.h"
+#include "interface/srv/detail/scene_controls__struct.hpp"
+#include "rosidl_typesupport_introspection_cpp/field_types.hpp"
+#include "rosidl_typesupport_introspection_cpp/identifier.hpp"
+#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp"
+#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp"
+#include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+
+namespace interface
+{
+
+namespace srv
+{
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+void SceneControls_Request_init_function(
+  void * message_memory, rosidl_runtime_cpp::MessageInitialization _init)
+{
+  new (message_memory) interface::srv::SceneControls_Request(_init);
+}
+
+void SceneControls_Request_fini_function(void * message_memory)
+{
+  auto typed_message = static_cast<interface::srv::SceneControls_Request *>(message_memory);
+  typed_message->~SceneControls_Request();
+}
+
+static const ::rosidl_typesupport_introspection_cpp::MessageMember SceneControls_Request_message_member_array[1] = {
+  {
+    "start",  // name
+    ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT32,  // type
+    0,  // upper bound of string
+    nullptr,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface::srv::SceneControls_Request, start),  // bytes offset in struct
+    nullptr,  // default value
+    nullptr,  // size() function pointer
+    nullptr,  // get_const(index) function pointer
+    nullptr,  // get(index) function pointer
+    nullptr,  // fetch(index, &value) function pointer
+    nullptr,  // assign(index, value) function pointer
+    nullptr  // resize(index) function pointer
+  }
+};
+
+static const ::rosidl_typesupport_introspection_cpp::MessageMembers SceneControls_Request_message_members = {
+  "interface::srv",  // message namespace
+  "SceneControls_Request",  // message name
+  1,  // number of fields
+  sizeof(interface::srv::SceneControls_Request),
+  SceneControls_Request_message_member_array,  // message members
+  SceneControls_Request_init_function,  // function to initialize message memory (memory has to be allocated)
+  SceneControls_Request_fini_function  // function to terminate message instance (will not free memory)
+};
+
+static const rosidl_message_type_support_t SceneControls_Request_message_type_support_handle = {
+  ::rosidl_typesupport_introspection_cpp::typesupport_identifier,
+  &SceneControls_Request_message_members,
+  get_message_typesupport_handle_function,
+};
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+}  // namespace srv
+
+}  // namespace interface
+
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+template<>
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+get_message_type_support_handle<interface::srv::SceneControls_Request>()
+{
+  return &::interface::srv::rosidl_typesupport_introspection_cpp::SceneControls_Request_message_type_support_handle;
+}
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, srv, SceneControls_Request)() {
+  return &::interface::srv::rosidl_typesupport_introspection_cpp::SceneControls_Request_message_type_support_handle;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+// already included above
+// #include "array"
+// already included above
+// #include "cstddef"
+// already included above
+// #include "string"
+// already included above
+// #include "vector"
+// already included above
+// #include "rosidl_runtime_c/message_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_cpp/message_type_support.hpp"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "interface/srv/detail/scene_controls__struct.hpp"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/field_types.hpp"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/identifier.hpp"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/message_introspection.hpp"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+
+namespace interface
+{
+
+namespace srv
+{
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+void SceneControls_Response_init_function(
+  void * message_memory, rosidl_runtime_cpp::MessageInitialization _init)
+{
+  new (message_memory) interface::srv::SceneControls_Response(_init);
+}
+
+void SceneControls_Response_fini_function(void * message_memory)
+{
+  auto typed_message = static_cast<interface::srv::SceneControls_Response *>(message_memory);
+  typed_message->~SceneControls_Response();
+}
+
+static const ::rosidl_typesupport_introspection_cpp::MessageMember SceneControls_Response_message_member_array[2] = {
+  {
+    "code",  // name
+    ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT32,  // type
+    0,  // upper bound of string
+    nullptr,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface::srv::SceneControls_Response, code),  // bytes offset in struct
+    nullptr,  // default value
+    nullptr,  // size() function pointer
+    nullptr,  // get_const(index) function pointer
+    nullptr,  // get(index) function pointer
+    nullptr,  // fetch(index, &value) function pointer
+    nullptr,  // assign(index, value) function pointer
+    nullptr  // resize(index) function pointer
+  },
+  {
+    "message",  // name
+    ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING,  // type
+    0,  // upper bound of string
+    nullptr,  // members of sub message
+    false,  // is array
+    0,  // array size
+    false,  // is upper bound
+    offsetof(interface::srv::SceneControls_Response, message),  // bytes offset in struct
+    nullptr,  // default value
+    nullptr,  // size() function pointer
+    nullptr,  // get_const(index) function pointer
+    nullptr,  // get(index) function pointer
+    nullptr,  // fetch(index, &value) function pointer
+    nullptr,  // assign(index, value) function pointer
+    nullptr  // resize(index) function pointer
+  }
+};
+
+static const ::rosidl_typesupport_introspection_cpp::MessageMembers SceneControls_Response_message_members = {
+  "interface::srv",  // message namespace
+  "SceneControls_Response",  // message name
+  2,  // number of fields
+  sizeof(interface::srv::SceneControls_Response),
+  SceneControls_Response_message_member_array,  // message members
+  SceneControls_Response_init_function,  // function to initialize message memory (memory has to be allocated)
+  SceneControls_Response_fini_function  // function to terminate message instance (will not free memory)
+};
+
+static const rosidl_message_type_support_t SceneControls_Response_message_type_support_handle = {
+  ::rosidl_typesupport_introspection_cpp::typesupport_identifier,
+  &SceneControls_Response_message_members,
+  get_message_typesupport_handle_function,
+};
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+}  // namespace srv
+
+}  // namespace interface
+
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+template<>
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+get_message_type_support_handle<interface::srv::SceneControls_Response>()
+{
+  return &::interface::srv::rosidl_typesupport_introspection_cpp::SceneControls_Response_message_type_support_handle;
+}
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, srv, SceneControls_Response)() {
+  return &::interface::srv::rosidl_typesupport_introspection_cpp::SceneControls_Response_message_type_support_handle;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "rosidl_runtime_c/service_type_support_struct.h"
+// already included above
+// #include "rosidl_typesupport_cpp/message_type_support.hpp"
+#include "rosidl_typesupport_cpp/service_type_support.hpp"
+// already included above
+// #include "rosidl_typesupport_interface/macros.h"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/visibility_control.h"
+// already included above
+// #include "interface/srv/detail/scene_controls__struct.hpp"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/identifier.hpp"
+// already included above
+// #include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp"
+#include "rosidl_typesupport_introspection_cpp/service_introspection.hpp"
+#include "rosidl_typesupport_introspection_cpp/service_type_support_decl.hpp"
+
+namespace interface
+{
+
+namespace srv
+{
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+// this is intentionally not const to allow initialization later to prevent an initialization race
+static ::rosidl_typesupport_introspection_cpp::ServiceMembers SceneControls_service_members = {
+  "interface::srv",  // service namespace
+  "SceneControls",  // service name
+  // these two fields are initialized below on the first access
+  // see get_service_type_support_handle<interface::srv::SceneControls>()
+  nullptr,  // request message
+  nullptr  // response message
+};
+
+static const rosidl_service_type_support_t SceneControls_service_type_support_handle = {
+  ::rosidl_typesupport_introspection_cpp::typesupport_identifier,
+  &SceneControls_service_members,
+  get_service_typesupport_handle_function,
+};
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+}  // namespace srv
+
+}  // namespace interface
+
+
+namespace rosidl_typesupport_introspection_cpp
+{
+
+template<>
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_service_type_support_t *
+get_service_type_support_handle<interface::srv::SceneControls>()
+{
+  // get a handle to the value to be returned
+  auto service_type_support =
+    &::interface::srv::rosidl_typesupport_introspection_cpp::SceneControls_service_type_support_handle;
+  // get a non-const and properly typed version of the data void *
+  auto service_members = const_cast<::rosidl_typesupport_introspection_cpp::ServiceMembers *>(
+    static_cast<const ::rosidl_typesupport_introspection_cpp::ServiceMembers *>(
+      service_type_support->data));
+  // make sure that both the request_members_ and the response_members_ are initialized
+  // if they are not, initialize them
+  if (
+    service_members->request_members_ == nullptr ||
+    service_members->response_members_ == nullptr)
+  {
+    // initialize the request_members_ with the static function from the external library
+    service_members->request_members_ = static_cast<
+      const ::rosidl_typesupport_introspection_cpp::MessageMembers *
+      >(
+      ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle<
+        ::interface::srv::SceneControls_Request
+      >()->data
+      );
+    // initialize the response_members_ with the static function from the external library
+    service_members->response_members_ = static_cast<
+      const ::rosidl_typesupport_introspection_cpp::MessageMembers *
+      >(
+      ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle<
+        ::interface::srv::SceneControls_Response
+      >()->data
+      );
+  }
+  // finally return the properly initialized service_type_support handle
+  return service_type_support;
+}
+
+}  // namespace rosidl_typesupport_introspection_cpp
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC
+const rosidl_service_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, interface, srv, SceneControls)() {
+  return ::rosidl_typesupport_introspection_cpp::get_service_type_support_handle<interface::srv::SceneControls>();
+}
+
+#ifdef __cplusplus
+}
+#endif

+ 58 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.h

@@ -0,0 +1,58 @@
+// generated from rosidl_generator_c/resource/idl__type_support.h.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TYPE_SUPPORT_H_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TYPE_SUPPORT_H_
+
+#include "rosidl_typesupport_interface/macros.h"
+
+#include "interface/msg/rosidl_generator_c__visibility_control.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include "rosidl_runtime_c/message_type_support_struct.h"
+
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
+  rosidl_typesupport_c,
+  interface,
+  srv,
+  SceneControls_Request
+)();
+
+// already included above
+// #include "rosidl_runtime_c/message_type_support_struct.h"
+
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_C_PUBLIC_interface
+const rosidl_message_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
+  rosidl_typesupport_c,
+  interface,
+  srv,
+  SceneControls_Response
+)();
+
+#include "rosidl_runtime_c/service_type_support_struct.h"
+
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_C_PUBLIC_interface
+const rosidl_service_type_support_t *
+ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(
+  rosidl_typesupport_c,
+  interface,
+  srv,
+  SceneControls
+)();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TYPE_SUPPORT_H_

+ 71 - 0
rechange_ws/install/interface/include/interface/interface/srv/detail/scene_controls__type_support.hpp

@@ -0,0 +1,71 @@
+// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TYPE_SUPPORT_HPP_
+#define INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TYPE_SUPPORT_HPP_
+
+#include "rosidl_typesupport_interface/macros.h"
+
+#include "interface/msg/rosidl_generator_cpp__visibility_control.hpp"
+
+#include "rosidl_typesupport_cpp/service_type_support.hpp"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_CPP_PUBLIC_interface
+const rosidl_service_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_SYMBOL_NAME(
+  rosidl_typesupport_cpp,
+  interface,
+  srv,
+  SceneControls
+)();
+#ifdef __cplusplus
+}
+#endif
+
+#include "rosidl_typesupport_cpp/message_type_support.hpp"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_CPP_PUBLIC_interface
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
+  rosidl_typesupport_cpp,
+  interface,
+  srv,
+  SceneControls_Request
+)();
+#ifdef __cplusplus
+}
+#endif
+
+// already included above
+// #include "rosidl_typesupport_cpp/message_type_support.hpp"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+// Forward declare the get type support functions for this type.
+ROSIDL_GENERATOR_CPP_PUBLIC_interface
+const rosidl_message_type_support_t *
+  ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
+  rosidl_typesupport_cpp,
+  interface,
+  srv,
+  SceneControls_Response
+)();
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif  // INTERFACE__SRV__DETAIL__SCENE_CONTROLS__TYPE_SUPPORT_HPP_

+ 12 - 0
rechange_ws/install/interface/include/interface/interface/srv/scene_controls.h

@@ -0,0 +1,12 @@
+// generated from rosidl_generator_c/resource/idl.h.em
+// with input from interface:srv/SceneControls.idl
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__SCENE_CONTROLS_H_
+#define INTERFACE__SRV__SCENE_CONTROLS_H_
+
+#include "interface/srv/detail/scene_controls__struct.h"
+#include "interface/srv/detail/scene_controls__functions.h"
+#include "interface/srv/detail/scene_controls__type_support.h"
+
+#endif  // INTERFACE__SRV__SCENE_CONTROLS_H_

+ 12 - 0
rechange_ws/install/interface/include/interface/interface/srv/scene_controls.hpp

@@ -0,0 +1,12 @@
+// generated from rosidl_generator_cpp/resource/idl.hpp.em
+// generated code does not contain a copyright notice
+
+#ifndef INTERFACE__SRV__SCENE_CONTROLS_HPP_
+#define INTERFACE__SRV__SCENE_CONTROLS_HPP_
+
+#include "interface/srv/detail/scene_controls__struct.hpp"
+#include "interface/srv/detail/scene_controls__builder.hpp"
+#include "interface/srv/detail/scene_controls__traits.hpp"
+#include "interface/srv/detail/scene_controls__type_support.hpp"
+
+#endif  // INTERFACE__SRV__SCENE_CONTROLS_HPP_

+ 1 - 0
rechange_ws/install/interface/share/ament_index/resource_index/package_run_dependencies/interface

@@ -0,0 +1 @@
+std_msgs;rosidl_default_runtime;ament_lint_auto;ament_lint_common

+ 0 - 0
rechange_ws/install/interface/share/ament_index/resource_index/packages/interface


+ 1 - 0
rechange_ws/install/interface/share/ament_index/resource_index/parent_prefix_path/interface

@@ -0,0 +1 @@
+/opt/ros/humble

+ 6 - 0
rechange_ws/install/interface/share/ament_index/resource_index/rosidl_interfaces/interface

@@ -0,0 +1,6 @@
+msg/Empty.idl
+msg/Empty.msg
+srv/SceneControls.idl
+srv/SceneControls.srv
+srv/SceneControls_Request.msg
+srv/SceneControls_Response.msg

+ 1 - 0
rechange_ws/install/interface/share/colcon-core/packages/interface

@@ -0,0 +1 @@
+rosidl_default_runtime:std_msgs

+ 92 - 0
rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_dependencies-extras.cmake

@@ -0,0 +1,92 @@
+# generated from ament_cmake_export_dependencies/cmake/ament_cmake_export_dependencies-extras.cmake.in
+
+set(_exported_dependencies "std_msgs;rosidl_runtime_c;rosidl_typesupport_interface;rcutils;fastrtps_cmake_module;fastcdr;rosidl_runtime_c;rosidl_runtime_cpp;rosidl_typesupport_fastrtps_c;rosidl_typesupport_fastrtps_cpp;rosidl_typesupport_interface;rosidl_runtime_cpp;fastrtps_cmake_module;fastcdr;rmw;rosidl_runtime_c;rosidl_runtime_cpp;rosidl_typesupport_fastrtps_cpp;rosidl_typesupport_interface;rosidl_runtime_c;rosidl_typesupport_c;rosidl_typesupport_interface;rosidl_runtime_c;rosidl_runtime_cpp;rosidl_typesupport_c;rosidl_typesupport_cpp;rosidl_typesupport_interface")
+
+find_package(ament_cmake_libraries QUIET REQUIRED)
+
+# find_package() all dependencies
+# and append their DEFINITIONS INCLUDE_DIRS, LIBRARIES, and LINK_FLAGS
+# variables to interface_DEFINITIONS, interface_INCLUDE_DIRS,
+# interface_LIBRARIES, and interface_LINK_FLAGS.
+# Additionally collect the direct dependency names in
+# interface_DEPENDENCIES as well as the recursive dependency names
+# in interface_RECURSIVE_DEPENDENCIES.
+if(NOT _exported_dependencies STREQUAL "")
+  find_package(ament_cmake_core QUIET REQUIRED)
+  set(interface_DEPENDENCIES ${_exported_dependencies})
+  set(interface_RECURSIVE_DEPENDENCIES ${_exported_dependencies})
+  set(_libraries)
+  foreach(_dep ${_exported_dependencies})
+    if(NOT ${_dep}_FOUND)
+      find_package("${_dep}" QUIET REQUIRED)
+    endif()
+    # if a package provides modern CMake interface targets use them
+    # exclusively assuming the classic CMake variables only exist for
+    # backward compatibility
+    set(use_modern_cmake FALSE)
+    if(NOT "${${_dep}_TARGETS}" STREQUAL "")
+      foreach(_target ${${_dep}_TARGETS})
+        # only use actual targets
+        # in case a package uses this variable for other content
+        if(TARGET "${_target}")
+          get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES)
+          if(_include_dirs)
+            list_append_unique(interface_INCLUDE_DIRS "${_include_dirs}")
+          endif()
+
+          get_target_property(_imported_configurations ${_target} IMPORTED_CONFIGURATIONS)
+          if(_imported_configurations)
+            string(TOUPPER "${_imported_configurations}" _imported_configurations)
+            if(DEBUG_CONFIGURATIONS)
+              string(TOUPPER "${DEBUG_CONFIGURATIONS}" _debug_configurations_uppercase)
+            else()
+              set(_debug_configurations_uppercase "DEBUG")
+            endif()
+            foreach(_imported_config ${_imported_configurations})
+              get_target_property(_imported_implib ${_target} IMPORTED_IMPLIB_${_imported_config})
+              if(_imported_implib)
+                set(_imported_implib_config "optimized")
+                if(${_imported_config} IN_LIST _debug_configurations_uppercase)
+                  set(_imported_implib_config "debug")
+                endif()
+                list(APPEND _libraries ${_imported_implib_config} ${_imported_implib})
+              else()
+                get_target_property(_imported_location ${_target} IMPORTED_LOCATION_${_imported_config})
+                if(_imported_location)
+                  list(APPEND _libraries "${_imported_location}")
+                endif()
+              endif()
+            endforeach()
+          endif()
+
+          get_target_property(_link_libraries ${_target} INTERFACE_LINK_LIBRARIES)
+          if(_link_libraries)
+            list(APPEND _libraries "${_link_libraries}")
+          endif()
+          set(use_modern_cmake TRUE)
+        endif()
+      endforeach()
+    endif()
+    if(NOT use_modern_cmake)
+      if(${_dep}_DEFINITIONS)
+        list_append_unique(interface_DEFINITIONS "${${_dep}_DEFINITIONS}")
+      endif()
+      if(${_dep}_INCLUDE_DIRS)
+        list_append_unique(interface_INCLUDE_DIRS "${${_dep}_INCLUDE_DIRS}")
+      endif()
+      if(${_dep}_LIBRARIES)
+        list(APPEND _libraries "${${_dep}_LIBRARIES}")
+      endif()
+      if(${_dep}_LINK_FLAGS)
+        list_append_unique(interface_LINK_FLAGS "${${_dep}_LINK_FLAGS}")
+      endif()
+      if(${_dep}_RECURSIVE_DEPENDENCIES)
+        list_append_unique(interface_RECURSIVE_DEPENDENCIES "${${_dep}_RECURSIVE_DEPENDENCIES}")
+      endif()
+    endif()
+    if(_libraries)
+      ament_libraries_deduplicate(_libraries "${_libraries}")
+      list(APPEND interface_LIBRARIES "${_libraries}")
+    endif()
+  endforeach()
+endif()

+ 16 - 0
rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_include_directories-extras.cmake

@@ -0,0 +1,16 @@
+# generated from ament_cmake_export_include_directories/cmake/ament_cmake_export_include_directories-extras.cmake.in
+
+set(_exported_include_dirs "${interface_DIR}/../../../include/interface")
+
+# append include directories to interface_INCLUDE_DIRS
+# warn about not existing paths
+if(NOT _exported_include_dirs STREQUAL "")
+  find_package(ament_cmake_core QUIET REQUIRED)
+  foreach(_exported_include_dir ${_exported_include_dirs})
+    if(NOT IS_DIRECTORY "${_exported_include_dir}")
+      message(WARNING "Package 'interface' exports the include directory '${_exported_include_dir}' which doesn't exist")
+    endif()
+    normalize_path(_exported_include_dir "${_exported_include_dir}")
+    list(APPEND interface_INCLUDE_DIRS "${_exported_include_dir}")
+  endforeach()
+endif()

+ 141 - 0
rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_libraries-extras.cmake

@@ -0,0 +1,141 @@
+# generated from ament_cmake_export_libraries/cmake/template/ament_cmake_export_libraries.cmake.in
+
+set(_exported_libraries "interface__rosidl_generator_c;interface__rosidl_typesupport_c;interface__rosidl_typesupport_cpp")
+set(_exported_library_names "")
+
+# populate interface_LIBRARIES
+if(NOT _exported_libraries STREQUAL "")
+  # loop over libraries, either target names or absolute paths
+  list(LENGTH _exported_libraries _length)
+  set(_i 0)
+  while(_i LESS _length)
+    list(GET _exported_libraries ${_i} _arg)
+
+    # pass linker flags along
+    if("${_arg}" MATCHES "^-" AND NOT "${_arg}" MATCHES "^-[l|framework]")
+      list(APPEND interface_LIBRARIES "${_arg}")
+      math(EXPR _i "${_i} + 1")
+      continue()
+    endif()
+
+    if("${_arg}" MATCHES "^(debug|optimized|general)$")
+      # remember build configuration keyword
+      # and get following library
+      set(_cfg "${_arg}")
+      math(EXPR _i "${_i} + 1")
+      if(_i EQUAL _length)
+        message(FATAL_ERROR "Package 'interface' passes the build configuration keyword '${_cfg}' as the last exported library")
+      endif()
+      list(GET _exported_libraries ${_i} _library)
+    else()
+      # the value is a library without a build configuration keyword
+      set(_cfg "")
+      set(_library "${_arg}")
+    endif()
+    math(EXPR _i "${_i} + 1")
+
+    if(NOT IS_ABSOLUTE "${_library}")
+      # search for library target relative to this CMake file
+      set(_lib "NOTFOUND")
+      find_library(
+        _lib NAMES "${_library}"
+        PATHS "${interface_DIR}/../../../lib"
+        NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+      )
+
+      if(NOT _lib)
+        # warn about not existing library and ignore it
+        message(FATAL_ERROR "Package 'interface' exports the library '${_library}' which couldn't be found")
+      elseif(NOT IS_ABSOLUTE "${_lib}")
+        # the found library must be an absolute path
+        message(FATAL_ERROR "Package 'interface' found the library '${_library}' at '${_lib}' which is not an absolute path")
+      elseif(NOT EXISTS "${_lib}")
+        # the found library must exist
+        message(FATAL_ERROR "Package 'interface' found the library '${_lib}' which doesn't exist")
+      else()
+        list(APPEND interface_LIBRARIES ${_cfg} "${_lib}")
+      endif()
+
+    else()
+      if(NOT EXISTS "${_library}")
+        # the found library must exist
+        message(WARNING "Package 'interface' exports the library '${_library}' which doesn't exist")
+      else()
+        list(APPEND interface_LIBRARIES ${_cfg} "${_library}")
+      endif()
+    endif()
+  endwhile()
+endif()
+
+# find_library() library names with optional LIBRARY_DIRS
+# and add the libraries to interface_LIBRARIES
+if(NOT _exported_library_names STREQUAL "")
+  # loop over library names
+  # but remember related build configuration keyword if available
+  list(LENGTH _exported_library_names _length)
+  set(_i 0)
+  while(_i LESS _length)
+    list(GET _exported_library_names ${_i} _arg)
+    # pass linker flags along
+    if("${_arg}" MATCHES "^-" AND NOT "${_arg}" MATCHES "^-[l|framework]")
+      list(APPEND interface_LIBRARIES "${_arg}")
+      math(EXPR _i "${_i} + 1")
+      continue()
+    endif()
+
+    if("${_arg}" MATCHES "^(debug|optimized|general)$")
+      # remember build configuration keyword
+      # and get following library name
+      set(_cfg "${_arg}")
+      math(EXPR _i "${_i} + 1")
+      if(_i EQUAL _length)
+        message(FATAL_ERROR "Package 'interface' passes the build configuration keyword '${_cfg}' as the last exported target")
+      endif()
+      list(GET _exported_library_names ${_i} _library)
+    else()
+      # the value is a library target without a build configuration keyword
+      set(_cfg "")
+      set(_library "${_arg}")
+    endif()
+    math(EXPR _i "${_i} + 1")
+
+    # extract optional LIBRARY_DIRS from library name
+    string(REPLACE ":" ";" _library_dirs "${_library}")
+    list(GET _library_dirs 0 _library_name)
+    list(REMOVE_AT _library_dirs 0)
+
+    set(_lib "NOTFOUND")
+    if(NOT _library_dirs)
+      # search for library in the common locations
+      find_library(
+        _lib
+        NAMES "${_library_name}"
+      )
+      if(NOT _lib)
+        # warn about not existing library and later ignore it
+        message(WARNING "Package 'interface' exports library '${_library_name}' which couldn't be found")
+      endif()
+    else()
+      # search for library in the specified directories
+      find_library(
+        _lib
+        NAMES "${_library_name}"
+        PATHS ${_library_dirs}
+        NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+      )
+      if(NOT _lib)
+        # warn about not existing library and later ignore it
+        message(WARNING
+          "Package 'interface' exports library '${_library_name}' with LIBRARY_DIRS '${_library_dirs}' which couldn't be found")
+      endif()
+    endif()
+    if(_lib)
+      list(APPEND interface_LIBRARIES ${_cfg} "${_lib}")
+    endif()
+  endwhile()
+endif()
+
+# TODO(dirk-thomas) deduplicate interface_LIBRARIES
+# while maintaining library order
+# as well as build configuration keywords
+# as well as linker flags

+ 27 - 0
rechange_ws/install/interface/share/interface/cmake/ament_cmake_export_targets-extras.cmake

@@ -0,0 +1,27 @@
+# generated from ament_cmake_export_targets/cmake/ament_cmake_export_targets-extras.cmake.in
+
+set(_exported_targets "export_interface__rosidl_generator_c;export_interface__rosidl_typesupport_fastrtps_c;export_interface__rosidl_generator_cpp;export_interface__rosidl_typesupport_fastrtps_cpp;interface__rosidl_typesupport_introspection_c;interface__rosidl_typesupport_c;interface__rosidl_typesupport_introspection_cpp;interface__rosidl_typesupport_cpp;export_interface__rosidl_generator_py")
+
+# include all exported targets
+if(NOT _exported_targets STREQUAL "")
+  foreach(_target ${_exported_targets})
+    set(_export_file "${interface_DIR}/${_target}Export.cmake")
+    include("${_export_file}")
+
+    # extract the target names associated with the export
+    set(_regex "foreach\\((_cmake)?_expected_?[Tt]arget (IN ITEMS )?(.+)\\)")
+    file(
+      STRINGS "${_export_file}" _foreach_targets
+      REGEX "${_regex}")
+    list(LENGTH _foreach_targets _matches)
+    if(NOT _matches EQUAL 1)
+      message(FATAL_ERROR
+        "Failed to find exported target names in '${_export_file}'")
+    endif()
+    string(REGEX REPLACE "${_regex}" "\\3" _targets "${_foreach_targets}")
+    string(REPLACE " " ";" _targets "${_targets}")
+    list(LENGTH _targets _length)
+
+    list(APPEND interface_TARGETS ${_targets})
+  endforeach()
+endif()

+ 19 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_cExport-noconfig.cmake

@@ -0,0 +1,19 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_generator_c" for configuration ""
+set_property(TARGET interface::interface__rosidl_generator_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_generator_c PROPERTIES
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_generator_c.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_generator_c.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_generator_c )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_generator_c "${_IMPORT_PREFIX}/lib/libinterface__rosidl_generator_c.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 99 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_cExport.cmake

@@ -0,0 +1,99 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_generator_c)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_generator_c
+add_library(interface::interface__rosidl_generator_c SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_generator_c PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/interface"
+  INTERFACE_LINK_LIBRARIES "std_msgs::std_msgs__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_generator_c;rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_interface::rosidl_typesupport_interface;rcutils::rcutils"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/export_interface__rosidl_generator_cExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 99 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_cppExport.cmake

@@ -0,0 +1,99 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_generator_cpp)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_generator_cpp
+add_library(interface::interface__rosidl_generator_cpp INTERFACE IMPORTED)
+
+set_target_properties(interface::interface__rosidl_generator_cpp PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/interface"
+  INTERFACE_LINK_LIBRARIES "std_msgs::std_msgs__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;rosidl_runtime_cpp::rosidl_runtime_cpp"
+)
+
+if(CMAKE_VERSION VERSION_LESS 3.0.0)
+  message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/export_interface__rosidl_generator_cppExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 19 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_pyExport-noconfig.cmake

@@ -0,0 +1,19 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_generator_py" for configuration ""
+set_property(TARGET interface::interface__rosidl_generator_py APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_generator_py PROPERTIES
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_generator_py.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_generator_py.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_generator_py )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_generator_py "${_IMPORT_PREFIX}/lib/libinterface__rosidl_generator_py.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 114 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_generator_pyExport.cmake

@@ -0,0 +1,114 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_generator_py)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_generator_py
+add_library(interface::interface__rosidl_generator_py SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_generator_py PROPERTIES
+  INTERFACE_LINK_LIBRARIES "interface::interface__rosidl_generator_c;/usr/lib/aarch64-linux-gnu/libpython3.10.so;interface::interface__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_py;builtin_interfaces::builtin_interfaces__rosidl_generator_py"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/export_interface__rosidl_generator_pyExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# Make sure the targets which have been exported in some other
+# export set exist.
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+foreach(_target "interface::interface__rosidl_generator_c" "interface::interface__rosidl_typesupport_c" )
+  if(NOT TARGET "${_target}" )
+    set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}")
+  endif()
+endforeach()
+
+if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+  if(CMAKE_FIND_PACKAGE_NAME)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  else()
+    message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  endif()
+endif()
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 19 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cExport-noconfig.cmake

@@ -0,0 +1,19 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_typesupport_fastrtps_c" for configuration ""
+set_property(TARGET interface::interface__rosidl_typesupport_fastrtps_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_typesupport_fastrtps_c PROPERTIES
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_fastrtps_c.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_typesupport_fastrtps_c.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_typesupport_fastrtps_c )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_typesupport_fastrtps_c "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_fastrtps_c.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 115 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cExport.cmake

@@ -0,0 +1,115 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_typesupport_fastrtps_c)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_typesupport_fastrtps_c
+add_library(interface::interface__rosidl_typesupport_fastrtps_c SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_typesupport_fastrtps_c PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/interface"
+  INTERFACE_LINK_LIBRARIES "fastcdr;rosidl_runtime_c::rosidl_runtime_c;rosidl_runtime_cpp::rosidl_runtime_cpp;rosidl_typesupport_interface::rosidl_typesupport_interface;rosidl_typesupport_fastrtps_cpp::rosidl_typesupport_fastrtps_cpp;rosidl_typesupport_fastrtps_c::rosidl_typesupport_fastrtps_c;interface::interface__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_fastrtps_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_fastrtps_c"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/export_interface__rosidl_typesupport_fastrtps_cExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# Make sure the targets which have been exported in some other
+# export set exist.
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+foreach(_target "interface::interface__rosidl_generator_c" )
+  if(NOT TARGET "${_target}" )
+    set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}")
+  endif()
+endforeach()
+
+if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+  if(CMAKE_FIND_PACKAGE_NAME)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  else()
+    message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  endif()
+endif()
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 19 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cppExport-noconfig.cmake

@@ -0,0 +1,19 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_typesupport_fastrtps_cpp" for configuration ""
+set_property(TARGET interface::interface__rosidl_typesupport_fastrtps_cpp APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_typesupport_fastrtps_cpp PROPERTIES
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_fastrtps_cpp.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_typesupport_fastrtps_cpp.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_typesupport_fastrtps_cpp )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_typesupport_fastrtps_cpp "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_fastrtps_cpp.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 115 - 0
rechange_ws/install/interface/share/interface/cmake/export_interface__rosidl_typesupport_fastrtps_cppExport.cmake

@@ -0,0 +1,115 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_typesupport_fastrtps_cpp)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_typesupport_fastrtps_cpp
+add_library(interface::interface__rosidl_typesupport_fastrtps_cpp SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_typesupport_fastrtps_cpp PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/interface"
+  INTERFACE_LINK_LIBRARIES "fastcdr;rmw::rmw;rosidl_runtime_c::rosidl_runtime_c;rosidl_runtime_cpp::rosidl_runtime_cpp;rosidl_typesupport_interface::rosidl_typesupport_interface;rosidl_typesupport_fastrtps_cpp::rosidl_typesupport_fastrtps_cpp;std_msgs::std_msgs__rosidl_typesupport_fastrtps_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_fastrtps_cpp;interface::interface__rosidl_generator_cpp"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/export_interface__rosidl_typesupport_fastrtps_cppExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# Make sure the targets which have been exported in some other
+# export set exist.
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+foreach(_target "interface::interface__rosidl_generator_cpp" )
+  if(NOT TARGET "${_target}" )
+    set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}")
+  endif()
+endforeach()
+
+if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+  if(CMAKE_FIND_PACKAGE_NAME)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  else()
+    message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  endif()
+endif()
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 14 - 0
rechange_ws/install/interface/share/interface/cmake/interfaceConfig-version.cmake

@@ -0,0 +1,14 @@
+# generated from ament/cmake/core/templates/nameConfig-version.cmake.in
+set(PACKAGE_VERSION "0.0.0")
+
+set(PACKAGE_VERSION_EXACT False)
+set(PACKAGE_VERSION_COMPATIBLE False)
+
+if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}")
+  set(PACKAGE_VERSION_EXACT True)
+  set(PACKAGE_VERSION_COMPATIBLE True)
+endif()
+
+if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}")
+  set(PACKAGE_VERSION_COMPATIBLE True)
+endif()

+ 42 - 0
rechange_ws/install/interface/share/interface/cmake/interfaceConfig.cmake

@@ -0,0 +1,42 @@
+# generated from ament/cmake/core/templates/nameConfig.cmake.in
+
+# prevent multiple inclusion
+if(_interface_CONFIG_INCLUDED)
+  # ensure to keep the found flag the same
+  if(NOT DEFINED interface_FOUND)
+    # explicitly set it to FALSE, otherwise CMake will set it to TRUE
+    set(interface_FOUND FALSE)
+  elseif(NOT interface_FOUND)
+    # use separate condition to avoid uninitialized variable warning
+    set(interface_FOUND FALSE)
+  endif()
+  return()
+endif()
+set(_interface_CONFIG_INCLUDED TRUE)
+
+# output package information
+if(NOT interface_FIND_QUIETLY)
+  message(STATUS "Found interface: 0.0.0 (${interface_DIR})")
+endif()
+
+# warn when using a deprecated package
+if(NOT "" STREQUAL "")
+  set(_msg "Package 'interface' is deprecated")
+  # append custom deprecation text if available
+  if(NOT "" STREQUAL "TRUE")
+    set(_msg "${_msg} ()")
+  endif()
+  # optionally quiet the deprecation message
+  if(NOT ${interface_DEPRECATED_QUIET})
+    message(DEPRECATION "${_msg}")
+  endif()
+endif()
+
+# flag package as ament-based to distinguish it after being find_package()-ed
+set(interface_FOUND_AMENT_PACKAGE TRUE)
+
+# include all config extra files
+set(_extras "rosidl_cmake-extras.cmake;ament_cmake_export_dependencies-extras.cmake;ament_cmake_export_include_directories-extras.cmake;ament_cmake_export_libraries-extras.cmake;ament_cmake_export_targets-extras.cmake;rosidl_cmake_export_typesupport_targets-extras.cmake;rosidl_cmake_export_typesupport_libraries-extras.cmake")
+foreach(_extra ${_extras})
+  include("${interface_DIR}/${_extra}")
+endforeach()

+ 20 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cExport-noconfig.cmake

@@ -0,0 +1,20 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_typesupport_c" for configuration ""
+set_property(TARGET interface::interface__rosidl_typesupport_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_typesupport_c PROPERTIES
+  IMPORTED_LINK_DEPENDENT_LIBRARIES_NOCONFIG "rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_c::rosidl_typesupport_c"
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_c.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_typesupport_c.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_typesupport_c )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_typesupport_c "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_c.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 114 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cExport.cmake

@@ -0,0 +1,114 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_typesupport_c)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_typesupport_c
+add_library(interface::interface__rosidl_typesupport_c SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_typesupport_c PROPERTIES
+  INTERFACE_LINK_LIBRARIES "interface::interface__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/interface__rosidl_typesupport_cExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# Make sure the targets which have been exported in some other
+# export set exist.
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+foreach(_target "interface::interface__rosidl_generator_c" )
+  if(NOT TARGET "${_target}" )
+    set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}")
+  endif()
+endforeach()
+
+if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+  if(CMAKE_FIND_PACKAGE_NAME)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  else()
+    message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  endif()
+endif()
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 20 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cppExport-noconfig.cmake

@@ -0,0 +1,20 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_typesupport_cpp" for configuration ""
+set_property(TARGET interface::interface__rosidl_typesupport_cpp APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_typesupport_cpp PROPERTIES
+  IMPORTED_LINK_DEPENDENT_LIBRARIES_NOCONFIG "rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_cpp::rosidl_typesupport_cpp;rosidl_typesupport_c::rosidl_typesupport_c"
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_cpp.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_typesupport_cpp.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_typesupport_cpp )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_typesupport_cpp "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_cpp.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 114 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_cppExport.cmake

@@ -0,0 +1,114 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_typesupport_cpp)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_typesupport_cpp
+add_library(interface::interface__rosidl_typesupport_cpp SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_typesupport_cpp PROPERTIES
+  INTERFACE_LINK_LIBRARIES "interface::interface__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/interface__rosidl_typesupport_cppExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# Make sure the targets which have been exported in some other
+# export set exist.
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+foreach(_target "interface::interface__rosidl_generator_cpp" )
+  if(NOT TARGET "${_target}" )
+    set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}")
+  endif()
+endforeach()
+
+if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+  if(CMAKE_FIND_PACKAGE_NAME)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  else()
+    message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  endif()
+endif()
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 19 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cExport-noconfig.cmake

@@ -0,0 +1,19 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_typesupport_introspection_c" for configuration ""
+set_property(TARGET interface::interface__rosidl_typesupport_introspection_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_typesupport_introspection_c PROPERTIES
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_introspection_c.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_typesupport_introspection_c.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_typesupport_introspection_c )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_typesupport_introspection_c "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_introspection_c.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 115 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cExport.cmake

@@ -0,0 +1,115 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_typesupport_introspection_c)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_typesupport_introspection_c
+add_library(interface::interface__rosidl_typesupport_introspection_c SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_typesupport_introspection_c PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/interface"
+  INTERFACE_LINK_LIBRARIES "interface::interface__rosidl_generator_c;rosidl_typesupport_introspection_c::rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/interface__rosidl_typesupport_introspection_cExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# Make sure the targets which have been exported in some other
+# export set exist.
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+foreach(_target "interface::interface__rosidl_generator_c" )
+  if(NOT TARGET "${_target}" )
+    set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}")
+  endif()
+endforeach()
+
+if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+  if(CMAKE_FIND_PACKAGE_NAME)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  else()
+    message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  endif()
+endif()
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 19 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cppExport-noconfig.cmake

@@ -0,0 +1,19 @@
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "interface::interface__rosidl_typesupport_introspection_cpp" for configuration ""
+set_property(TARGET interface::interface__rosidl_typesupport_introspection_cpp APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+set_target_properties(interface::interface__rosidl_typesupport_introspection_cpp PROPERTIES
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_introspection_cpp.so"
+  IMPORTED_SONAME_NOCONFIG "libinterface__rosidl_typesupport_introspection_cpp.so"
+  )
+
+list(APPEND _IMPORT_CHECK_TARGETS interface::interface__rosidl_typesupport_introspection_cpp )
+list(APPEND _IMPORT_CHECK_FILES_FOR_interface::interface__rosidl_typesupport_introspection_cpp "${_IMPORT_PREFIX}/lib/libinterface__rosidl_typesupport_introspection_cpp.so" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)

+ 115 - 0
rechange_ws/install/interface/share/interface/cmake/interface__rosidl_typesupport_introspection_cppExport.cmake

@@ -0,0 +1,115 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6...3.20)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget interface::interface__rosidl_typesupport_introspection_cpp)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target interface::interface__rosidl_typesupport_introspection_cpp
+add_library(interface::interface__rosidl_typesupport_introspection_cpp SHARED IMPORTED)
+
+set_target_properties(interface::interface__rosidl_typesupport_introspection_cpp PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/interface"
+  INTERFACE_LINK_LIBRARIES "interface::interface__rosidl_generator_cpp;rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_interface::rosidl_typesupport_interface;rosidl_typesupport_introspection_cpp::rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/interface__rosidl_typesupport_introspection_cppExport-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# Make sure the targets which have been exported in some other
+# export set exist.
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+foreach(_target "interface::interface__rosidl_generator_cpp" )
+  if(NOT TARGET "${_target}" )
+    set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}")
+  endif()
+endforeach()
+
+if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+  if(CMAKE_FIND_PACKAGE_NAME)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+    set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  else()
+    message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}")
+  endif()
+endif()
+unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

+ 4 - 0
rechange_ws/install/interface/share/interface/cmake/rosidl_cmake-extras.cmake

@@ -0,0 +1,4 @@
+# generated from rosidl_cmake/cmake/rosidl_cmake-extras.cmake.in
+
+set(interface_IDL_FILES "srv/SceneControls.idl;msg/Empty.idl")
+set(interface_INTERFACE_FILES "srv/SceneControls.srv;srv/SceneControls_Request.msg;srv/SceneControls_Response.msg;msg/Empty.msg")

+ 49 - 0
rechange_ws/install/interface/share/interface/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake

@@ -0,0 +1,49 @@
+# generated from
+# rosidl_cmake/cmake/template/rosidl_cmake_export_typesupport_libraries.cmake.in
+
+set(_exported_typesupport_libraries
+  "__rosidl_typesupport_fastrtps_c:interface__rosidl_typesupport_fastrtps_c;__rosidl_typesupport_fastrtps_cpp:interface__rosidl_typesupport_fastrtps_cpp")
+
+# populate interface_LIBRARIES_<suffix>
+if(NOT _exported_typesupport_libraries STREQUAL "")
+  # loop over typesupport libraries
+  foreach(_tuple ${_exported_typesupport_libraries})
+    string(REPLACE ":" ";" _tuple "${_tuple}")
+    list(GET _tuple 0 _suffix)
+    list(GET _tuple 1 _library)
+
+    if(NOT IS_ABSOLUTE "${_library}")
+      # search for library target relative to this CMake file
+      set(_lib "NOTFOUND")
+      find_library(
+        _lib NAMES "${_library}"
+        PATHS "${interface_DIR}/../../../lib"
+        NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+      )
+
+      if(NOT _lib)
+        # the library wasn't found
+        message(FATAL_ERROR
+          "Package 'interface' exports the typesupport library '${_library}' which couldn't be found")
+      elseif(NOT IS_ABSOLUTE "${_lib}")
+        # the found library must be an absolute path
+        message(FATAL_ERROR
+          "Package 'interface' found the typesupport library '${_library}' at '${_lib}' "
+          "which is not an absolute path")
+      elseif(NOT EXISTS "${_lib}")
+        # the found library must exist
+        message(FATAL_ERROR "Package 'interface' found the typesupport library '${_lib}' which doesn't exist")
+      else()
+        list(APPEND interface_LIBRARIES${_suffix} ${_cfg} "${_lib}")
+      endif()
+
+    else()
+      if(NOT EXISTS "${_library}")
+        # the found library must exist
+        message(WARNING "Package 'interface' exports the typesupport library '${_library}' which doesn't exist")
+      else()
+        list(APPEND interface_LIBRARIES${_suffix} "${_library}")
+      endif()
+    endif()
+  endforeach()
+endif()

+ 23 - 0
rechange_ws/install/interface/share/interface/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake

@@ -0,0 +1,23 @@
+# generated from
+# rosidl_cmake/cmake/template/rosidl_cmake_export_typesupport_targets.cmake.in
+
+set(_exported_typesupport_targets
+  "__rosidl_generator_c:interface__rosidl_generator_c;__rosidl_typesupport_fastrtps_c:interface__rosidl_typesupport_fastrtps_c;__rosidl_generator_cpp:interface__rosidl_generator_cpp;__rosidl_typesupport_fastrtps_cpp:interface__rosidl_typesupport_fastrtps_cpp;__rosidl_typesupport_introspection_c:interface__rosidl_typesupport_introspection_c;__rosidl_typesupport_c:interface__rosidl_typesupport_c;__rosidl_typesupport_introspection_cpp:interface__rosidl_typesupport_introspection_cpp;__rosidl_typesupport_cpp:interface__rosidl_typesupport_cpp;__rosidl_generator_py:interface__rosidl_generator_py")
+
+# populate interface_TARGETS_<suffix>
+if(NOT _exported_typesupport_targets STREQUAL "")
+  # loop over typesupport targets
+  foreach(_tuple ${_exported_typesupport_targets})
+    string(REPLACE ":" ";" _tuple "${_tuple}")
+    list(GET _tuple 0 _suffix)
+    list(GET _tuple 1 _target)
+
+    set(_target "interface::${_target}")
+    if(NOT TARGET "${_target}")
+      # the exported target must exist
+      message(WARNING "Package 'interface' exports the typesupport target '${_target}' which doesn't exist")
+    else()
+      list(APPEND interface_TARGETS${_suffix} "${_target}")
+    endif()
+  endforeach()
+endif()

+ 1 - 0
rechange_ws/install/interface/share/interface/environment/ament_prefix_path.dsv

@@ -0,0 +1 @@
+prepend-non-duplicate;AMENT_PREFIX_PATH;

+ 4 - 0
rechange_ws/install/interface/share/interface/environment/ament_prefix_path.sh

@@ -0,0 +1,4 @@
+# copied from
+# ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh
+
+ament_prepend_unique_value AMENT_PREFIX_PATH "$AMENT_CURRENT_PREFIX"

+ 1 - 0
rechange_ws/install/interface/share/interface/environment/library_path.dsv

@@ -0,0 +1 @@
+prepend-non-duplicate;LD_LIBRARY_PATH;lib

+ 16 - 0
rechange_ws/install/interface/share/interface/environment/library_path.sh

@@ -0,0 +1,16 @@
+# copied from ament_package/template/environment_hook/library_path.sh
+
+# detect if running on Darwin platform
+_UNAME=`uname -s`
+_IS_DARWIN=0
+if [ "$_UNAME" = "Darwin" ]; then
+  _IS_DARWIN=1
+fi
+unset _UNAME
+
+if [ $_IS_DARWIN -eq 0 ]; then
+  ament_prepend_unique_value LD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib"
+else
+  ament_prepend_unique_value DYLD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib"
+fi
+unset _IS_DARWIN

+ 1 - 0
rechange_ws/install/interface/share/interface/environment/path.dsv

@@ -0,0 +1 @@
+prepend-non-duplicate-if-exists;PATH;bin

+ 5 - 0
rechange_ws/install/interface/share/interface/environment/path.sh

@@ -0,0 +1,5 @@
+# copied from ament_cmake_core/cmake/environment_hooks/environment/path.sh
+
+if [ -d "$AMENT_CURRENT_PREFIX/bin" ]; then
+  ament_prepend_unique_value PATH "$AMENT_CURRENT_PREFIX/bin"
+fi

+ 1 - 0
rechange_ws/install/interface/share/interface/environment/pythonpath.dsv

@@ -0,0 +1 @@
+prepend-non-duplicate;PYTHONPATH;local/lib/python3.10/dist-packages

+ 3 - 0
rechange_ws/install/interface/share/interface/environment/pythonpath.sh

@@ -0,0 +1,3 @@
+# generated from ament_package/template/environment_hook/pythonpath.sh.in
+
+ament_prepend_unique_value PYTHONPATH "$AMENT_CURRENT_PREFIX/local/lib/python3.10/dist-packages"

+ 1 - 0
rechange_ws/install/interface/share/interface/hook/cmake_prefix_path.dsv

@@ -0,0 +1 @@
+prepend-non-duplicate;CMAKE_PREFIX_PATH;

+ 3 - 0
rechange_ws/install/interface/share/interface/hook/cmake_prefix_path.ps1

@@ -0,0 +1,3 @@
+# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
+
+colcon_prepend_unique_value CMAKE_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX"

+ 3 - 0
rechange_ws/install/interface/share/interface/hook/cmake_prefix_path.sh

@@ -0,0 +1,3 @@
+# generated from colcon_core/shell/template/hook_prepend_value.sh.em
+
+_colcon_prepend_unique_value CMAKE_PREFIX_PATH "$COLCON_CURRENT_PREFIX"

+ 1 - 0
rechange_ws/install/interface/share/interface/hook/ld_library_path_lib.dsv

@@ -0,0 +1 @@
+prepend-non-duplicate;LD_LIBRARY_PATH;lib

+ 3 - 0
rechange_ws/install/interface/share/interface/hook/ld_library_path_lib.ps1

@@ -0,0 +1,3 @@
+# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
+
+colcon_prepend_unique_value LD_LIBRARY_PATH "$env:COLCON_CURRENT_PREFIX\lib"

+ 3 - 0
rechange_ws/install/interface/share/interface/hook/ld_library_path_lib.sh

@@ -0,0 +1,3 @@
+# generated from colcon_core/shell/template/hook_prepend_value.sh.em
+
+_colcon_prepend_unique_value LD_LIBRARY_PATH "$COLCON_CURRENT_PREFIX/lib"

+ 46 - 0
rechange_ws/install/interface/share/interface/local_setup.bash

@@ -0,0 +1,46 @@
+# generated from ament_package/template/package_level/local_setup.bash.in
+
+# source local_setup.sh from same directory as this file
+_this_path=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" && pwd)
+# provide AMENT_CURRENT_PREFIX to shell script
+AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd)
+# store AMENT_CURRENT_PREFIX to restore it before each environment hook
+_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX
+
+# trace output
+if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
+  echo "# . \"$_this_path/local_setup.sh\""
+fi
+. "$_this_path/local_setup.sh"
+unset _this_path
+
+# unset AMENT_ENVIRONMENT_HOOKS
+# if not appending to them for return
+if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
+  unset AMENT_ENVIRONMENT_HOOKS
+fi
+
+# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks
+AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
+# list all environment hooks of this package
+
+# source all shell-specific environment hooks of this package
+# if not returning them
+if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
+  _package_local_setup_IFS=$IFS
+  IFS=":"
+  for _hook in $AMENT_ENVIRONMENT_HOOKS; do
+    # restore AMENT_CURRENT_PREFIX for each environment hook
+    AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
+    # restore IFS before sourcing other files
+    IFS=$_package_local_setup_IFS
+    . "$_hook"
+  done
+  unset _hook
+  IFS=$_package_local_setup_IFS
+  unset _package_local_setup_IFS
+  unset AMENT_ENVIRONMENT_HOOKS
+fi
+
+unset _package_local_setup_AMENT_CURRENT_PREFIX
+unset AMENT_CURRENT_PREFIX

+ 4 - 0
rechange_ws/install/interface/share/interface/local_setup.dsv

@@ -0,0 +1,4 @@
+source;share/interface/environment/ament_prefix_path.sh
+source;share/interface/environment/library_path.sh
+source;share/interface/environment/path.sh
+source;share/interface/environment/pythonpath.sh

+ 186 - 0
rechange_ws/install/interface/share/interface/local_setup.sh

@@ -0,0 +1,186 @@
+# generated from ament_package/template/package_level/local_setup.sh.in
+
+# since this file is sourced use either the provided AMENT_CURRENT_PREFIX
+# or fall back to the destination set at configure time
+: ${AMENT_CURRENT_PREFIX:="/home/nvidia/zkf/rechange_ws/install/interface"}
+if [ ! -d "$AMENT_CURRENT_PREFIX" ]; then
+  if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+    echo "The compile time prefix path '$AMENT_CURRENT_PREFIX' doesn't " \
+      "exist. Consider sourcing a different extension than '.sh'." 1>&2
+  else
+    AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+  fi
+fi
+
+# function to append values to environment variables
+# using colons as separators and avoiding leading separators
+ament_append_value() {
+  # arguments
+  _listname="$1"
+  _value="$2"
+  #echo "listname $_listname"
+  #eval echo "list value \$$_listname"
+  #echo "value $_value"
+
+  # avoid leading separator
+  eval _values=\"\$$_listname\"
+  if [ -z "$_values" ]; then
+    eval export $_listname=\"$_value\"
+    #eval echo "set list \$$_listname"
+  else
+    # field separator must not be a colon
+    _ament_append_value_IFS=$IFS
+    unset IFS
+    eval export $_listname=\"\$$_listname:$_value\"
+    #eval echo "append list \$$_listname"
+    IFS=$_ament_append_value_IFS
+    unset _ament_append_value_IFS
+  fi
+  unset _values
+
+  unset _value
+  unset _listname
+}
+
+# function to append non-duplicate values to environment variables
+# using colons as separators and avoiding leading separators
+ament_append_unique_value() {
+  # arguments
+  _listname=$1
+  _value=$2
+  #echo "listname $_listname"
+  #eval echo "list value \$$_listname"
+  #echo "value $_value"
+
+  # check if the list contains the value
+  eval _values=\$$_listname
+  _duplicate=
+  _ament_append_unique_value_IFS=$IFS
+  IFS=":"
+  if [ "$AMENT_SHELL" = "zsh" ]; then
+    ament_zsh_to_array _values
+  fi
+  for _item in $_values; do
+    # ignore empty strings
+    if [ -z "$_item" ]; then
+      continue
+    fi
+    if [ $_item = $_value ]; then
+      _duplicate=1
+    fi
+  done
+  unset _item
+
+  # append only non-duplicates
+  if [ -z "$_duplicate" ]; then
+    # avoid leading separator
+    if [ -z "$_values" ]; then
+      eval $_listname=\"$_value\"
+      #eval echo "set list \$$_listname"
+    else
+      # field separator must not be a colon
+      unset IFS
+      eval $_listname=\"\$$_listname:$_value\"
+      #eval echo "append list \$$_listname"
+    fi
+  fi
+  IFS=$_ament_append_unique_value_IFS
+  unset _ament_append_unique_value_IFS
+  unset _duplicate
+  unset _values
+
+  unset _value
+  unset _listname
+}
+
+# function to prepend non-duplicate values to environment variables
+# using colons as separators and avoiding trailing separators
+ament_prepend_unique_value() {
+  # arguments
+  _listname="$1"
+  _value="$2"
+  #echo "listname $_listname"
+  #eval echo "list value \$$_listname"
+  #echo "value $_value"
+
+  # check if the list contains the value
+  eval _values=\"\$$_listname\"
+  _duplicate=
+  _ament_prepend_unique_value_IFS=$IFS
+  IFS=":"
+  if [ "$AMENT_SHELL" = "zsh" ]; then
+    ament_zsh_to_array _values
+  fi
+  for _item in $_values; do
+    # ignore empty strings
+    if [ -z "$_item" ]; then
+      continue
+    fi
+    if [ "$_item" = "$_value" ]; then
+      _duplicate=1
+    fi
+  done
+  unset _item
+
+  # prepend only non-duplicates
+  if [ -z "$_duplicate" ]; then
+    # avoid trailing separator
+    if [ -z "$_values" ]; then
+      eval export $_listname=\"$_value\"
+      #eval echo "set list \$$_listname"
+    else
+      # field separator must not be a colon
+      unset IFS
+      eval export $_listname=\"$_value:\$$_listname\"
+      #eval echo "prepend list \$$_listname"
+    fi
+  fi
+  IFS=$_ament_prepend_unique_value_IFS
+  unset _ament_prepend_unique_value_IFS
+  unset _duplicate
+  unset _values
+
+  unset _value
+  unset _listname
+}
+
+# unset AMENT_ENVIRONMENT_HOOKS
+# if not appending to them for return
+if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
+  unset AMENT_ENVIRONMENT_HOOKS
+fi
+
+# list all environment hooks of this package
+ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/interface/environment/ament_prefix_path.sh"
+ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/interface/environment/library_path.sh"
+ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/interface/environment/path.sh"
+ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/interface/environment/pythonpath.sh"
+
+# source all shell-specific environment hooks of this package
+# if not returning them
+if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
+  _package_local_setup_IFS=$IFS
+  IFS=":"
+  if [ "$AMENT_SHELL" = "zsh" ]; then
+    ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS
+  fi
+  for _hook in $AMENT_ENVIRONMENT_HOOKS; do
+    if [ -f "$_hook" ]; then
+      # restore IFS before sourcing other files
+      IFS=$_package_local_setup_IFS
+      # trace output
+      if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
+        echo "# . \"$_hook\""
+      fi
+      . "$_hook"
+    fi
+  done
+  unset _hook
+  IFS=$_package_local_setup_IFS
+  unset _package_local_setup_IFS
+  unset AMENT_ENVIRONMENT_HOOKS
+fi
+
+# reset AMENT_CURRENT_PREFIX after each package
+# allowing to source multiple package-level setup files
+unset AMENT_CURRENT_PREFIX

+ 59 - 0
rechange_ws/install/interface/share/interface/local_setup.zsh

@@ -0,0 +1,59 @@
+# generated from ament_package/template/package_level/local_setup.zsh.in
+
+AMENT_SHELL=zsh
+
+# source local_setup.sh from same directory as this file
+_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)
+# provide AMENT_CURRENT_PREFIX to shell script
+AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)
+# store AMENT_CURRENT_PREFIX to restore it before each environment hook
+_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX
+
+# function to convert array-like strings into arrays
+# to wordaround SH_WORD_SPLIT not being set
+ament_zsh_to_array() {
+  local _listname=$1
+  local _dollar="$"
+  local _split="{="
+  local _to_array="(\"$_dollar$_split$_listname}\")"
+  eval $_listname=$_to_array
+}
+
+# trace output
+if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
+  echo "# . \"$_this_path/local_setup.sh\""
+fi
+# the package-level local_setup file unsets AMENT_CURRENT_PREFIX
+. "$_this_path/local_setup.sh"
+unset _this_path
+
+# unset AMENT_ENVIRONMENT_HOOKS
+# if not appending to them for return
+if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
+  unset AMENT_ENVIRONMENT_HOOKS
+fi
+
+# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks
+AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
+# list all environment hooks of this package
+
+# source all shell-specific environment hooks of this package
+# if not returning them
+if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
+  _package_local_setup_IFS=$IFS
+  IFS=":"
+  for _hook in $AMENT_ENVIRONMENT_HOOKS; do
+    # restore AMENT_CURRENT_PREFIX for each environment hook
+    AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
+    # restore IFS before sourcing other files
+    IFS=$_package_local_setup_IFS
+    . "$_hook"
+  done
+  unset _hook
+  IFS=$_package_local_setup_IFS
+  unset _package_local_setup_IFS
+  unset AMENT_ENVIRONMENT_HOOKS
+fi
+
+unset _package_local_setup_AMENT_CURRENT_PREFIX
+unset AMENT_CURRENT_PREFIX

+ 14 - 0
rechange_ws/install/interface/share/interface/msg/Empty.idl

@@ -0,0 +1,14 @@
+// generated from rosidl_adapter/resource/msg.idl.em
+// with input from interface/msg/Empty.msg
+// generated code does not contain a copyright notice
+
+
+module interface {
+  module msg {
+    @verbatim (language="comment", text=
+      "空消息,可用于简单触发")
+    struct Empty {
+      uint8 structure_needs_at_least_one_member;
+    };
+  };
+};

+ 1 - 0
rechange_ws/install/interface/share/interface/msg/Empty.msg

@@ -0,0 +1 @@
+# 空消息,可用于简单触发

+ 39 - 0
rechange_ws/install/interface/share/interface/package.bash

@@ -0,0 +1,39 @@
+# generated from colcon_bash/shell/template/package.bash.em
+
+# This script extends the environment for this package.
+
+# a bash script is able to determine its own path if necessary
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+  # the prefix is two levels up from the package specific share directory
+  _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)"
+else
+  _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_bash_source_script() {
+  if [ -f "$1" ]; then
+    if [ -n "$COLCON_TRACE" ]; then
+      echo "# . \"$1\""
+    fi
+    . "$@"
+  else
+    echo "not found: \"$1\"" 1>&2
+  fi
+}
+
+# source sh script of this package
+_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/interface/package.sh"
+
+# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts
+COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX"
+
+# source bash hooks
+_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/interface/local_setup.bash"
+
+unset COLCON_CURRENT_PREFIX
+
+unset _colcon_package_bash_source_script
+unset _colcon_package_bash_COLCON_CURRENT_PREFIX

+ 11 - 0
rechange_ws/install/interface/share/interface/package.dsv

@@ -0,0 +1,11 @@
+source;share/interface/hook/cmake_prefix_path.ps1
+source;share/interface/hook/cmake_prefix_path.dsv
+source;share/interface/hook/cmake_prefix_path.sh
+source;share/interface/hook/ld_library_path_lib.ps1
+source;share/interface/hook/ld_library_path_lib.dsv
+source;share/interface/hook/ld_library_path_lib.sh
+source;share/interface/local_setup.bash
+source;share/interface/local_setup.dsv
+source;share/interface/local_setup.ps1
+source;share/interface/local_setup.sh
+source;share/interface/local_setup.zsh

+ 117 - 0
rechange_ws/install/interface/share/interface/package.ps1

@@ -0,0 +1,117 @@
+# generated from colcon_powershell/shell/template/package.ps1.em
+
+# function to append a value to a variable
+# which uses colons as separators
+# duplicates as well as leading separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+function colcon_append_unique_value {
+  param (
+    $_listname,
+    $_value
+  )
+
+  # get values from variable
+  if (Test-Path Env:$_listname) {
+    $_values=(Get-Item env:$_listname).Value
+  } else {
+    $_values=""
+  }
+  $_duplicate=""
+  # start with no values
+  $_all_values=""
+  # iterate over existing values in the variable
+  if ($_values) {
+    $_values.Split(";") | ForEach {
+      # not an empty string
+      if ($_) {
+        # not a duplicate of _value
+        if ($_ -eq $_value) {
+          $_duplicate="1"
+        }
+        if ($_all_values) {
+          $_all_values="${_all_values};$_"
+        } else {
+          $_all_values="$_"
+        }
+      }
+    }
+  }
+  # append only non-duplicates
+  if (!$_duplicate) {
+    # avoid leading separator
+    if ($_all_values) {
+      $_all_values="${_all_values};${_value}"
+    } else {
+      $_all_values="${_value}"
+    }
+  }
+
+  # export the updated variable
+  Set-Item env:\$_listname -Value "$_all_values"
+}
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+function colcon_prepend_unique_value {
+  param (
+    $_listname,
+    $_value
+  )
+
+  # get values from variable
+  if (Test-Path Env:$_listname) {
+    $_values=(Get-Item env:$_listname).Value
+  } else {
+    $_values=""
+  }
+  # start with the new value
+  $_all_values="$_value"
+  # iterate over existing values in the variable
+  if ($_values) {
+    $_values.Split(";") | ForEach {
+      # not an empty string
+      if ($_) {
+        # not a duplicate of _value
+        if ($_ -ne $_value) {
+          # keep non-duplicate values
+          $_all_values="${_all_values};$_"
+        }
+      }
+    }
+  }
+  # export the updated variable
+  Set-Item env:\$_listname -Value "$_all_values"
+}
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+function colcon_package_source_powershell_script {
+  param (
+    $_colcon_package_source_powershell_script
+  )
+  # source script with conditional trace output
+  if (Test-Path $_colcon_package_source_powershell_script) {
+    if ($env:COLCON_TRACE) {
+      echo ". '$_colcon_package_source_powershell_script'"
+    }
+    . "$_colcon_package_source_powershell_script"
+  } else {
+    Write-Error "not found: '$_colcon_package_source_powershell_script'"
+  }
+}
+
+
+# a powershell script is able to determine its own path
+# the prefix is two levels up from the package specific share directory
+$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName
+
+colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/interface/hook/cmake_prefix_path.ps1"
+colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/interface/hook/ld_library_path_lib.ps1"
+colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/interface/local_setup.ps1"
+
+Remove-Item Env:\COLCON_CURRENT_PREFIX

+ 88 - 0
rechange_ws/install/interface/share/interface/package.sh

@@ -0,0 +1,88 @@
+# generated from colcon_core/shell/template/package.sh.em
+
+# This script extends the environment for this package.
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+_colcon_prepend_unique_value() {
+  # arguments
+  _listname="$1"
+  _value="$2"
+
+  # get values from variable
+  eval _values=\"\$$_listname\"
+  # backup the field separator
+  _colcon_prepend_unique_value_IFS=$IFS
+  IFS=":"
+  # start with the new value
+  _all_values="$_value"
+  # workaround SH_WORD_SPLIT not being set in zsh
+  if [ "$(command -v colcon_zsh_convert_to_array)" ]; then
+    colcon_zsh_convert_to_array _values
+  fi
+  # iterate over existing values in the variable
+  for _item in $_values; do
+    # ignore empty strings
+    if [ -z "$_item" ]; then
+      continue
+    fi
+    # ignore duplicates of _value
+    if [ "$_item" = "$_value" ]; then
+      continue
+    fi
+    # keep non-duplicate values
+    _all_values="$_all_values:$_item"
+  done
+  unset _item
+  # restore the field separator
+  IFS=$_colcon_prepend_unique_value_IFS
+  unset _colcon_prepend_unique_value_IFS
+  # export the updated variable
+  eval export $_listname=\"$_all_values\"
+  unset _all_values
+  unset _values
+
+  unset _value
+  unset _listname
+}
+
+# since a plain shell script can't determine its own path when being sourced
+# either use the provided COLCON_CURRENT_PREFIX
+# or fall back to the build time prefix (if it exists)
+_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/nvidia/zkf/rechange_ws/install/interface"
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+  if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then
+    echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2
+    unset _colcon_package_sh_COLCON_CURRENT_PREFIX
+    return 1
+  fi
+  COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX"
+fi
+unset _colcon_package_sh_COLCON_CURRENT_PREFIX
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_sh_source_script() {
+  if [ -f "$1" ]; then
+    if [ -n "$COLCON_TRACE" ]; then
+      echo "# . \"$1\""
+    fi
+    . "$@"
+  else
+    echo "not found: \"$1\"" 1>&2
+  fi
+}
+
+# source sh hooks
+_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/interface/hook/cmake_prefix_path.sh"
+_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/interface/hook/ld_library_path_lib.sh"
+_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/interface/local_setup.sh"
+
+unset _colcon_package_sh_source_script
+unset COLCON_CURRENT_PREFIX
+
+# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff