- 博客(155)
- 资源 (2)
- 收藏
- 关注
原创 LIO-SLAM: 使用注意事项和算法解析
LIO-SLAM: 使用注意事项和算法解析 一. 滤波/图优化/因子图优化 "滤波" 滤波的方法中常见的是扩展卡尔曼滤波、粒子滤波、信息滤波等方法; 熟悉滤波思想的应该容易知道这类SLAM问题是递增的、实时的处理数据并矫正机器人位姿。 比如基于粒子滤波的SLAM的处理思路是假设机器人知道当前时刻的位姿,利用编码器或者IMU之类的惯性导航又能够计算下一时刻的位姿; 然而这类传感器有累计误差,所以再将每个粒子的激光传感器数据或者图像特征对比当前建立好的地图中的特征,挑选和地图特征匹配最好的粒子的位姿当做当前位
2021-05-21 11:13:01
2674
2
原创 数据通讯第七节: python通讯库socketserver的简介和测试
这个Python版本的socketserver简化了常规socket套接字使用,它封装了socket的一些创建的步骤, 能够更好为复杂的任务服务。 1. SocketServer的基础类框架 一是Server类: BaseServer/TCPServer/UDPServer用来接收客户的请求。TCPServer处理TCP请求,UDPServer处理UDP请求。BaserServer是基类,不能直接使用。TCPServer继承自BaseServer,UDPServer继承自TCPServer。 二是H.
2021-05-12 20:24:33
449
原创 多数据通讯第六节: 通讯系统框架调整, 多数据源处理、获取, 多平台广播和自由切换
事情变得复杂了,之前以为数据获取这一块不需要我负责, 现在也交由我来做了; 除此之外,数据源变得更加复杂了, 不再只是单纯的获取机器学习推理所需要的图像, 还有鱼眼图像获取用于AR合成. 1. 系统框架设计调整 框架调整的几个要点 1. 整个框架获取的原始数据不是有camera_device直接提供, 而是单独开设进程打开相机节点(一直执行另一个任务)写入某一个内存块,其他程序要想获取相机图像, 只能读取本地内存块。 2. Web端需要两种数据源, 一种是原始的鱼眼图像数据, 一种是AI预测图像,.
2021-05-10 11:55:52
441
原创 多数据通讯第五节: 对图像利用c++进行base64编码ZMQ传输, 利用Python进行解码接收.
在这一节中介绍利用zmq对图像数据进行传输的方法。ZMQ简单来说他也是一种数据通讯方式, 可以支持在多线程、多进程、多机器之间的多对多通讯方式. 一种高速并发消息通讯框架! ZMQ多机器通讯案例在后面给出 1. ZMQ学习和介绍 ZMQ(ØMQ、ZeroMQ, 0MQ)看起来像是一套嵌入式的网络链接库,但工作起来更像是一个并发式的框架。它提供的套接字可以在多种协议中传输消息,如线程间、进程间、TCP、广播等。你可以使用套接字构建多对多的连接模式,如扇出、发布-订阅、任务分发、请求-应答等。ZMQ的快.
2021-04-22 10:49:40
779
原创 多数据通讯第四节: 局域网内不同电脑部署socket通讯, 出现错误“Cannot assign requested address“?
多数据通讯第四节: 对图像利用c++进行base64编码传输, 利用Python进行解码接收 副标题: 对图像利用c++进行base64编码传输, 利用Python进行解码接收 在讲正式内容之前先记录一下多机通讯的实地测试遇到的几个问题, 一个烦恼我几天的问题就是标题. 1. 问题描述 今天在测试一个局域网内多台机器通讯的时候, 发现一个很奇怪的问题. 我已经测试过socket正常客户端与服务端通讯没什么问题, 可是把机器学习算法+socket通讯+ web通讯全部集中在一起运行, 测试图像数据传输
2021-04-20 18:30:42
428
原创 多数据通讯第三节: socket单客户端/服务端图像数据传输c++版
请注意, 本博客以及后续本专栏博客中的源码因为涉及到本人对整个系统的封装和接口重构, 所以会涉及到库的调用, 这个等我完整的库做出来之后会共享, 在此之前如果需要使用以下源码测试, 请留言附上邮箱, 敬请谅解! 这一节思考许久, 不知道该怎么写, 因为这里涉及到的东西太多了, 不知道从哪里写起, 因为涉及到单客户端/多客户端通讯, 图像编码和不编码通讯, c++客户端与c++服务端通讯, python客户端与python服务端相互通讯, 以及python与c++通讯等等, 这些等等太多了, 只能慢慢来.
2021-04-15 16:49:51
508
原创 多数据通讯第二节: Web端与python端数据通讯
在本节种主要介绍如何将Web端/app端的控制或选择指令传输到主控制板上, 然后在主控板上对图像数据进行筛选, 获取正确的相机数据 1. 通讯方法调研 前期跟做网页和App聊过是否有合适的方法来将App的指令传入到程序内部(c++/python), 得出的答案比较适用也就websocket, 或mosquitto, 其他的方法都受限于在web端操作(也就是增加同事的工作量, 想想还是放弃了.) 最后我还是选择了mosquitto来进行通讯, 毕竟这一块我可以自己定制修改, 能够更好的嵌入到我的算法当中..
2021-04-14 10:46:46
340
1
原创 多数据通讯第一节: 多平台/多数据共享系统框架设计和实现
中间中断了一段时间, 是由于一个特殊的项目去闭关啦, 现在又回来了, 接手一个多机通讯的项目, 再配合算法和图像处理, 现在终于差不多弄好了, 现在将其整理一下. 设计一个从高层调取底层多个相机数据接口进行算法处理的系统. 该系统可以自由调取不同相机的数据, 或单个或多个, 且能随时调取某个相机的数据进行模型推导. 因为涉及到的知识点比较多, 后面的解决方案会分为多篇博客来阐述. 1. 系统要求 本项目要求在主控PC板中调用底层五组相机的数据, 然后针对这五组相机数据进行机器学习算法推算, 而这五.
2021-04-13 20:35:01
768
原创 番外篇: python爬虫、数据处理、数据分析实战项目
第一阶段: 专门用来训练爬虫的实战项目 仅有爬虫,而没有数据分析 32个Python爬虫项目实战 第二阶段: 专门用来训练数据处理的实战项目 仅有数据处理和分析, 直接提供标准数据 有部分项目采用了一些特殊的数据分析算法进行预测和评估 《python数据分析与挖掘实战》中的基本项目以及课程拓展 第三阶段: 爬虫和数据处理+分析 仅对现有/爬取的数据进行统计学意义上的总结分析,并没有使用特殊的算法/机器学习模型对未来进行预测 Python数据分析汇总 有趣的Python爬虫和数据.
2021-03-30 20:43:30
1382
原创 史上最全源码安装ROS-BUG解决集合2:在树莓派4B上安装Raspbian Bluster aarch64系统 + ROS-Melodic
史上最全源码安装ROS-BUG解决集合2:在树莓派4B上安装Raspbian Bluster aarch64系统 + ROS-Melodic 因为项目上的一些原因, 现在要在树莓派上安装64位系统,之前也测试过一些64位的树莓派系统,如ubuntu-mate, ubuntu-core, 以及新出的那个openFans系统,但是都不尽人意。 有些桌面资源消耗太大,有的启动太慢, 有的功能不全,动不动就出问题,现在终于除了正版的官方aarch64位系统,赶紧来测试一波! 对了, 就目前测试效果棒棒的,配
2021-03-29 10:02:23
654
原创 pytorch学习第三天: 阿里云物联网平台使用
这一节考虑的是如何在本地实现对外网设备端的固件更新和数据传输 初级使用教程 阿里云物联网平台使用教程(一) 阿里云物联网平台使用教程(二) 阿里云物联网平台使用教程(三) 1. vscode中的字体下载、更新和导入 ## 1. 下载自己喜欢的字体如Operator Mono git clone https://github.com/beichensky/Font.git ## 2. 然后将字体复制到/usr/share/fonts/路径下 sudo cp -rf fonts/* /usr/sh.
2020-12-14 10:17:02
282
原创 pytorch学习第二天: 在线学习算法FTRL及python“多线程“
很多学习的东西现在没时间一一详细解析了,等后面有时间再来慢慢细化吧,现在只能简单先做一下相关的记录,好防止后面有所遗忘. 1. 在线机器学习 各大公司广泛使用的在线学习算法FTRL详解 Online Learning(在线机器学习)是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果。本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL(Follow The Regularized Leader)[1]和BPR(Bayesian Probi.
2020-12-14 10:13:59
1745
原创 Pytorch学习第一天: 模型保存和加载方式
1. 方式一: 加载和保存状态字典 只保存参数的方法在加载的时候要事先定义好跟原模型一致的模型,并在该模型的实例对象(假设名为model)上进行加载,即在使用上述加载语句前已经有定义了一个和原模型一样的Net, 并且进行了实例化 model=Net( ) . ## 保存模型的字典参数, 保存模型的后缀通常为'.pt' 或者 ‘.pth’ torch.save(model.state_dict(), PATH) ## PATH必须要有文件名称如./model.pth ## 加载模型 model = init
2020-12-14 10:10:27
414
原创 新华硕笔记本ubuntu18.04双系统安装之后,wifi没有显示无法链接wifi
本来我以为跟简单安装一个wifi网卡的驱动就可以解决的问题,没想到花了我一早上的时候解决… 惭愧。 另外,本来是没打算写这篇博客的,但是我在搜索解决这个问题的过程中, 发现多人提出的解决方案跟我的都不一样,甚至我的解决方案都没有搜到相应的答案,还是只能靠自己啊。。 言归正传,还是说说怎么正确的安装wifi驱动吧! 1. wifi没有正确安装、或没有正确配置的表现 我的电脑现象: 有wifi图标, wifi设置上显示unaviable,无法搜索到任何wifi; 还有其他类似的表现,大家可以看看其他朋友的提
2020-11-12 14:46:59
1860
2
原创 导航包Navigation最全完整解析(六): 为导航添加新算法插件的开发手册
add Global Planner As Plugin in ROS 在原始的navigation的算法基础添加新的算法,做全局规划或者局部规划以及恢复行为; 在本次教程中,我会一步一步写一个新的简单全局路径规划算法(案例参考)作为插件来导入slam_planner中,作为算法二次开发手册。 第一步: 新建一个ROS包<rx_astar_planner>-包含以下文件 ├── CMakeLists.txt ├── include │ └── rx_astar_planner │ .
2020-09-17 10:16:59
1891
1
原创 导航包Navigation最全完整解析(五): 重要接口之BaseLocalPlanner
类似全局路径规划器描述,简化局部路径规划的讨论. 与全局路径规划器想似,在调用局部路径规划时,同样也是在move_base调用nav_core::BaseLocalPlanner接口; 然后用base_local_planner(如DWA)来继承nav_core::BaseLocalPlanner类,并以同样的原理将基类指针指向子类,从而调用子类的函数 move_base中调用局部路径规划器的接口 // move_base.cpp(节选) boost::shared_ptr<nav_core.
2020-09-16 10:48:39
1045
1
原创 导航包Navigation最全完整解析(四): 重要接口之BaseGlobalPlanner
导航包Navigation最全完整解析(四): 重要接口之BaseGlobalPlanner 本节解析move_base的全局路径规划器接口: BaseGlobalPlanner. 在前面的分析可以知道, 在move_base中调用全局规划算法时会初始化全局路径规划接口; 这个接口通过nav_core包来传递核心的实现函数如(carrot_planner/global_planner等); 因此在本节中主要采用针对global_planner包来分析全局路径规划的接口函数调用; 其主要调用的函数流程为:
2020-09-11 11:24:46
1532
原创 导航包Navigation最全完整解析(三): 重要接口之Costmap_2D
承接上一节, 在了解move_base代码的执行原理之后, 开始逐步学习和解析每一个重要的程序接口,并在最后附上可用参数的参数设置。 costmap_2d的参数空间 static_layer ## 静态层 原始地图 obstacle_layer ## 障碍层 动态障碍 inflation_layer ## 膨胀层 ##@其他扩展, 还可自定义 social costmap layer ## 跟踪人 Range sensor layer costmap地图又叫占用栅格图, 即将整张地图分为多个小.
2020-09-09 12:07:03
1547
3
原创 导航包Navigation最全完整解析(二): 对核心节点move_base进行分析
开始直接进行代码分析阶段, 首先对核心节点move_base进行分析 一、 MoveBase( &tf) 节点重要接口函数功能解析: 1. 初始化全局规划和局部规划器句柄; 2. 初始化恢复行为句柄; 3. 初始化代价地图函数句柄; 4. 其他参数、变量等初始化; 初始化1个服务: MoveBaseActionServer(, , boost::bind(&MoveBase::executeCb, this, _1), ); 初始化另开1个线程: boost::thread(bo.
2020-09-07 11:19:32
1871
2
原创 导航包Navigation最全完整解析(一): 软件包关系梳理
导航包Navigation最全完整解析: 软件包关系梳理 navigation包目前常用的主要有kinetic-devel和melodic-devel两种分支; 在本次讨论中主要针对kinetic-devel版本进行解读. 对navigation的两种分支做一个简单的对比: 1. melodic在kinetic的基础上淘汰了tf的使用,替换成了tf2; 2. melodic在某些Velocity参数设置做了一些相应的修改,参数名等方面; 3. costmap2D上增加了某些细节; 4. 在核心算法上好像
2020-08-20 14:16:31
5814
1
原创 DRL学习第二课: 方法学习和探索
探索与利用 序列决策的一个基本问题: 探索Exploration:尝试更多的决策,不一定是最优收益,可能发现更好的策略 利用Exploitation:执行能够获得已知最优收益的策略 “策略探索的原则” 1. 朴素方法 2. 积极初始化 3. 基于不确定的度量 4. 概率匹配 “案例: 多臂老虎机” "详细阐述和分析" 1. 朴素方法Naive Exploration 添加噪声策略 2. 积极初始化Optimistic Initialization a. 给价值函数一个较高的初始化值 b.
2020-08-04 14:27:05
517
2
原创 DRL学习第一课: 结构梳理和理清概念
近期在忙一个比较重要的项目, 做到机器人快速避障,正在努力学习和更新中. 深度强化学习(Deep Reinforcement Learning) 强化学习是机器学习的一个分支, 相较于机器学习经典的有监督学习, 无监督学习问题, 强化学习的最大的特点是在交互中学习(Learning from Interaction). Agent在与环境的交互中根据获得奖励或惩罚不断的学习知识, 更加适应环境. RL学习的范式非常类似于我们人类学习知识的过程, 也正因此, RL被视为实现通用AI重要途径. 强化学.
2020-07-20 10:39:02
1142
原创 TF2.0学习NOTE5: 探索解析 过拟合/欠拟合
对模型的训练的准确性, 会先达到峰值, 然后下降. 模型训练的目的: 使模型能够适用于大部分泛化测试数据, 并保持较高的准确率. "名词解析" "模型数据较少时, 使用正则化等技术, 限制了模型可以存储的信息的数据量和类型,如果网络只能记住少量模式, 那么优化过程将迫使它专注于最突出的模式,这些模式有更好的泛化性" 1. 过拟合: 模型训练时间过长, 训练数据较少; 2. 欠拟合: 模型设置不够强大, 过度正则化以及无足够长时间训练模型; 3. 正则化: 向原始模型引入额外信息,以便防止过拟合和提高.
2020-06-10 10:30:12
271
原创 TF2.0项目实战一:汽车质量检测
TF2.0项目实战三:汽车质量检测 1. 获取数据集 car-evaluation下载链接: https://archive.ics.uci.edu/ml/datasets/Car+Evaluation 在下载页面有对数据的详细描述, 参照数据描述, 对数据进行处理. 2. 对数据进行处理 将数据分为7大类要素, 其中包括分类结果Result. column_names=['Buying', 'Maint', 'Doors', 'Persons', 'Lug_boot', 'Safety', 'Result
2020-06-08 21:57:49
1099
1
原创 ubuntu技巧学习5: shell脚本程序自启动编写
1. 查找某一进程的ID号, 然后终止该进程的运行 dir=<<your packages dir>> export SUDO_ASKPASS=$dir/PASSWD ID=`ps -ef | grep "sdk_lcm_server_high" | grep -v "$0" | grep -v "grep" | awk '{print $2}'` sudo -A kill $ID 2. 不同终端下自动开启另一个终端运行程序, 并保持终端不关闭 gnome-ter
2020-05-26 11:25:07
550
原创 FastAI-1-0-6学习第一节:框架特性与前言准备
1. 为什么学习FastAI ? 1. 它可以快速, 可靠地把最先进的深度学习应用于实际问题; 2. 它的准确性和速度上有着明显的提高, 同时所需的代码大大减少; 3. 它能用模块化-高级API实现最先进的技术和创新; 2. FastAI检测GPU的运行状态 "本机查看GPU的详细信息: " python -c 'import fastai.utils; fastai.utils.show_install(1)' 3. Fastai的运行性能加速 Mixed Precision Trai
2020-05-18 21:38:10
446
原创 史上最全源码安装ROS-BUG解决集合:在树莓派4B上安装Raspbian Bluster + ROS-kinetic + 配置navigation
Raspberry Pi 源码安装ROS-Kinetic 这里的测试中rosdep 无法使用, 通过其他方式下载了kinetic-desktop-wet.rosinstall文件,并注销opencv的编译+安装。 1. 前言背景 sudo rosdep init && rosdep update 无法成功,凡是涉及到rosdep的都无法成功; 提醒: 如果你可以设置系统全局VP...
2020-04-30 20:45:32
3437
4
原创 动手学深度学习TF2.0第十二课: 从数据导入、预处理、模型创建、编译、保存、预测模型的整个流程(图像分类)
对项目一: 图像分类的逐步解析 #!/bin/bash # -*-coding:utf-8-*- ###### 第一个简单项目测试: 图像分类模型测试. 数据集为: Fashion MNIST. Tensorflow2.0 ############################ # 将新版本的特性引进当前版本中。 from __future__ import absolute_impo...
2020-04-15 10:52:42
776
原创 动手学深度学习TF2.0第十一课: 解析几种不同深度神经网络的设计思路
1. 各网络层对比 VGG: 可以通过重复使用简单的基础块来构建深度模型; NiN LeNet、AlexNet和VGG在设计上的共同之处: 先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。 其中,AlexNet和VGG对LeNet的改进主要在于如何对这两个模块加宽(增加通道数)和加深; 而NiN提出了另外一个思路,即串联多个由卷积层和“全连接”层构成的小网络来构...
2020-04-08 20:01:42
441
原创 动手学深度学习TF2.0第十课: 卷积层中的超参数调整
卷积层的输出形状由输入形状和卷积窗口形状来决定。如假设输入的形状为n(h) * n(w), 卷积核窗口形状是k(h) * k(w), 那么输出形状将会是 (n(h) - k(h) +1) * (n(w) - k(w) +1). 1. 超参数调整 由上讨论,可引出两个超参数: 填充和步幅. 填充 ''' 填充(padding): 是指在输入的高和宽两侧填充元素(通常为0). 填充的小技巧:...
2020-04-05 21:03:24
1311
原创 DAVIS第八课: EMVS- 基于事件相机的多立体视野3D环境重建
1. 摘要 事件相机与传统视觉相机的数据输出不一致, 因此需要转换处理模式. EMVS优雅地利用事件相机的两个固有属性: 天然提供几何边缘信息; 提供连续的数据测量信息; 本文的算法利用上述两个特性,在已经事件相机的运动轨迹下,能够给出精确地的, 中稠密深度地图, 且不要求任何的数据关联和强度估计. 我们的算法是非常有效的,能够在CPU上实时处理. 2.Event-based Multi-Vi...
2020-04-05 17:32:06
1397
1
原创 DAVIS第七课:Feature Detection and Tracking with the Dynamic and Active-pixel Vision
第八课:Feature Detection and Tracking with the Dynamic and Active-pixel Vision 1.摘要 因为标准的相机以一种连续的时间间隔采样场景,所以他们并不提供后续帧之间盲区时间。 然而, 对于大多数高速运动的机器人和视觉应用中,在盲区时间内提供一种高速率测量更新是至关重要的。 DAVIS联合了标准相机和异步事件传感器, 能够解决上述难...
2020-04-05 17:21:21
742
原创 TF2.0学习NOTE3: AI在工业视觉上的主要应用场景
1.测量; 2.识别,如读取各种条码; 3.定位、引导,识别位置; 4.检测,如缺陷检测
2020-04-02 20:51:45
265
原创 动手学深度学习TF2.0第九课: 二维卷积神经网络
卷积神经网络: 含卷积层,有宽和高两个维度,常用来处理图像数据。 1.二维卷积(互相关运算) ''' 二维互相关运算: 1. 卷积窗口(又被称卷积核或过滤器(filter))从输入数组的最左上方开始,按从左往右、从上往下的顺序, 依次在输入数组上滑动; 2. 当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按元素相乘并求和,得到输出数组中相应位置的元素; 实现二维互相关运算函数如下:...
2020-04-02 20:44:26
661
原创 动手学深度学习TF2.0第八课: 模型构造-模型参数保存+加载-GPU计算
本章节涉及到模型的构造、参数访问、初始化以及自定义网络层等细节问题,在这里省略讨论,等后面在具体项目中具体分析。 本章重点记录模型和数据保存、读取; 以及GPU的调用; 1. 读取和存储 import tensorflow as tf import numpy as np print(tf.__version__) ## 加载和保存数据 x = tf.ones(3) np.save('x...
2020-04-01 17:10:18
584
原创 动手学深度学习TF2.0第七课: 模型训练和参数调节技巧
模型结构的改变和超参数调节技巧 训练误差和泛化误差 通俗解释: 训练误差就是由训练集上表现出的误差, 而泛化误差为测试集上表现出的误差. 由于训练误差是在训练集上通过最小化训练误差不断迭代得到的, 所以训练误差的期望<=泛化误差的期望. 所以训练集上的模型表现一般会优于测试集上的表现. 因此, 一味地降低训练误差并不意味着泛化误差一定会降低. 机器学习模型应关注降低泛化误差! 1....
2020-03-30 10:18:35
1550
原创 福利一波: linux下编写shell脚本自动聚焦窗口、保存、定时删除等
前段时间终于历经千辛万苦,终于开始复工了。 一来公司赶紧花时间解决了这段时间由于产品更新留下的问题,恢复了正常的发货; 其次跟上节奏开始了新项目的开发和迭代。 现在这些比较急的事情都已经告一段落,现在要开始自我学习和奋斗咯。只有不断进步才能提升自我价值, 继续加油。 1. linux下自动文件夹下过时的文件 #!/bin/bash dir=/home/ian/tmp/Pictures #保...
2020-03-28 18:12:44
352
原创 随笔记录1:ubuntu18.04下ROS的安装
#! /bin/bash sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:8...
2020-02-29 10:38:15
252
原创 VSLAM(6): Real-time Segmentation, Tracking and Fusion of Multiple Objects
学习论文: 时而学习之, 温故而知新. 该算法以模型为基础单位, 一组3D点的集合(关键帧), 来实现帧的跟踪/分割/融合 活跃模型: 在当前帧中看到的模型 非活跃模型: 曾经出现过, 不知其几何形状, 也不在当前视野内. 1. 摘要 本文介绍了一种基于RGB-D相机实时的稠密SLAM系统(定位+3D环境重建)。该算法可以根据运动和语义标注将场景分割成不同的目标物。 我们使用多种模型拟合方法...
2020-01-21 11:54:32
674
原创 动手学深度学习TF2.0第六课: 多层感知机
前面介绍的线性回归和softmax回归都是单层神经网络. 然而在深度学习中, 大多数是多层模型. 以下以多层感知机为例, 介绍多层神经网络. 1. 隐藏层 多层感知机在单层神经网络的基础上引入了1~N个隐藏层(hidden layer).隐藏层位于输入层和输出层之间. 上图中含有一个隐藏层,该层中有5个隐藏单元; 输入层不参与计算,所以上图中的多层感知机的层数为2; 上图中的多层感知机隐藏层...
2020-01-16 11:01:42
565
stixel_world.tar.gz
2019-07-18
MouseClick.sh
2020-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