safe_drive 0.4.3

safe_drive: Formally Specified Rust Bindings for ROS2
Documentation
# Generating Messages Included by safe_drive

For client applications, `safe_drive` provides a way to transpile from ROS2's .idl files to Rust crates by using [safe_drive_msg](https://github.com/tier4/safe_drive_msg).
`safe_drive` itself includes ROS2's some basic messages to handle parameter
servers.

The basic messages can be generated by [ros2msg_to_rs](https://github.com/tier4/ros2msg_to_rs),
and located in [src/msg](https://github.com/tier4/safe_drive/tree/main/src/msg).

`safe_drive` contains [common_interfaces](https://github.com/ros2/common_interfaces.git),
[unique_identifier_msgs](https://github.com/ros2/unique_identifier_msgs.git),
and [rcl_interfaces](https://github.com/ros2/rcl_interfaces.git).
These messages can be transpiled as follows.
`{safe_drive}` of the following means a directory path to `safe_drive`.

```text
$ git clone https://github.com/ros2/common_interfaces.git -b humble
$ ros2msg_to_rs --disable-common-interfaces -s crate -i common_interfaces -o {safe_drive}/src/msg/humble/common_interfaces
```

```text
$ mkdir ros2msg && cd ros2msg
$ git clone https://github.com/ros2/unique_identifier_msgs.git -b humble
$ ros2msg_to_rs --disable-common-interfaces -s crate -i . -o {safe_drive}/src/msg/humble/ros2msg
```

```text
$ git clone https://github.com/ros2/rcl_interfaces.git -b humble
$ rm -rf rcl_interfaces/test_msgs rcl_interfaces/builtin_interfaces
$ ros2msg_to_rs --disable-common-interfaces -s crate -i rcl_interfaces -o {safe_drive}/src/msg/humble/interfaces
```

`-s crate` means `crate` is the name of top module.
`-i` and `-o` means input and output directories.
Because `safe_drive` defines `builtin_interfaces` internally, it must be removed before transpilation.

To support newer version of ROS2, these files should be updated.