`operator+` and `operator-` for `builtin_interfaces::msg::Time` and `rclcpp::Duration`
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."
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.