自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 网络通信(五)IO复用

多进程/线程并发模型,为每个socket分配一个进程/线程。IO多路复用:通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。应用:适用于针对大量的io请求的情况,对于服务器必须在同时处理来自客户端的大量的io操作的时候,就非常适合与多进程和多线程技术相比,I/O多路复用技术的最大优势就是系统开销小,系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。目前支持I/O多路复用的系统调用有select。

2024-05-27 14:04:36 970

原创 网络通信(四)多进程网络服务端

僵尸进程: 进程使用fork 创建子进程,如果子进程退出,而父进程并没有调用 wait 获 waitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中的这些进程是僵尸进程。避免僵尸进程的方法:1.fork 两次用孙子进程去完成子进程的任务2.用 wait() 函数使父进程阻塞3.使用信号量,在 signal handler 中调用 waitpid , 这样父进程不用阻塞server.cppclient.cpp。

2024-05-27 14:03:24 303

原创 网络编程(三)网络字节序与主机字节序、通信程序模板

不同的CPU设计时采用的字节序是不同的,谈到字节序的问题,必然牵涉到两大CPU派系。PowerPC系列采用大端字节序(big endian)方式存储数据,而x86与x86_64系列则采用小端字节序(little endian)方式存储数据。在Linux网络编程中,经常碰到网络字节序与主机字节序的相互转换。(1)小端字节序(Little endinan),数值低位存储在内存的低地址,高位存储在内存的高地址;(2)大端字节序(Big endian),数值高位存储在内存的低地址,低位存储在内存的高地址。

2024-05-27 14:02:08 715

原创 语义分割算法——增加了级联模块和图像级特征ASPP的DeepLabv3

DeepLabV3中,回顾了空洞卷积操作。为了能够分割不同尺度对象,设计了一种级联的方式使用空洞卷积的模块,采用多个空洞率来捕获多尺度的特征。此外,作者建议增强DeepLabV2提出的ASPP模块,能够进一步提高性能。提出的DeepLabV3系统,和之前不做CRF操作的版本相比,效果改善明显。相较于DeepLabv2的区别:1 . 使用了Mutli grid的级联结构的空洞卷积;2. ASPP增加了1×1的图像级特征;3. 不再使用CRF总之,新方法永远是效果更好的。

2024-05-26 11:07:15 551

原创 ROS2 技术及分布式介绍

ROS2 本身是一个分布式通信框架,可以很方便的实现不同设备之间的通信,ROS2所基于的中间件是DDS,当处 于同一网络中时,通过DDS的域ID机制(ROS_DOMAIN_ID)可以实现分布式通信,大致流程是:在启动节点之前, 猛狮集训营 可以设置域ID的值,不同节点如果域ID相同,那么可以自由发现并通信,反之,如果域ID值不同,则不能实现。就底层实现而言动作通信是建立在话题通信 和服务通信之上的,目标发送实现是对服务通信的封装,结果的获取也是对服务通信的封装,而连续反馈则是对话题 通信的封装。

2024-05-18 19:38:41 995

原创 语音识别(录音与语音播报)

语音识别人工智能技术的应用领域非常广泛,常见的应用系统有:语音输入系统,相对于键盘输入方法,它更符合人的日常习惯,也更自然、更高效;语音控制系统,即用语音来控制设备的运行,相对于手动控制来说更加快捷、方便,可以用在诸如工业控制、语音拨号系统、智能家电、声控智能玩具等许多领域。​ 语音识别简单来说就是利用计算机语音信号自动转换为文本的一项技术,语音识别技术拆分下来,主要可分为”输入—编码—解码—输出”四个流程。在语音识别中,设备首先收集目标语音,然后对收集到的语音进行一系列处理,得到目标语音的特征信息。

2024-04-09 19:52:24 1583

原创 颜色识别

计算机视觉中的颜色识别是指计算机系统能够自动识别图像或视频中的不同颜色,以便进行分析、分类、跟踪和其他视觉任务。颜色是物体的一个重要属性,它提供了有关对象的重要信息。颜色识别在各种应用中都有重要作用,包括工业自动化、机器人技术、医学影像处理、安全监控、自动驾驶汽车、农业和许多其他领域。

2024-04-09 19:50:44 398

原创 ROS2 采集虚拟仿真环境图像并发布

