自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ROS2 service类型消息的同步调用问题浅析

许多从ROS1转战至ROS2的同学,想必遇到的一个很头疼的事情是 ROS2的service client只有异步调用,而没有同步调用。这篇文章罗列了一些解决方法,欢迎大家补充新的方法。

2024-01-10 18:49:23 1182

原创 C++ STL容器、算法、迭代器入门

无论是在工程中还是在找工作面式笔试中,STL相关的知识点一定会出现,因为这个东西实在是太重要了。想当年自己就是因为在面试中把一个STL迭代器的知识点说错了,错失了百度Apollo的offer。这篇文章帮自己复习巩固下相关的基础知识,也希望能帮到更多人~

2023-10-24 11:21:28 201

原创 我的创作纪念日

我是一名控制工程专业出身,现在在一家机器人公司担任控制算法工程师。我的工作就是研究各类机器人的运动规划与控制算法。两年前,为了记录工作中遇到的问题与解决方案,我创建了一个技术博客。最初写博客仅仅是为了自己记录工作笔记,没想到渐渐有些读者开始关注我的博客。有些读者也在评论里提出自己的看法,这给了我很大的鼓励。我意识到分享自己的工作经验,能够帮助更多同行提高,这成为我持续写作的动力。

2023-07-17 09:37:50 223

原创 ROS2开发|将Pointcloud2数据

我的点云数据发布在"map"坐标系下,我想把这个pointcloud2数据变化至"base_link"坐标系。

2023-04-27 17:36:48 730 1

原创 一天一个linux小技巧|.(点)是什么意思

因此当多个shell进程(父子进程或无关进程均可)共享一组变量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改仅涉及到这个shell文件)。它是 source命令的代名词,所以你可以用它在当前 shell 中执行一个文件,而不是以某种其它的方式去运行一个脚本文件(这通常指的是 Bash 会产生一个新的 shell 去运行它)“.”点命令是shell的一个内部命令,它从指定的shell 文件中。

2023-02-17 11:15:42 836 1

原创 一天一个linux小技巧|grep命令

grep 命令grep是强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。-A n --after-context显示匹配字符后n行-B n --before-context显示匹配字符前n行-C n --context 显示匹配字符前后n行·

2023-02-17 11:01:21 623

原创 联想电脑安装ubuntu18.04双系统超详细教程(23年最新教程,99%成功率)

ubtuntu的长期支持版本现在应该已经出道21.04版本了,如果你对于版本没有要求的话,建议直接安装最新版ubuntu,因为新版的系统驱动都会进行更新,也对于新版硬件的适配性也会更好~~~如果你跟我一样,公司(实验室)必须或者都在用18.04版本,那就接着往下看吧。虽然装起来问题会比较多,但是办法总比困难多!网上的教程很多,但大多都比较古早,随着硬件不断更新,ubuntu18.04相应的驱动无法支持。在安装中主要会有两个大问题:显卡驱动不适配和wifi网卡驱动不适配,本篇教程也会给出相应的解决办法。

2023-02-01 15:29:52 4160

原创 C++多线程入门及基础知识

线程即操作系统进行CPU任务调度的最小单位。C++的多线程并发,简单理解的话就是,将任务的不同功能交由多个函数实现,创建多个线程,每个线程执行一个函数,一个任务就同时由不同线程执行。

2023-01-13 14:58:58 708

原创 关于迭代器遍历及auto关键词

在使用vector容器或者字符串时,很经常会用到一些遍历操作,除了使用下标遍历之外,使用迭代器遍历也是超级方便,但是迭代器也有有一些小坑,一不注意就会编译出错,所以特意总结一下。迭代器很很多接口,不过最重要要搞清楚迭代器指向的位置!!str.begin();指向字符串的第一个字符的位置str.end();指向字符串的最后一个字符的后一个位置;str.rbegin();指向字符串的最后一个字符的位置;str.rend();指向第一个字符串的前一个位置;举个例子:迭代器的使用方式和指针类似设计规

2022-12-14 15:05:15 1416

原创 Vector数组类型在ROS开发中的用法小结

