Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7c2ad07
docs: update design document for Zenoh connector
lxsaah Sep 26, 2026
8e182ca
feat(core): RouteMeta route accessors and reserved link config keys
lxsaah Sep 26, 2026
6fa88a8
docs(design): 053 rev 8 — assess hiroz; use it as a test oracle
lxsaah Sep 26, 2026
efe890f
feat(data-contracts): WireFormat and per-link aimdb.wire_format record
lxsaah Sep 26, 2026
e05a1e2
feat: add aimdb-cdr crate for no_std serde encoding of OMG CDR (XCDR1)
lxsaah Sep 27, 2026
eefe2c2
Merge main into feat/aimdb-zenoh-connector
lxsaah Oct 7, 2026
2baf337
docs(design): 053 rev 9 — rebase on 054/055 connector structure (#302)
lxsaah Oct 7, 2026
2cf70eb
docs(design): 053 rev 9 consistency pass after 054/055
lxsaah Oct 8, 2026
bd8cc4b
docs(design): add 053 implementation plan
lxsaah Oct 8, 2026
f5ef5b3
docs(design): 053 Q7 answered — wait for a zenoh-nostd release
lxsaah Oct 8, 2026
38f0571
feat(data-contracts): add RosMessage and ROS type-name checks (#303)
lxsaah Oct 8, 2026
a776123
feat(data-contracts): add link_codecs::Cdr behind linkable-cdr (#304)
lxsaah Oct 8, 2026
45bf153
feat(derive): add #[derive(RosMessage)] (#305)
lxsaah Oct 8, 2026
97ab5a3
feat(core)!: route facts for connectors: RouteInfo::type_id, InboundD…
lxsaah Oct 8, 2026
bf55130
feat(zenoh): add aimdb-zenoh-connector with ZenohGrammar (design 053 …
lxsaah Oct 8, 2026
3d6649c
docs(design): 053 rev 10 — spike answers S2 and S6 (#308)
lxsaah Oct 8, 2026
d05cab2
feat(zenoh): add the rmw_zenoh profile (#309)
lxsaah Oct 8, 2026
6753e13
feat(zenoh): native ZenohConnector for zenoh:// links (design 053 s08…
lxsaah Oct 8, 2026
ebfcd8e
feat(zenoh): Ros2Connector for outbound ros2:// links (design 053 s09…
lxsaah Oct 9, 2026
b29dbe2
feat(zenoh): inbound ros2:// links (design 053 s10) (#312)
lxsaah Oct 9, 2026
8c01a05
feat(zenoh): one session for ZenohConnector and its Ros2Connector (#313)
lxsaah Oct 9, 2026
7e9012f
docs: Zenoh connector and ROS 2 for the native release (#315)
lxsaah Oct 9, 2026
d3ecad8
ci: ros2:// interop against Jazzy and Lyrical (#314)
lxsaah Oct 9, 2026
9740561
ci: drop the Zenoh feature branch from the pull_request trigger
lxsaah Oct 9, 2026
4d6e85f
fix(zenoh): address the #316 verification findings
lxsaah Oct 11, 2026
ab589db
docs(zenoh): document the zenoh#2836 exposure and fix two nits (#317)
lxsaah Oct 11, 2026
0d202dd
docs: remove upstream issue notes and 053 implementation plan (#318)
lxsaah Oct 12, 2026
b885b05
ci(deny): ignore RUSTSEC-2024-0449 (unsafe-libyaml unmaintained) (#319)
lxsaah Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,23 @@ ignore = [
"RUSTSEC-2026-0098", # rustls-webpki: URI name constraints
"RUSTSEC-2026-0099", # rustls-webpki: name constraints vs wildcard names
"RUSTSEC-2026-0104", # rustls-webpki: panic in CRL parsing
"RUSTSEC-2025-0134", # rustls-pemfile unmaintained (transitive via rumqttc)
"RUSTSEC-2025-0134", # rustls-pemfile unmaintained (transitive via rumqttc and zenoh-link-commons)

# lz4_flex 0.10.0, a required dependency of zenoh-transport 1.10.1 (the
# latest zenoh). zenoh pins `lz4_flex = "0.10.0"`; the fixed versions are
# 0.11.6+ and 0.12.1+, out of semver range, so no in-range upgrade or
# `[patch]` exists.
#
# Not reachable through aimdb-zenoh-connector. The advisory is about
# decompression; zenoh-transport decompresses only in
# `WBatch::decompress`, behind `#[cfg(feature = "transport_compression")]`.
# The connector depends on zenoh without default features and never enables
# compression; `make test-embedded` asserts that. Its other lz4_flex calls
# only size buffers (`get_maximum_output_size`).
#
# Tracked upstream: eclipse-zenoh/zenoh#2589, bump in #2499. Drop this when
# a zenoh release takes it.
"RUSTSEC-2026-0041", # lz4_flex: uninitialized memory in decompression
"RUSTSEC-2024-0436", # paste unmaintained (via zenoh-keyexpr/token-cell)
"RUSTSEC-2024-0449", # unsafe-libyaml unmaintained (via serde_yaml from zenoh-config; the connector builds Config in code, never from YAML)
]
21 changes: 21 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,27 @@ jobs:
cargo +nightly miri test -p aimdb-embassy-adapter \
--no-default-features --features "alloc,embassy-sync,embassy-time"

# ros2:// against real ROS 2 distributions: rmw_zenohd and the ros2 CLI
ros2-interop:
name: ROS 2 interop (${{ matrix.distro }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
distro: [jazzy, lyrical]
steps:
- uses: actions/checkout@v7
with:
submodules: recursive

- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v2
with:
rustflags: ""

- name: Interop with ROS 2 ${{ matrix.distro }}
run: make ros2-interop DISTRO=${{ matrix.distro }}

# Comprehensive validation using Makefile
comprehensive-check:
name: Comprehensive Development Check
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,7 @@ jobs:

- name: Run cargo-deny
run: cargo deny check

# `cargo deny check` sees default features only, which leave `zenoh` out.
- name: Run cargo-deny on the Zenoh connector's std graph
run: cargo deny --features "std,transport-tls,transport-quic,transport-ws,auth-usrpwd" --manifest-path aimdb-zenoh-connector/Cargo.toml check
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
> - [aimdb-codegen/CHANGELOG.md](aimdb-codegen/CHANGELOG.md)
> - [aimdb-data-contracts/CHANGELOG.md](aimdb-data-contracts/CHANGELOG.md)
> - [aimdb-derive/CHANGELOG.md](aimdb-derive/CHANGELOG.md)
> - [aimdb-cdr/CHANGELOG.md](aimdb-cdr/CHANGELOG.md)
> - [aimdb-tokio-adapter/CHANGELOG.md](aimdb-tokio-adapter/CHANGELOG.md)
> - [aimdb-embassy-adapter/CHANGELOG.md](aimdb-embassy-adapter/CHANGELOG.md)
> - [aimdb-mqtt-connector/CHANGELOG.md](aimdb-mqtt-connector/CHANGELOG.md)
> - [aimdb-zenoh-connector/CHANGELOG.md](aimdb-zenoh-connector/CHANGELOG.md)
> - [aimdb-knx-connector/CHANGELOG.md](aimdb-knx-connector/CHANGELOG.md)
> - [aimdb-websocket-connector/CHANGELOG.md](aimdb-websocket-connector/CHANGELOG.md)
> - [aimdb-uds-connector/CHANGELOG.md](aimdb-uds-connector/CHANGELOG.md)
Expand All @@ -29,6 +31,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added — Zenoh connector and ROS 2 topics

- **AimDB records as ROS 2 topics, with no ROS install on the AimDB side.**
`Ros2Connector` speaks rmw_zenoh's conventions (data keys, liveliness
tokens, attachments, CDR), so `ros2 node list`, `ros2 topic info -v`,
`ros2 topic echo` and `ros2 topic pub` see AimDB as a ROS node. A struct
becomes a ROS message with `#[derive(RosMessage)]`.
([aimdb-zenoh-connector](aimdb-zenoh-connector/CHANGELOG.md),
[aimdb-data-contracts](aimdb-data-contracts/CHANGELOG.md),
[aimdb-derive](aimdb-derive/CHANGELOG.md))
- **`zenoh://` links** with Zenoh key expressions, captures and keys, and a
gateway that bridges devices on plain Zenoh to ROS 2 on one router
connection. ([aimdb-zenoh-connector](aimdb-zenoh-connector/CHANGELOG.md))
- **`aimdb-cdr`**: `no_std` serde for OMG CDR, the ROS 2 wire format.
([aimdb-cdr](aimdb-cdr/CHANGELOG.md))
- **Connectors learn each link's record type and wire format**:
`RouteInfo::type_id`, `InboundDispatch::routes()` and the reserved
`aimdb.wire_format` link key. ([aimdb-core](aimdb-core/CHANGELOG.md))

### Added — wildcard inbound links

- **One inbound link can feed many topics into one record.**
Expand Down
Loading
Loading