简介:ROS2功能的学习我们还是在基于OpenAI的gym虚拟仿真环境中来完成,gym虚拟仿真环境安装请参考,这里不再重复说明,接下来我们开始创建一个ROS2的功能节点,并发布虚拟仿真环境小车摄像头的图像,然后利用rqt工具查看图像。

2024-04-07 10:56:17 1096

原创 基于强化学习(Reinforcement Learning)的机器人阻抗控制策略

这通常是通过试错的方式进行的,即智能体在环境中尝试不同的行为,并根据获得的奖励或惩罚来调整其行为策略。通过不断地尝试和调整,机器人可以学会如何在不同的情境下采取最有效的动作,从而提高任务的完成效率和质量。在基于强化学习的机器人控制策略中,机器人通过与环境的不断交互,观察当前状态,并根据学习到的策略选择一个动作执行。强化学习(Reinforcement Learning,RL)是机器学习的一个分支,主要研究智能体如何在与环境的交互中通过学习策略以达成回报最大化或实现特定目标的问题。

2024-04-07 10:52:35 1358

原创 Windows如何优雅的运行ROS2/linux

在ROS/ROS2开发过程中,大家普遍使用到的分布式开发方法都是基于虚拟机/双系统进行,本质上是希望基于Ubuntu良好的生态环境进行,但是两种方式各有各自的好处,也有各自的弊端,例如虚拟机很大而且并不能运行GPU;又比如双系统会导致个人数据碎片化(如想在ubuntu下使用微信/qq/word);基于一系列的理由了,笔者想在windows下进行ROS/ROS2的开发,是否有比较好的方式呢?WSL,window下的子系统;

2024-04-03 13:56:37 1301

原创 WebViz可视化

Webviz是一个基于Web的可视化工具,意味着您可以通过浏览器/APP访问它,而不需要安装额外的软件。这对于远程访问和团队协作非常方便。Foxglove是一个开源的工具包,包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了一系列用于构建机器人应用程序的功能。本节将介绍如何使用Foxglove进行数据查看,以及话题通信。

2024-03-30 22:41:18 789 1

原创 在ROS上快速验证PID算法

最近有在外面出差授课的工作任务,其中有一个环节是给大家讲述PID相关的内容,在制作相关PPT的时候查询了很多资料,但是写着写着突然意识到一个问题,PID已经在控制专业学习过程以及工程开发时间中那么常见了,继续去照本宣科的讲解其理论是否还有必要,随即开始想不如开发一个小DEMO,在ROS环境里验证PID算法实例。这也是这篇文章的由来了。比例(Proportional)(P):计算当前偏差(设定值与实际值的差距),并乘以比例增益(Kp)。输出对系统的当前状态进行纠正。

2024-03-30 22:37:05 695 1

原创 回环检测-

回环检测作为VSLAM中相对独立又重要的一个模块,在消除累积误差,重定位等方面有着重要作用,更有甚者,把系统是否有重定位模块,来作为判断一个系统是SLAM还是里程计的依据。

2024-03-29 14:44:00 1479 1

原创 后端之非线性优化

在后端优化中,存在着两种优化算法,一种是利用矩阵分解求得最小二乘问题解的方法,不用迭代;第二种就是利用迭代的方式,不断调整参数,使残差最小,这种算法是本章要介绍的算法,也是我们通常所说的非线性优化的方法。

2024-03-28 17:51:31 1334 1

原创 后端之卡尔曼滤波

在很久之前,人们刚结束信息传递只能靠信件的时代,通信技术蓬勃发展,无线通信和有线通信走进家家户户,而著名的贝尔实验室就在这个过程做了很多影响深远的研究。为了满足不同电路和系统对信号的需求,比如去除噪声,或者区分不同频率的信号,滤波器就诞生了,而贝尔实验室就是这一领域研究的先行者。早期的滤波器是电子滤波器,是由电阻,电感,电容等电子元件组成的物理电路,其电路图大概长这样:这个是由一个电容和一个电阻组成的RC滤波器。而装在实际家电或者设备中的滤波器大概如下图,这个是一个包含高通和低通滤波器的信号分离装置。

2024-03-28 17:39:16 1054 1

原创 视觉里程计之相对位姿估计

