- 博客(54)
- 资源 (16)
- 收藏
- 关注
原创 激光SLAM深度剖析
激光SLAM深度剖析系列文章索引本系列文章,是对激光SLAM的深度解读,一作为学习用,二作为分享用。详细的解释、直观的图表、丰富的注释、简化的测试代码。作者:公众号:小白学移动机器人算法部分(1)不可错过的gmapping算法使用与详细解释(2)占据栅格地图构建(Occupancy Grid Map)(3)我手写了个SLAM算法!(4)我手写了个SLAM算法(二)!(5)图解SLAM(6)…传感器误差标定部分(1)2D激光雷达运动畸变去除原理解释、代码实现(2)…敬请期待。如果
2020-12-09 12:06:44 3284 3
原创 从零搭建ROS机器人平台
1.引言本着为大家谋福利的心态,根据自己以往的开发经验,打算写一个从零开始制作一个可以实现地图构建和导航的ROS小车。目前某宝上面有很多现成产品,但是我个人认为,一个好的移动机器人开发工程师,应该对机器人的整个流程都能具备维护的能力,然后再深入研究其中一个方向即可。看到网上很少有整个系列的开发教程,看到同学们大多东拼西凑,浪费了不少时间。我就想着利用空余时间,将我本人的开发过程输出给大家。有基础理论、有实际工程代码、有丰富的学习资料,尽最大努力帮大家进入移动机器人的大门。2.任务下面我们就看看制作一个
2020-08-21 01:28:13 47812 44
原创 在面试中,我常问的c++问题
基于对象设计(Object-Based Design)和面向对象设计(Object-Oriented Design, OOD)是两种常见的软件设计范式,它们都侧重于以对象为中心的编程和系统设计,但有一些区别。基于对象设计基于对象设计关注于定义、创建和使用对象,但不一定涉及继承和多态等高级面向对象的特性。在这种设计范式中,数据和相关的操作被封装为对象。它主要支持封装和数据隐藏,对象可以通过暴露的方法进行操作,但不一定要求对象之间的复杂关系(如继承)。面向对象设计。
2024-05-13 23:30:14 1267 2
原创 Fusion360机械模型转URDF(ROS2)
以上的内容用主要完成的使用Fusion 360 建模软件,导出ROS2中所需的机器人描述文件功能包。
2022-10-23 15:51:29 3817 6
原创 超简单!!!搭建阿克曼ROS小车
本篇文章仅是对常见阿克曼ROS小车的极简分析,并提供代码。主要是方便读者自己搭建阿克曼小车时理解使用。这里仅针对《舵机控制前轮转向+后轮主动差速》的方式。
2022-07-05 09:00:00 13089 4
原创 STM32和ROS串口通信常见问题汇总答疑
STM32和ROS串口通信常见问题汇总答疑大家好,我是白茶清欢,最近看了博客文章《stm32和ros的串口通信》有很多问题的评论,这里汇总回复一下。问题1:运行时报错如下:rosrun topic_example publish_nodeterminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector&l
2022-05-25 22:31:04 1952 3
原创 如何打造自己私人知识库(Typora + PicGO+阿里云OSS)
如何打造自己私人知识库(Typora + PicGO+阿里云OSS)1、本期推荐方案方案介绍:本地书写:Typora:优秀的Markdown文档编写工具,自带内容检索功能。图床:阿里云OSS:高速访问图片,付费,最低每年9元。云端管理:Git:管理本地笔记仓库、上传到Github/Gitee版本可追溯,看个人喜好。方案优点:风险低(图床失效)、除非阿里云OSS不维护了。图床以及云端(阿里云OSS)空间充足,针对私人知识库。Markdown编写、书写流Nice!CSDN、知乎等博客都
2022-05-25 01:13:29 1801 1
原创 ROS中二维码定位
ROS中二维码定位一、环境相关系统:ROS-Kinetic + ubuntu16.04相关功能包:摄像头:usb-cam摄像头标定:camera-calibration二维码:ar-teack-alvar二、方法一(1)usb_cam摄像头的标定安装usb-cam功能包sudo apt-get install ros-kinetic-usb-cam安装camera-calibration功能包sudo apt-get install ros-kinetic-cam
2022-01-09 18:08:57 7350 2
原创 cartographer经典版本快速安装
cartographer经典版本快速安装入门激光slam算法必读的经典代码1.简要介绍2016年10月5日,谷歌宣布开放一个名为cartographer的即时定位与地图建模库,开发人员可以使用该库实现机器人在二维或三维条件下的定位及建图功能。cartograhper的设计目的是在计算资源有限的情况下,实时获取相对较高精度的2D地图。考虑到基于模拟策略的粒子滤波方法在较大环境下对内存和计算资源的需求较高,cartographer采用基于图网络的优化方法。目前cartographer主要基于激光雷达来实现
2021-05-24 00:26:16 818
原创 ROS人机交互软件源码分享
ROS人机交互软件源码分享1、前言看过之前两篇文章的朋友,应该都知道,这里写了一个ROS人机交互软件。关于 网友对 “Robot One” 使用情况,我也不太清楚(尴尬…),但是为了满足一些有软件修改需求的同学,这里直接分享一下源码。2、软件功能和使用介绍关于软件的功能和使用介绍,这里就不在重复,没有看过的同学,可以先看下面两篇文章。3、开发环境搭建为了保障拿到源码的同学,可以顺利的进行源码编译,这里简要的写一下开发环境搭建。这里以ubuntu 16.04 + ROS Kinetic为例,u
2021-05-02 09:53:28 2710 11
原创 ROS人机交互软件免费分享
ROS人机交互软件免费分享1、前言看过上一篇文章的朋友,应该都知道,这里写了一个ROS人机交互软件。对,分享了!!!分享了!!!这里给这个软件起个名字,“Robot One”,字面意思。关于Robot One具体功能可以看上一篇文章,当然,这一篇文章也有使用示例视频。2、使用条件系统:ubuntu 16.04、ubuntu 18.04 amd 64位X86系列。软件:安装对应版本的ROS,16.04 对应 kinetic、18.04对应melodic 。其他版本系统未测试,应该不支持。3、
2021-05-02 09:50:54 2085 5
原创 ROS人机交互软件开发
ROS人机交互软件介绍1、前言今天是除夕了,本年的最后一天,在这里,祝大家新年快乐!!!本篇文章主要是对最近编写的一个ROS人机交互软件的介绍,希望大家多提意见和建议,谢谢。2、软件页面结构该软件的结构如下图所示:整个软件被分为6个界面,主要分为设置、建图导航、键盘控制、单点导航、巡航模式等页面。其中建图导航包含rviz组件,具备显示功能。整个软件还具备保存设置功能,只需第一次开机设置。3、开始界面开始界面比较简单,就显示了一张图片,如下图所示:4、设置页面设置界面,主要包括连接ro
2021-02-11 16:53:44 4268 6
转载 Bundle Adjustment简述
Bundle Adjustment简述推荐,对理清楚BA是啥?非线性方法的关系?方程求解的方法?,有一个框架式的描述。转载自:https://blog.csdn.net/OptSolution/article/details/64442962
2020-12-27 00:29:00 341 2
原创 find_package常用记录
find_package1.两种模式Moudule模式:搜索CMAKE_MODULE_PATH指定路径下或者自己的模块目录下的FindXXX.cmake文件。Config模式:搜索指定路径下的XXXConfig.cmake或者XXX-config.cmake文件。2.寻找到之后将定义以下常用变量<LibaryName>_FOUND<LibaryName>_INCLUDE_DIR or <LibaryName>_INCLUDES <LibaryNa
2020-12-22 11:31:17 945
原创 如何正规的、大气的设计一个类?
如何正规的、大气的设计一个类?1、前言本篇文章主要是培养正规的、大气的编程习惯,文章的构思来源来自中国台湾著名专家侯捷 – c++面向对象程序设计课程。每个人的编程水平都不一样,所以本篇文章对于一部分人来说,可能并没有什么用;文章主要想给大家传达一种设计习惯。2、类(class)设计的分类这里明确将类的设计分成基于对象和面向对象两种,逐步深入。基于对象设计的类:也即是简单的类,没有类间关系的类,这里又被分为,不含指针成员的类和含指针成员的类。面向对象设计的类:也即是复杂的类,含有类间关系的类,
2020-12-17 20:45:48 1075 3
原创 自己的搭建的slam机器人建图导航测试
1、前言这里是对自己搭建的slam机器人建图导航的功能测试,原本并不想写这一篇的,因为每个小伙伴的需求都不一样,但是发现还是有同学有需求,于是就有了这一篇。本篇属于说明分享类文章,不涉及细节解释。按照步骤操作即可。本次测试需要建图算法my_slam_gmapping、导航框架navigation、以及explore_lite功能包、mbot_teleop键盘控制功能包等。环境:ubuntu mate 16.04 + ROS Kinetic功能包下载:在公众号:小白学移动机器人,发送:建图导航测试,即
2020-12-09 11:53:20 7977 20
原创 打印CSDN博客内容或者保存内容为PDF
打印CSDN博客内容或者保存内容为PDF有不少小伙伴都有从CSDN上保存博客为pdf或者直接打印博客的需求,我在网上也搜了几篇文章,这里根据其中的一篇做分享,效果最好。具体操作步骤如下:打印CSDN博文内容,将以下js内容全部复制放入Chrome开发者选项里边的console,回车即可。(function(){$("#side").remove();$("#comment_title, #comment_list, #comment_bar, #comment_form, .announce,
2020-12-08 15:31:27 773 1
原创 图解SLAM
图解SLAM1、前言最近一直在研究激光SLAM,源码看了一遍又一遍,对于细节的部分,短时间记住是怎么实现的了,过几天又忘了。据研究发现,往往图片可以给我们更加深刻的印象,于是就想着把SLAM源码解决的一个个问题给直观的呈现出来,于是就有了这篇图解SLAM。这里仍在之前my_slam_gmapping算法功能包的基础之上进行解释,特别说明的是该算法功能包又进行了一次大规模删减,目前该算法功能包代码量(含注释、含激光雷达运动畸变去除模块)仅有3000余行,已经非常非常适合阅读。本篇文章不讲理论、不讲代
2020-12-05 17:13:44 3778 4
原创 我手写了个SLAM算法(二)!
1、前言看过之前两篇文章的大朋友们应该都知道,我们在这里分享了SLAM算法gmapping的大刀阔斧删减版的源码和2D激光雷达运动畸变去除的源码。没看过的朋友可以点击下方文章查看。我手写了个SLAM算法!详解2D激光雷达运动畸变去除本篇文章的主要就是分享加入2D激光雷达运动畸变去除模块后的删减版gmapping代码。针对my_slam_gmapping进行了如下三部分的改变(1)嵌入激光雷达运动畸变去除到my_slam_gmapping中(2)对my_slam_gmapping的结构调整,进一
2020-11-23 09:37:30 3251 22
原创 我手写了个SLAM算法!
我手写了个SLAM算法!点击蓝色按钮,设置星标,第一时间获得文章推送哦1、前言前一段时间看过我文章的都知道,我打算写一个SLAM源码阅读的文章,然后,我就去读了Gmapping的源码,感受良多,不足的地方就是源码太乱了,阅读起来真的不香。于是就有了这篇文章,在我仔细阅读之后,我在源码的结构基础之上,进行大刀阔斧的删减和更改之后得到一个易于阅读的建图算法功能包,极大的降低了代码量,极大的提升了阅读体验。在这里将该算法功能包分享给大家,希望需要的朋友,善待它。之前文章链接:ps:为什么是gmappin
2020-11-16 09:57:30 8539 17
原创 占据栅格地图构建(Occupancy Grid Map)
占据栅格地图构建(Occupancy Grid Map)上一篇文章介绍了,移动机器人地图构建问题,主要以gmapping为例,讲解了地图构建的整个流程。看过前面文章的小伙伴肯定都知道,gmapping算法把SLAM问题分解成两个部分,定位问题和地图构建问题。而gmapping中的地图构建就是采用占据栅格地图构建算法实现的。之前文章:https://blog.csdn.net/zhao_ke_xue/article/details/108944811之前一直说地图构建问题是个简单问题,但它真的十分有用。
2020-10-13 00:57:19 15926 35
原创 不可错过的gmapping算法使用与详细解释
您真的懂了移动机器人是怎么构建地图的吗?1、前言假如,您现在已经拥有一辆ROS小车了,您已经完成了通过ROS节点发布的/cmd_vel话题控制小车的基本运动了。当然,这些都是底层部分,您也许还需要完成移动机器人的建图和导航工作。本篇文章以激光SLAM算法gmapping为例,向大家介绍移动机器人构建环境地图的必备条件、算法流程、算法原理。其实,使用gmapping算法实现建图的步骤十分简单,一般分为了解算法、安装算法、更改参数、执行算法、保存地图。各大博客,ros_wiki都有详细的流程,基本一路上不
2020-10-06 23:03:10 31672 20
原创 linux系统下串口设备和串口号绑定
3.7 linux系统下串口设备和串口号绑定3.7.1 问题由来在ROS小车的开发过程中,需要使用ROS通信串口模块、激光雷达的串口模块、IMU的串口模块等,为了防止每次开机这些设备的串口号发生变动,所以需要对串口号与串口设备绑定;为了更好的识别串口,我们也可以对串口号进行设置静态名称;为了更好的使用串口,我们也可以对串口进行权限设置。 一次设置,终身受益。3.7.2 原理在linux系统下,虽然每一个固定的端口可能由于外接设备启动的时间差异分配的ttyUSB*不同,但是对于每一个固定的端口,
2020-09-20 22:47:15 6491 2
原创 无刷有感电机测速、速度闭环控制
无刷有感电机测速、速度闭环控制1.直流无刷有感电机介绍无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,在移动机器人领域也有诸多应用,这里我们将对无刷直流电机的常见问题进行描述。(1)工作原理首先,我们来看一下无刷电机的工作原理,下图为三电极、二磁极、内转子无刷电机演示。无刷电机不是传统的直流电机,模型虽然是直流电池供电,但通过无刷电调之后就转变为了三相交变电流传输到了三个极性上。通过上图可以看出,无刷电机是没有碳刷的,和有刷相反,无刷电机
2020-09-20 18:38:21 12945 6
原创 搭建ROS小车编写启动功能包
3.6 ROS小车启动功能包编写3.6.1 前言本篇内容应该是大家期待已久的内容,从我自身的开发经验和小伙伴的疑问来看,STM32和ROS通信、以及ROS小车启动功能包的编写是搭建ROS小车比较核心且不容易实现的技术点。多数小伙伴都是在这两个问题上,浪费了很多时间。之前的文章已经完美解决STM32和ROS通信问题。本篇文章就是结合之前内容的铺垫解决ROS小车启动功能包的编写问题。适合各种类型的ROS小车、ROS机器人平台的开发者参考。3.6.2 明确ROS小车完成SLAM和导航的必备条件是什么?这里
2020-09-07 01:06:52 10917 67
原创 ROS机器人里程计模型
3.5 移动机器人系统模型相信大家的机器人平台STM32端底层控制和机器人urdf建模都已经顺利完成了,在正式开始ros端编写机器人启动功能包之前,我们还不得不学习一些必要的理论知识。别担心数学不好,这里基本都是高中数学。下面我们开始,Are you ready? 没准备好也开始了。3.5.1 常用坐标系系统模型在移动机器人技术研究中,最为常用的坐标系统是笛卡尔坐标系统。而在SLAM算法研究中,有如下几个比较常见的笛卡尔坐标系统,它们分别为机器人坐标系XR YR OR 、传感器坐标系XS YS OS
2020-09-05 23:20:33 12992 12
原创 用xacro给自己的ROS小车编写模型
3.4 使用Xacro优化自己的ROS小车模型和上一篇一样,首先奉上xacro的官网地址:http://wiki.ros.org/xacro。本文章只基于上一篇针对urdf文件的缺点进行优化开发,不做更多的xacro介绍。当然对于ROS机器人平台搭建,这里对xacro的介绍已经足够了。本篇文章,要感谢深蓝学院,开发出这么好的课程,本篇内容几乎是课件内容的重现。3.4.1 urdf建模存在的问题urdf的缺点:模型冗长,重复内容过大,相似的关节都要重复编写参数修改麻烦,不便于二次开发没有参数
2020-09-05 01:32:17 5211 2
原创 用urdf给自己的ROS小车编写模型
3.3 使用urdf编写自己的ROS小车模型3.3.1 常见的ROS小车结构有哪些?下面就是常见的ROS小车,相信在大家的脑海里已经有了自己小车的样子,下面我和大家一起使用urdf对ros小车建模。这里只对urdf进行简单介绍,然后就带大家使用urdf最基础的标签,建立机器人的urdf机器人模型。关于更多细节,请参看官网:http://wiki.ros.org/urdf/Tutorials3.3.2 什么是urdf?建模的原因?什么是urdf?URDF(Unified Robot Descri
2020-09-04 01:11:38 10990 11
原创 ROS小车开发需要的ROS基础
3.2 ROS基础作者:公众号:小白学移动机器人3.2.1 初见ROSROS历史起源是什么?ROS的总体设计是什么?ROS的应用框架是怎样的?总结:ROS就是一个为了提高机器人开发的软件复用率,开发的一款具有独特的通信机制、丰富的开发工具、海量的应用功能、良好的生态系统集的工具。关于ROS更多细节的东西比较多,可以听课、可以看书,但这里只会讲解一些ROS机器人开发中用到的,以及我认为比较重要的地方。在公众号:小白学移动机器人,发送:ROS,即可获得相关ROS学习资源,以下的文章,希望读者
2020-08-31 01:39:51 10620 14
原创 平衡小车从原理到实践
平衡小车从原理到实践作者:公众号:小白学移动机器人关于内容:参考很多网上大佬的博客加上自己的理解而成,适合平衡车初学者和想要了解原理的小伙伴。1、平衡小车控制原理先记住一句话,直立环和速度环的结合是保持小车长期稳定平衡的前提。相信大家读到最后一定可以明白这句话的含义。举个例子大家都玩过的用手控制木棍直立不倒的游戏。这是一个通过眼睛观察木棒的倾角和倾斜趋势(角速度),通过手指的移动去抵消木棒倾斜的角度和倾斜的趋势使木棒能直立不倒的一个过程。典型的负反馈机制。平衡小车也是如此,小车运动方向与倾
2020-08-30 14:13:01 19693 33
原创 快速低成本搭建ROS机器人平台(二)
如何低成本快速搭建ROS机器人平台?(硬件部分-方案二)方案二:两轮差速小车一、成品预览:完成后的大致样子如下:不唯一(根据每个人的具体选材而定)二、材料清单需要制作或者购买以下材料:硬件小白建议时间紧急建议直接购买三、底层器件淘宝连接:直流减速电机:淘宝链接万向轮:淘宝链接亚克力板:淘宝链接螺丝配件:淘宝链接3s电池:淘宝链接充电器:淘宝链接主控板:四、关于组装这个时候就是发挥大家天性的时候了。天马行空都可以。但是尽量使小车尽可能规则,圆形、方形,尽可能的考
2020-08-28 08:49:12 10690 8
原创 快速低成本搭建ROS机器人平台(一)
如何低成本快速搭建ROS机器人平台?(硬件部分-方案一)方案一:两轮差速小车一、成品预览:完成后的大致样子如下:不唯一(根据每个人的具体选材而定)二、材料清单需要制作或者购买以下材料:硬件小白建议时间紧急建议直接购买平衡小套件包含:买整体小车套件的好处:器件验证没问题、一次性购买方便、线材完备三、全新器件淘宝连接:对比之后给大家推荐的:这个平衡小车套件的店性价比较高平衡小车套件:淘宝链接主控板细节:树莓派:淘宝链接万向轮:淘宝链接亚克力板:淘宝链接螺丝配件:淘宝
2020-08-28 00:07:15 21003 9
原创 ROS小车STM32底层控制代码
2.6 ROS小车STM32底层控制代码经过之前几篇文章,我相信大家一定对下面这些模块都已经有些了解了。今天,我们将编写ROS小车STM32单片机底层控制的最后一篇文章。我们将一起按照之前的软件流程,将所有的代码整合到一个工程中去。在公众号:小白学移动机器人,发送:ROS小车底层,即可获得源码工程文件。相信大家对配置代码都很清楚了,这里直接描述软件执行流程,以及部分代码展示注意:该工程文件中的STM32与ROS通信的程序和前面写的文章提供的程序,有一点出入,之前是为了方便理解。大家调用的时候注意即
2020-08-21 00:50:02 13108 25
原创 STM32 MPU6050数据获取、数据处理
2.4 STM32 MPU6050数据获取(IIC + DMP)本篇文章主要针对廉价的MPU6050模块。我们这里完成了MPU6050的数据获取、零偏自动设置、温漂抑制。这里提供源码工程文件,供大家下载,在公众号:小白学移动机器人,发送:MPU6050,即可获得。2.4.1 解决的问题DMP库的移植(文件已被更改过,更好的移植)MPU6050数据的获取(通过DMP获取的四元数,做姿态解算)零偏自动校准(实现DMP方式上电既是0角度)有效的温漂抑制(针对yaw值无法滤波的情况,使用特殊的方法,实现
2020-08-20 22:56:33 22478 20
原创 STM32电机PID速度控制
2.3 STM32电机PID速度控制之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料。2.3.1 解决的问题解决带编码器直流电机的速度闭环问题。2.3.2 PID理论将偏差的比例、积分、微分,通过线性组合构成控制量,用控制量对被控对象进行控制,这样的控制器称为PID控制器。在连续空间中,我们通常探讨模拟PID的控制原理,如图所示:我们这里用电机速度控制为例,
2020-08-19 22:58:42 58127 84
原创 STM32电机测速(正交或者霍尔编码器)
2.2 STM32电机测速(正交或者霍尔编码器)我们这里提供左右电机测速代码,在公众号:小白学移动机器人,发送:电机测速,即可获得源码工程下载链接。2.2.1 实现工具STM32单片机、带编码器的直流减速电机、Keil5、(蓝牙、串口助手)调试用2.2.2 编码器原理(1)编码器是什么?编码器是一种将角位移或者角速度转换成一串电数字脉冲的旋转式传感器。编码器又分为光电编码器和霍尔编码器。(2)编码器工作原理是什么?霍尔编码器是有霍尔马盘和霍尔元件组成。霍尔马盘是在一定直径的圆板上等分的布置有
2020-08-19 22:41:41 58439 58
原创 STM32 电机PWM控制
2.1 STM32电机PWM控制我们这里提供左右两个电机PWM控制代码,在公众号:小白学移动机器人,发送:电机PWM控制,即可获得源码工程下载链接。2.1.1 实现工具STM32单片机、直流减速电机、TB6612双路电机驱动器、keil52.1.2 电机实物接线图解具体到我们的电机,我们可以看看电机后面的图解。中间的四根线(红绿白黑)是编码器的线,只是用于测速,和直流电机本身没有联系。综上所述,我们只需控制施加在黄线和棕色线两端的直流电压大小和极性即可实现调试和换向。2.1.3 TB661
2020-08-19 22:25:48 32166 24
占据栅格地图构建,原理介绍+源码分享,2D激光雷达
2023-07-08
STM32无刷电机测速、速度闭环控制,原理介绍+实践源码
2023-07-08
图解SLAM分享,gmapping魔改的图解教程
2023-07-08
手写SLAM算法2源码分享+运动畸变去除,gmapping魔改
2023-07-08
The GraphSLAM algorithm with applications to large-scale mapping
2019-02-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人