系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 1.红外测温仪通信参数获取
    • 1.1串口查询16位指令格式
    • 1.2安装cutecom
    • 1.3使用cutecom步骤
  • 2.编写消息的发布与订阅
    • 2.1编写发布者publisher
    • 2.2编写订阅者
  • 总结

前言

学习的最好路径是通过项目不断的练习。


提示:以下是本篇文章正文内容,下面案例可供参考

1.红外测温仪通信参数获取

1.1串口查询16位指令格式

1.2安装cutecom

apt-get install cutecom

1.3使用cutecom步骤

step 1.输入命令行打开cutecom

cutecom


step 2.通过USB口连接红外测温仪
step 3.点击左上角的Device:右侧选项,选择USB口。此处为/dev/ttyUSB1。
step 4.勾选左下角的Hex output
step 5.点击右上角的Settings ,在Baudrate处设置波特率为9600(测温仪要求设置固定参数),其他为默认。
step 6.点击Open,在Input处输入0707aa55。则会显示9组16进制数。
到此准备工作结束

2.编写消息的发布与订阅

2.1编写发布者publisher

代码如下(示例):

#!/usr/bin/env python
# encoding: utf-8
import rospy
from std_msgs.msg import String
import serial
#引入struct模块,主要是用unpack函数解码
import struct#设置串口默认参数
ser=serial.Serial("/dev/ttyUSB1",9600,timeout=0.5)
#打开串口
ser.isOpen() #代码主要内容,主要是发送串口读取命令,接受串口输出,通过一些操作将其转换成10进制数。#定义函数
def htx_pub():#初始化节点,节点名为htx_temperature,消息类型为String,queue_size是订阅者接受消息不够快的时候保留的消息的量pub = rospy.Publisher('htx_temperature', String, queue_size=10)#rospy.init_node(NAME, ...)把节点名告诉rospy,只有rospy掌握了这一信息后,才会开始与ROS主节点进行通信。  节点名为temperature。anonymous = True会让名称末尾添加随机数,来确保节点具有唯一的名称。rospy.init_node('temperature', anonymous=True)  #设置后面程序读取串口的频率    rate = rospy.Rate(20) #主要处理数据部分#用于读取串口发来的数据#当rospy没有停止时while not rospy.is_shutdown():  #写入串口读取数据命令,4组16进制ser.write([0x07,0x07,0xaa,0x55])#读取串口数据,以换行符为结束get_str = ser.readline()  #解包数据、变成10进制数,固定用法data = struct.unpack('%dB' % len(get_str),get_str)#更据输出参数表。第3组数左移8位并上第2组数/100为温度temperature = (data[3] << 8 | data[2])/100.0#打印温度rospy.loginfo(temperature)#实例化字符串结构体data  = String()#赋值给实体数据data.data = str(temperature)#发布数据pub.publish(data)#rate.sleep()为rate类的休眠函数,可以使程序休眠;它在循环中可以用刚刚好的睡眠时间维持期望的速率rate.sleep()if  __name__ == '__main__':htx_pub()try:passexcept rospy.ROSInterruptException:pass

2.2编写订阅者

代码如下(示例):

#!/usr/bin/env python
# encoding: utf-8
import rospy
from std_msgs.msg import String
def callback(data):rospy.loginfo( data.data)
def htx_sub():#初始化节点rospy.init_node('subscriber', anonymous=True)#定义订阅者rospy.Subscriber('htx_temperature', String, callback)#循环等待回调函数,rospy.spin()只是不让你的节点退出,直到节点被明确关闭。rospy.spin()不影响订阅者回调函数,因为它们有自己的线程。rospy.spin()
if __name__ == '__main__':htx_sub()


总结

1.python对格式要求较高,每4个空格为一个缩进。
2.串口获得的是字符串格式的数据流,我们需要解包得到10进制数
3.学习ros要多实践。
下节将是基于海曼红外测温仪的服务请求与发布。后续将会带来gmapping源码、amcl源码的详解。

