rclcpp icon indicating copy to clipboard operation
rclcpp copied to clipboard

`operator+` and `operator-` for `builtin_interfaces::msg::Time` and `rclcpp::Duration`

Open HuaTsai opened this issue 2 years ago • 1 comments

Feature request

I wonder if rclcpp could support add/minus time with msg::Time on the left as caller. In the current delivery,

std_msgs::msg::Header header;
header.stamp = rclcpp::Duration::from_seconds(1) + header.stamp; // OK, unintuitive
header.stamp = rclcpp::Time(header.stamp) + rclcpp::Duration::from_seconds(1);  // OK, with conversion and implicit conversion
header.stamp = header.stamp + rclcpp::Duration::from_seconds(1); // CE
header.stamp += rclcpp::Duration::from_seconds(1);  // CE

It is more intuitive for the user to choose the third (furthermore, fourth) option instead of the first two. I think the operators +, -, +=, -= can be implemented in duration.hpp and duration.cpp without any backward incompatiblity. Furthermore, aside from rclcpp::Time containing a clock, rclcpp::Duration only contains nanoseconds which makes this task simpler. Also in a higher level view, "a time" can always add "a duration" and conclude another "time."

HuaTsai avatar Dec 25 '23 08:12 HuaTsai

We ended up discussing this, and we think that yes, all of those operators could be implemented. In addition, we should make sure to have documentation somewhere that builtin_msgs::msg::Time is assumed to be ROS time, as these operators should enforce that we are only adding together compatible times.

I don't think we are going to work on this anytime soon, but please feel free to open a pull request.

clalancette avatar Jan 18 '24 14:01 clalancette