ROS系统的一个显著优势就是分布式和灵活性,用户可以很方便自定义消息类型。在自动驾驶中,无论是传感器消息sensoe_msgs,还是导航消息nav_msgs等等几乎都离不开一个基本的结构:vector数组。尤其是在SLAM中,在处理雷达消息更是必不可少的操作。所以把vector理解透彻对于ROS开发还是非常重要的。接下来的内容以C++语言为主,python语言是类似的,但是语法可能稍有不同。(PS:对于搞自动驾驶的同学,还是强烈推荐用C++开发,原因无他,C++快!!!

2022-10-25 11:21:34 1608

原创 ROS学习|Nodetlet学习与使用

Nodelet旨在提供一种方法,在一台机器上、在一个进程中运行多个算法,在进程内传递消息时不会产生拷贝成本。普通节点使用TCP。这对很多事情来说都很好用。但是,如果你有多个进程需要使用包含大量数据的消息(如图像或点云),打包消息,发送消息,然后解包,可能需要一点时间。如果两个进程在同一台计算机上,那么只需发送一个指向该数据的指针,而不是通过TCP发送数据本身,这样会更快。但这只适用于同一台计算机上的进程(又称nodelet),因为一台计算机的指针对另一台计算机没有意义。

2022-09-15 15:53:34 1387

原创 Docker技术入门| L4访问仓库&数据管理

仓库(Repository)是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 docker.io/ubuntu 来说,docker.io 是注册服务器地址,ubuntu 是仓库名。大部分时候,并不需要严格区分这两者的概念。

2022-08-25 16:59:20 130

原创 Docker技术入门| L3操作容器

容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。本文将具体介绍如何来管理一个容器,包括创建、启动和停止等。

2022-08-24 17:48:19 316

原创 Docker技术入门|L2 使用镜像

Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。

2022-08-24 14:03:52 150

原创 Docker技术入门|L1简介及安装

Docker 是一个开源的应用容器引擎。Docker 可以让开发者打包他们创建的应用以及相应的依赖包到一个可移植、轻量级的容器中。Docker 可大大简化在容器中管理应用程序的过程。容器使用沙盒机制,运行在其中的应用与主系统相互分离,类似与虚拟机。但容器比虚拟机有更棒的可移植性、占用计算机资源更小。

2022-08-20 11:02:55 322

原创 视觉slam学习|基础篇02

SLAM基础篇01 SLAM基础篇02SLAM中使用的相机与我们平时见到的单反摄像头并不是同一个东西。它往往更加简单,不携带昂贵的镜头,以一定速率拍摄周围的环境,形成一个连续的视频流。普通的摄像头能以每秒钟 30 张图片的速度采集图像,高速相机则更快一些。按照相机的工作方式,我们把相机分为单目(Monocular)、双目(Stereo)和深度相机(RGB-D)三个大类:相机的成像原理可以简单的看成针孔模型(小孔成像)+镜头畸变两个部分。针孔模型就是我们初中学的小孔成像。现在来对这个简单的针孔模型进行几

2022-08-04 17:51:17 484 1

原创 ubuntu/linux系统学习|使用命令行打开任意文件

但当需要打开其他格式文件时,比如pdf、jpg、mp3格式文件,咱们通常做法是进入到文件所在的目录,双击打开,很影响效率。xdg-open会选择合适的程序打开指定文件,跟双击打开效果一样。OK,现在是不是方便多了,通过快捷键Ctrl+Alt+T可以打开shell,F11可以全屏显示(Alt+F9最小化窗口,Alt+F10最大化/恢复窗口),再辅予xdg-open命令,极大减少了鼠标操作,也大大提升了效率。在Ubuntu下,当需要打开其他格式文件时,咱们通常做法是进入到文件所在的目录,双击打开,很影响效率。.

2022-07-26 17:31:06 5323

原创 视觉slam学习|基础篇01

SLAM基础篇01SLAM基础篇02最近在看高翔和张涛写的《视觉SLAM十四讲》,记录一下学习的内容,方便以后复习。这一系列文章更像是这本书的读书笔记,所以结构脉络都与该书相似;更推荐有时间的同学去看原书,写的更加详细易懂。欢迎大家一起探讨学习视觉SLAM相关的知识。SLAM(simultaneous localization and mapping)全称即时定位与地图构建或并发建图与定位),顾名思义可以解决“定位”和“建图“两件事情。 SLAM 问题的本质:对运动主体自身和周围环境空间不确定性的估计。主

