自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 资源 (2)
  • 收藏
  • 关注

原创 阻抗&导纳控制理解

下面还是以一个与环境交互的单自由度质量块系统为例,阐述阻抗控制和导纳控制。假设质量块的质量为mmmxxx是质量块的位移,FFF是控制力,FextF_{ext}Fext​mx¨FFext(1)mx¨FFext​​1导纳和阻抗控制的控制目标都是设计控制力FFF使外部力FextF_{ext}Fext​和ex−x0ex−x0​Mde¨Dde˙KdeFext(2)M。

2023-10-24 14:07:49 1359 4

原创 小波变换学习笔记【1】

B站视频 小波分解与重构 学习笔记

2023-09-29 11:14:07 558

原创 Simulink 和 Gazebo联合仿真控制机械臂【Matlab R2022a】

官方 demo 文档1、使用机器人模型和插件控制 Gazebo1.1 设置 Gazebo 仿真环境两种选择,一是使用自己的安装有 Gazebo 的 Linux 环境,二是下载提供的 装有 ROS 和 Gazebo 的虚拟机(VM),所需的 Gazebo 插件位于 /home/user/src/GazeboPlugin。我打算先尝试后者,虚拟机。...

2023-05-15 20:08:48 2027 4

原创 Ubuntu18.04 下安装 MATLAB 2021a

ubuntu 1804 上安装 MATLAB

2023-05-09 23:15:34 4061 1

原创 Ubuntu 下 ROS 使用 serial 包进行无线串口通信

lsusb。

2023-03-29 17:13:23 1580

原创 C++ Butterworth N阶滤波器设计

多通道信号实时数字滤波

2023-03-07 19:55:30 2213

原创 ROS 摄像头使用

ROS usb 摄像头调试

2022-11-08 10:40:51 2266

原创 IEEE 会议论文PDF eXpress 检查报错“Font Helvetica-Bold, TimesNewRomanPS-BoldMT, ..., is not embedded”

IEEE 会议论文PDF eXpress 检查报错“Font Helvetica-Bold, TimesNewRomanPS-BoldMT, ..., is not embedded”

2022-08-31 21:28:21 1323

原创 使用 MoveIt 控制自己的真实机械臂【4】——了解 MoveIt 的轨迹规划实现机制

使用 MoveIt 控制自己的真实机械臂【4】——了解 MoveIt 的轨迹规划实现机制

2022-07-31 16:22:51 4064 5

原创 使用 MoveIt 控制自己的真实机械臂【3】——优化轨迹发给真实机械臂执行

使用 MoveIt 控制自己的真实机械臂【3】——封装 ROS 驱动

2022-07-27 10:52:39 6153 13

原创 使用 MoveIt 控制自己的真实机械臂【2】——编写 action server 端代码

使用 MoveIt 控制自己的真实机械臂【2】——编写 action server 端代码

2022-07-24 14:32:32 4169 8

原创 使用 MoveIt 控制自己的真实机械臂【1】——配置 action client 端

使用 MoveIt 控制自己的真实机械臂之配置 action client 端,让 MoveIt 把真正的轨迹发布出来

2022-07-23 09:58:53 4868 4

原创 C++读取 .txt数据文本技巧

C++ 读取 .txt 数据文件技巧

2022-07-01 11:19:27 4260 1

原创 点到点轨迹规划【1】——梯形速度曲线规划

1、简单情况下的梯形速度规划梯形速度曲线轨迹规划算法是工业控制领域应用最为广泛的速度控制策略之一,标准形式的梯形速度规划包含匀加速、匀速、匀减速三个阶段,在变速过程中,加速度始终是人为设定的固定值。首先定义变量:q0q_0q0​:初始位置; t0t_0t0​:初始时间; v0v_0v0​:初始速度;q1q_1q1​:结束位置; t1t_1t1​:结束时间; v1v_1v1​:结束速度;vvv_vvv​:最大速度;TaT_aTa​:匀加速段时长;TdT_dTd​:匀减速段时长;假设位移为正

