网站注册页面,郑州网站建设公司排行,怎么寻求网站建设,区校合作网站建设方案强烈推荐教程#xff1a;
《ROS 2机器人开发从入门到实践》3.2.2订阅小说并合成语音_哔哩哔哩_bilibili 构建功能包 # create package demo_python_pkg ros2 pkg create --build-type ament_python --license Apache-2.0 demo_python_pkg 自己写的代码放在./demo_python_pkg/…强烈推荐教程
《ROS 2机器人开发从入门到实践》3.2.2订阅小说并合成语音_哔哩哔哩_bilibili 构建功能包 # create package demo_python_pkg ros2 pkg create --build-type ament_python --license Apache-2.0 demo_python_pkg 自己写的代码放在./demo_python_pkg/demo_python_pkg目录下 发布者
import rclpy
from rclpy.node import Node
import requests
from example_interfaces.msg import String
from queue import Queueclass NovelPubNode(Node):def __init__(self, node_name):super().__init__(node_name)self.novels_queue Queue()self.get_logger().info(NovelPubNode has been started)self.novel_pub self.create_publisher(String, novel_topic, 10)self.timer self.create_timer(5,self.timer_callback)def timer_callback(self):if not self.novels_queue.empty():line self.novels_queue.get()msg String()msg.data lineself.novel_pub.publish(msg)self.get_logger().info(fPublished novel: {line}) def download_novel(self, url):response requests.get(url)response.encoding utf-8text response.textfor text_line in text.splitlines():self.novels_queue.put(text_line)self.get_logger().info(fDownloaded novel: {text})def main():rclpy.init()node NovelPubNode(novel_pub_node)node.download_novel(http://0.0.0.0:8000/novel_1.txt)rclpy.spin(node)node.shutdown() 订阅者
import time
import espeakng
import rclpy
from rclpy.node import Node
from example_interfaces.msg import String
from queue import Queue
import threadingclass NovelSubNode(Node):def __init__(self, node_name):super().__init__(node_name)self.get_logger().info(NovelSubNode has been created!)self.novels_queue Queue()self.create_subscription(String, novel_topic, self.novel_callback, 10)self.say_thread threading.Thread(targetself.say)self.say_thread.start()def novel_callback(self, msg):self.novels_queue.put(msg.data)def say(self):engine espeakng.Speaker()engine.voice zhwhile rclpy.ok():if not self.novels_queue.empty():novel self.novels_queue.get()engine.say(novel)print(Said: novel)engine.wait()else:time.sleep(1)def main():rclpy.init()node NovelSubNode(novel_sub_node)rclpy.spin(node)rclpy.shutdown() 代码完成后配置setup.py文件 格式为名字 包名.文件名:函数名 在根目录运行以下终端命令 # build package demo_python_pkg colcon build # source setup.bash source install/setup.bash 运行以上命令后得到build、install、log文件夹 可执行的节点文件在以下文件夹
./install/demo_python_pkg/lib/demo_python_pkg
运行节点命令 ros2 run demo_python_pkg python_pub_node ros2 run demo_python_pkg python_sub_node 其他常用命令 # check if node is running ros2 node list # check if topic is published ros2 topic list # check topic content ros2 topic echo /novel_topic # check topic speed ros2 topic hz /novel_topic # check if service is available ros2 service list