2022-07-23 16:24:44 1884

原创 git学习笔记

在开发项目中,尤其实在多人合作开发的项目中,代码管理和版本控制尤为重要。git就是一个非常好用流行的代码管理工具,记录下git的一些基础操作,方便日后复习查看。for mac推荐在app商城安装Xcode,然后先择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。git基础git init 初始化git add -A 将所有改动添加到仓库暂存区git commit -m “

2022-07-06 11:02:24 95

原创 ROS踩坑|编译的二进制debian文件安装后无法使用

在ROS中将自己的功能包打包为二进制文件后,想安装在自己的主机上测试下打包的有没有问题。使用dpkg命令安装后发现可以使用,便将这个debian文件装到另一个主机上。没想到,最后竟然用不了,显示找不到可执行文件。明明装到自己的电脑上可以,到那时装到别的电脑上就不行。当时以为遇到啥玄学问题了,不过经过排查一番发现还是自己的操作有问题1经过排查主要有两个原因:第一个问题:为什么撞到自己的电脑上没问题而装到别人的电脑上没问题?因为我的电脑上本来就装的有这个package,当我用roslauch的时候,自

2022-06-17 15:41:59 344

原创 ROS踩坑|terminal终端输出消息太长无法全部显示

在ROS中,尤其是在编译的时候,常常会遇到打印的输出太长而无法全部看到。这在debug的时候非常蛋疼,解决方法也很简单,就是把输出的消息都保存在文本文件里,然后再浏览。我查到了两个方法 我的版本是Ubuntu18.04但应该所有的linux系统的命令都是一样的。在终端的命令行中输入以下命令:这样就会在当前目录下创建一个 output.txt 文件,在命令窗口执行的所有命令包括终端输出的所有信息都会写到这个文件中。在终端的命令行中输入 Ctrl + d 之后会停止向文本文件的写入工作。在终端中输入以下内容

2022-06-15 17:40:29 1765 1

原创 ROS学习|Behavoir Tree(BT树)--c++实现第二节

本片文章接着上一篇接着讲述BT树的C++实现以及有关的注意事项。目录使用Subtree组合BT树CrossDoor behaviorLoggers在树和子树中重映射接口例子如何使用多个 XML 文件来存储子树使用"include"加载文件手动加载多文件在初始化和/或构造期间传递额外的参数方法一 注册自定义builder方法2:使用init方法使用协程(Coroutines)的异步操作C++例子使用Subtree组合BT树我们可以将更小且可重用的BT树组合成大规模BT树。换句话说,我们想要创建分层行为树

2022-05-19 11:18:29 824

原创 ROS学习|Behavoir Tree(BT树)--c++实现

