自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 控制周期与控制频率

控制频率是指控制系统中执行控制循环的频率,即每秒钟执行控制循环的次数。然而,较高的控制频率也会增加计算和通信的负担,可能对硬件和资源要求提出更高的要求。控制频率的选择需要综合考虑系统的需求、控制算法的计算复杂度以及硬件和通信的限制。在实时控制系统中,常见的控制频率范围从几赫兹到几十赫兹不等,具体取决于应用领域和系统的要求。较短的控制周期可以提高系统的响应速度,但也增加了计算和通信的负担。控制周期的选择需要综合考虑系统的要求、控制算法的计算复杂度以及实际硬件和通信的限制。

2024-07-08 11:05:54 197

原创 arxiv上的论文可以看到他是投了哪个期刊吗

成为IEEE的Senior Member需要满足一定的资格要求,包括具有工程或科学领域的本科或更高学位,至少10年的相关工作经验,并且在技术领域有一定的工程、研究、教育或管理方面的成就。在ArXiv上的论文一般会提供一份论文的摘要、作者信息和联系方式等,但通常不包含已接受或发表在哪个期刊上的信息。IEEE是全球最大的专业技术学会之一,致力于推动电气和电子工程领域的创新和发展。成为IEEE的Senior Member是对个人在专业领域中的认可和荣誉,显示了其在电气和电子工程领域的专业能力、贡献和经验。

2024-03-25 20:49:35 423

原创 eigen::matrix类型的一维数组,既可以使用(),也可以使用【】吗

无论使用圆括号还是方括号,都可以读取和写入数组元素。然而,需要注意的是,使用圆括号。可以按照线性索引来访问数组元素,其中索引从0开始逐个增加。则可以使用类似于C++原生数组的方式来访问元素。进行访问时,索引值超出数组范围会导致运行时错误;进行访问时,超出范围的索引会导致未定义的行为。类型的一维数组时,优先选择使用圆括号。进行访问,但它们的行为略有不同。类型的一维数组可以使用圆括号。,并确保使用有效的索引值。类型的一维数组,可以使用。类型的一维数组,可以使用。

2024-03-08 09:55:22 455

原创 Eigen::Matrix<double,3,1> F;Eigen::MatrixXd F (3, 2);这两行代码有什么区别?

如果您的矩阵大小在编译时已知且不会改变,那么使用静态大小矩阵可以提供更好的性能和内存效率。如果您的矩阵大小在运行时可能会变化,或者您需要根据需要调整矩阵的大小,那么使用动态大小矩阵会更灵活。因此,区别在于静态大小矩阵在编译时已知并且不能改变,而动态大小矩阵在运行时可以根据需要进行调整。这是一个静态大小的矩阵,其维度在编译时确定。这是一个动态大小的矩阵,其维度在运行时确定。这行代码创建了一个3x2的动态大小矩阵。这两行代码的区别在于定义的矩阵。这行代码创建了一个3x1的矩阵。

2023-11-12 11:06:12 303

原创 为什么说使用#define PI 3.1415926后,程序会在编译预处理的时候将所有的PI替换成3.1415926,但PI就不是程序中的名字了,随后的编译无法发现它引起的数据类型误用的错误,这是为啥

使用#define定义常量替换后,会直接进行文本替换,将符号文本替换为常量值。这导致以下问题:1. 替换后,PI不再是一个符号,编译器无法再检查其类型。2. 如果原代码中,PI被当做了其他类型使用(如PI+=1),编译预处理后就成了一个语法错误(3.1415926+=1)。3. 但由于预处理是文本替换,编译器不会发现PI原本的误用。4. 导致这个错误被“隐藏”起来,编译可能通过,但执行结果错误。所以,更好的方法是使用const定义常量,保留其符号性质,可以被编译器正常类型检查。// PI作为整数使用。

2023-11-09 09:38:05 441

原创 为啥会有些发表在arxiv上的论文

综上所述,arXiv具有上传快速、开放获取、版本控制等优势,许多作者会选择与期刊投稿同时发表到arXiv或仅发表到arXiv,这是论文出现在arXiv上的主要原因。6. 部分作者可能把未提交期刊的论文先发到arXiv,吸引同行评议,待修改成熟后再考虑投稿。2. 投稿顶级期刊周期很长,arXiv可以让作者快速公布研究成果,建立优先权。3. 即使论文被期刊录用,作者也可以同时在arXiv公开论文,扩大论文影响力。4. 对于一些高质量的会议,也鼓励或要求作者把论文开源到arXiv。

2023-11-08 10:14:48 1744

原创 cmake中的find_package