这是视觉里程计的最后一个介绍,在第一个部分介绍了特征点法用于采集图像之间的特征,在匹配好特征点后,我们可以得到两个一一对应的像素点集。接下来要做的,就是根据两组匹配好的点集,计算相机的运动了。在普通的单目成像中,我们只知道这两组点的像素坐标。而在双目和RGBD配置中,我们还知道该特征点离相机的距离。因此,该问题就出现了多种形式:2D-2D形式:通过两个图像的像素位置来估计相机的运动。3D-2D形式:假设已知其中一组点的3D坐标,以及另一组点的2D坐标,求相机运动。3D-3D形式:两组点的3D坐标均已知,估

2024-03-27 09:56:58 994

原创 视觉里程计之对极几何

上一个章节介绍了视觉里程计关于特征点的一些内容,相信大家对视觉里程计关于特征的描述已经有了一定的认识。本章节给大家介绍视觉里程计另外一个概念,对极几何。

2024-03-26 22:28:10 724

原创 智能机器人OriginBot使用指引

导航版在视觉版的基础上,额外配置了IMU姿态传感器、激光雷达和个性化配件,可进一步开发机器人SLAM地图构建和自主导航应用,全方位满足智能机器人的开发需求。OriginBot是一个社区共建的开源项目,大家可以二次开发,让手上的OriginBot更加与众不同,欢迎每一位开发者参考、学习、反馈、贡献。,在上一步安装好的Ubuntu系统上,安装ROS2,推荐安装ROS2 Foxy或ROS2 Humble。OriginBot开发和运行的基础环境均为ROS2,建议大家提前学习ROS2相关的基础知识,可参考。

2024-03-26 20:26:41 2427

原创 OriginBot智能机器人开源套件

所得超所见,所见即开源,从结构到电气,从驱动到应用,OriginBot小巧的身躯中,是一个庞大的开源世界,欢迎每一位开发者从这里汲取营养,更欢迎每一位开发者贡献力量。依托强大的社区支持,OriginBot和它的开发者,都不止于每一步的前行,软硬件持续迭代,版本周期更新,让我们一起成长壮大。每一台OriginBot都是独一无二的,套件中包含唯一序号的车牌,从“0000”开始顺序编码,为你的爱车挂上车牌,你就是它的主人,更多可能性等待大家一起探索。OriginBot结构简约,应用却不简单,可以拓展无限可能。

2024-03-26 19:47:34 2437

原创 视觉里程计

视觉里程计是VSLAM中的前端部分,而特征追踪是视觉里程计中的一个基础和关键的任务,它的作用是从两张或者多张图片中识别对应相同或相似的内容。通过追踪图像中局部特征在前后帧图像中的位置,可以实现视觉运动估计这个工作。但是需要提及的是特征的抽取及匹配是整个VSLAM系统中最耗时的计算过程之一,所以如何实现快速且鲁棒的特征点检测匹配算法也是研究VSLAM一个重要的话题。

2024-03-13 14:26:58 879

原创 如何开发智能小车的应用功能

