use crate::{
tf_error::TfError,
transforms::{geometry_msgs::TransformStamped, tf2_msgs::TFMessage},
};
pub struct TfBroadcaster {
publisher: rosrust::Publisher<TFMessage>,
}
impl TfBroadcaster {
pub fn new() -> Self {
Self {
publisher: rosrust::publish("/tf", 1000).unwrap(),
}
}
pub fn send_transform(&self, tf: TransformStamped) -> Result<(), TfError> {
let tf_message = TFMessage {
transforms: vec![tf],
};
self.publisher
.send(tf_message)
.map_err(|err| TfError::Rosrust(err.description().to_string()))
}
}
impl Default for TfBroadcaster {
fn default() -> Self {
TfBroadcaster::new()
}
}