Skip to content

Roslibrust tf support #55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 128 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
22ba38a
interim checkin of roslibrust version of tf lookup
lucasw Jul 21, 2024
37c0ef1
interim checkin, using modified roslibrust with functions for operati…
lucasw Jul 21, 2024
1737819
use chrono TimeDelta instead of adding comparison to roslibrust Time …
lucasw Jul 21, 2024
f115cba
interim checkin, trying to update tf buffer from tokio select loop bu…
lucasw Jul 22, 2024
71e7020
now have working tf echo update loop that waits for 1 second before l…
lucasw Jul 22, 2024
ca85a1b
use first two arguments as frame1 and frame2
lucasw Jul 22, 2024
18ae2d8
incorporate static transforms but it doesn't handle transitions betwe…
lucasw Jul 22, 2024
036c8fb
restore lookup to most recent
lucasw Jul 22, 2024
41053f5
the get latest logic is wrong here, need to find the most recent of t…
lucasw Jul 22, 2024
5a4035e
under-tested finding of minimum timestamp when wanting a tf lookup to…
lucasw Jul 22, 2024
609c4a5
interim checkin to fix finding the path between two frames and gettin…
lucasw Jul 23, 2024
ea2f2a8
interim checkin, compiles but panics, turn getting path to root into …
lucasw Jul 23, 2024
832b98a
lookups now appear to be working with a mix of static and dynamic tra…
lucasw Jul 23, 2024
811fe47
making more roslibrust tests pass
lucasw Jul 23, 2024
5ed7a8c
make doc tests pass, but by commenting out the doc code
lucasw Jul 23, 2024
c9338ab
fix transform direction, now multiple step chains are matching what t…
lucasw Jul 23, 2024
7b72e3f
experimenting with changing order of operations in tokio loop- saw so…
lucasw Jul 23, 2024
00addf0
clean up time conversion some
lucasw Jul 23, 2024
3bc5b13
don't need async on some of these tf_listener functions
lucasw Jul 24, 2024
2adf5b8
interim checkin, not compiling- change the transform storage to be ke…
lucasw Jul 24, 2024
57d8a1a
new interpolation system appears to be working, should be faster than…
lucasw Jul 25, 2024
8752843
return identity transform if from and to frames are the same
lucasw Jul 29, 2024
d1a12fd
use upstream roslibrust
lucasw Jul 31, 2024
b9de7a3
use tokio interval to do echo update
lucasw Jul 31, 2024
d0f8b61
update run instructions
lucasw Jul 31, 2024
dc52b74
moving the tf listener update inside tf_listener, resulting in nested…
lucasw Jul 31, 2024
92231e5
use latest released roslibrust for message size fix
lucasw Jul 31, 2024
a656752
point to more information, remove ci status indicators
lucasw Sep 5, 2024
b9d540a
cargo fmt
lucasw Sep 5, 2024
ddd3159
cargo clippy recommendations
lucasw Sep 5, 2024
8a8dd7a
updated readme with links to more details, document the echo binary
lucasw Sep 5, 2024
efec86e
replace select with tokio thread, receive on tf and tf_static in two …
lucasw Sep 7, 2024
3e7907a
github action runs on all branches and only builds and tests tf_rosli…
lucasw Sep 7, 2024
58aba77
remove spellcheck from github action
lucasw Sep 7, 2024
39bb998
set ROS_PACKAGE_PATH in github action
lucasw Sep 7, 2024
b5d0004
debug ROS_PACKAGE_PATH in github action
lucasw Sep 7, 2024
be178c6
use RwLock instead of Mutex in tf listener
lucasw Sep 7, 2024
9dba8fe
additional apt installs for github action
lucasw Sep 7, 2024
be91464
remove underscore prefix for struct field names
lucasw Sep 7, 2024
1274401
allow dead code for newest_stamp()
lucasw Sep 7, 2024
2fa36f8
remove cspell.json
lucasw Sep 7, 2024
693f51a
remove workspace.lints.rust Cargo.toml section
lucasw Sep 7, 2024
235c7a4
also remove other lint mentions
lucasw Sep 7, 2024
cdf37cf
probably unnecessary optimization to batch up incoming tfm messages b…
lucasw Sep 7, 2024
306092d
remove spell-check.sh
lucasw Sep 8, 2024
e9a8842
remove rustfmt.toml
lucasw Sep 8, 2024
ec875cf
removing tf_r2r
lucasw Sep 8, 2024
3a8cde8
removing tf_rosrust
lucasw Sep 8, 2024
d3bd1b1
remove tf_r2r and tf_rosrust from Cargo.toml
lucasw Sep 8, 2024
544ca9d
remove build.rs
lucasw Sep 8, 2024
4bcd097
print the tf tree similar to tf_demo tf_tree.py
lucasw Sep 8, 2024
72f2370
sort the tf tree output, and output all the parent-children pairs- ne…
lucasw Sep 9, 2024
9fa38af
use latest roslibrust
lucasw Sep 10, 2024
cbcad8d
update tf broadcaster to set latching
lucasw Sep 10, 2024
858b561
start of transform publisher node
lucasw Sep 10, 2024
a8d9fc6
load a toml file full of transforms and publish them repeatedly with …
lucasw Sep 10, 2024
c7b6ade
use subscribe_any roslibrust for consistency with other crates
lucasw Sep 11, 2024
a3a73d9
use more concise unwrap_or() for default roll-pitch-yaw
lucasw Sep 11, 2024
c7ef97f
move loading transforms out of toml into tf_util so other crates can …
lucasw Sep 16, 2024
67272bd
convert quaternion to roll-pitch-yaw in tf_echo
lucasw Sep 16, 2024
28db1fd
make tf_buffer more public
lucasw Sep 16, 2024
8ce20c7
have single source for ros message generation
lucasw Sep 16, 2024
8febfe4
clippy in the github action wanted a default method for TfBuffer, so …
lucasw Sep 16, 2024
6a589be
tf_capture outputs a toml of current transforms after looking up tran…
lucasw Sep 21, 2024
2344134
tf2tf implementation lives here now
lucasw Sep 22, 2024
818b435
cargo fmt on new tf2tf function
lucasw Sep 22, 2024
f62d85e
make zeroing xyz a tuple
lucasw Sep 22, 2024
8ad63bf
changing tf error CouldNotFindTransform to return a string descriptio…
lucasw Sep 28, 2024
07655b5
less verbose when gathering transforms
lucasw Sep 30, 2024
304c2a2
wait for transforms for longer in tf_capture, and actually use the ne…
lucasw Sep 30, 2024
cd29cef
using updated roslibrust
lucasw Oct 1, 2024
e8ae2e4
make tf_tree wait longer to more reliably collect a complete tree
lucasw Oct 1, 2024
1036dfd
exit tokio tasks instead of panic, and trying to force the tf_listene…
lucasw Oct 7, 2024
cfd0571
changing error types to be more helpful, also error out if a child is…
lucasw Oct 8, 2024
cb2cb4d
rename static_tf to is_static, and print which it is on future/past t…
lucasw Oct 8, 2024
adb7d66
making stamp_to_f64 take a reference, forcing nsecs to be < 1e9 for T…
lucasw Oct 8, 2024
496a4ea
debug functions for tf buffer and chains
lucasw Oct 8, 2024
0fc186b
refined tf chain debug print
lucasw Oct 8, 2024
b161899
disable lookup in past error println
lucasw Oct 8, 2024
86bee09
made a LookupTransform trait that TfListener and TfBuffer implement
lucasw Oct 8, 2024
d723169
load a toml of a bunch of lookup-broadcast pairs and then do lookups,…
lucasw Oct 12, 2024
a3e94d4
make tf2tfs compare timestamps with last published times before publi…
lucasw Oct 12, 2024
baadbf8
can now get multiple roots out of tf buffer, print them with tf_tree
lucasw Oct 12, 2024
e773d40
have tf_tree print out update rates for each frame
lucasw Oct 12, 2024
ca0d58a
tf_from_joints publishes tf from JointState messages using a toml con…
lucasw Oct 14, 2024
e164431
move most of tf_from_joints into tf_util, add basic unit test
lucasw Oct 14, 2024
30b44ee
add sensor_msgs to ROS_PACKAGE_PATH
lucasw Oct 14, 2024
b05fb16
need a bin entry for tf_from_joints so it will install
lucasw Oct 18, 2024
051327d
making all the binaries cleanup properly, and making the log output v…
lucasw Oct 21, 2024
9af52f8
increase queue sizes for tf_from_joints
lucasw Oct 23, 2024
30564e9
add clap and wait arg to tf_tree, next add it to other binaries at le…
lucasw Oct 29, 2024
bf29f96
add clap cli to tf_capture
lucasw Oct 29, 2024
77b1f2e
add clap to tf_publisher, can change update interval
lucasw Oct 29, 2024
2ada866
tf2tfs now uses clap (so needs -i foo.toml now), also outputs error m…
lucasw Oct 29, 2024
c58a1d9
tf_from_joints now using clap, need to use -i foo.toml now
lucasw Oct 29, 2024
efda8ad
move tf tree printing into tf_util so other applications can use it
lucasw Oct 31, 2024
1eb48ef
add a new create that can depend on both mcap_tools and tf_roslibrust…
lucasw Oct 31, 2024
2c2745f
mcap_tools doesn't depend on tf_roslibrust, but want to avoid depende…
lucasw Oct 31, 2024
6703ecd
make a roslibrust_util to hold message definitions in, and helpers fo…
lucasw Nov 2, 2024
7c548a3
remove depenedency on roslibrust_codegen_macro- but still need roslib…
lucasw Nov 3, 2024
423374b
make tf_from_joints use roslibrust_util get params and remaps function
lucasw Nov 3, 2024
70d20fd
put major common dependencies into workspace
lucasw Nov 5, 2024
c5148a9
use latest version of mcap_tools
lucasw Nov 5, 2024
12a57d7
add method to get sorted gaps between transforms in a transform chain…
lucasw Nov 5, 2024
95fcc8c
get statistics on timestamp gaps between tf transform pairs
lucasw Nov 5, 2024
8119678
cargo clippy in the github action suggested this change to taking a s…
lucasw Nov 6, 2024
dbbe834
run cargo test/fmt/clippy on all the packages, not just tf_roslibrust
lucasw Nov 6, 2024
a17dd35
clippy corrections
lucasw Nov 6, 2024
653d60c
using remaps for tf topic in tf_from_joints
lucasw Nov 6, 2024
ddf6bc1
use latest roslibrust
lucasw Nov 6, 2024
fec06dc
experimenting with tokio command execution, next step is to provide a…
lucasw Nov 18, 2024
8ff593f
catch sigint and wait for running processes to shut down (which also …
lucasw Nov 18, 2024
bf03b4b
use a toml file to specify commands and args, looks to be working ok …
lucasw Nov 18, 2024
78992ae
now can provide args to do string substition in the launcher toml fil…
lucasw Nov 18, 2024
e6338ff
can now replace toml defined args through the command line
lucasw Nov 18, 2024
c316ee4
instructions for how to use launcher
lucasw Nov 18, 2024
c6062f7
move creation of join handles to function
lucasw Nov 19, 2024
38bb19e
propagate non-zero exit codes to output of launcher
lucasw Nov 19, 2024
0b2dc5e
update to latest roslibrust, which uses i32 in timestamps (so runs ou…
lucasw Dec 2, 2024
a720996
cargo fmt on tf_buffer.rs
lucasw Dec 3, 2024
dbbc434
convenience struct for storing the latest value from a subscriber
lucasw Dec 16, 2024
cb08286
need nav_msgs for roslibrust_util example
lucasw Dec 19, 2024
4f83a40
experimenting with cloning LatestFromSubscriber, and added test for i…
lucasw Dec 19, 2024
9a4a0a8
updating to roslibrust v0.12.2 (with my patches)
lucasw Jan 10, 2025
3ab2760
update tf_mcap to use latest mcap_tools
lucasw Jan 10, 2025
f0d7d4a
convert keyboard input into sensor_msgs Joy messages
lucasw Jan 22, 2025
27e5e4b
more key bindings for key-to-joy message
lucasw Jan 22, 2025
0a5d71e
update roslibrust to work with more ros messages
lucasw Apr 17, 2025
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
49 changes: 0 additions & 49 deletions .cspell.json

This file was deleted.

15 changes: 0 additions & 15 deletions .github/.cspell/project-dictionary.txt

This file was deleted.

6 changes: 0 additions & 6 deletions .github/.cspell/rust-dependencies.txt

This file was deleted.

99 changes: 37 additions & 62 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 15 * * 0,4' # Every Monday and Friday at 00:00 JST

Expand All @@ -15,7 +13,6 @@ env:
RUST_BACKTRACE: 1
RUSTDOCFLAGS: -D warnings
RUSTFLAGS: -D warnings
RUSTUP_MAX_RETRIES: 10

defaults:
run:
Expand All @@ -29,73 +26,51 @@ jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build

test:
name: Test Suite
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: echo "ROS2_DISTRO=humble" >>"${GITHUB_ENV}"
- name: Install ROS2
- name: apt update
run: |
# for tf_r2r
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt-get update
sudo apt-get install -y ros-$ROS2_DISTRO-ros-core ros-$ROS2_DISTRO-geometry-msgs ros-$ROS2_DISTRO-tf2-msgs
- name: cargo test
run: |
# for tf_r2r
source /opt/ros/$ROS2_DISTRO/setup.bash
cargo test --all-features

fmt:
name: Rustfmt
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- run: cargo fmt --all --check
- name: apt upgrade
run: |
sudo apt-get upgrade

clippy:
name: Clippy
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: echo "ROS2_DISTRO=humble" >>"${GITHUB_ENV}"
- name: Install ROS2
- name: apt rust installs
run: |
# for tf_r2r
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt-get update
sudo apt-get install -y ros-$ROS2_DISTRO-ros-core ros-$ROS2_DISTRO-geometry-msgs ros-$ROS2_DISTRO-tf2-msgs
- name: cargo clippy
sudo apt-get install -yqq cargo
sudo apt-get install -yqq rustc
sudo apt-get install -yqq librust-openssl-dev
# currently these are 1.82 (but are 1.75 on non-github-action Ubuntu 22.04)
# mostly this makes clippy fail on more things
cargo --version
rustc --version

- name: more apt installs
run: |
# for tf_r2r
source /opt/ros/$ROS2_DISTRO/setup.bash
cargo clippy --all-features --all-targets
sudo apt-get install -yqq python3-rosmsg pkg-config rospack-tools
sudo apt-get install -yqq libactionlib-msgs-dev python3-actionlib-msgs ros-actionlib-msgs
sudo apt-get install -yqq libgeometry-msgs-dev python3-geometry-msgs ros-geometry-msgs
sudo apt-get install -yqq libnav-msgs-dev ros-nav-msgs
sudo apt-get install -yqq libsensor-msgs-dev python3-sensor-msgs ros-sensor-msgs
sudo apt-get install -yqq libstd-msgs-dev python3-std-msgs ros-std-msgs
sudo apt-get install -yqq libstd-srvs-dev python3-std-srvs ros-std-srvs
sudo apt-get install -yqq libtf2-msgs-dev python3-tf2-msgs ros-tf2-msgs
rospack find geometry_msgs
echo "ROS_PACKAGE_PATH=`rospack find geometry_msgs`:`rospack find nav_msgs`:`rospack find tf2_msgs`:`rospack find sensor_msgs`:`rospack find std_msgs`:`rospack find actionlib_msgs`" >> $GITHUB_ENV

spell-check:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- run: tools/spell-check.sh
- run: |
! [[ -z "$ROS_PACKAGE_PATH" ]]

- run: echo $ROS_PACKAGE_PATH

- run: cargo build

- run: cargo test

- run: cargo fmt --check

- run: cargo clippy
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
/target
Cargo.lock
.vscode/
Loading