2022-03-14 17:35:51 5156 1

原创 Ubuntu 18.04卸载内核

最近误点了ubuntu系统的软件更新,结果之前安装的ubuntu实时内核就进不去了,无奈只好卸载掉重新安装,以坏掉的 5.6.19-rt12 为例,记录一下ubuntu系统卸载内核的操作。【该内核曾经是以安装包形式安装的】查看系统所有内核版本:sudo dpkg --get-selections |grep linux-image卸载5.6.19-rt12版本内核sudo apt-get purge linux-image-5.6.19-rt12 linux-headers-5.16.19-rt1

2022-03-01 09:18:53 2184

原创 TexLive 2021 在 Windows 下的安装 + Taxmaker 配置

1、TexLive 安装TexLive 2021 在 Windows 下的安装2、Taxmaker 安装 + 配置2.1 安装Taxmaker官网下载地址2.2 配置安装好Taxmaker后,双击运行选项 -> 配置Taxmaker红框所示改成 texlive 安装目录下的对应程序就可以。...

2022-01-12 23:53:40 417

原创 sudo apt-get update报错:GPG 错误:http://packages.ros.org/ros/ubuntu bionic InRelease: 下列签名无效: EXPKEYSIG

错误:hjs@hjs:~$ sudo apt-get update命中:1 http://mirrors.aliyun.com/ubuntu bionic InRelease命中:2 http://mirrors.aliyun.com/ubuntu bionic-updates InRelease

2021-09-20 10:37:38 4218

原创 C++提高编程---3.2 常用容器-vector 容器【P197~P203】

C++提高编程---3.1 常用容器-vector 容器【P197~P203】3.2 vector 容器3.2.1 vector 基本概念3.2.2 vector 构造函数3.2.3 vector 赋值操作3.2.4 vector 容量和大小3.2.5 vector 插入和删除3.2.6 vector 数据存取3.2.7 vector 互换容器3.2.8 vector 预留空间3.2 vector 容器3.2.1 vector 基本概念功能:vector 数据结构和数组非常相似,也称为单端数组。

2021-08-26 18:59:45 146

原创 C++提高编程---1.1 函数模板【P167~P173】

C++提高编程---1 模板【P167~P184】1 模板1.1 模板的概念1.2 函数模板1.2.1 函数模板语法1.3 类模板【C++ 提高编程主要针对 C++ 泛型编程和STL技术作详细讲解,探讨C++更深层次的应用】1 模板1.1 模板的概念模板就是建立通用的模具,大大提高复用性。模板的特点:模板不可以直接使用,只是一个框架;模板虽然具有通用性,但并不是万能的。1.2 函数模板C++ 另一种编程思想被称为泛型编程,主要利用的技术就是模板C++ 提供两种模板机制:函数模板和类

2021-08-24 13:53:55 148

原创 C++提高编程---3.1 常用容器-string 容器【P189~P196】

C++提高编程---3.1 常用容器-string 容器【P189~P196】3.1 string 容器3.1.1 string 基本概念3.1.2 string 构造函数3.1.3 string 赋值操作3.1.4 string 字符串拼接3.1.5 string 查找和替换3.1.6 string 字符串比较3.1.7 string 字符存取3.1.8 string 字符插入和删除3.1.9 string 子串3.1 string 容器3.1.1 string 基本概念本质:string是C+

2021-08-22 16:43:54 131

原创 C++ 提高编程---2. STL 初识【P185~P188】

2.1 STL 的诞生长久以来,软件界一直希望建立—种可重复利用的东西C++的面向对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了STL2.2 STL 基本概念STL(Standard Template Library,标准模板库)STL从广义上分为:容器(container)算法(algorithm)迭代器(iterator)。容器和算法之间通过迭代器进行无缝连接。STL几乎所有的代

2021-08-21 19:34:21 133

原创 Geomagic Touch(LAN口版本) 环境配置及驱动安装【过程记录】