DPM(是基于HOG特征检测的一种变种,不同的地方在于,DPM中会加入一些额外的策略,来提升检测的精度,而DPM方法是目前非深度学习方法,检测效果最好的,性能最优。OpenCV实现了图像处理和计算机视觉方面很多通用算法,这样我们在开发视觉应用的时候,就不需要重新去造轮子,而是基于这些基础库,专注自己应用的优化,同时大家的基础平台一致,在知识传播的时候也更加方便,只要你看得懂OpenCV的函数,就可以很快熟悉别人用OpenCV写的代码,大家交流起来非常方便。目标检测的方法有传统方法,也有深度学习的方法。

2024-03-12 16:48:42 2006 1

原创 如何实现智能小车的通信协议

在Part2《如何开发智能小车的驱动器软件》中我们已经介绍了什么是通讯方式的协议层,它是指通信双方对数据传送控制的一种约定,协议中包括数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等,通信双方必须共同遵守。第二点,上下位机的指令发什么由开发者决定,往往取决于希望获取什么样的数据,例如对于下位机而言需要的是一个速度指令,那么上位机只需要发布X、Y、Z轴的速度指令即可,下位机负责对数据帧进行解析。这里其实解决了一个很重要的问题,例如底盘挂掉了,或者你希望一关掉底盘程序车就停下来该如何做。

2024-03-12 14:11:15 1562 1

原创 如何开发智能小车的驱动器软件

为了更好的控制机器人行走,电机控制算法通常使用PID算法,PID(proportion integration differentiation)其实就是指比例,积分,微分控制。当我们得到系统的输出后,将输出经过比例,积分,微分3种运算方式,重新叠加到输入中,从而控制系统的行为,让它能精确的到达我们指定的状态。基本形态如下图所示:比例环节是对偏差瞬间作出反应,偏差只要产生,控制器立即产生控制作用, 使控制量向减少偏差的方向变化。

2024-03-11 13:27:52 2405

原创 视觉SLAM简介

SLAM(Simultaneous Localization and Mapping),意为同时定位与建图。看名字比较难理解,但是结合到日常生活中的例子就很好懂了。想象一下到了一个陌生环境中,比如你现在的某个陌生的迷宫里面,你需要找到出去的路,一开始你不知道自己在哪所以只能凭感觉四处走动,但是在行走过程中你还是很聪明的做了一些标记,当突然走到一个位置,你发现目前这个场景好熟悉,是不是哪里见过,不太肯定,但是毕竟没走出去只能继续往前走,知道走到某个位置,你发现了你之前做过的某个标记。

2024-03-07 17:23:22 1051 1

原创 三维空间刚体运动

在上一个Part,我们知道了坐标转换的一些基础只是,其实三维空间的刚体运动与其也有紧密的联系,可以理解为刚体运动为持续的把运动坐标系中的坐标变换到固定坐标系中,此外再加上旋转这一过程。

2024-03-07 16:46:12 904 1

原创 如何设计一款四轮智能小车

此部分共分为五个小节,通过这个 Part 的学习,我们将了解机器人的概念和组成,对机器人的整体设计有一个明确的思路,然后通过机械结构、驱动系统、传感系统、控制系统四大组成部分,展开介绍设计一款智能小车的基本思路。通过这一讲课程,我们希望大家脑海中能够对智能小车有一个明确的认识和开发思路,未来我们再逐个击破,把它一点一点做出来。从控制的角度来讲,机器人可以划分为图中四大组成部分,分别是:传感系统、执行机构、驱动系统和控制系统。

2024-03-06 14:54:17 2068

原创 坐标系变换与外参标定

在 相机投影及相机畸变-CSDN博客 中,已经和大家介绍了三维世界到二维世界的图像投影和图像畸变及其去除相关问题。有了内参,我们可以一定程度的还原相机到底看到了什么。但是相机观测的数据还是处于相机坐标,我们还需要将局部观测转变到全局观测上来。将传感器坐标系观测转换到载体坐标系需要通过外参。本章将介绍坐标系转换及相机外参这两部分内容。

2024-03-04 15:04:55 875 1

原创 算法重启(五)

数组: 1、给定一个长度为 n 的数组,其中包含范围为 1 到 n 的整数,有些整数重复了多次,有些整数 没有出现,求 1 到 n 中没有出现过的整数。vector<int> findDisappearedNumbers(vector<int>&nums){ vector<int>ans; for(const int &num:nums){ int pos=abs(num)-1;...

2024-03-04 13:42:05 423 1

原创 相机投影及相机畸变

到目前为止,相机成像有两大转换过程,相机投影及畸变消除,主要由内参矩阵以及畸变参数,这两种参数来决定。而求出这两类参数的过程,就是相机标定,目前相机常用的方法是借助棋盘格标定板,在相机前面拿着标定板上下左右前后移动,然后借助标定算法来求出以上参数,常用的标定算法有张正友标定法。

2024-03-04 11:27:22 1361 1

原创 OriginCar那些事儿

有小伙伴问我,为什么OriginCar是粉色的,在设计之初我们也想过这个问题,我说OriginCar的主基调是热爱,唯有热爱才有团队持之以恒的付出,在最紧张的时刻大家主动通宵达旦的干,N多夜晚在沟通、开发中到公司园区关门(如下图),没有热爱就没有这款产品的问世。事情的转机出现在2023年11月,古月老师说智能车比赛地平线智慧医疗赛项也需要一款四轮车,如果能够在1月份左右出一款符合比赛要求的四轮车,那很有可能能够作为一款赛项用车,这样的机会对我们团队而言无论如何是要抓住的。

2024-03-02 13:33:07 930

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除