来自ROS 1的Python迁移指南 [待校准@1022]

节点初始化 [待校准@1023]

在ROS 1中: [待校准@1024]

rospy.init_node('asdf')

rospy.loginfo('Created node')

在ROS 2中: [待校准@1025]

rclpy.init(args=sys.argv)
node = rclpy.create_node('asdf')

node.get_logger().info('Created node')

ROS参数 [待校准@1026]

在ROS 1中: [待校准@1024]

 port = rospy.get_param('port', '/dev/ttyUSB0')
 assert isinstance(port, str), 'port parameter must be a str'

 buadrate = rospy.get_param('baudrate', 115200)
 assert isinstance(port, int), 'port parameter must be an integer'

rospy.logwarn('port: ' + port)

在ROS 2中: [待校准@1025]

port = node.declare_parameter('port', '/dev/ttyUSB0').value
assert isinstance(port, str), 'port parameter must be a str'

baudrate = node.declare_parameter('baudrate', 115200).value
assert isinstance(port, int), 'port parameter must be an integer'

node.get_logger().warn('port: ' + port)

创建发布者 [待校准@1027]

在ROS 1中: [待校准@1024]

pub = rospy.Publisher('chatter', String)

在ROS 2中: [待校准@1025]

pub = node.create_publisher(String, 'chatter')

创建订户 [待校准@1028]

在ROS 1中: [待校准@1024]

sub = rospy.Subscriber('chatter', String, callback)

在ROS 2中: [待校准@1025]

sub = node.create_subscription(String, 'chatter', callback)

创建服务 [待校准@1029]

在ROS 1中: [待校准@1024]

srv = rospy.Service('add_two_ints', AddTwoInts, add_two_ints_callback)

在ROS 2中: [待校准@1025]

srv = node.create_service(AddTwoInts, 'add_two_ints', add_two_ints_callback)

创建服务客户端 [待校准@1030]

在ROS 1中: [待校准@1024]

rospy.wait_for_service('add_two_ints')
add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
resp = add_two_ints(req)

在ROS 2中: [待校准@1025]

add_two_ints = node.create_client(AddTwoInts, 'add_two_ints')
while not add_two_ints.wait_for_service(timeout_sec=1.0):
    node.get_logger().info('service not available, waiting again...')
resp = add_two_ints.call_async(req)
rclpy.spin_until_future_complete(node, resp)