orocos_kdl库是可选的,如果没找到也不报错,只是不导入。所以:find_package(Eigen3 REQUIRED)find_package(Eigen3 REQUIRED) ######添加这一行,添加Eigen库。- Eigen3库是必需的,如果没找到会报错。find_package(orocos_kdl QUIET)- 指定该库是必需的,如果没有找到,会终止CMake过程并报错。- 查找失败也不会终止CMake,仅仅是不导入该库。QUIET - 可选库,找不到不报错。

2023-11-02 21:57:37 421

原创 log函数解释

log函数是指数函数y = bx 的反函数,用于求数字以某个数为底的对数。log函数的定义:设b>0,b≠1,对于任意实数x > 0,如果存在唯一的实数y,使得 b^y = x,则称y为以b为底x的对数,记为:y = log_b(x)这里b称为对数的底数。对数运算的底数通常取10和e。loga x = logb x / logb alog函数为递增函数,定义域为正实数,值域为全体实数。它广泛应用于科学、工程计算中,可以将乘法运算转换为加法运算,简化计算。log x 表示以10为底的对数。

2023-10-24 13:17:04 929

原创 MATLAB中保存工作空间所有变量

3. 保存到指定路径save '/User/data' data.mat;4. 保存为文本格式save data.txt x y z -ascii以纯文本格式保存变量x,y,z。这条命令的作用就是将当前workspace中所有的变量保存到当前目录下的data.mat文件中。5. 保存结构体save data.mat struct1保存结构体变量struct1。6. 保存并压缩save data.mat x y z -v7保存并使用压缩级别7压缩。. 只保存指定变量save data.mat x y z;

2023-10-22 20:23:06 2416

原创 机械臂的零力拖动和直接示教

机械臂的零力拖动(Zero Force Control)指的是在机械臂的关节没有输出扭矩的状态下,利用外力使其产生运动的一种方式。5. 再将记录的轨迹转换为正常的运动控制指令,就可以使机械臂重复刚才的被动运动。- 检测机械臂关节故障通过零力拖动的被动运动,可以获得丰富的机械臂状态信息,是机器人标定与诊断的有效手段之一。3. 区别在于,直接示教是在正常控制模式下进行的,关节控制器 aktiv,以匹配外力运动。1. 直接示教是利用外力带动机械臂运动,记录其关节角位置,作为控制的示教信息。

2023-10-16 14:05:10 1294

原创 论文当中的i.e.是啥意思

在学术论文写作中,i.e. 是拉丁文 id est 的缩写,英文意思是“that is”,中文意思是“即”或“也就是说”。另外,e.g. 是 exempli gratia 的缩写,意思是“for example”,用于给出示例或举例进一步说明。在使用i.e. 和 e.g.时,要注意两者含义的不同,正确地应用到论文的叙述中。这里i.e. 表示其后内容是对前文 CNN 的详细解释和指定,指明使用的具体 CNN 模型是 AlexNet。i.e. 用来进一步解释前文的内容,给出更明确或更详细的说明。

2023-10-13 14:52:31 372

原创 如何将matlab中的mat矩阵文件在python中读取出来

然后在当前目录下放入要读取的mat文件。先安装hdf5storage这个包。

2023-09-28 16:05:28 424

原创 引理和定理啥区别

7. 定理是理论框架的关键构成部分,而引理具有辅助作用。良好的定理应具有广泛适用性。综上,引理与定理相辅相成,共同推进数学理论体系的发展。引理为定理提供支持,定理才能表达出重要的深刻结论。4. 定理是建立在公设、公理、已知定理等基础上的,而引理常常是建立在一个定理的基础上,用来推导这个定理的证明。5. 在文章和论文中,定理要用“定理”来表示,而引理则可用“引理”、“命题”或“性质”来表示。引理表达的结论可能比较细微或属于定理证明过程中的步骤。1. 定理具有更高的地位,表示一个重要的结论或命题。

2023-09-26 21:04:15 1208

原创 中科院预警名单

8. 不排除个别预警期刊通过努力改进,脱离预警名单的可能。综合来说,一般不建议优先选择预警期刊投稿,除非确信该刊真的达到了一定的学术标准。7. 但是偶尔也有真正的高质量论文被误认为预警期刊。3. 预警期刊发表论文的学术影响力比较有限,不容易为作者带来高引用率和知名度。5. 如果论文存在漏洞而通过预警期刊发表,可能会受到学术批评和质疑。2. 这类期刊的学术质量参差不齐,接受论文的学术标准可能不严格。1. 预警期刊一般审稿周期长,容易出现迟迟不见回音的情况。6. 部分预警期刊存在版费高、学术不诚信等问题。

