Many helpful custom interfaces are already available
_*interfaces suffix. So, if your robot is named abc, you should use abc_*interfacesros2 pkg create my_robot_interfaces
ament_cmake is the one used by defaultDefault file structure of package
.
├── CMakeLists.txt
├── include
│ └── my_robot_interfaces
├── package.xml
└── src
Required file structure
.
├── CMakeLists.txt
├── msg
└── package.xml
After <buildtool_depend>ament_cmake</buildtool_depend> add the following lines
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>
complete code:
<?xml version="1.0"?>
<?xml-model href="<http://download.ros.org/schema/package_format3.xsd>" schematypens="<http://www.w3.org/2001/XMLSchema>"?>
<package format="3">
<name>my_robot_interfaces</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="[email protected]">ed</maintainer>
<license>TODO: License declaration</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>