Geomagic Touch 环境配置及驱动安装过程记录进入官方链接,在该页面下可以看到有 OpenHaptics 环境配置文件、touch 驱动文件以及驱动安装教程

2021-08-10 20:21:26 2325 1

翻译 kinova_j2s6s300【Torque control】

Torque controlNew in release 1.2.0扭矩控制变得更加容易。现在您可以像关节/笛卡尔速度一样发布扭矩/力命令。为此,您需要:1、可选 - 设置扭矩参数通常默认参数应该适用于大多数应用程序。但是如果你需要改变一些扭矩参数,你可以设置参数(在页尾列出)然后调用服务——SetTorqueControlParameters ${kinova_robotType}_driver/in/set_torque_control_parameters2、从位置控制切换到转矩控制您可

2021-08-07 16:14:38 475

翻译 kinova_j2s6s300【Velocity control for Joint space and Cartesian space】

1、Velocity control for Joint space and Cartesian space用户可以访问关节速度和笛卡尔速度(角速度和线速度)。关节速度控制可以通过发布到主题/'${kinova_robotType}_driver'/in/joint_velocity来实现,以下命令可以以大约 10 度/秒的速度移动 Jaco 机器人的第 6 个关节。请注意,发布速度确实会影响运动速度。eg:rostopic pub -r 100 /j2n6s300_driver/in/joint_v

2021-08-06 10:51:27 362

翻译 kinova_j2s6s300【Cartesian position control & Finger position control】

笛卡尔位置控制可以通过在自定义节点中调用KinovaComm::setCartesianPosition()来实现。或者,您可以简单地调用 kinova_demo 包中的节点pose_action_client.py。这个函数需要三个参数:kinova_robotType (eg. j2n6s300), unit {mq | mdeg | mrad}(指的是米和四元数、米和度和米和弧度)和pose_value。最后一个参数pose_value是位置(坐标x,y,z)后跟方向(是3个还是4个值取决于单位)

2021-08-04 15:20:25 663

原创 kinova_j2s6s300【Joint position control】

关节位置控制可以通过在自定义节点中调用KinovaComm::setJointAngles()来实现,也可以直接调用kinova_demo包中的节点joints_action_client.py。这个函数需要三个参数:kinova_robotType (eg. j2n6s300), unit {degree |radian}和value(每个关节的角度)。该函数采用选项 -r 来告诉机器人角度值是相对的还是绝对的。它还具有用于更详细输出的选项 -v和用于帮助的 -h 选项。以下代码将驱动 6DOF Jac

2021-08-04 13:19:54 546

转载 Eigen 使用碎碎记_norm、normalize、normalized的区别

本文转载自Eigen中norm、normalize、normalized的区别norm、normalize、normalized的区别# include <eigen3/Eigen/Dense> # include <iostream>using namespace std;using namespace Eigen;int main(int argc, char *argv[]){ Eigen::Vector3d vec(3,4,5); cout

2021-07-31 13:58:29 3373

原创 C++ Eigen 库中旋转向量、旋转矩阵、欧拉角、四元数的定义及互相转换

今天看师兄写的使用力反馈设备操作机械臂的代码,里边涉及到了Eigen 库中的旋转变换,表征旋转变换的有旋转向量Eigen::AngleAxisd、欧拉角Eigen::Vector3d、旋转矩阵Eigen::Matrix3d以及四元数Eigen::Quaterniond,关于它们的定义以及相互转换,我在网上找到了两篇非常不错的博客,写的这么好,咱就没有必要再整理一遍了(其实是懒),存了存了,写在这里也分享给需要的朋友~Eigen库使用教程之旋转矩阵,旋转向量和四元数的初始化和相互转换的实现eigen 中四

2021-07-27 11:13:00 2178

原创 笔记《机器人动力学理论及其应用》_上交桂凯博士_中科深谷机器人大讲堂第10期