2023-09-21 19:16:03 9734 3

原创 Ubuntu下apt install命令的软件安装位置

下使用 apt-get install 或 apt install 下载安装软件,安装的软件位置在/usr/share。

2023-09-14 13:14:21 1428

原创 更换有该包的软件源,如官方源,这个怎么更换

6. 就可以使用新的软件源了。7. 如果要恢复原来的源,将 sources.list 替换回 sources.list.bak 的备份即可。这样就可以方便地换成官方源或其他可用的源,来解决一些软件包无法找到的问题。

2023-09-13 21:36:21 303

原创 aruco码DICT几乘几是啥含义,aruco.getPredefinedDictionary

DICT_5X5_100表示该字典使用5x5像素的marker,一共有100个不同ID的marker。所以当我们使用aruco.getPredefinedDictionary(aruco.DICT_5X5_100)时,就是获取一个包含100个ID,且每个marker大小为5x5像素的预定义字典。- DICT_5X5_1000: 5x5像素,1000个markers通过指定不同的字典,我们可以生成和检测不同大小和数量的ArUco marker。- 5X5:表示ArUco标记是5x5像素大小的正方形格子组成。

2023-09-13 09:15:17 604 1

原创 cv2.calibrateCamera函数

这个函数里的obj_points和img_points是同一相机不同视角下20张图片的角点,那这个函数返回的旋转向量r_vecs和位置矢量t_vecs是指什么,因为20张图像,棋盘格码的位置都不一样,它这个返回的旋转向量和位置矢量是指哪一张图?- t_vecs: 是一个位移向量数组,长度也是图片张数,表示每张图片相机光心相对于第一个画面的位置变换。- mtx: 是相机的内参矩阵,针对所有的图片通用。这个函数会利用所有的点对进行相机标定,返回的标定结果适用于所有的图片,而不是仅针对单张图片。

2023-09-12 14:49:07 981

原创 pyrealsense2包中的这个对齐模式下,是深度图对齐彩色图还是彩色图对应深度图,为啥对齐模式下彩色内参和深度内参相同,坐标变换相同。但不是对齐模式下时,内参就不同,坐标变换也不同

对齐过程会计算出一个从深度相机坐标系到彩色相机坐标系的变换矩阵,并应用这个矩阵将深度图重新投影到彩色图的视角中。这样对齐后的深度图和彩色图就是精确对应了,一个像素点的颜色值和深度值代表的是场景中同一个三维点。而未对齐时,深度图和彩色图有独立的内参和坐标变换,需要分别处理才能映射到三维空间中。所以对齐的目的是为了方便处理,直接将深度图投影到彩色图视角中,统一两者的几何属性,从而简化两者的配准和处理流程。这样两个图像的几何属性就统一了。- 坐标变换:对齐后深度图到相机坐标系的变换会与彩色图的相同。

2023-09-12 14:46:57 229

原创 同一个相机拍的不同图片的畸变系数是不是都不同,但相机内参矩阵是相同的

所以通常我们可以认为,同一台相机不同图片的内参矩阵相同,畸变系数虽会存在误差但可以看作相等。3. 但是在标定过程中,由于自变量条件和噪声的影响,计算出的畸变系数会存在误差,不同图片标定结果也会有细微波动。对同一台相机拍摄的不同图片,相机内参矩阵应该是相同的,而畸变系数可能存在一定差异,但通常也是相近的。1. 相机内参矩阵代表了相机的几何特性,包括焦距、主点坐标等,这些参数是固有的,不会因拍摄不同图片而改变。4. 但只要标定条件充分,这种波动应该很小,可以视为相同相机的畸变参数相等。

2023-09-11 20:55:21 229

原创 cv2.getOptimalNewCameraMatrix和cv2.calibrateCamera都能获得相机的内参矩阵,哪一个才是我应该用来作为aruco.estimatePoseSingleMar

所以正确的方法是:使用cv2.calibrateCamera()估计得到的原始内参矩阵作为aruco.estimatePoseSingleMarkers()函数的内参矩阵参数,才能进行正确的姿态估计。在使用aruco标记进行姿态估计时,应该使用cv2.calibrateCamera()得到的原始内参矩阵,而不是cv2.getOptimalNewCameraMatrix()去畸变后的内参矩阵。4. 一般流程是先检测标记获取2D坐标,然后使用原内参矩阵计算标记在相机坐标系中的3D坐标来恢复姿态。

2023-09-11 19:44:36 460

原创 关于运行franka_ros包中的franka_gazebo报错VMware: vmw_ioctl_command error 无效的参数.

