Skip to content

lucasw/tf_roslibrust

This branch is 215 commits ahead of, 1 commit behind arjo129/rustros_tf:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

27e5e4b · Jan 22, 2025
Dec 19, 2024
Nov 19, 2024
Jan 22, 2025
Jan 10, 2025
Nov 6, 2024
Jan 10, 2025
Nov 3, 2024
Jan 22, 2025
Jan 22, 2025
Sep 5, 2024

Repository files navigation

This project is forked from arjo129 rustros_tf, MaxiMaerz rustros_tf, smilerobotics/tf_rosrust

tf_roslibrust

Port of tf_rosrust to use roslibrust.

Additional details in tf_roslibrust/README.md

See also RosLibRust/roslibrust#177 and smilerobotics#55

tf_rosrust

  • changes from original code
    • fix transformations by MaxiMaerz
    • contains ros msg files to run without ros installation
    • fix dynamic tf handling

This is a rust port of the ROS tf library. It is intended for being used in robots to help keep track of multiple coordinate frames and is part of a larger suite of rust libraries that provide support for various robotics related functionality.

Features

So far the only the following have been implemented:

  • TfListener with lookup_transform and time traversal.
  • TfBroadcaster to publish /tf

I am still working on the following:

  • More efficient cache data structure.
  • Weed out unwrap()s

Supported platforms

Currently only Ubuntu 18.04 running ROS Melodic on x86_64 is tested. It should work on any linux based system with a proper ROS installation.

Getting Started

Install ROS first. On ubuntu, this can be done like so:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
sudo apt update
sudo apt install ros-melodic-desktop

After installing ROS, you may simply add this crate as a dependency to your cargo project:

[dependencies]
tf_rosrust = "0.1"

Third party software

This product includes copies and modifications of software developed by third parties:

  • ros_msgs includes copies and modifications of msg packages by ros and tf2_msgs, licensed under the 2-Clause BSD License.

See the license files included in these directories for more details.

Example usage

The following example shows a simple lookup.

use tf_rosrust::TfListener;

fn main() {
    rosrust::init("listener");
    let listener = TfListener::new();

    let rate = rosrust::rate(1.0);
    while rosrust::is_ok() {
        let tf = listener.lookup_transform("camera", "base_link", rosrust::Time::new());
        println!("{tf:?}");
        rate.sleep();
    }
}

About

ROS TF library and utilities for roslibrust

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%