遗憾与骄傲:
支持冻结模式,防止被恶意穷举密码或多次尝试指纹解锁 空箱检测,防止因上一位用户的疏忽而遗漏的物品而造成损失 关门检测,防止因用户疏忽而忘记关门带来经济损失(蜂鸣器报警) 数字密码记忆起来有难度,但是如果用户自定义设置密码以来导致使用复杂的上升,并且密码重复问题需要解决。 打印凭条虽方便,但并不低碳 光学传感器不支持活体指纹检测
岂止有点意思,简直book诗意。
遗憾与骄傲:
支持冻结模式,防止被恶意穷举密码或多次尝试指纹解锁 空箱检测,防止因上一位用户的疏忽而遗漏的物品而造成损失 关门检测,防止因用户疏忽而忘记关门带来经济损失(蜂鸣器报警) 数字密码记忆起来有难度,但是如果用户自定义设置密码以来导致使用复杂的上升,并且密码重复问题需要解决。 打印凭条虽方便,但并不低碳 光学传感器不支持活体指纹检测
ROS机器人制作指南(更新中):[http://bookshiyi.com/robotics/ros\_robot\_guide](http://bookshiyi.com/robotics/ros_robot_guide)
**论文下载**:[本科毕业论文_基于ROS和RGB-D传感器的SLAM智能机器人.pdf](https://oss.bookshiyi.com/doc/%E6%9C%AC%E7%A7%91%E6%AF%95%E4%B8%9A%E8%AE%BA%E6%96%87_%E5%9F%BA%E4%BA%8EROS%E5%92%8CRGB-D%E4%BC%A0%E6%84%9F%E5%99%A8%E7%9A%84SLAM%E6%99%BA%E8%83%BD%E6%9C%BA%E5%99%A8%E4%BA%BA_OARAP_org.pdf)(可右键另存为)
**ROS源码**:[https://github.com/bookshiyi/robot_ros](https://github.com/bookshiyi/robot_ros)
** STM32源码**:https://github.com/bookshiyi/robot_stm32
(栅格地图中蓝色箭头表示上图的拍摄位置及角度)
0x00 开始前请确保你的Kinect v1通过USB2.0与ROS计算机相连接,并且Kinect v1的电源功率足够;
0x01 确保已经安装freenect(如果没安装请移步freenect安装教程);
0x02 安装pointcloud_to_laserscan:
方式一:源码安装(编译缺少tf2_sensor_msg)
cd ~/catkin_ws/src
git clone --branch indigo-devel https://github.com/ros-perception/pointcloud\_to\_laserscan.git
cd ..
catkin_make
方式二:功能包安装(推荐)
sudo apt-get install ros-<rosdistro>-pointcloud-to-laserscan
0x03 以下是基于freenect和pointcloud_to_laserscan的fake_laser.launch代码:
target_frame: camera_link # Leave disabled to output scan in pointcloud frame transform_tolerance: 0.01 min_height: 0.0 max_height: 1.0 angle_min: -1.5708 # -M_PI/2 angle_max: 1.5708 # M_PI/2 angle_increment: 0.0087 # M_PI/360.0 scan_time: 0.3333 range_min: 0.45 range_max: 4.0 use_inf: true # Concurrency level, affects number of pointclouds queued for processing and number of threads used # 0 : Detect number of cores # 1 : Single threaded # 2->inf : Parallelism level concurrency_level: 1
第4-11行中调用了freenect.launch,参考freenect_launch/exampl/中的freenect-xyz.launch这个例程,通过设置参数决定你要启动的节点,同时该话题默认启动TF和Point;
第17-41行是为激光生成包的参数设置,cloud\_in是pointcloud\_to\_laserscan节点订阅的topic,需要通过remap链接到你自己的平台;scan是pointcloud\_to_laserscan节点发布的topic,输出直接可用的伪激光数据。
其中21-40行描述对于Kinect传输性能设置的参数,包括目标TF、变换容忍偏差、最大/小目标高度、最大/小角度、角度增量(决定laserscan输出点的密集程度)、扫描周期、最远/近距离等。
0x04 打开fake_laser.launch启动文件和rqt_rviz并添加laserscan到display窗口
roslaunch your\_workspace/fake\_laser.launch
应该得到类似下图的状态
常见问题:
如果没有得到伪激光数据可以尝试运行如下命令:
rosnode info /pointcloud\_to\_laserscan
观察pointcloud\_to\_laserscan节点是否成功的订阅了指定的点云topic。
最后感谢FireFly团队提供的**RK3399**高性能、奢侈配置的开发板(点击图片了解详情):
sudo apt-get install(安装) ros-hydro-image-transport-plgins
0x00 开始前请确保你的Kinect v1通过USB2.0与ROS计算机相连接,并且Kinect v1的电源功率足够;
0x01 确保已经安装**freenect**(如果没安装请移步[freenect安装教程](http://oarap.org/archives/1571));
0x02 安装**depthimage\_to\_laserscan:**
方式一:源码安装
cd ~/catkin_ws/src
git clone --branch indigo-devel https://github.com/ros-perception/depthimage\_to\_laserscan.git
cd ..
catkin_make
方式二:功能包安装(推荐)
sudo apt-get install ros--depthimage-to-laserscan
0x03 在ROS By Example 1一书中(90页)给出了基于openni的伪激光launch,本文将给出基于freenect和depthimage\_to\_laserscan的fake_laser.launch代码:
`
第4-11行中调用了freenect.launch,参考freenect_launch/exampl/中的freenect-xyz.launch这个例程,通过设置参数决定你要启动的节点,同时该话题默认启动TF和Point;
第17-22行是为激光生成包的参数设置,image和camera_info是depthimage_to_laserscan节点订阅的topic,需要通过remap链接到你自己的平台;scan是depthimage_to_laserscan节点发布的topic,输出直接可用的伪激光数据。
0x04 打开fake_laser.launch启动文件和rqt_rviz并添加laserscan到display窗口
roslaunch your_workspace/fake_laser.launch
应该得到类似下图的状态
常见问题:
如果没有得到伪激光数据可以尝试运行如下命令:
rosnode info /depthimage_to_laserscan
根据下图红色标注的位置辅助你判断问题所在:
freenect启动文件特性浅析:
freenect_camera freenect_nod发布的话题非常少,但是不包含TF数据的发布,需要自己另外发布TF;
freenect_launch freenect.launch发布的话题足够多,但是如果我们不关闭一些话题会导致系统资源的浪费;
freenect_launch freenect_launch/example下的launch文件可以参考
PS:pointcloud_to_laserscan效果可能也不错,将在接下来进行测试。
最后感谢FireFly团队提供的RK3399高性能、奢侈配置的开发板(点击图片了解详情):
`
0x00 开始前请确保你的Kinect v1通过USB2.0与ROS计算机相连接,并且Kinect v1的电源功率足够;
0x01 安装**freenect**驱动**:**
$sudo apt-get install ros–freenect-*
$rosstack profile
$rospack profile
0x02 运行**lsusb**后能看到三个设备:
0x03 运行**freenect**节点
$rosrun freenect_camera freenect_node
**问题出现**:尽管freenect对与kinect的支持非常好,但是由于多平台的差异性,也有可能出现这样的错误:
请尝试如下解决方案:
0x04 安装**openni_pack** 和**openni_stack:**
$sudo aptget install ros–openni-camera ros–openni-launch
$rosstack profile
$rospack profile
0x05 再次运行**freenect**节点
$rosrun freenect_camera freenect_node
问题解决
最后感谢FireFly团队提供的**RK3399**高性能、奢侈配置的开发板(点击图片了解详情):
大部分的教程会提示你安装openni驱动Kinect,但实际上这并不一定能让你的Kinect传感器工作,本文将介绍基于freenect驱动Kinect v1的方法。
0x00 开始前请确保你的Kinect v1通过USB2.0与ROS计算机相连接,并且Kinect v1的电源功率足够;
$ sudo apt-get install ros-kinetic-freenect-*
$ rospack profile
0x01:启动你的freenect节点(确保你的roscore已经在运行):
rosrun freenect_camera freenect_node
0x02:使用rqt\_image\_view工具预览Kinect的画面(也可以使用rqt\_rviz或者rqt\_gui工具):
rosrun rqt_image_view rqt_image_view
0x03:选择深度或RGB话题以显示画面
ps:3D点云形式的查看
roslaunch freenect_launch freenect.launch
本文介绍了基于89C51单片机和TEA5767模块制作的数字收音机,TEA5767模块提供系统的数字FM解调,LCD1602显示系统工作的状态和当前频率,单片机负责调控TEA5767的工作状态,两枚按键实现频率的调整和频道搜索。本设计可以实现手动调整频率、自动搜台等功能。
TEA5767是PHILIPS,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。TEA5767芯片内集成了完整的IF频率选择和鉴频系统,就可实现FM收音机的全部功能。这样大大简化了解调电路的设计和调试难度,并保证了较高的稳定性同时缩小了系统的体积。
应加入24C02模块,用来保存上次关机时的收FM频率。 LM386的推力着实有限,推动耳机是可以的,但是在推动扬声器时声音过大就会出现噪音,所以如果有条件的话还是TDA2025或其他更强大推力的功放。 主控单元可以使用更少引脚的80c51单片机或STM8系列的单片机,LCD1602的性价比也并不高,可以考虑选用LCDNokia5110或OLED甚至数码管。 频率微调/搜索可以通过一个旋转电位器来实现,不仅节省了引脚,更便于微调时候调整速度的掌握。
Github地址:http://github.com/oarap-org/smartbox_stm32
硬件原理图:smartbox rev1.4 (已经在中国矿业大学组装完成进行样机测试)
随着送餐平台不断发展,校园送餐的一些细节矛盾显现出来,其中之一便是送餐效率问题,学校出于安全的考虑,导致送餐员无法送餐达寝室,只能在楼下给订餐同学打电话通知然后等待,而顾客也要放下手头的工作下楼,这样极大的降低了送餐的效率,本系统的设计旨在解决送餐员与顾客之间的等待问题,彻底解决送餐过程中的“最后50米”,提高送餐员的工作效率的同时也让给订餐同学任意安排取餐时间的自由。系统的设计理念以便捷、高效为主,专注于提高送餐的效率。
或
送餐员在扫描过外卖上的条形码后会根据当前的订单号开启一个餐柜,同时用户会收到一条还有随机验证码的短信,用户在取餐界面输入随机验证码后会打开相对应的餐柜,外卖被取走后订单完成。
实测的心电信号中常常存在一些强干扰和噪声,如何在强背景干扰和噪声下准确提取出有用的心电信号,是心脏类疾病预测和诊断的一个重要内容。本文提出了一种心电信号的去噪系统设计方法,对原始心电信号进行频谱分析后,确定噪声主要存在的频带:原始信号中主要包含了极强的50Hz工频干扰、低频肌电干扰带来的基线漂移、白噪声。设计低通滤波器和陷波器,对原始信号进行预处理,旨在滤除信号中的高频噪声和工频干扰;设计算法,对信号中的中低频白噪声进行抑制;设计基线补偿算法,消除信号中低频的基线漂移现象;仿真结果表明,20组差异明显的实测的带噪心电信号经本系统处理后,得到的信号波形均十分清晰,且信号的特征值保留完整,为临床医生的判断提供了有利的依据。
目前,全球心脏类疾病的发病率和死亡率一直居高不下,一直是当代人类健康的首要威胁之一,所以心电信号在医学领域就变得有非常重要的意义,但是由于心电信号本身十分较弱(10pV~5mV),难以检测,再加之人体自身的肌电干扰、室内的工频干扰以及周围其他的电磁干扰,导致在传感器输出端心电信号几乎淹没在噪声里面,所以对心电信号分析和去噪具有很高的实用价值和重要意义。
本文设计了一套心电心号的处理系统,包括:线性相位FIR低通滤波器和陷波器,抑制工频干扰及其他噪声,对原始心电信号进行预处理;小波去噪,对原始信号进行小波分解后,进行阈值处理,再做小波重构处理,以此去除信号中的白噪声;基线矫正:通过计算信号变化趋势的方法来消除信号中的线性趋势。最终可以把绝大多数的原始心电信号较为完整的提取出来且几乎不损失信号的特征值。
通过对心电信号的频谱分析,找出其噪声和干扰的主要分布频带范围,以此来设计相应的滤波器。
目前,在国际上的公认可用作标准心电数据库有三个,分别是美国麻省理工学院的MIT-BIH 数据库,[美国心脏学会](http://baike.baidu.com/subview/10276144/10439505.htm)的AHA数据库和欧洲AT-T心电数据库。近年来,美国麻省理工学院的MIT-BIH 数据库广泛应用于医疗行业。
从MIT-BIH数据库下载20组心电信号数据,通过MATLAB中的xlsread函数将表格形式的原始数据导入到工作空间。
图1 原始心电信号的时域波形和频谱图
Fig. 1 The original ecg signal in the time domain waveform and spectrum diagram
通过对原始信号的时域波形观察可以发现:信号中的高频噪声较多,信号大多被淹没在噪声中,并且伴有基线漂移的现象,频谱图中可以发现信号在50Hz的频率处出现了极强烈噪声,据分析为工频干扰。
根据对实测的原始心电信号进行频谱分析后,提出了以下设计方案:FIR低通滤波器,滤除信号中100HZ以上的高频噪声;FIR工频陷波器,抑制信号中的50HZ工频干扰;小波去噪:滤除信号中的白噪声;基线矫正:矫正由肌电干扰等带来的基线漂移现象。系统结构框图如图2所示:
图2 系统结构框图
Fig. 2 system block diagram
FIR滤波器,全称Finite Impulse Response,有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它能够在保证任意幅频特性的情况下具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
窗函数设计滤波器【文献1】的基本思想是,首先根据要求选择一个适当的低通滤波器,因为其脉冲响应是非因果且是无限长的,用最优化窗结构窗函数来截取它的脉冲响应,从而得到线性相位和因果的FIR滤波器。
a)根据给定要求的理想频率响应 ![图片3](http://oarap.org/wp-content/uploads/2016/02/图片3-1.png)求出![图片4](http://oarap.org/wp-content/uploads/2016/02/图片4-1.png)
b)用一个有限时长的“窗函数”序列 将 截断,窗的点数是N点。阶段后的序列为![图片10](http://oarap.org/wp-content/uploads/2016/02/图片10.png)
窗的点数N及窗的形状是两个极重要的参数。
d)求出加窗后实际的频率响应![图片8](http://oarap.org/wp-content/uploads/2016/02/图片8-1.png)
并反复检验 是否满足 ,不满足则改正窗形状或窗长的点数N。
表1 常见窗函数基本参数的比较【来自文献1】
Tab. 1 The comparison of common basic parameters window function
常见窗函数的参数如表1所示,本文设计中使用了凯泽窗来设计FIR滤波器,凯泽窗是接近最优化窗结构的窗函数,它可以根据不同的参数调整滤波器滤波器的各项指标,而矩形窗、汉宁窗、海明窗和布莱克曼窗等窗的形状是固定的,一旦选取了某种窗函数,设计出的FIR滤波器在阻带的衰减就确定了。凯泽窗是一种应用广泛的可调窗,它可以通过改变窗函数的形状来控制窗函数旁瓣的大小,从而可以在设计中用滤波器的衰减指标来确定窗函数的形状。
理想线性相位低通滤波器的频率响应:
单位抽样响应:
利用matlab中的FDATool【文献2】工具,设置了滤波器的阶数N=20,通带截止频率95HZ,阻带截止频率100Hz,Beat=0.5,通过凯瑟窗方法得到的滤波器特性如图3所示:![图片13](http://oarap.org/wp-content/uploads/2016/02/图片13.png)
图3 低通FIR滤波器幅频特性曲线
Fig. 3 Low pass FIR filter amplitude-frequency characteristic curve
理想线性相位带阻滤波器的频率响应:
单位抽样响应:
由于市电电压的频率为50Hz,它会以电磁波的辐射形式,对人们的日常生活造成干扰,我们把这种干扰称之为工频干扰,故设计一种陷波器,滤除心电信号中的50Hz干扰,
利用matlab中的FDATool工具,设置了滤波器的阶数N=60,Fc1=47Hz,Fc2=53Hz,Beta=0.3通过凯瑟窗方法得到的滤波器特性如图4所示:![图片16](http://oarap.org/wp-content/uploads/2016/02/图片16.png)
图4 50Hz的FIR陷波器幅频特性曲线
Fig. 4 50 Hz FIR trap amplitude-frequency characteristic curve
由于实测心电信号的信噪比较低,其特征波与部分干扰信号的频带相互重叠,普通的频带滤波方法不能有效的将两者完全分离。小波变换在传统的傅立叶变换基础上发展而来,具有多尺度多分辨率的优异特性和良好的时频局部化特性,所以小波去噪更适合处理心电信号与干扰信号频带重叠的滤波问题。
信号 ![图片17](http://oarap.org/wp-content/uploads/2016/02/图片17.png)的连续小波变换为:![图片18](http://oarap.org/wp-content/uploads/2016/02/图片18.png)
对尺度因子a和平移参数b进行如下的离散采样:![图片19](http://oarap.org/wp-content/uploads/2016/02/图片19.png)
则小波 ![图片20](http://oarap.org/wp-content/uploads/2016/02/图片20.png)变为:
离散小波变换定义为:
由离散小波变换 ![图片23](http://oarap.org/wp-content/uploads/2016/02/图片23.png)重构出原始信号 :
上式中 ![图片26](http://oarap.org/wp-content/uploads/2016/02/图片26.png)为![图片26](http://oarap.org/wp-content/uploads/2016/02/图片26.png) 的对偶框架。
首先对原始信号进行小波分解,经过累试发现dB6作为小波基对于分解带噪心电信号的效果较好,分解层数为5的时候,去噪效果较好,在保证了去噪效果的情况下节约了运算时间,各子带的频率范围如表2所示:
表2 5尺度分解子带系数的频率范围
Tab. 2 The frequency range of scale subband coefficients
在阈值处理及重构阶段采用如下参数:使用minimax原则【文献4】(极值阈值估计)产生阈值, minimax方法比较保守,对噪声在信号的高频段分布较少时去噪效果较好,可以将微弱的信号提取出来;并进行硬阈值处理,使得波形变得硬朗而非平滑;阈值处理根据每层小波噪声水平进行调整,这样的方法可以适应多变且复杂的心电信号,使得滤波系统具有一定的普遍性。运用MATLAB中的小波工具箱,图形化操作的方式小波分解心电信号,如图4所示为心电信号在5尺度小波分解下的波形:
图5 5尺度下dB6小波分解信号的波形
Fig. 5 5 scales dB6 wavelet decomposition signal waveform
基线漂移是因呼吸、肢体活动等引起的ECG信号上下浮动的现象,常规的心电图仪长采用无源RC滤波的方式来抑制基线漂移,即病人保持不动,待基线稳定以后再进行测量,显然,这样的做法对于病人进行长期的监护是不合适的【文献6】。
基线漂移的频率极低,普通的高通滤波器很难到达预期的滤波效果,所以提出了一种根据小波变换对信号进行长周期趋势估计【文献3】,再进行基线漂移的补偿。
用dB6小波基8尺度分解信号,其近似信号的频带分布如表3所示:
表3 8尺度分解子带系数的频率范围
Tab.3 The frequency range of scale subband coefficients
尺度为8的近似信号部分频带为0~0.9765625Hz,此频段多为信号的基线漂移趋势。所以在小波分解后将a8信号(主要基线漂移信号)直接去除即可。dB6小波在8尺度下分解信号的近似部分波形如图6所示:
图6 dB6小波在8尺度下分解信号的近似部分波形
Fig. 6 DB6 approximation of wavelet decomposition in 8 signal waveform
如图7所示为心电信号去噪系统在Matlab中对信号滤波前后的仿真对比图:可以发现100Hz以上以及工频50Hz的噪声被完全滤除;白噪声被消除,波形变得十分清晰;基线漂移现象被较好的抑制。
图7 信号去噪前后的时域波形及频谱图
Fig. 7 Signal denoising before and after the time domain waveform and spectrum diagram
本文给出了基于MATLAB的心电信号去噪系统的设计方法:从带噪心电信号的读取及频谱分析,窗函数法设计FIR滤波器对心电信号进行预处理;运用小波去噪算法滤除信号中残存的白噪声;基线矫正算法用来抑制信号中由于呼吸、人身运动等带来的基线漂移现象。经验证该系统对大部分低信噪比的心电信号去噪效果十分显著。
Matlab源代码和原始心电信号数据(20组)