1. 绪论系统动力学的作用:当系统与外界环境有交互的时候,外界环境对它有影响,它自身会有什么样的输出,这是系统动力学最基本的一个意义。动力学方程:描述系统与环境的交互的演变规律。2. 动力学建模2.1 关节动力学在考虑柔性关节的时候会将系统分为两部分考虑:一部分从电机→减速器→弹簧一部分弹簧→连杆由于过程中需要测得两个角度并且由于弹簧的存在引入了形变量,需要安装两个编码器来测量角度2.2 连杆动力学(给出四种)2.2.1 基于拉格朗日方程基于拉格朗日方程的二阶形式动力学方程

2021-07-20 16:06:29 2104 2

原创 1_Grassfire Algorithm_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

用0作为距离值标记目标节点,给所有距离目标节点1步的点标上1,距离2的标上2…以此类推,直至抵达起点。对于网格中的节点,标上的距离值代表的是从这个点走到目标点的最少步数。会发现这些数字从目标点向外辐射,就像火势蔓延一样,也即GrassFire名称的由来。实际上,能够实现这种算法主要是依靠建立一个节点网络。每次在算法进行迭代时,就将第一个节点从列表中取出,再将其所有还未访问过的相邻点标记上当前点标记数值加1的值,然后把这个节点加入到这个列表的未尾(也就是作为终点),下图所示概述了伪代码中的标记算法,这其

2021-07-10 20:57:16 472

原创 0_Graph-Based Planning_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

运动规划问题的重点在于如何让机器人从一个位置移动到另一个位置。很多情况下,这可以归结为几何问题,其目的是引导机器人通过某特定轨迹,而避开环境中的所有障碍。在这张图片中,机器人受到限制,仅能在网格单元上进行移动,我们要做的事是让机器人从起点(绿色单元格)移动到目标地点(红色单元格)。现在我们把每一个未被障碍物占据的网格想象成一个节点,并在相邻节点间用线连接,最终得到一个被称为图【graph/G】的数学结构,图G是由一系列用V表示的节点和一系列用字母E表示的边组成,其中的边将各节点连接了起来我们要做

2021-07-10 20:17:25 303

原创 13_Course Summary_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

13_Course Summary_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】课程回顾最开始讨论了在网格上移动的机器人的路径规划问题,引入了图的概念,图中节点对应机器人可以到达的离散位置,边缘对应位点间的路径。对于这些基于网格的问题,我们讨论了广度优先搜索【Breadth First Searth】或烧草算法【Grassfire Algorithm】,该算法从起点向外探索来找到最短路径【放动图】还讨论了Dijkatra算法,这是用加权图进行最短路径规划的通用算法最后,还介绍了A* 算法

2021-07-10 16:21:47 334

原创 12_Generalizing Potential Fields_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

12_Generalizing Potential Fields_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】前面我们讨论过在二维空间建立人工势场函数,因为二维空间比较直观,然而机器人有不同的形状和大小,很容易出现四维、五维、六维甚至自由度更高的位形空间,在这种高维度空间,我们可能不太清楚该如何建立合适的势能方程。一种为多自由度机器人生成势场的方法是,假设有一系列分布在机器人表面的控制点对每个控制点,我们可以构建一个势场,引导机器人远离工作空间的障碍并走向目标点。如前所述,可以通过计算每个点

2021-07-10 14:39:07 219

原创 11_Artificial Potential Field_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

11_Artificial Potential Field_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】本节将讲解如何在人工势场中引导机器人在充满障碍物的环境中运动,基本思路是在位形空间内构造一个平滑函数【smooth function】,当机器人靠近障碍物时,该函数值较高;远离障碍物时,该函数值较低;还希望在终点此函数值最小;若机器人移动到(离终点)更远的位置,函数值就会增加,如果建立出这样的函数方程,就可以用它的(下降)梯度【gradient】将机器人引导到所要求的位置。先举个二维位形空间的简单

2021-07-10 14:02:40 536

原创 10_Rapidly Exploring Random Trees_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