目录创建行为树简单Beahvoir实例使用 XML 动态创建树基本接口(port)输入输出接口输入接口输出接口一个复杂的示例通用类型接口ports with generic types解析一个字符串例子Reactive Sequence 和异步节点Sequence vs ReactiveSequence创建行为树行为树,类似于状态机,过是一种在正确的时间在正确的条件下调用回调的机制。此外,我们将交替使用“callback”和“tick”这两个词。简单Beahvoir实例在这里插入图片描述初始(

2022-05-18 15:52:22 1666

原创 ROS学习|Behavoir Tree(BT树)--基本概念

最近学习BT树进行任务调度。记录和分享一下BT书的相关知识基本概念节点类型

2022-05-14 18:02:18 1382

原创 ros学习|功能包相关|查找、安装、卸载删除某个功能包

在运行别人的demo时,是不是会出现找不到功能包的情况。所以查找、安装和卸载某个功能包是蛮重要的。查找查询当前安装完成的所有包文件 rospack list查询ros的所有功能包 apt-cache search ros-kinetic或者说在不知道要安装功能包的确切名字的情况下找到目标包 apt-cache search ros-kinetic | grep rqt-通过管道线 与grep命令, 输出与关键字rqt-相关的行再或者下述安装命令与Tab键结合sudo apt-ge

2022-04-19 09:33:50 7852 1

原创 ROS踩坑|warning:clock skew detected. Your build may be incomplete

报错展示问题分析ROS编译时遇到这个问题95%是因为系统时钟错误了,比如说你之前的编译的时间时2022年3月12日,而现在系统的时间是2021年3月12日,所以系统编译发现了早于现在编译时间的文件,自然就无法编译。解决办法有三个解决办法:方法一:修改系统的时间,点击界面右上角时间,设置一个往后的时间即可。但这种方法有一个弊端就是,开机重启后仍要设置时间,且设置的时间不能早于之前设置的时间,否则还是编译不通过。方法二: 删除build文件夹和devel文件夹,重新编译。这种方法的弊端是如果项目太大

2022-03-18 11:37:05 3438

原创 ROS|发布和订阅整型/浮点型/布尔型/字符串消息

需要用ROS发布一个布尔类型的消息,上手敲代码的时候竟然不知道具体改用什么数据类型的消息,查找了资料才弄清楚,再这里记录一下话题消息类型ROS中的std_msgs包含几乎全部基础的数据类型,包括布尔型,整型,字符串等等。可用rosmsg show std_msgsstd_msgs/Boolstd_msgs/Bytestd_msgs/ByteMultiArraystd_msgs/Charstd_msgs/ColorRGBAstd_msgs/Durationstd_msgs/Emptystd

2022-02-18 14:34:56 6575 2

原创 ROS踩坑|报错“没有规则可制作目标”

问题描述使用catkin_make编译一个功能包,第一次编译由于编译的cpp文件命名与camkefile中的不一致,所以编译失败了。修改相应的名字之后再次编译还是失败。显示如下报错:make[2]:*** 没有规则可制作目标"auto_alignment/CMakeFiles/alignment_+server.dir/build"。停止recipe for target 'auto_alignment/CMakeFiles/alignment_+server.dir/all' failedreci

2022-01-22 10:15:57 12060 1

原创 ROS踩坑|批量化为.py文件添加可执行权限

问题描述在ROS中,想要用rosrun命令运行python文件,首先要对该文件提价可执行权限。如果要是用鼠标一个一个点左键设置属性,效率很低,并且不够优雅~~~可以用chmod命令解决解决方案chmod命令用于修改文件的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。命令格式:chmod [权限] 文件名文件名可以使用通配符,文件名为星号*表示匹配所有文件。用法示例:为/home/zhidao/py目录下的所有文件添加执行权限。$ chmo

2022-01-07 20:21:36 2900

原创 ROS踩坑|no matching function for call to ‘ros::NodeHandle::getParam(int, double&)’ nh_.getPar

问题描述使用ROS getParam函数时,在launch文件中定义了“distance”变量,并在main函数中国调用了getParam函数来获取变量值。结果出现如下报错:no matching function for call to ‘ros::NodeHandle::getParam(int, double&)’ nh_.getParam('distance',back_up_dist);问题分析报错给了一个提示,说无法将int型转化为string型,顺着这个提示

2022-01-04 14:18:04 2210

原创 ROS踩坑|用一个节点订阅和发布多个话题

test

2021-11-15 18:03:44 8610 1

原创 SLAM踩坑| 对‘pcl::console::print(pcl::console::VERBOSITY_LEVEL, char const*, ...)’未定义的引用

问题描述写了一个node订阅激光雷达数据信息,使用了pcl相关的数据类型,编译的时候报错。bug原文CMakeFiles/auto_charging_control.dir/src/auto_charging_control.cpp.o:在函数‘void pcl::createMapping<pcl::PointXYZ>(std::vector<pcl::PCLPointField, std::allocator<pcl::PCLPointField> > con

2021-11-11 18:05:32 1284

转载 ubuntu18.04安装Ceres Solver

Ceres Solver是谷歌出品的关于线性优化的功能包,使用 LOAM SLAM算法中需要用到这个功能包。这里mark一下安装方法 以便以后使用。1、软件包下载:下载地址: https://github.com/ceres-solver/ceres-solver/releases如果Github下载速度慢可在百度云盘下载下载地址: 链接: https://pan.baidu.com/s/1EXjbTjZ8pkaEbeppHW3TuA 密码: 02dv2、安装编译Ceres库所需

2021-11-04 17:18:56 1213

原创 自主充电技术调研

移动机器人自动充电的过程一般分为2个阶段,第一阶段是寻找红外引导视觉引导激光引导蓝牙引导

2021-11-01 11:01:57 2269

原创 ROS学习|SMACH状态机三(使用实例)

系列文章目录 ROS基础 ROS单线程与多线程 navigation基本导航 navigation基本导航 SMACH状态机一(安装与初探) SMACH状态机三(使用实例)目录系列文章目录写在前面2 创建可执行程序3 添加服务调用状态4 可视化5 添加接口至turtlesim形状行为参考文献写在前面关于ROS实例官方出了两个文档,第一个实例代码和中文讲解都非常清楚,创客制造上也有详细的注释,所以我就不重复造轮子了,大家可以自己去看。第二个实例,官方代码不全,因此我就把官方文章搬运一下,顺

2021-10-26 18:04:39 1270 4

原创 ADRC学习|状态扩张观测器

系列文章目录 TD微分跟踪器(原理解析和Matlab实现) 状态扩张观测器@[TOC](目录)写在前面最近在学习ADRC算法,发现该算法有一个很妙的点在于算法里的子模块都可以单独拿来用。比如说在用PID算法中加入TD跟踪器就会使得PID算法的鲁棒性变得很好,当系统模型未知时或者扰动模型未知时,可以用状态扩张观测器来监控目标变量…等等所以感觉这个算法的实用性还是很强的。个人感觉把TD,最速跟踪函数和ESO搞清楚了,ADRC算法就特别好理解。这次的笔记时关于状态扩张观测器ESO的,同样用思维导图记

2021-10-25 14:10:26 4505

原创 ROS学习|SMACH状态机一(安装与初探)

系列文章目录 ROS基础 ROS单线程与多线程 navigation基本导航 navigation基本导航目录系列文章目录SMACH功能安装基础知识ROS任务调度状态机参考文献SMACH功能SMACH为任务执行量身定做,实现简单,易于维护,重构任务简单。它是一种基于python强大可伸缩的分级状态机库。Smach库不依赖ROS,executive_smach堆栈提供了ROS很好的集成。smach提供了actionlib整合和smach viewer两大组件。samch viewer可以实时

2021-10-25 11:49:00 1180

原创 Apollo星火计划学习笔记|预测模块

系列文章目录 L1 Apollo平台安装 L2 CyberRT学习 L5 Routing简介目录系列文章目录

2021-10-22 20:24:50 892

原创 Apollo星火计划学习笔记|控制模块

系列文章目录 L1 Apollo平台安装 L2 CyberRT学习 L5 Routing简介目录系列文章目录简介控制算法PID算法LQR(MPC)Apollo控制模块Apollo纵向控制作业简介控制输入: Chassis(车辆状态信息), LocalizationEstimate(位置信息), ADCTrajectory(planning模块规划的轨迹)控制输出:纵向控制(油门,刹车,档位) 横向控制(方向盘)控制基于模型,可将车辆分为运动学建模和动力学建模。运动学模型相对简单,将汽车看为

2021-10-18 17:15:56 563

原创 ros学习|ros基础

系列文章目录 ROS基础 ROS单线程与多线程 navigation基本导航目录系列文章目录前言参考资料前言该文章为学习ROS时用思维导图记的笔记,需要全部高清图的点击下面的链接。参考资料参考文章...

2021-10-13 16:24:03 128

空空如也

空空如也

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

TA关注的人

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