{"action":"closed","issue":{"url":"https://api.github.com/repos/ros2/rclcpp/issues/440","repository_url":"https://api.github.com/repos/ros2/rclcpp","labels_url":"https://api.github.com/repos/ros2/rclcpp/issues/440/labels{/name}","comments_url":"https://api.github.com/repos/ros2/rclcpp/issues/440/comments","events_url":"https://api.github.com/repos/ros2/rclcpp/issues/440/events","html_url":"https://github.com/ros2/rclcpp/issues/440","id":298427621,"node_id":"MDU6SXNzdWUyOTg0Mjc2MjE=","number":440,"title":"Add RCL_ROS_TIME based timers","user":{"login":"matt-attack","id":7832158,"node_id":"MDQ6VXNlcjc4MzIxNTg=","avatar_url":"https://avatars2.githubusercontent.com/u/7832158?v=4","gravatar_id":"","url":"https://api.github.com/users/matt-attack","html_url":"https://github.com/matt-attack","followers_url":"https://api.github.com/users/matt-attack/followers","following_url":"https://api.github.com/users/matt-attack/following{/other_user}","gists_url":"https://api.github.com/users/matt-attack/gists{/gist_id}","starred_url":"https://api.github.com/users/matt-attack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matt-attack/subscriptions","organizations_url":"https://api.github.com/users/matt-attack/orgs","repos_url":"https://api.github.com/users/matt-attack/repos","events_url":"https://api.github.com/users/matt-attack/events{/privacy}","received_events_url":"https://api.github.com/users/matt-attack/received_events","type":"User","site_admin":false},"labels":[{"id":120328829,"node_id":"MDU6TGFiZWwxMjAzMjg4Mjk=","url":"https://api.github.com/repos/ros2/rclcpp/labels/enhancement","name":"enhancement","color":"a2eeef","default":true}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-02-19T23:27:58Z","updated_at":"2018-09-21T01:10:13Z","closed_at":"2018-09-21T01:10:13Z","author_association":"CONTRIBUTOR","body":"Currently there are only wall_time based timers. It would be very useful for bag playback or any other instance that `use_sim_time` is enabled to have some kind of timer that can use ROS time as a backing. This would allow for pausing the system or slowing it down to match the playback of the bag file.\r\n\r\nThis would likely require having a thread running in the background monitoring these timers or utilizing  `Clock::create_jump_callback()` to check the timers to see if they need to be executed in any instance rostime jumps. If any are ready you can then somehow mark those timers as ready to be ran by the executor and wake up the spinning thread by issuing a `rcl_trigger_guard_condition();` on the node's notify_guard_condition.\r\n\r\nThis is how I hacked it in externally:\r\nhttps://github.com/matt-attack/marti_common/blob/2ca02138b2ca25d32a8a5d32737d5a7759b69166/swri_roscpp/include/swri_roscpp/node.h#L86\r\nhttps://github.com/matt-attack/marti_common/blob/2ca02138b2ca25d32a8a5d32737d5a7759b69166/swri_roscpp/src/node.cpp#L194"}}
{"actor":{"display_login":"sloretz"}}