这应该是虚拟机的bug,毕竟使用虚拟机和真实的物理机上是有差别的。这种方法简单粗暴,但是没有了3D图形加速功能意味着我们的虚拟机不能使用主机的GPU,而我们做仿真是需要GPU做图形加速的,所以这种方案长期来看不可取。第二个错误是Rviz的交互标记(interactive marker)包含未规范化的四元数,这会导致视觉效果异常。但每次都要这样就会很麻烦,因此建议放入.bashrc文件中,这样每次打开终端都提前运行了。我个人的建议是采用第三种更佳 ,第一种有点丢了西瓜捡了芝麻的感觉,第二种有点小题大做了。

2023-09-11 15:39:38 572

原创 虚拟机ubuntu18.04系统的终端无法粘贴来自windows端复制的内容

sudo apt-get install open-vm-tools-desktop //安装open-vm-tools-desktop。sudo apt-get install open-vm-tools //安装工具open-vm-tools。sudo apt-get autoremove open-vm-tools //卸载已有的工具。解决办法是先安装VMtools工具。

2023-09-11 12:36:24 1179

原创 如何在VM中删除已经创建的虚拟机

在虚拟机已经关闭的情况下,点击。

2023-09-10 19:54:36 493

原创 franka_ros中的一些子包的使用

franka_visualization包该软件包包含连接到机器人并发布机器人和夹爪关节状态以在 RViz 中进行可视化的发布者。可以选择是否加载夹爪。

2023-09-09 21:05:21 331

原创 ERROR: your rosdep installation has not been initialized yet

这个错误表示你的 rosdep 还没有初始化。rosdep 是一个 ROS 中的系统依赖管理工具,用于安装和配置需要的系统依赖包。在使用 rosdep 之前,需要先通过。这个命令会连接远程服务器来更新 rosdep 的数据源,以获取所有支持的 ROS 版本和平台的依赖信息。rosdep 的初始化最好在安装新版本 ROS 后直接完成,以后再使用 rosdep 时就不用每次都更新了。这样可以避免因 rosdep 没有初始化导致的错误。来更新 rosdep 的数据源。

2023-09-08 16:32:43 1178

原创 echo $ROS_PACKAGE_PATH

当你执行类似 roslaunch、rosrun 等命令运行 ROS 程序时,系统需要根据包名找到对应的包路径。ROS_PACKAGE_PATH 指定了这些包的根目录。ROS_PACKAGE_PATH 环境变量用来指定 ROS 中包的搜索路径。以下命令可以查看这个环境变量可以判断 ROS 编译环境是否设置正确。

2023-09-07 19:23:50 277

原创 三角函数画图

acros的x取值范围为-1到1,值域为pi到0。sin和arcsin。tan与arctan。

2023-09-04 20:49:16 69

原创 不同ubuntu系统下的不同ros系统可以互相通讯吗

但是需要注意,如果ROS节点依赖于不同版本ROS中的库或者消息类型,可能会存在一定的兼容性问题。总的来说,利用ROS master和ROS消息机制的松耦合特点,不同的ROS和Ubuntu系统之间通信是可行的,关键是各节点需要正确处理消息和服务。采取一定的兼容措施可以减少兼容问题。不同机器上的ROS节点都可以连接到同一个ROS master,从而实现通信。即使节点使用的ROS版本不同,也可以正确解析对方发送的ROS消息。可以的,不同版本的Ubuntu系统和ROS版本的机器仍然可以实现ROS节点之间的通信。

2023-08-29 18:28:53 382

原创 工科生看到一篇比较好的文献,就想着一定要复现,这种想法是正确的吗

6. 如果复现的目的是出版文章,需要谨慎对待,不能过于强调复现本身而忽视论文的创新与贡献。综上,复现别人研究成果需要慎重考虑其目的及意义,只有把握好度,才能在继承和创新中取得研究的平衡。通过复现工作,可以提高自己的研究能力,并加深对相关知识的理解。2. 如果是出于学术诚信的考虑,为了验证别人研究结果的可靠性,进行复现也是科学必要的。合理的复现工作有助于减少学术界的不实研究。4. 另外要注意避免重复研究,如果某一问题已经有足够充分的研究验证,单纯重复实验不能带来新的见解,那么就失去继续研究的价值。

2023-08-28 21:46:29 302

原创 机械臂的广义动量

机械臂的广义动量,是一个n x 1向量可以看出,广义动量与广义速度直接相关,但也与惯性矩阵M相关。机械臂的广义动量反映了整个机械系统的运动状态,在运动学分析、动力学分析以及控制规划中起关键作用。计算和控制机械臂的广义动量,可以更好地理解和指导机械臂的运动,实现高效快速的运动控制。机械臂的广义动量是描述机械臂运动状态的重要物理量,表示机械臂各关节的运动量。对于一个n自由度的机械臂,其广义动量定义为:p = M(q)q̇。其中:q: 机械臂的广义坐标,表示每个关节的角度。

