Philipp Oppermann
e8b87f0338
Merge branch 'main' into c++-ros2-bridge
2 years ago
Philipp Oppermann
2eeb40b1ff
Fix operator API: Box optional error string since `Option<String>` is not FFI-safe
2 years ago
Philipp Oppermann
dc8a794835
Fix some dead code warnings
2 years ago
Philipp Oppermann
0074ffd6e8
Refactor C++ ROS2 subscription API to make downcasts work
Use the subscriber type for downcasting to ensure that the correct type is used. Also, store an unique ID per subscriber to differentiate subscriptions of same type after merging.
2 years ago
haixuanTao
4ca53258ad
Move opentelemetry implementation to `dora metrics`
2 years ago
Philipp Oppermann
0d75f5391f
First implementation of subscription stream merging and downcasting
2 years ago
haixuanTao
0725620eab
Simplyfing the metrics functionality by using meter provider instead of
the global meter.
2 years ago
Haixuan Xavier Tao
80827394f1
Merge pull request #419 from dora-rs/ros2-forward-slash
Use forward slash as it is default way of defining ros2 topic
2 years ago
haixuanTao
e12b29dcc6
Make type setting available for both forward slash and `::`
2 years ago
Philipp Oppermann
c417aa4051
Merge pull request #418 from dora-rs/test-to-ros2-fix
Test ros2 type info
2 years ago
Philipp Oppermann
1addfa385a
Add more context to error messages when serializing nested message
2 years ago
haixuanTao
c878862966
Use forward slash as it is default way of defining ros2 topic
2 years ago
Philipp Oppermann
1e510a4236
Improve error message: print message type and value
Co-authored-by: Haixuan Xavier Tao <tao.xavier@outlook.com>
2 years ago
haixuanTao
cf7c5552d1
Using python file to declare test array and test them
2 years ago
Philipp Oppermann
20434e6492
Move c++ ros2 bridge generation to node API crate to allow stream merging
Stream merging based on the cxx crate requires the bridge and the api to share an `ExternalEvents` type, which is only possible if the two bridge modules are defined in the same crate.
2 years ago
Philipp Oppermann
9eecf22fee
Rename method
2 years ago
Philipp Oppermann
efb6a51c22
Fix: Wrap deserialized sequences into list of length 1
Required because arrow uses column-oriented data format, which requires all struct fields to have length 1.
2 years ago
Philipp Oppermann
4b7c43c323
Fix some unused code and import warnings
2 years ago
haixuanTao
945b3f887b
Changing `Struct` to `TupleStruct`
2 years ago
Philipp Oppermann
63188965c5
Add support for serializing arrow `BinaryArray` types
Arrow has a special `BinaryArray` type for storing lists of variable-sized binary data efficiently. This type is equivalent to a `ListArray` of `PrimitiveArray<u8>`, but it is a different data type.
This commit updates the Python ROS2 serialization code to permit BinaryArray for all uint8 array or sequence fields.
2 years ago
Philipp Oppermann
e5a037afea
Improve error messages
2 years ago
Philipp Oppermann
abc057dda2
Remove commented out code
2 years ago
Philipp Oppermann
4b8dbfc7c2
Add support for (de)serializing arrays/sequences of structs and strings
2 years ago
Philipp Oppermann
13273824e1
Rework python ROS2 (de)serialization using parsed ROS2 messages directly
Use ROS2 types as type info to ensure that serialization type matches exactly. This is necessary because the types need to match exactly, otherwise the serialization or deserialization will result in invalid data.
Using arrow schemas to specify the ROS2 message types does not work because not all ROS2 message types can be represented. For example, ROS2 serializes arrays with known length differently than sequences with dynamic length.
2 years ago
haixuanTao
4085ebc46b
Make PrimitiveArray only serialize one element at a time
2 years ago
haixuanTao
f436fafc07
Serialize by looping over the array
This should fix: https://github.com/dora-rs/dora-autoware/discussions/9
2 years ago
haixuanTao
64fece9c47
Generate the right size of default value for array
2 years ago
Philipp Oppermann
2bb519347f
Fix ros2-bridge build without `generate-messages` feature again
2 years ago
Philipp Oppermann
e701eb4182
Fix: enable sync module of tokio
2 years ago
Philipp Oppermann
cb69a033f0
Wait until `DestroyResult` is sent before exiting dora-daemon
Tokio background tasks are canceled when the program exits, so we need some additional synchronization to ensure that the `DestroyResult` is actually sent out.
2 years ago
Philipp Oppermann
cf7e2b658a
Hide method name warnings in generated publish code
2 years ago
Philipp Oppermann
c01880f70a
Add support for setting QoS from C++
2 years ago
Philipp Oppermann
874ec96a3e
Provide ROS2 publish function to c++
2 years ago
haixuanTao
0568656ef0
Remove unused dependencies for faster compile time
2 years ago
Philipp Oppermann
7baecea71d
Provide functions to create topics and publishers
2 years ago
Philipp Oppermann
6153f6629a
Export function to create ROS2 context
2 years ago
Philipp Oppermann
e818983549
Generate topic definitions for all messages types
2 years ago
haixuanTao
fd7c0939df
Run `cargo fmt --all`
2 years ago
Haixuan Xavier Tao
e35ed75e87
Merge pull request #398 from dora-rs/fix-window-path-error
Fix window path error
2 years ago
haixuanTao
c82c853d02
Download weights inside of dora to bypass yolov8 windows error
Being able to download a file within a yaml declaration can later be integrated as a yaml feature.
See: https://github.com/ultralytics/ultralytics/pull/7432#issuecomment-1883383862
2 years ago
haixuanTao
afcfec81f1
Fix path by using ; instead of :
2 years ago
haixuanTao
ea1259da20
Bump which version
2 years ago
haixuanTao
82f2794916
Only use python for windows and python3 for linux
2 years ago
haixuanTao
20c02089b6
Fix Python CI on windows
2 years ago
Philipp Oppermann
b5cbea1a20
Include ros2-bridge header files in `dora-node-api-cxx`
2 years ago
Philipp Oppermann
4c64cad6ed
Replace proc macro by build script to generate C++ bindings
The `cxx_build` crate does not support proc macro output (see https://github.com/dtolnay/cxx/issues/808 ), so we have to generate a standard Rust source file instead.
2 years ago
Philipp Oppermann
f9cfedc302
Move code generation to `msg-gen` crate
2 years ago
Philipp Oppermann
bd84baba28
Fix impl blocks for generated messages
2 years ago
Philipp Oppermann
b9e5e533e0
Redesign ROS2 message struct generator to support `cxx_bridge`
2 years ago
Philipp Oppermann
fa9e2a4a71
Merge pull request #397 from dora-rs/update-ros2-client
Update `ros2-client` and `rustdds` dependencies to latest fork version
2 years ago