- 博客(260)
- 资源 (1)
- 收藏
- 关注
原创 【ROS2笔记八】ROS2编写Python launch 文件
在ROS2中launch文件有三种格式,pythonmxlyaml。其中ROS2官方推荐使用python来编写launch文件,原因在于python是一种编程语言,更加灵活,可以完成许多别的特性。这里主要介绍如何使用python来编写launch文件。
2024-04-23 09:51:47 1269
原创 C++中的Lambda匿名函数
可以使用隐式捕获模式,然后为特定的变量显示指出相反的模式。例如,lambda主体需要通过引用的方式访问外部变量。初始化捕获是使用初始化列表来捕获外部变量,可以用于按值捕获或者按引用捕获。则表示只是定义了一个 Lambda 函数,并不会立即执行。表示 lambda 表达式的主体不需要访问封闭范围内中的变量。可以立即执行 Lambda 函数,并返回函数的结果。表示通过引用的方式来捕获引用的所有变量,而。值捕获需要手动来指定,例如有一个变量。,然后执行匿名函数的函数体,执行结果。,并通过值访问外部变量。
2024-04-22 15:24:43 585
原创 【Moveit2】第一个C++ Moveit程序
这个系列的blog会记录笔者学习moveit2的过程。在第一篇中,我们对moveit进行了构建,第一次对moveit进行build可能会花费30min左右,请耐心等待。
2024-04-22 10:34:00 634
原创 Ubuntu22.04 + ROS2 Humble配置Moveit2环境
截至 2022 年 9 月 26 日,默认的 ROS 2 中间件 (RMW) 实现存在问题。这个文件里包含了moveit2的及其相关依赖的源码,我们还需要将这些仓库和对应分支的代码克隆下来,就会出现一个机械臂的模型,接下来就可以安装官方的教程开始学习了。官方推荐使用Cyclone DDS作为中间件的解决方案。,然后再克隆一次,如果成功会出现如下的信息。然后初始化rosdep,并更新环境的依赖。最后我们可以进入工作空间然后开始编译了。这个编译的时间可能会很久,请耐心等待。然后会出现一个空白的。
2024-04-19 15:58:09 2951 10
原创 Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机
运行下列命令安装等待安装完毕后,再菜单栏里找到打开并启动然后点击然后取名+选择安装系统的版本然后分配内存大小,在绿色线范围内都是可以的然后选择创建虚拟磁盘选择磁盘类型为选择动态分配内存设置磁盘内存大小然后点击即可完成创建我这里使用的是Windows官网提供的文件,你可以手动进去下载,这里假设你已经下载好了文件,进行配置。选中你所下载的文件即可,然后进行启动问题的具体报错如下:首先,尝试使用如果报错则使用以下的两条命令使用完毕后,会让你输入一个的密码,请记住这个密码,这里我的密码设置为,然后重启电脑,
2024-04-17 13:38:20 3296
原创 【ROS2笔记六】ROS2中自定义接口
这里我的工作空间名为,我们首先在这个工作空间目录下创建一个新的功能包进入功能包,然后创建msg和srv目录├── msg├── src(1)自定义构建msg进入新建一个Num.msgint64 num这里构建了一个自定义的消息,消息的内容是64整型的int(2)自定义构建srv进入新建一个int64 aint64 bint64 c---int64 sum这里构建了一个自定义的服务消息,request包含三个数abc,response包含一个数sum(3)修改配置文件(4)修改配置文件。
2024-04-16 16:11:11 1825
原创 【ROS2笔记五】ROS2服务通信
服务通信也是ROS2中基本的通信方式,服务分为客户端和服务端,由客户端向服务端发送请求,然后服务端对客户端的请求进行处理,最后将处理后的结果返回给客户端,所以服务-客户端模型,可以称为请求-响应模型。
2024-04-16 13:41:16 1304
原创 【ROS2】搭建ROS2-Humble + Vscode开发流程
首先进入我们需要存放ROS工作空间的文件路径,然后使用。自动生成的配置文件,然后我们就可以使用快捷键。,然后新建功能包,这里我的功能包名字为。然后我们先新建工作空间,先。,这时会多出一个文件夹名为。
2024-04-16 09:59:48 992
原创 Ubuntu22.04搭建CLion C++开发环境
然后新建一个项目来测试环境是否有问题,直接新建一个。然后进入自己存放这个压缩包的路径中,项目,然后点击默认的配置进行运行。启动CLion后,进入。
2024-04-12 17:37:22 1506
原创 【ROS2笔记四】ROS2话题通信
话题是ROS2中常用的通信方式之一,话题通信采取的是订阅发布模型,一个节点的数据会发布到某个话题之上,然后另一个节点可以订阅这个话题,这个节点就可以通过这个话题来拿到发布节点发布的数据了。
2024-04-12 15:59:17 1212 1
原创 【ROS2笔记三】构建ROS2功能包
ROS2可以使用或者来创建工作包,使用进行开发推荐使用,使用进行开发推荐使用来创建包。ROS2 和各自有自己的最低要求内容:::在创建ROS2功能包之前,确保你已经位于工作空间当中,这里我的工作空间命名为创建功能包,推荐使用(cpp)或(python)作为编译类型,并且添加依赖。1.创建一个包,在ROS2中创建新包的命令语法是: 是创建包的意思 用来指定该包的编译类型,一共有三个可选项、、 用于制定证书,一般设置为,如果不指定的话会弹出一个警告但是没有别的影响 指的是这个功能包的依赖,这里使用的
2024-04-11 17:25:03 1590
原创 【ROS2笔记二】使用colcon构建ROS2工作空间
在ROS1中,我们使用、和作为ROS的构建工具,但在ROS2中,我们使用colcon来作为构建工具,具体的原因可以参考该文档首先我们需要先安装构建工具与catkin相比,删除了devel目录。下面举个例子使用colcon构建工具。1.首先创建一个工作区的目录2.然后clone官方提供的示例源码3.使用colcon进行构建使用这条语句进行构建的时候,允许我们更改src目录下的python文件而无需重新构建完成后,我们会在src同级目录中看到buildinstalllog。
2024-04-11 16:05:49 600
原创 【ROS2笔记一】ROS2的基本组件
与ROS1类似的,ROS2也具有nodetopicserviceaction之类的组件,并且也具有rqt等工具。可以像使用ROS1的命令行的方式(参这里与ROS1一致,ROS2中程序也是以节点node为单位,通过topic或者service的方式来进行通信的,在ROS2中,单个可执行文件(Cpp可执行文件和Python程序)可以包含一个或者多个节点。在ROS2中取消了RosMaster的结构设计,节点之间的通信方式如下图所示:在ROS2中,nodetopicservice。
2024-04-11 15:55:30 603
原创 Ubuntu22.04 + ROS2 Humble的环境配置
经过漫长的等待,终于安装成功了。然后添加环境变量,这样就避免了每次都手动。在这个终端里就能够用键盘的方向键来控制海龟的移动了。ROS2的各种版本及维护计划,可以参考。然后,选择是否部分安装,这边建议安装。版本,这就包含一些常用工具的安装比如。然后将下列仓库添加到源列表中。然后新建另一个终端,
2024-04-11 13:18:14 1192
原创 C++ STL简明教程
std::vector 变量名;可以是各种类型,也同样可以是STL容器,举个例子,//这里定义了一个二维的向量可以像普通类型一样进行定义std::mapstd::map 变量名;//使用string需要先#include 使用构造函数进行初始化使用初始化器{}来初始化使用make_pair函数进行初始化// 使用auto自动推断构建后的类型setstd::set 变量名;
2024-03-27 22:18:47 996
原创 EPS32实操之【获取网络请求】
模块包含热点 AP 模式和客户端 STA 模式,热点 AP 是指电脑或手机端直接连接 ESP32 发出的热点实现连接,如果电脑连接模块 AP 热点,这样电脑就不能上网,因此在使用电脑端和模块进行网络通信时,一般情况下都是使用 STA 模式。请求体:包含请求所需的数据。我们虽然可以对任意网址发送网络请求,但是这样毫无意义,比如,我想要获取某个地区的天气状况,就需要调用相对应的接口,也就是 API。实现一个访问查询实时天气的一个功能,通过串口发送查询指令然后能够查询当前的实时天气,并且通过串口打印出来。
2024-03-26 16:23:54 1231
原创 Vscode + PlatformIO + Arduino 搭建EPS32开发环境
在这个目录下,可以放置项目自定义的头文件,或者是一些需要被其他文件引用的第三方库的头文件。在这个目录下,可以放置项目需要引用的第三方库或自己编写的库。这些库文件通常是以源代码的形式提供,可以是单个文件或多个文件的集合。这样的组织结构可以方便地管理项目所需的库文件和头文件,并在构建过程中正确引用和链接它们。:这是 PlatformIO 的配置文件,用于指定项目的配置选项,如目标硬件平台、编译选项、上传设置等。:该文件夹是 PlatformIO 的工作目录,包含编译生成的二进制文件、日志文件等。
2024-03-26 15:03:08 2262
原创 Python中sys.stdin.readline()与input()的区别
sys.stdin 默认从标准输入流中读取数据,但你也可以重定向输入源,从文件或其他来源读取数据,默认的输入源是从终端中进行输入。更适合于需要更高级的输入处理,或者需要与其他文件输入/输出操作结合使用的情况。你可以将输入从文件中读取而不是从标准输入流中读取。它会在程序执行时暂停,等待用户在命令行中输入内容,并返回用户输入的字符串。读取用户输入时,通常需要在代码中设置适当的逻辑来等待用户输入并处理输入数据。返回从标准输入读取的一行内容,包括换行符。命令,这样,你的代码可以像读取标准输入一样读取文件内容。
2024-03-16 14:37:34 1689 4
原创 Window系统下Vscode配置C/Cpp运行+调试环境
配置了Cpp的运行环境,我们是无法进行单步调试运行的,这时就需要配置Cpp的调试环境了,在。打开Vscode,我们新建一个目录用于专门存放我们的。文件主要负责我们的调试过程,我们需要配置这两个文件。接下来我们就能测试一下是否配置成功了,新建一个。下载完毕后,需要进行解压,然后配置环境变量。,请大家举一反三,合理配置自己的路径。,将你的存放路径拷贝过来,我的路径即是。配置完毕后,你的文件目录中会出现一个。如果出现下列内容,则表明配置成功。配置到环境变量中,完整的路径是。,我们需要将其中子文件夹的。
2024-03-13 16:59:07 970
原创 LeetCode刷题小记 六、【栈与队列】
这里涉及到选择小顶堆还是大顶堆的问题,如果我们选择大顶堆的话,每次弹出的元素都是最大的元素,这样我们就把最大的元素都弹出了,只保留了较小的元素,相反如果我们选择小顶堆的话,每次弹出都是弹出最小的元素,这样就保留了加大的元素。思路:这是一道典型的使用栈来完成的题目,我们只需要判断入栈的元素是否等于栈顶元素,如果等于则表明这是一对需要删除的元素,我们只需要移除栈顶元素即可,最后返回由栈中所有元素构成的字符串即可。这其实是一种方便计算机运算的存储方式,进的值大于当前队列的队首位置的,则将队列清空,再将这个值。
2024-02-29 15:42:43 930
原创 Python中的heapq模块
我们可以将待排序的数据构建成一个小顶堆,每次从堆顶弹出数据,收集弹出的数据,这样我们就可以获得一个排完序的序列。,直接将可迭代的对象转换成小顶堆。有两种方法可以用于创建堆,第一种是直接使用方法。模块实现了堆队列的算法,即优先队列算法。方法返回的是当前堆中的最小元素。将元素手动放入指定的。
2024-02-29 15:18:03 1317
原创 Python中的collections模块
Counter可以将元素储存为字典的键而它们的计数储存为字典的值。是一种双端队列[double end queue],我们可以利用这个双端队列来实现数据结构中的栈。提供许多容器数据类型,这个模块实现了一些专门化的容器,提供了对Python的通用内建容器。如果查询的值不在Counter中,则会返回0,而不是像字典以用返回一个。设置一个计数为0,并不会从Counter中删除它,若要删除它则使用。不存在的时候,返回一个默认值,就可以使用。是一个函数,它用来创建一个自定义的。会按照插入的顺序进行排序,而不是把。
2024-02-28 14:05:24 1162
原创 LeetCode刷题小记 五、【双指针法】
本系列笔记主要作为笔者刷题的题解,所用的语言为Python3,若于您有助,不胜荣幸。在这个章节里,总结一下一些典型的利用双指针法来解决的题目,做到查漏补缺。
2024-02-27 16:00:39 763
原创 LeetCode刷题小记 四、【字符串】
本系列笔记主要作为笔者刷题的题解,所用的语言为Python3,若于您有助,不胜荣幸。字符串类题目的思路在算法性的思路上和数组类题目的思路类似,具体需要注意的就是,字符串在不同编程语言中的特性,合理利用在不同语言中的特性有效完成题目的要求是十分重要的。
2024-02-26 19:21:31 827
原创 Visio导出eps格式图片
如何使用Visio绘图然后导出.eps格式的图片呢?这个过程需要用到,使用的虚拟打印功能,可以导出.eps格式的图片。
2024-01-06 22:39:28 3120
原创 【mujoco】Ubuntu20.04中解决mujoco报错raise error.MujocoDependencyError
查阅了一些资料后,笔者发现了解决办法,从官网分别下载两个文件,放置到上面要求的位置中即可。分析这个问题我们发现,问题中提示我们需要在。笔者已经成功在ubuntu环境下配置了。版的,下载完毕后记得解压缩,防止在路径。分别需要下载两个文件,首先是下载。路径下新增两个文件,一个是。以上就成功解决了该问题。的代码时出现了下列问题。打开链接,直接下载即可。
2024-01-04 11:12:59 837
原创 【Math】重要性采样 Importance sample推导【附带Python实现】
越来越逼近0.6,但是经过重要性采样,结果越来越逼近0,符合期望。被称为重要性权重,那么通过这个重要性权重,我们就可以在概率分布。,我们如何通过这个易于获得的概率分布来计算在概率分布。是服从连续的概率分布,并且我们在概率密度函数。是服从离散的概率分布,并且我们在概率分布。然后我们使用大量的离散采样来估计连续的期望。通过重要性采样,我们便可以通过在概率分布。来进行期望的计算,随着样本数的增多,期望。,我们的目标是计算该随机变量的期望。下,有一致同分布的采样。下,有一致同分布的采样。下的采样来计算在概率分布。
2024-01-02 18:43:24 1402 2
原创 YAML文件入门
YAML是"Yet Another Markup Language"的缩写,意为仍是一种标记语言,YAML和其他高级语言非常相似,可以用于表示简单的列表list、字典dict等形式,YAML使用空白符号缩进和大量依赖于外观的特色,非常适合于编写配置文件,另外YAML文件的后缀可以为.yml或.yaml。
2023-12-07 10:30:06 193
原创 【Math】先验分布、后验分布、贝叶斯公式 (Prior Distribution Posterior Distribution and Bayesian Formula)
在了解了条件概率之后,来推导贝叶斯公式(Bayesian Formula),对于条件概率。是决定样本分布的参数(可以理解为原因),其中各个量的理解如下。的后验分布,它集中了总体、样本和先验等三种信息有关。为了进行贝叶斯公式的简单推导,在推导之前先介绍。的认识,之间的差异是由于样本的出现后对。可以看作用总体信息和样本信息对先验分布。发生的条件下发生的概率可以记为,被称为样本(可以理解为结果),认识的一种调整,所以后验分布。可以将上述贝叶斯进行改写,
2023-12-06 15:36:39 322
原创 【Python】Python中的类型注释(Type Annotations)
Python是一种动态特性语言,即无须程序员显示指定变量的数据类型,给变量赋什么值变量就是什么数据类型。但是在程序员维护大型的项目的时候,面对陌生的变量若不知道变量数据类型便难以写代码进行调试,所以Python在3.5版本开始逐步引入了,在Python3.8之后可以直接使用Type Annotations,在之前的版本需要使用才能够正常使用Type Annotationsself.x = xself.y = y# 变量 p 的类型为 Point。
2023-12-04 14:21:54 1246
51单片机课程设计优秀作品(步进电机的控制)可以实现正反转,加速减速,矩阵按键设定转速。
2020-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人