2023-08-28 16:09:32 201 1

原创 python中的global怎么用的

总结一下global的使用原则:- 如果要在函数内部修改全局变量,需要使用global声明。- 如果只是访问全局变量,不修改,则不需要global。在Python中,global关键字用于在函数或其他局部作用域中使用全局变量。使用global关键字的主要原因有两个:1. 在函数中修改全局变量的值。2. 在函数中访问全局变量,避免UnboundLocalError错误。例子1:修改全局变量的值。这里如果不使用global关键字,会在函数add()内创建一个局部变量count,不会修改全局变量。

2023-08-20 12:31:31 1029

原创 怎么检查一下环境变量ROS_PACKAGE_PATH是否设置正确

2. 查看launch文件:找到启动rospy的launch文件,里面可能会有export命令来设置ROS_PACKAGE_PATH。4. 使用rospack:rospack可以找到包的路径,可以用来验证ROS_PACKAGE_PATH是否包含需要的路径。6. 查看launch文件报错信息:如果launch文件报错找不到包,其错误信息通常会显示当前的ROS_PACKAGE_PATH值,可以判断哪些路径缺失了。5. 使用roscd:roscd可以切换到某个包的目录,可以用来测试是否可以定位到目标包。

2023-08-19 20:28:18 474

原创 TypeError: only size-1 arrays can be converted to Python scalars

但是在将这个NumPy数组直接转换成float时就错误了,因为float()只能将大小为1的NumPy数组转换为标量,不能处理多个元素的数组。4. 也可以将整个数组赋值给msg.data,根据需要后处理所以,主要是float()不适合直接处理多元素的NumPy数组,需要先转换为标量或其他Python对象。msg.data = float(np.array(eval(from_client_msg.decode("gbk"))))#先转换为列表,再转为数组。

2023-08-18 22:13:43 671

原创 TypeError: a bytes-like object is required, not ‘str‘

这个错误表示在使用 TCP socket 的 send() 方法发送数据时,传入的参数类型错误,需要 bytes-like 对象,而传入的是 str。在 Python 3 中,socket 模块的 send() 和 recv() 方法需要传入和返回 bytes 对象,不能直接处理字符串。所以正确的做法是调用 encode() 或者直接使用 bytes 对象,将需要发送的数据统一转换为字节后再发出。同理,在接收数据时需要对 recv() 获取的字节数据解码为字符串。

2023-08-18 21:48:29 603

原创 rospy.exceptions.ROSSerializationException:<class ‘struct.error‘>: ‘required argument is not a float

根据错误日志,发布force_scalar消息时,data字段传入了一个List类型的数据[5.017082],而force_scalar消息中data字段需要的是float类型。总结步骤:1. 检查force_scalar消息定义,确认data字段类型为float2. 打印发布消息时data字段的类型,不能是List等其他类型3. 如果是其他类型,需要先转换为float才能发布4. 发布消息前确认data字段为float类型,然后再发布消息这样就可以解决序列化float类型数据时报错的问题。

2023-08-17 15:02:45 338

原创 为什么机器人工具箱中的J_dot函数的输出是6*1

机器人工具箱中的J_dot函数的输出是6*1的原因是jacob_dot(Q,QD)是Jacobian(在世界帧中)的导数(6*7)与关节速率qd(7*1)的乘积(6x1)

2023-08-16 21:38:27 41

原创 机器人工具箱的逆运动学函数

'rlimit',L maximum number of consecutive step rejections (default 100)连续步骤拒绝的最大次数(默认为100)matrix (4x4), and N is the number of robot joints.Q=R.ikine(T)是与机器人相对应的关节坐标(1xN)'ilimit',L maximum number of iterations (default 500)最大迭代次数(默认为500)

2023-08-16 18:39:30 1232

原创 MATLAB中的clock函数

是matlab中的一种时间函数,用于获取当前系统时间。该函数返回一个6元素的向量,包含当天的年份、月份、日期、小时数、分钟数和秒数。例如:clock函数返回的向量 [2021,4,27,15,42,30]代表当前时间为2021年4月27日15时42分30秒。

2023-08-07 12:30:06 435

原创 反对称矩阵

反对称矩阵主对角线上的元素一定为0,其余元素均有aij = -aji。

2023-08-07 12:00:28 121

空空如也

空空如也

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

TA关注的人

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