最近我开始学习ROS2,但我遇到了一个问题,我创建了一个包&定义了一个节点。
#! /usr/bin/env python
import rospy
rospy.init_node("simple_node")
rate = rospy.Rate(2) # We create a Rate object of 2Hz
while not rospy.is_shutdown(): # Endless loop until Ctrl + C
print("Help me body, you are my only hope")
rate.sleep()
# We sleep the needed time to maintain the Rate fixed above
# This program creates an endless loop that repeats itself 2 times per second (2Hz)
# until somebody presses Ctrl + C in the Shell因此,我需要将上面的ROS1代码转换为ROS2,为此,我将ROSPY库替换为RCLPY,并将其编码如下:
import rclpy
def main(args=None):
rclpy.init()
myfirstnode = rclpy.create_node('simple_node')
print("Help me body, you are my only hope")
if __name__ == '__main__':
main()现在,我想用RCLPY实现下面给出的代码片段,但是我不能得到所有需要的函数,我已经得到了rospy.Rate(2)的RCLPY替代品,它是rclpy.create_node('simple_node').create_rate(2)。
while not rospy.is_shutdown():
print("Help me body, you are my only hope")
rate.sleep()请推荐rospy.is_shutdown()和rospy.Rate(2).sleep()函数的RCLPY替代品
发布于 2020-10-09 02:07:15
您可以从您的节点创建Rate对象:
self._loop_rate = self.create_rate(loop_rate, self.get_clock())请参阅:https://github.com/ros2/rclpy/blob/master/rclpy/rclpy/node.py
然后在一个循环中,你可以调用:
self._loop_rate.sleep()请参阅:https://github.com/ros2/rclpy/blob/master/rclpy/rclpy/timer.py
https://stackoverflow.com/questions/63169018
复制相似问题