10_Rapidly Exploring Random Trees_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】在随机路图算法中,基本思路是建立一个由随机样本点和连接它们的边组成的路标图,一旦建立完成,就可以将想要的起点和终点通过路标图建立连接,得到一条可行路径。注意第一阶段建立的是一般路标图,并未考虑将任何一对特定的起点和终点,这种方法的优点是你可以反复使用路标图来规划多个路径(不同起点和终点)但是有时候,你只想进行一次特定规划,在这种情况下,构建整个自由空间的路标图就很浪费时间,所以最好在采样过程

2021-07-09 18:51:55 226

原创 9_Probabilistic Road Maps_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

9_Probabilistic Road Maps_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】1. Introduction with Probabilistic Road Maps2. Issues with Probabilistic Road Maps1. Introduction with Probabilistic Road Maps在之前,我们了解了位形空间以及如何使用碰撞函数来检验位形空间中某个点是否处于自由空间,通过检查引起障碍冲突的结构是否位于工作空间,还谈到了一个简单的规划方案

2021-07-09 17:31:16 328

原创 8_Collision Detection and Freespace Sampling Methods_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

7_Collision Detection and Freespace Sampling Methods_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】障碍规划非常简单,因为它能够对位形空间障碍进行明确的描述,但通常我们没有那么奢侈,用碰撞函数【collision function】来表达障碍就行了,尽管它有点模糊。碰撞检测函数更具体地说,如果我们让x表示位形空间中点的坐标,我们通常可以定义一个叫Collision Check的函数,如果空间内无障碍则其值为0,否则为1该幻灯片展示的是代表机器

2021-07-08 20:45:49 394 2

原创 7_Trapezoidal Decomposition_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

7_Trapezoidal Decomposition_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】路径规划的另一个思路被称为“单元分解法”【Cell Decomposition】,其应用在位形空间中障碍是多边形的情况下尤为高效。目标是将机器人的自由空间划分为一系列更简单的区域,然后将整体空间变成一张辅助图,其中利用各区的点和边来代表彼此相邻的区域。这个图展示了单元分解法在二维空间中的一种常见表示法,对于这个例子。我们基于x轴对障碍物顶点进行了分类,并按照我们之前的想法,从左到右将自由空间划分为不

2021-07-08 16:44:07 692

原创 6_Visibility Graph_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

6_位形空间的示例_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】现在有一个理论框架,可以(以此切入)考虑大面积的运动规划问题,如何在位形空间中规划路径,下面来探讨一下该问题的三种不同解法,它们的出发点是一样的也就是,一开始它们都将(机器人的)运动放到连续位形空间里进行规划,然后用不同的方法在图像中对问题进行重构,于是我们就可以应用讨论过的算法,如烧草、Dijikstra 和 A* 算法,我们可以用接下来的图中呈现的2D规划方案来阐明这些方法。像往常样,我们的目标是,在二维的位形空间内找到一个从起

2021-07-08 11:28:35 1176

原创 5_位形空间的示例_宾夕法尼亚大学机器人运动规划专项课程【学习笔记(附Assignment:Configuration Space(Part 1 of 2 & Part 2 of 2)代码)】

5_位形空间的示例_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】1. RR arm2. Piano Mover's Problem1. RR arm这是个简易的二维机械臂,有两个旋转关节;像以前那样。我们可以理清这个机器人所有可能的运动轨迹,并将它们与转动角数组[theta1,theta2]关联起来,在这个案例,两个角可以自由地从0度转动到360度。引入障碍物,思考为了避免与障碍物发生碰撞,哪些位形空间是无法到达的;下图显示的是机器人、障碍物、以及他们在位形空间中对应的情况。引入障碍物,可以

2021-07-07 19:37:21 1188

A star Algorithm.rar

宾夕法尼亚大学 coursera 公开课:Robotics: Computational Motion Planning 中作业 A star Algorithm 代码实现

2021-07-15

Dijkstra Algorithm.rar

宾夕法尼亚大学 coursera 公开课:Robotics: Computational Motion Planning 中作业 Dijkstra Algorithm 代码实现

2021-07-15

空空如也

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

TA关注的人

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