Mapping between rospy and rclpy

I am attempting to migrate join_state_publisher package from ROS 1 to ROS 2 and trying to find equivalent API. For example

  1. rospy has Exceptions like ROSInterruptException. I do not find an equivalent exception to use from rclpy. Is there some other package which defines these?
  2. rospy.get_param is missing in rclpy. Will this be covered as part of this - https://github.com/ros2/rclpy/issues/186? Also, what is the alternative for this till then? Can I use the example in https://github.com/ros2/rclpy/blob/0db8fc763ead2cf3184f8c876f1be1bdd85944d8/rclpy/test/test_node.py#L77 ?
  3. rospy.Rate() is missing which I do guess will covered here: https://github.com/ros2/rclpy/issues/186… Any alternative?
  4. Does rospy.is_shutdown seems to have been removed in rclp. How do we check for shutdown? Can we use rclpy.try_shutdown()?

If it’s not defined in rclpy then it’s probably not defined anywhere. I don’t know off the top of my head where this was being used in rospy, but it may make sense to have it in rclpy and it simply hasn’t been ported yet. It might be connected to the init/shutdown or rate features that are still missing.

It is missing, but those issues I don’t think are the best connection to that feature. I’d say:

Which is being worked on now:

Yes, that issue specifically mentions Timer and Rate concepts, which are dependent on finishing the “ROS Time” implementation in rclpy.

It’s not been explicitly removed as far as I know, it just hasn’t been implemented yet. You could use try_shutdown() to test, but if you only wanted to test you’d be out of luck since the side-effect would be a shutdown in many cases. This feature is captured in this issue (in my opinion):

Which it seems you’ve already found and offered to help (thanks!).

Thanks for answers @wjwwood. I created issue for missing exceptions here: https://github.com/ros2/rclpy/issues/22.

I can get that covered as part of https://github.com/ros2/rclpy/issues/190