ROS踩坑笔记2-基于海曼红外测温仪的消息发布与订阅相关推荐

  1. Slam学习笔记——ROS踩坑记录

    Slam学习笔记--ROS踩坑记录 1. 安装 2. ROS文件系统 2.1 工作区 2.2 包package 2.2.1 包的操作 2.2.2 描述文件package.xml 2.3 节点node ...

  2. iphone se 一代 不完美越狱 14.6 视频壁纸教程(踩坑笔记)

    iphone se 一代 不完美越狱 14.6 加 视频壁纸教程-踩坑笔记 越狱流程 1.爱思助手制作启动u盘 坑点: 2.越狱好后 视频壁纸软件 1.源 2.软件安装 越狱流程 1.爱思助手制作启动 ...

  3. Linux内核踩坑笔记

    systemtap embedded C踩坑笔记戳这: https://blog.csdn.net/qq_41961459/article/details/103093912 task_struct的 ...

  4. ROS踩坑之.msg文件未能转化为.h文件

    ROS踩坑之.msg文件未能转化为.h文件 标题的意思不够明确,这里重新声明一下,意思是文件全部齐全,再在编译ROS时出现无法找到"xxx.h"文件的情况. 方法一:查找相应的Cm ...

  5. 阿里云部署Tiny Tiny RSS踩坑笔记

    阿里云部署Tiny Tiny RSS踩坑笔记 前言 入坑了RSS,之前的配置是阿里云部署RSSHub,配合Inoreader进行文章阅读,详情见RSS入坑指南.阿里云部署RSSHub踩坑笔记.在202 ...

  6. 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)

    目录 0. 前置操作 I. 安装MCL II. MCL自动登录配置 III. 安装IDEA插件 1. 新建Mirai项目 2. 编写主类 3. 添加外部依赖 4. IDEA运行 5. 插件打包 6. ...

  7. 「Java」基于Mirai的qq机器人开发踩坑笔记(其二)

    目录 0. 配置机器人 1. onLoad方法 2. onEnable方法 3. 消息属性 4. 消息监听 I. 好友消息 II. 群聊消息 III. 无差别消息 5. 发送消息 I. 文本消息 II ...

  8. 昆仑通态触摸屏1003故障码,踩坑笔记

    昆仑通态触摸屏1003故障码,踩坑笔记 第一次使用这个昆仑通态触摸屏,使用modbusRTU与金田变频器做通讯. 触摸屏在线后报1003通讯错误代码,现象是控制指令正常,但是读取不正常.读取变频器状态 ...

  9. EDUSOHO踩坑笔记之四十二:资讯

    EDUSOHO踩坑笔记之四十二:资讯 获取资讯列表信息 GET /articles/{id} 权限 老API,需要认证 参数 字段 是否必填 描述 sort string 否 排序,'created' ...

最新文章

  1. java 传入参数_java参数怎么传递参数
  2. nova7修屏逛校园2021-07-07
  3. Java开源诊断工具 Arthas 发布v3.1.0
  4. PAT (Advanced Level) 1010 Radix(二分+模拟)
  5. 第7章 C控制语句:分支和跳转
  6. 【BJOI 2019】奥术神杖
  7. Android 最新左右可见上下页的banner实现demo
  8. pycharm 如何自动添加头注释,比如时间,作者信息等
  9. 一张图超过了屏幕大小 如何自动将多出部分隐藏 只显示中间部分
  10. jQuery blockUI 使用详解
  11. 一个中专生:我在华为面试的真实经历
  12. JavaSE基础(21) 打印数组
  13. HTML5基础(五)零基础入门 (上)
  14. 流量劫持是什么?常用方法有哪些?
  15. 计算机操作系统 汤子瀛(慕课版)
  16. 在Ubuntu上安装hadoop(截图太多,干脆来个大截图)
  17. YonBuilder前端框架MDF介绍
  18. aide的java文件怎么保存,aide教程
  19. 小白怎样成为网络工程师?
  20. 机器学习模型训练问答

热门文章

  1. RK3326 RK817 codec左右声道反
  2. UltraISO 下载
  3. 别用眼泪感动爱情-转
  4. 四川大学2021计算机学院保研细则,2022推荐免试:四川大学2021年保研夏令营活动通知汇总...
  5. 【兼职避坑篇】怎么找到靠谱的客服兼职工作
  6. vue实现留言板的功能_Vue实现简单的留言板
  7. 默认文献工具_EndNote X6文献管理软件安装教程
  8. Labview 和TortoiseSVN 版本控制
  9. 短视频用户群体分析,男女性别分布如何,喜欢什么内容?
  10. 线性代数让我想想:快速求三阶矩阵的逆矩阵