You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a set of projects (bindings, code generator, examples and more) that enables developers to write ROS2
15
-
applications in Rust.
11
+
This is a set of projects (the `rclrs` client library, code generator, examples and more) that
12
+
enables developers to write ROS 2 applications in Rust.
16
13
17
-
Features
18
-
--------
14
+
Features and limitations
15
+
------------------------
19
16
20
17
The current set of features include:
21
-
-Generation of all builtin ROS types
18
+
-Message generation
22
19
- Support for publishers and subscriptions
23
20
- Tunable QoS settings
24
21
25
-
What's missing?
26
-
---------------
27
-
28
-
Lots of things!
29
-
- Component nodes
30
-
- Clients and services
31
-
- Tests
32
-
- Documentation
22
+
Lots of things are still missing however, see the [issue list](https://github.com/ros2-rust/ros2_rust/issues) for an overview. You are very welcome to [contribute](docs/CONTRIBUTING.md)!
33
23
34
-
### Limitations
35
-
36
-
- The `rclrs` interface is very limited for now and might not be idiomatic yet, any help and suggestion on the interface would be greatly appreciated
37
-
- Due to the current ROS2 support of non-default clients, packages containing definitions of messages used in Rust crates must be present in the current workspace; otherwise message crates generation won't be triggered
24
+
Since the client library is still rapidly evolving, there are no stability guarantees for the moment.
38
25
39
26
Sounds great, how can I try this out?
40
27
-------------------------------------
41
28
42
-
Here, the Foxy distribution of ROS 2 is used, but newer distributions can be used by simply replacing 'foxy' with the distribution name.
29
+
Here are the steps for building the `ros2_rust` examples in a vanilla Ubuntu Focal installation. See the [in-depth guide for building `ros2_rust` packages](docs/BUILDING.md) for more details and options, including a Docker-based setup.
43
30
44
-
```
45
-
# First, make sure to have ROS 2 and vcstool installed (alternatively, install vcstool with pip):
It's normal to see a `Some selected packages are already built in one or more underlay workspace` warning. This is because the standard message definitions that are part of ROS 2 need to be regenerated in order to create Rust bindings.
62
-
63
-
If something goes very wrong and you want to start fresh, make sure to delete all `install*`, `build*` and `.cargo` directories. Also, make sure your terminal does not have any install sourced (check with `echo $AMENT_PREFIX_PATH`, which should be empty).
64
-
65
-
66
-
### Building with `cargo`
67
-
As an alternative to `colcon`, Rust packages can be built with pure `cargo`.
68
-
69
-
However, this will not work out of the box, since the `Cargo.toml` files contain dependencies like `rclrs = "*"`, even though `rclrs` is not published on crates.io. This is intentional and follows ROS 2's principle for packages to reference their dependencies only with their name, and not with their path. At build-time, these dependencies are resolved to a path to the local package by `colcon`, and written into `.cargo/config.toml`. Therefore, the package in question should be built with `colcon` once, and after that `cargo` will be able to use the `.cargo/config.toml` file to find all dependencies.
70
-
71
-
A second catch is that `cargo` message packages link against native libraries. A convenient way to ensure that they are found is to also source the setup script produced by `colcon`.
72
-
73
-
As an example, here is how to build `rclcrs_examples` with `cargo`:
74
-
46
+
colcon build
75
47
```
76
-
# Initial build of the package with colcon
77
-
# Compare .cargo/config.toml with and without the --lookup-in-workspace flag to see its effect
0 commit comments