|
@@ -1,4 +1,111 @@
|
|
-# 自定义话题通信-看一看带图的小说
|
|
|
|
|
|
+# 自定义话题通信(小说+插图)
|
|
|
|
|
|
-待更新,欢迎关注微信公众号《鱼香ROS》,第一时间获取更新。
|
|
|
|
|
|
+> 本文与相关代码由[alyssa1024](https://github.com/alyssa1024)编写,感谢!
|
|
|
|
+
|
|
|
|
+跟着小鱼的步伐,咱们前面已经让张三走到时尚前沿,追更上了世纪畅销小说艳娘传奇。
|
|
|
|
+
|
|
|
|
+看到自己的作品流传愈广,拥趸愈多,李四甚感欣慰,愈发精益求精,立志为广大读者创造福利,第一件就是为略显单调的小说配上插图,让大家一睹艳娘传奇风姿。
|
|
|
|
+
|
|
|
|
+## 1. 准备工作
|
|
|
|
+
|
|
|
|
+还记得4.6节我们自定义的`Novel.msg`接口嘛,早期发布小说时我们只使用了ROS2内置的`std_msgs.msg`中的`string`类型传递消息,并没用上
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+# 标准消息接口 字符串
|
|
|
|
+string content
|
|
|
|
+# 图像消息,调用sensor_msgs下的Image类型
|
|
|
|
+sensor_msgs/Image image
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+如今时机成熟,是时候让我们自定义的消息类型发光发热了,其中的content就是我们小说的主体内容,而image自然就是要添加的插图了
|
|
|
|
+
|
|
|
|
+插图哪里来呢?我们再次回忆2.4节的第三个小游戏,当时我们开启了`cam2image`这个节点,打开了潘多拉的照片流,诶,插图这不就来了嘛
|
|
|
|
+
|
|
|
|
+>原来一切都是心机鱼冥冥之中的铺垫~
|
|
|
|
+
|
|
|
|
+## 2. 代码编写
|
|
|
|
+
|
|
|
|
+**修改头文件**
|
|
|
|
+
|
|
|
|
+在`illage_li`的`li4`节点中引入以下头文件
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+#导入系统内置的图片消息类型
|
|
|
|
+from sensor_msgs.msg import Image
|
|
|
|
+#从村庄接口话题消息类中导入小说消息类型
|
|
|
|
+from village_interfaces.msg import Novel
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+**修改li4类**
|
|
|
|
+
|
|
|
|
+将发布小说的接口类型更换为导入的`Novel`类型
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+self.write = self.create_publisher(Novel,"sexy_girl", 10)
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+添加获取图片的订阅端,第一个参数为消息类型,第二个是话题名称,第三个是处理图片的回调函数,第四个是消息队列的长度
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+# 开始获取图片
|
|
|
|
+self.create_subscription(Novel,"image",self.recv_image_callback,10)
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+添加接收图片的回调函数
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+def recv_image_callback(self,image):
|
|
|
|
+ self.image = image
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+最后修改timer_callback函数
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+msg = Novel()
|
|
|
|
+msg.content = '第%d回:潋滟湖 %d 次偶遇胡艳娘' % (self.i,self.i)
|
|
|
|
+msg.image = self.image
|
|
|
|
+self.write.publish(msg) #将小说内容发布出去
|
|
|
|
+self.get_logger().info('李四:我发布了艳娘传奇:"%s"' % msg.content) #打印一下发布的数据,供我们看
|
|
|
|
+self.get_logger().info('李四:并且为艳娘传奇配上了插图,长:"%d",宽:%d' % (msg.image.height,msg.image.width)) #打印一下发布的插图尺寸,供我们看
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+## 3. 编译功能包
|
|
|
|
+
|
|
|
|
+在vscode中,使用`Ctrl+~`打开终端,在`town_ws`目录下输入
|
|
|
|
+
|
|
|
|
+```shell
|
|
|
|
+colcon build --packages-select village_li
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+## 4. 运行节点
|
|
|
|
+
|
|
|
|
+`Ctrl+Alt+T`打开新终端,先启动相机发布图片的节点
|
|
|
|
+
|
|
|
|
+```shell
|
|
|
|
+ros2 run image_tools cam2image
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+/imgs/image-20210910163422495.png)
|
|
|
|
+
|
|
|
|
+在原终端`town_ws`目录下输入
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+. install/setup.bash
|
|
|
|
+ros2 run village_li li4_node
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+/imgs/image-20210910191451914.png)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+------
|
|
|
|
+
|
|
|
|
+技术交流&&问题求助:
|
|
|
|
+
|
|
|
|
+- QQ交流群:139707339
|
|
|
|
+
|
|
|
|
+- 微信公众号:鱼香ROS
|
|
|
|
+
|
|
|
|
+- 小鱼微信:AiIotRobot
|
|
|
|
|