浏览代码

打开2.4摄像头注释,添加4.11自定义话题

鱼香ROS 3 年之前
父节点
当前提交
30be5934fb
共有 2 个文件被更改,包括 110 次插入4 次删除
  1. 1 2
      docs/chapt2/2.4动手玩ROS2.md
  2. 109 2
      docs/chapt4/4.11自定义话题通信(python).md

+ 1 - 2
docs/chapt2/2.4动手玩ROS2.md

@@ -69,7 +69,6 @@ ros2 run turtlesim turtle_teleop_key
 
 
 
 
 
 
-<!-- 
 ## 3 游戏3:照妖镜
 ## 3 游戏3:照妖镜
 游戏内容:打开一个USB摄像头,开始观察世界吧
 游戏内容:打开一个USB摄像头,开始观察世界吧
 所需道具:一台拥有摄像头的电脑
 所需道具:一台拥有摄像头的电脑
@@ -114,7 +113,7 @@ rqt
 
 
 让小鱼看看有多少人受到了惊吓,没错,忽然出现的就是跟生活周旋已久的可爱的你
 让小鱼看看有多少人受到了惊吓,没错,忽然出现的就是跟生活周旋已久的可爱的你
 
 
->突如其来的多愁善感鱼~ -->
+>突如其来的多愁善感鱼~ 
 
 
 
 
 ## 4.总结
 ## 4.总结

+ 109 - 2
docs/chapt4/4.11自定义话题通信(python).md

@@ -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
+```
+
+![image-20210910163422495.png](4.11自定义话题通信(python)/imgs/image-20210910163422495.png)
+
+在原终端`town_ws`目录下输入
+
+```
+. install/setup.bash
+ros2 run village_li li4_node
+```
+
+![image-20210910191451914.png](4.11自定义话题通信(python)/imgs/image-20210910191451914.png)
+
+
+
+
+------
+
+技术交流&&问题求助:
+
+- QQ交流群:139707339
+
+- 微信公众号:鱼香ROS
+
+- 小鱼微信:AiIotRobot