![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
coding
文章平均质量分 75
David小伟同学
这个作者很懒,什么都没留下…
展开
-
C++ STL容器、算法、迭代器入门
无论是在工程中还是在找工作面式笔试中,STL相关的知识点一定会出现,因为这个东西实在是太重要了。想当年自己就是因为在面试中把一个STL迭代器的知识点说错了,错失了百度Apollo的offer。这篇文章帮自己复习巩固下相关的基础知识,也希望能帮到更多人~原创 2023-10-24 11:21:28 · 233 阅读 · 0 评论 -
ROS2开发|将Pointcloud2数据变换坐标系
我的点云数据发布在"map"坐标系下,我想把这个pointcloud2数据变化至"base_link"坐标系。原创 2023-04-27 17:36:48 · 852 阅读 · 1 评论 -
一天一个linux小技巧|.(点)是什么意思
因此当多个shell进程(父子进程或无关进程均可)共享一组变量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改仅涉及到这个shell文件)。它是 source命令的代名词,所以你可以用它在当前 shell 中执行一个文件,而不是以某种其它的方式去运行一个脚本文件(这通常指的是 Bash 会产生一个新的 shell 去运行它)“.”点命令是shell的一个内部命令,它从指定的shell 文件中。原创 2023-02-17 11:15:42 · 930 阅读 · 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 · 636 阅读 · 0 评论 -
C++多线程入门及基础知识
线程即操作系统进行CPU任务调度的最小单位。C++的多线程并发,简单理解的话就是,将任务的不同功能交由多个函数实现,创建多个线程,每个线程执行一个函数,一个任务就同时由不同线程执行。原创 2023-01-13 14:58:58 · 754 阅读 · 0 评论 -
关于迭代器遍历及auto关键词
在使用vector容器或者字符串时,很经常会用到一些遍历操作,除了使用下标遍历之外,使用迭代器遍历也是超级方便,但是迭代器也有有一些小坑,一不注意就会编译出错,所以特意总结一下。迭代器很很多接口,不过最重要要搞清楚迭代器指向的位置!!str.begin();指向字符串的第一个字符的位置str.end();指向字符串的最后一个字符的后一个位置;str.rbegin();指向字符串的最后一个字符的位置;str.rend();指向第一个字符串的前一个位置;举个例子:迭代器的使用方式和指针类似设计规原创 2022-12-14 15:05:15 · 1460 阅读 · 0 评论 -
Vector数组类型在ROS开发中的用法小结
ROS系统的一个显著优势就是分布式和灵活性,用户可以很方便自定义消息类型。在自动驾驶中,无论是传感器消息sensoe_msgs,还是导航消息nav_msgs等等几乎都离不开一个基本的结构:vector数组。尤其是在SLAM中,在处理雷达消息更是必不可少的操作。所以把vector理解透彻对于ROS开发还是非常重要的。接下来的内容以C++语言为主,python语言是类似的,但是语法可能稍有不同。(PS:对于搞自动驾驶的同学,还是强烈推荐用C++开发,原因无他,C++快!!!原创 2022-10-25 11:21:34 · 1742 阅读 · 0 评论 -
Docker技术入门| L4访问仓库&数据管理
仓库(Repository)是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 docker.io/ubuntu 来说,docker.io 是注册服务器地址,ubuntu 是仓库名。大部分时候,并不需要严格区分这两者的概念。原创 2022-08-25 16:59:20 · 147 阅读 · 0 评论 -
Docker技术入门| L3操作容器
容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。本文将具体介绍如何来管理一个容器,包括创建、启动和停止等。原创 2022-08-24 17:48:19 · 342 阅读 · 0 评论 -
Docker技术入门|L2 使用镜像
Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。原创 2022-08-24 14:03:52 · 162 阅读 · 0 评论 -
Docker技术入门|L1简介及安装
Docker 是一个开源的应用容器引擎。Docker 可以让开发者打包他们创建的应用以及相应的依赖包到一个可移植、轻量级的容器中。Docker 可大大简化在容器中管理应用程序的过程。容器使用沙盒机制,运行在其中的应用与主系统相互分离,类似与虚拟机。但容器比虚拟机有更棒的可移植性、占用计算机资源更小。原创 2022-08-20 11:02:55 · 345 阅读 · 0 评论 -
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 · 5434 阅读 · 0 评论 -
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 · 108 阅读 · 0 评论 -
ROS踩坑|编译的二进制debian文件安装后无法使用
在ROS中将自己的功能包打包为二进制文件后,想安装在自己的主机上测试下打包的有没有问题。使用dpkg命令安装后发现可以使用,便将这个debian文件装到另一个主机上。没想到,最后竟然用不了,显示找不到可执行文件。明明装到自己的电脑上可以,到那时装到别的电脑上就不行。当时以为遇到啥玄学问题了,不过经过排查一番发现还是自己的操作有问题1经过排查主要有两个原因:第一个问题:为什么撞到自己的电脑上没问题而装到别人的电脑上没问题?因为我的电脑上本来就装的有这个package,当我用roslauch的时候,自原创 2022-06-17 15:41:59 · 364 阅读 · 0 评论 -
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 · 950 阅读 · 0 评论 -
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 · 1822 阅读 · 0 评论 -
ROS学习|Behavoir Tree(BT树)--基本概念
最近学习BT树进行任务调度。记录和分享一下BT书的相关知识基本概念节点类型原创 2022-05-14 18:02:18 · 1493 阅读 · 0 评论 -
机器人运动学轨迹跟踪控制(Matlab实现)
文章目录前言纯跟踪算法运动学建模MPC方法二、使用步骤1.引入库2.读入数据总结前言考虑平面运动机器人,自由度有3个,分别是x,y,φx,y,\varphix,y,φ,控制量为机器人的线速度vvv和角速度ω\omegaω,希望实现机器人跟踪目标轨迹。运动学轨迹跟踪的方法有很多。可比如PID算法,或者基于模型的,文章简要介绍算法的Matlab实现并在最后对各个算法进行简要对比。纯跟踪算法运动学建模运动学模型比较简单,直接给出结果$$\dot{x}=v\cos(\varphi)/$$MPC原创 2021-07-16 15:42:59 · 24122 阅读 · 130 评论 -
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 · 8497 阅读 · 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 · 3657 阅读 · 0 评论 -
ROS踩坑|用一个节点订阅和发布多个话题
test原创 2021-11-15 18:03:44 · 9056 阅读 · 1 评论 -
数据结构和算法学习笔记|持续更新
目录前言线性表栈与队列串树图前言工作时发现自己的coding能力真的差,所以重新来打基本功,就从数据结构开始吧。PS:发现思维导图用来快速记笔记贼爽!!!线性表栈与队列串树图原创 2021-10-12 09:35:57 · 76 阅读 · 0 评论