- 博客(111)
- 收藏
- 关注
原创 Linux第五节课(权限02)
粘滞位:给目录设置的(一般为共享目录),大家可以在目录进行各自文件的增删改查,只允许文件拥有者或root删除这个文件,其他人一概不允许!t是一种特殊的x权限!在Linux系统中,要删除一个文件,用户需要具有该文件所在目录的写权限。如果用户对该目录没有写权限,则无法删除文件。ls - ld /我们可以发现,根目录为root创建的, 对于其他用户来说,没有权限在根目录下创建文件夹。因此建立共享文件只能通过root来创建。
2024-07-22 21:17:23 314
原创 Linux第四节课(指令与权限)
用户将指令发给命令行解释器(例如Bash命令行),然后命令行解释器将信息发送给操作系统,操作系统处理信息后再把信息经过命令行解释器发给用户!
2024-07-21 22:13:33 501
原创 Linux第三节课(基本指令)
输出重定向:将本来应该显示到显示器的内容,打印到文件中!cp +[源文件名] [目的文件名] ---在当前目录下,将源文件名拷贝一份到目的文件名。拷贝一个同名文件到上级目录中!(在同一个目录中如果同名会报错!如果源文件是一个目录文件(内置多层目录)cp -f 强制复制不询问(在普通用户下)cp - i 询问后复制(普通用户下)若cp -fi 则依旧询问。
2024-07-21 22:10:27 828
原创 Linux复习02
(先有键盘后有鼠标)>>>> 先有指令后有图形。Xshell中:alt + enter全屏操作。rmdir + 目录名只能用于删除空目录。windows也是命令行/图形化界面。指令操作更贴近操作系统!
2024-07-20 16:54:33 885
原创 Linux复习01
例如:ssh root@43.138.218.166(公网IP)/ssh root@ip地址 然后再输入密码。a.商业化版本:(ubuntu,红帽,centos)内核+界面等。b.技术版本(Linux的内核源代码)2.6 2.7等等。passwd zd_108 (回车后会显示输入新的密码)Linux的版本号,例如:2.6.27.39。建议使用普通账号使用(前3、4使用root)。内核版本不同可能对应着不同的商业化版本。例如:userdel zs_108。
2024-07-20 16:51:34 244
原创 麦克纳姆轮 Mecanum 小车运动学模型和动力学分析
参考文献移动机器人的是为了解决小车的正向运动学和逆向运动学问题,即我们需要知道小车的移动平台与其移动装置之间的关系,对于Mecanum模型,。移动机器人的动态模型可估算外力因素对移动平台运动的影响,并可计算出移动平台运动所需的。
2024-05-04 23:15:40 2726
原创 ROS1快速入门学习笔记 - 13tf坐标系广播与监听的编程实现
创建完后如下图所示: 实现一个tf广播器代码如下所示:三、创建tf监听器代码(C++)实现一个TF监听器代码如下:四、配置tf广播器与监听器代码编译规则配置CMakeLists.txt中的编译规则五、编译并运行 运行后,后面的海龟一直跟着前面的海龟。
2024-05-02 16:04:57 182
原创 ROS1快速入门学习笔记 - 12ROS中的坐标管理系统
例如我们想要查看turtle1和turtle2两个坐标系之间的关系(第二个工具)中心点是world坐标点, 移动海龟时,相应的坐标系也会发生变化。(在这里可能会出现一段红色警告,我们通过下面指令可以消除)然后我们运行海龟,发现后面的海龟会一直跟着我们移动的海龟。还可以通过另一个指令查看两个坐标系之间的关系。还可以通过Rviz查看两个坐标系之间的关系。例如移动机器人的本体坐标系与雷达坐标系。可能会出现生成的pdf崩溃,报以下错误。修改后再重新尝试就不会报错。(89行),在这行前面添加。接下来再重新运行即可。
2024-05-01 05:00:41 660
原创 ROS1快速入门学习笔记 - 11参数的使用与编程方法
重新设置参数后可以通过发送请求 rosservice call /clear "{}"来更新显示改过的参数值。默认的文件会保存在当前目录的路径下,例如我的参数此时保存在工作空间下。在最后运行后我们可以发现,小乌龟的背景由原来的蓝色变为白色。每个节点都可以访问我们的参数(类似于全局变量的存储空间)对应的Python程序如下所示,原理与C++一致。配置CMakeLists.txt中的编译规则。修改后我们可以通过在终端重新更新我们的参数。文件的参数也可以在对应的yaml内进行修改。可以通过dump来保存参数。
2024-05-01 01:25:16 419
原创 ROS1快速入门学习笔记 - 08客户端Client的编程实现
创建后如下所示: 实现一个客户端创建的C++代码如下:3. 配置客户端代码编译规则配置CMakeLists.txt的编译规则相对应的需要添加的代码如下所示:添加至对应的Build下面然后在工作空间catkin_ws下可以进行catkin_make编译,我们可以在工作空间catkin_ws/devel/lib/learning_service找到我们通过第一条CMakeList指令将cpp文件生成的可执行文件运行后会出现两只海龟 代码如下
2024-04-29 14:03:32 299
原创 ROS1快速入门学习笔记 - 07话题消息的定义与使用
并且,此时如果有第三个节点想要与这两个节点进行沟通是办不到的,因为ROSMaster已经关闭了。我们在下面路径下分别添加发布者和订阅者对应的C++代码文件。然后在下面的路径可以找到编译后的C++类型的头文件。将其添加到CMakeLists.txt文件中。需要通过发布者和订阅者来实现话题的演示。文件内容为上述定义的msg文件。先catkin_make进行编译。运行步骤与上述C++的一致。将代码移动至以下目录中。
2024-04-29 00:08:59 468
原创 ROS1快速入门学习笔记 - 06订阅者Subscriber的实现
与发布者步骤类似,我们将发布者的对应代码写入功能包的src文件中。可以发现,通过键盘控制小乌龟移动,它的位置坐标也会发生改变。将其放到功能包下的CmakeLists.txt文件中。记得将py文件的属性中的操作权限改为
2024-04-27 21:00:16 235
原创 ROS1快速入门学习笔记 - 05发布者Publisher编程的实现
对于Py文件,我们需要让它具有可执行权限,右键属性将其修改(如果感觉每次运行都需要配置环境变量太过麻烦,可以把它复制到。需要将以下两句话拷贝到CMakeLists.txt里面。我们将其复制到创建的learning——topic。拉到最后一行,其中home后为自己的用户名。最后我们可以得到海龟仿真器。实现流程与C++一样。
2024-04-27 16:15:26 678
原创 ROS1快速入门学习笔记 - 04创建工作环境与功能包
工作空间(workspace)是一个存放工程开发相关文件的文件夹。src:代码空间(Source Space)build: 编辑空间(Build Space)devel:开发空间(Development Space)install:安装空间(Install Space)
2024-04-24 03:05:14 553
原创 ROS1快速入门学习笔记 - 02ROS相关介绍
ROS = 通信机制 + 开发工具 + 应用功能 + 生态系统目的:提高机器人在研发中的软件复用率。
2024-04-22 17:41:17 673
原创 安装ROS出现WARNING The following node subscriptions are unconnected: * /rosout: * /rosout
上述问题主要源于ROS系统中的rosout节点未正确启动。这将启动一个 ROS Master,以及 rosout 和 parameter server。1. 打开一个新的终端窗口,输入下面的命令来启动roscore。问题应该在这个时候就解决了。您可以通过运行下面的命令来确认。在大部分情况下,以上步骤应该能解决问题。(记着需要同时打开两个终端)
2024-04-21 22:21:44 157
原创 ROS1快速入门学习笔记 - 01Linux基础
两种语言对比:C++的更多场景是偏向于跟硬件有关,跟框架相关的一些开发,Python用的更多的场景是在机器人的应用层和算法相关的一些开发上。C++代码需要通过g++ 指令进行编译;-o表示将这个代码文件编译为什么名字的可执行文件。编写C++需要安装g++编译器;编写Pyhton需要安装Python解释器。Python没有编译的过程,直接通过解析器来解析Python的代码。终端快捷键:ctrl+alt+t。在终端中./表示运行某个文件。执行方法与上面一样。执行方法与上面一样。
2024-04-21 22:20:39 476
原创 gitee上传出现git did not exit cleanly (exit code 1)的错误
2. 在邮箱管理中将邮箱从隐藏变为公开自己的邮箱,再次push后即可不会出现错误。,然后再次进行push操作。我们在控制面板中选择。
2024-04-06 23:21:38 405
原创 最优控制理论笔记 - 02变分与泛函1
变分法:是求解泛函极值的一种经典方法。也是解决最优控制的有利工具。函数:对于变量t在某一变域中得到每一个值,x都有一个值与之相对应,那么变量x称作t的函数。记为:x = x(t), t称为函数的自变量。泛函:对于某类函数中的每一个函数x(t),变量J都有一个值与之对应,那么变量J称作依赖于函数x(t)的泛函。记为:J = J[x(t)]或简单记为J, x(t)称作泛函的宗量。注意到泛函的定义域是由函数组成,所以泛函可以理解为”函数的函数“。对于积分型性能指标: 变量t是宗量x(t),u(t)和t的变量。零阶
2024-04-06 22:11:32 368
原创 基于Python3的数据结构与算法 - 22 贪心算法
一个小偷在某个商店发现有n个商品,第i个商品价值vi元,重wi千克。他希望拿走的价值尽量高,但他的背包最多只能容纳W千克的东西。他应该拿走哪些商品?假设商店老板需要找零n元钱,钱币的面额有:100元,50元、20元、5元和1元,(无限多张)如何找零使得所需要的钱币的数量最少?(选择0-1背包最后可能出现包装不满的情况,可能剩下好多容量)(选择最贵的直至包里不剩位置)方法一:可以通过Python中内置的。
2024-04-04 23:08:19 760
原创 基于Python3的数据结构与算法 - 20 AVL的旋转
上图中的指的是该节点左右子树的高度差。(右子树高度-左子树高度)因为AVL树满足根的左右子树都是平衡二叉树,进行查找删除的操作时大致为一半一半的情况,因此一定不会出现极偏的情况。
2024-03-24 18:58:51 599
原创 基于Python3的数据结构与算法 - 19 二叉搜索树
输出结果如下所示:我们可以发现,中序遍历的结果一定是升序的!(对于二叉搜索树来说),因为中序遍历的遍历规则为先遍历左边,再遍历根节点,再遍历右边。3. 如果要删除的节点有两个孩子:将该节点删除,并其右子树的最小节点(该节点最多有一个右孩子)替换当前节点。2. 如果要删除的节点只有一个孩子:将此节点的父亲与孩子连接,然后删除该节点。
2024-03-23 05:20:31 710
原创 基于Python3的数据结构与算法 - 18 二叉树的遍历
将二叉树的节点定义为一个对象,节点之间通过类似链表的链接方式来连接。按照上图结构,自定义一个二叉树。
2024-03-23 05:19:55 314
原创 基于Python3的数据结构与算法 - 17 树的实例:模拟文件系统
【代码】基于Python3的数据结构与算法 - 17 树的实例:模拟文件系统。
2024-03-22 03:51:43 91
原创 基于Python3的数据结构与算法 - 17 哈希表
哈希表是一个通过哈希函数来计算数据存储位置的数据结构,通常支持如下操作:当关键字的全域U比较小时,直接寻址是一种简单而有效的方法。U: 关键字可能出现的所有的集合。T:根据U建立相关的T。然后关键字在相应的T中找值。直接寻址法的缺点:直接寻址表 + 哈希函数 = 哈希直接寻址表:key为k的元素放在k位置上改进直接寻址表:哈希(Hashing)哈希表(Hash Table, 又称为散列表),是一种线性表的存储结构。哈希表由一个直接寻址表和一个哈希函数组成。哈希函数 h(k) 将元素关键字k作为自变量,返回
2024-03-21 15:28:44 948
原创 基于Python3的数据结构与算法 - 16 链表
按元素查找:都是挨个遍历,复杂度都为O(n).按下标查找:列表中直接存放地址,复杂度为O(1), 链表复杂度为O(n).在某元素后插入:列表为O(n),链表为O(1)删除某元素:列表为O(n),链表为O(1)链表在插入和删除的操作上明显快与顺序表。链表的内存分配更加灵活。
2024-03-21 14:50:50 784
原创 基于Python3的数据结构与算法 - 15 栈和队列的应用(迷宫问题)
给一个二维列表,表示迷宫(0表示通道,1表示围墙)。给出算法,求一条走出迷宫的路径。
2024-03-12 05:04:26 328
原创 基于Python3的数据结构与算法 - 14 队列
目录一、定义1. 环形队列2. 自定义队列二、队列的内置模块 1. 双向队列队列也可以使用列表来实现:但是这种情况下会出现一个问题:若我们采用pop(下标来进行出队),此时操作上时间复杂度为为O(n),而且在情况(d)下,此时如果我们还需要入栈,只能在后面的空间上,前面的空间会造成浪费,因此我们引入环形队列。 可以到最后从头到尾接起来。定义:当队尾指针front == Maxsize - 1时, 再前进一个位置就自动到0. 对满的情况少1格是为了防止与空队列的情况相同。我们可以通过自己创建一个类来实现队列的
2024-03-12 05:04:16 512
原创 基于Python3的数据结构与算法 - 11 桶排序
在计数排序中,如果元素的范围比较大(比如在1到1亿之间),此时使用计数排序会创建一个巨大的列表,占用大量的内存空间,那么我们怎么改造算法?
2024-03-05 04:16:09 352
原创 LeetCode01 - 35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法214。
2024-03-03 00:17:18 439
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人