- 博客(44)
- 资源 (3)
- 收藏
- 关注
原创 (ROS)Moveit编程示例
文章目录正向运动学逆向运动学笛卡尔空间规划pick & place & 避障创建场景pick & place正向运动学初始化指定要运动的move_group(arm,gripper)设置每个move_group距离目标的允许误差值设置move_group的初始位置使用move_group中每个joint的旋转角度作为目标值执行动作class MoveItFkDemo: def __init__(self) -> None:
2022-04-24 18:21:21
1064
原创 (RL强化学习)A2C PPO DDPG理论和具体算法流程
文章目录ACPPO(proximal Policy Optimization)DDPG(deep deterministic policy gradient)深度确定性策略梯度算法ps:笔记参考了强化学习–从DQN到PPO, 流程详解白话强化学习ACActor:输入状态S 输出策略选择动作Critic:负责计算每个动作的分数TD-errorTD-error就是Actor带权重更新的值Critic只需要最小化TD-error以此更新网络AC中的C估算的是V值而不
2022-04-18 15:47:42
4766
原创 (RL强化学习)Imitation Learning
文章目录Imitation learningBahavior CloningInverse Reinforcement LearningFrameworkImitation learningactor 可以跟环境互动,actor无法从环境得到reward只有一个expert论证怎么解决这个问题人为设定reward可能造成不可控的问题Bahavior Cloningexpert做什么 actor就做什么相当于监督学习 training data需要搜集(s,a)的信息
2022-04-05 08:38:36
510
原创 (RL强化学习)Sparse Reward
文章目录Sparse RewardReward ShapingCuriosityCurriculum LearningReverse Curriculum GenerationHierarchical RLSparse Reward很多情况下环境中的reward是稀疏的 agent很难得到rewardReward Shaping开发者刻意设计rewardexample:比如小孩学习 如第二种情况要是study的reward永远是-1 那小孩只会选第一种action 所以可以人为加上一些re
2022-04-03 08:42:43
547
原创 (RL强化学习)Actor-Critic
文章目录Actor-CriticActor-CriticAdvantage ACAsynchronous Advantage ACActor-Criticpolicy gradient 中accumulate reward较不稳定 分布较大一个方法是取accmulate reward的期望值Actor-Criticaccmulate reward的期望值就是Qfunction出来的值 Q的定义:在state 采取 action知道游戏结束得到accmulate reward的期望
2022-04-02 09:16:17
411
原创 (RL强化学习)Q-learning
文章目录Q-learningState Value Function如何估算(训练)State Value FunctionMCTDMC VS TDQ function(state-action value function)how to use Q function:Q-learningTarget NetworkExplorationReplay BufferTypical Q-learning AlgorithmDouble DQNMulti-step (Balance between MC and
2022-04-01 09:12:32
1326
原创 (RL强化学习)PPO
文章目录PPO(proximal Policy Optimization)On-policy Off-policy为什么需要Off-PolicyImportant SamplingOff-policy的gradientPPOPPO(proximal Policy Optimization)On-policy Off-policyOn-policy:跟环境互动的agent 和 要learn的agent是同一个Off-policy:跟环境互动的agent 和 要learn的agent不是同一个为什
2022-03-30 23:12:14
479
原创 (RL强化学习)强化学习基础知识
文章目录Basic ComponentsActorCritic网络训练Q-learningActor + CriticA2C Advantage Actor-CriticA3C Asynchtonous Advantage Actor-CriticBack propagationInverse RLPolicy GradientPolicyExampleGradientBasic Components以Video Game为例Actor:遥杆Env:游戏界面Reward Funct
2022-03-30 22:10:22
3957
原创 (深度学习)Transformer
文章目录TransformerApplicationfor speechfor chatbotNLPMulti-label ClassificationObject Detectionseq2seqEncoderDecoder(Autoregressive)Decode网络结构NAT(None Autoregressive) DecoderEncoder2DecoderCross attentionTrainingTransformerApplicationfor speech实质上是seq2s
2022-03-26 11:33:42
2218
原创 (深度学习)Self-attention
文章目录self-attention三种seq输入输出类型Each vector has a labelSelf-attention得到一个seq输出过程上述矩阵化Multi-head Seft-attentionposition encodingApplicationself-attention三种seq输入输出类型Each vector has a labelSequence labeling如果但考虑一个vector 那机器没办法给同样的vector两个不同的label比如说
2022-03-24 20:08:29
1668
原创 【点云处理】点云最邻近问题 Kd树和八叉树
kd树每个维度都按照二叉树分割每一个维度上的二叉树kd树建立按照xyxyx的顺序去分割点确定最后允许的叶子数leaf_size随机找中值 平均值找中值kd树查找最邻近点找根节点如二叉树步骤一致 先按一个维度搜索Octree 八叉树每个节点有8个孩子可以提前结束搜索3个维度每个维度分一半随意 2的3次方 = 88叉树的构建选择最大的一个正方形每一个单位称为octant定义每个方格最多的点数leaf_size或者定义最小范围min_exte
2022-03-19 14:38:08
1084
原创 (点云处理)点云最邻近问题--二叉树
点云最邻近问题–二叉树Knn & Fixed Radius NN概述核心思想:空间分割二叉树特点:key(表达特征):左子树 < root <右子树代码实现:value可以是这个节点的一些信息 比如在原来数组的索引,节点颜色…插入递归插入鉴于时间复杂度的问题 如果二叉树建的不好有时候插入需要遍历整棵树要是采用平衡二叉树时间复杂度会变小查找递归递归和循环比较递归空间复杂度会大一点 递归多少
2022-03-18 21:59:50
511
原创 【点云处理】上下采样 表面法向量
Surface Normal表面法向量surface normal on 3D point cloud选择一个点P找点P的领域定义表面(领域半径大:法向量平滑 但会被无关点影响 领域半径小:精确描述 但受噪声影响)PCA寻找特征值最小的向量(法向量即每个点投影上去都是0)计算曲率deep learing about surface normalNesti-Net CVPR2019:选取不同大小的领域Filter噪声去除下采样(比如某个物体只需
2022-03-17 15:04:12
4832
原创 【点云处理】PCA
文章目录PCA主成分分析数学概念PCA降维过程Kernel PCA流程:PCA主成分分析物理意义:把数据投影到比较有特征性的方向上 每个点在这个方向上的投影就是主成分应用:数据降维(保持原始信息)分类(KPCA)数学概念向量内积:一个向量投影到另一个向量中矩阵向量乘法:矩阵每一列的线性组合PCA输入:m个n维向量输出:k(k<n)个principle vector: 输入的k维向量的一群点最有代表性(把这群点投影到这方向上投影的方向最大 分布较散)
2022-03-17 14:58:34
2373
原创 Cmake教程
文章目录cmake基础知识ubuntu gcc通过Makefile单目录单文件单目录多文件多目录多文件标准多目录多文件(build)设置文件的输出路径:库文件可执行文件VSCode调试参考b站 421施公队 手把手教你写Cmakecmake基础知识一键从c文件生成可执行文件生成Makefile适应不同的的平台ubuntu gcc预处理 gcc -E main.c -o main.l(-o 指定生成文件的名称) —>main.c main.l编译 gcc -S main.l -
2022-02-23 12:36:48
1235
原创 (ROS)差分轮式机械臂机器人(三)Moveit和Gazebo联合仿真
文章目录项目基础项目源码控制框架Gazebo控制插件:position_controllers/JointTrajectoryController 关节轨迹控制器Moveit控制插件 :FollowJointTrajectory加载全部配置文件执行项目基础(ROS)差分轮式机械臂机器人(二)六轴机械臂Moveit配置&深度相机kinect配置(ROS)差分轮式机械臂机器人(一)模型搭建项目源码https://gitee.com/HOY_Z/ros_-visual-nav_-arm控制
2022-02-21 23:24:12
1694
3
原创 (论文总结)Beyond the Nav-Graph: Vision-and-Language Navigation in ContinuousEnv
文章目录1 IntroductionVLN研究的假设Vision-and-Language Navigation in Continuous Environments.2 Related WorkLanguage-guided Visual Navigation Tasks3 VLN in Continuous Environments (VLN-CE)Continuous Matterport3D Environments in Habitat.Observations and Actions3.1 Tr
2022-02-20 21:30:49
2265
原创 (Habitat)基本功能代码实现
Episode以一个导航任务为例 一个episode包含场景信息 agent起始位置和角度 目标信息等信息完成一个episode的循环步骤1 env = habitat.Env(config=habitat.get_config("configs/tasks/pointnav.yaml")) #初始化环境2 observations = env.reset() #获取环境的观察对象并重置环境3 #create an agent4 while not env.episode_ov
2022-02-19 18:36:09
1913
2
原创 (python)@ :函数修饰器
@函数装饰器不带参数 #funA 作为装饰器函数 def funA(fn): #... fn() # 执行传入的fn参数 #... return '...' @funA def funB(): #...上面的 @funA 等价于 funB = funA(funB) 即会执行代码 def funA(fn): #... fn() # 执行传入的fn参数
2022-02-16 20:47:07
567
原创 (Habitat) A Platform for Embodied AI Research --Facebook开源室内导航仿真平台 的简介和安装
Embodied AIHabitat对Embodied AI的定义[1]:Embodied AI is the science and engineering of intelligent machines with a physical or virtual embodiment (typically, robots and egocentric personal assistants). The embodiment hypothesis is the idea that “intelligence
2022-02-15 10:49:16
2671
4
原创 (机器人学导论--运动学)(六)机械臂轨迹规划:直线规划
文章目录适用场景规划方式三种规划方式比较推广每段轨迹中的起始段和最后一段的特殊规定轨迹未过via pointRRR Example适用场景当机械臂需要采用直线轨迹的时候,三次多项式并不能满足需求若轨迹中有多条直线,会导致连接点的速度不连续解决方法:将直线段两端修正为二次方程式规划方式中间段采用一次多项式起始段和结束段采用二次多项式直线段和二次多项式段的交界点速度需相等由此可以求出需要的最小加速度三种规划方式比较推广将整段轨迹中的每两个点等效上上面的情况二次多项式
2022-02-12 10:59:58
5117
原创 (机器人学导论--运动学)(五)机械臂轨迹规划:三次多项式
文章目录轨迹Joint Space下的轨迹规划三次多项式规划以矩阵的方式运算如何选择速度和加速度Example: A trajectory with one via point一般情况Example: A RRR Manipulator笛卡尔坐标系下规划关节坐标系下规划轨迹轨迹即是机械臂末端点或者某操作点的位置速度加速度的历程理想轨迹Joint Space下的轨迹规划定义机械臂末端点相对于物体的初始位置、中间位置、最终位置的转移矩阵由转移矩阵通过IK得到每个Joint的θ将所有θ进行
2022-02-08 13:26:34
3615
原创 (机器人学导论--运动学)(四)逆向运动学
文章目录逆向运动学概念求解概念可达工作空间&灵活工作空间子空间求解目标多重解求解方法RRR机械臂求解实例几何法代数法三角函数解法Pieper’s solution(三轴交于一点)Example: 物件取放任務逆向运动学概念求解概念可达工作空间&灵活工作空间子空间手臂能够到达的变动范围求解目标手臂有六个自由度转移矩阵有16个数字 其中最下面4个数字为常数 其余12个数字对应12个非线性超越方程需要解出6个未知数 ,故需要六个限制条件多重解PMUA为例
2022-02-07 10:56:58
3420
原创 (目标检测)基于opencv dnn模块的yolov5部署
这边文章将介绍基于dnn模块的yolov5 onnx模型的部署 包括读取模型和数据处理和后处理先给出整个项目的源码yolov5版本为4.0opencv 为 4.5.2不同的版本此源码可能会报错 由于opencv版本报错解决办法部署需要一些yolov5的基本知识支持 网上比比皆是opencv dnn模块的使用这里并不详细介绍 这里给出一篇详细的dnn模块的使用方法关于深度学习实时检测的三种方法(三)——Opencv DNN加载ONNX模型onnx模型导出具体可以参考yolov5的.
2022-02-06 11:57:42
3900
原创 (Visual Navigation)路径规划算法(三)RRT RRT* Informed RRT*及前三种算法总结
文章目录RRT实现过程算法缺点RRT*实现过程Informed RRT*RRT* 和 Informed RRT*的结果比较具体实现路径规划总结RRT算法全称“快速扩展随机树算法”通过随机地图取点的方法进行路径规划RRT实现过程① 在地图中随机选择一个点 Xrand② 当前点设置为 Xnear③ 沿着 Xnear和Xrand连线方向 行进步长StepSize 且没有遇到障碍④ 第二次采样⑤ 行进步长长度时遇到障碍 则重新采样⑥ 直到新采样点距离 Xgoal 小于步长且连线无
2022-02-05 11:30:37
4038
原创 (Visual Navigation)路径规划算法(二)Dijkstra改进 A*算法
上一文介绍了Dijkstra的基本思路和详细过程接下来介绍一下Dijkstra的改进算法------A*算法文章目录栅格地图回顾Dijkstra算法A*算法A*算法引入h(n)为启发式函数伪代码对比以欧氏距离(即起始点和目标点之间的直线距离)为启发式函数的结果A*算法应用的保证最优化要求当没有障碍物的时候可以更看出A*算法的优势栅格地图栅格地图取值原理下面是构建一个栅格地图的基本过程膨胀障碍物的意义是构建像上图的非自由区域即直线移动的代价g(n)为1 斜边为根号2.
2022-02-03 11:27:00
1759
原创 (Visual Navigation)路径规划算法(一)Dijkstra算法
上文总结了基于深度相机的见图过程(Visual Navigation)深度图像转点云(Visual Navigation)点云转地图信息得到了机器人能够理解的地图信息 那下一步就是导航了 下面来介绍一下路径规划的算法文章目录轨迹规划Dijkstra算法综述具体实现过程伪代码机器人如何记录最短路径轨迹规划Dijkstra算法综述具体实现过程一寻找一条v1-v6的最短路径其中open list为未收录节点 closed list为已收录节点二此时可以到达的节点为④.
2022-02-02 11:41:57
1398
原创 (机器人学导论--运动学)(三)DH表达法&顺向运动学
文章目录运动学和动力学手臂的Joint和LinkDH表达法坐标系建立步骤坐标转换转换过程表达式Example特殊情况:Zi-1 和 Zi 相交顺逆运动学经典六轴机械臂DH表示运动学和动力学运动学:讨论运动状态本身 未接触到产生运动的力动力学:讨论力矩如何产生运动手臂的Joint和LinkLink即为手臂的刚体部分Joint即为连接刚体的关节 用以提供转动、移动或者固定等状态 相当于电机的位置DH表达法坐标系建立步骤① 坐标系建立在Joint的位置② Zi轴的方向代表转动或者移
2022-01-31 11:27:59
2511
原创 (ROS)差分轮式机械臂机器人(二)六轴机械臂Moveit配置&深度相机kinect配置
上一次搭建出了差分式移动底盘和六轴机械臂 这一次总结机械臂的Moveit配置和底盘kinect深度相机配置文章目录项目源码机械臂Moveit配置Moveit具体是什么可以参考[古月居的视频教程](https://www.bilibili.com/video/BV1hq4y127rS?p=7)配置过程一 打开配置脚本二 创建新的配置文件三 添加碰撞矩阵四 定义规划组五 终端夹具配置六 定义机械臂的位置常量写下作者信息选择地址生成配置文件最后得到配置包 src/vnarm_moveit_configMov.
2022-01-30 21:46:14
3200
原创 (Visual Navigation)点云转地图信息
上一次总结了深度图转点云的详细过程 这一次总结一下点云怎么转化为机器人能理解的地图信息文章目录Bin_Point效果基本思路实现流程代码实现函数讲解障碍判断torch.scatter基本思路代码实现函数详解Bin_Point效果此时Z轴代表高度 Y代表深度 X代表左右使用的是Facebook的开源仿真平台Habitatbaseline参考/depth_utils.py基本思路按照高度信息将点云分为三类将每一类都放到一个通道获取到一个点则相应三通道矩阵的位置++所以得到一个.
2022-01-30 10:38:19
2590
原创 (机器人学导论--运动学)(二)刚体运动状态描述
Fixed Angle即绕着空间中的Fixed Frame 的XYZ 轴进行旋转表达方式表达式中R xyz(γ,β,α)表示先绕X转γ角度 再绕Y转β角度 最后绕Z转α角度旋转矩阵先转的放在后面 故顺序为Rz(α)Ry(β)Rx(γ)eg:由旋转矩阵推算γ β αeg:Euler Angles即绕着自己的坐标系旋转ZYXR z· y· x·(α,β,γ)表示先绕自己的Z轴旋转α 然后绕自己的Y轴旋转β 最后绕自己的X旋转γ先转的旋转矩阵放在前面eg
2022-01-30 09:08:36
1170
原创 (Visual Navigation)深度图像转点云
深度图像即图像中包含深度信息(也就是距离信息)的单通道图像,每个像素反应的是图中的一点相对于相机的位置:左右位置 高度位置和深度位置而视觉导航中比较常用的就是深度相机,通过深度相机的深度图像和rgb图像的转化得到地图信息,而深度图像转点云就是很重要的一个过程文章目录坐标系介绍坐标系的转换和平移图像坐标系转相机坐标系代码实现相机坐标系转世界坐标系坐标系介绍一般分为三种坐标系 :世界坐标系:描述全局地图信息的坐标系 ,一般以全局地图左上方为坐标原点相机坐标系:顾名思义就是以相机的中心.
2022-01-29 23:05:06
3852
1
原创 (ROS)差分轮式机械臂机器人(一)模型搭建
模型搭建文章目录源码地址ROS版本:noetic文件结构创建功能包编写模型描述文件.xacro基本语法描述文件为显示机器人模型显示坐标系保存配置每次打开rviz并加载上次保存launch文件urdfgazebogazebo创建地图直接添加模型使用editor最后效果本文参考了古月居的ROS入门教程模型效果源码地址ROS版本:noetic文件结构vn_robot_description<<< config<<< launch<<<
2022-01-29 20:46:15
3482
3
原创 (机器人学导论--运动学)(一)刚体运动状态的描述
本知识总结依托于台大林沛群老师的b站视频(机器人学导论–运动学)文章目录刚体状态的描述刚体移动的描述刚体转动的描述Rotation matrix的特性Rotation matrix的三种用法刚体状态的描述平面:沿XY轴的移动 + 绕Z轴的转动空间:沿XYZ轴的移动 + 绕XYZ轴的转动刚体移动的描述”???????????? ????????????“ 表示 B在A中的表示,可用于:①空间中的某个位置相对于body frame的偏移②空间中的某个坐标系相对于body frame的
2022-01-29 11:25:36
869
原创 底盘差速环
在调试机器人底盘的时候常常会遇到四个轮子工况不一样导致运动变形的问题,那四个轮子的差速环就可以作为抑制这种运动变形的一种方法,使四个轮子不管在什么情况下都可以较好地保持相同的转速,这里采用的是pid的方法去实现 /*-------------------平移差速环--------------------------------*/ /*---------------@note:可用于解决重心不在底盘中间运动变形----------*/ /*---------------------但效果不明显,有些
2021-08-15 10:43:58
277
原创 [opencv]图像滤波(线性)
文章目录图像卷积filter2D()函数原型均值滤波blur()函数原型方框滤波boxFilter()函数原型sqrBoxFilter()函数原型高斯滤波GaussianBlur()函数原型可分离滤波图像卷积【卷积步骤】1 (如果卷积模板/卷积核不是中心对称的)将卷积模板旋转180°2 将卷积模板中心放在原始图像中需要计算卷积的像素上,卷积模板其余部分对应在原始图像相应位置3 用卷积模板的系数乘以图像中对应位置的像素数值,并对所有结果求和4 将计算结果存放在原始图像和卷积模板中心对应点的像素处
2021-06-21 11:59:04
549
原创 python callable函数 以及 *agrs和**kwargs
python里面会见到一种语句:#linear为类的对象linear(5)实际上是调用了python里面的callable()函数#test_codeclass callable_test: def __init__(self): pass def __call__(self, *args, **kwargs): print("agrs:", (args)) print("kwargs:", kwargs)ct = c
2021-06-02 19:37:24
542
原创 Coppeliaisim——距离对象的使用
文章目录Distance① 以计算图中红色圆圈的距离为例②插入函数③点击上方 Distance④这里建立图中两个红线的距离对象⑤点击ADD NEW DATA OBJECT ,弹出⑥【这里是非显式处理距离对象】【什么是显式和非显式处理请参考https://blog.youkuaiyun.com/KNIGHT_HOY/article/details/114703985?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161559908
2021-03-13 09:35:28
352
原创 Coppeliasim——显式和非显式处理
文章目录什么是显式和非显式处理官方手册解释人话来说Explicit and non-explicit calls什么是显式和非显式处理官方手册解释人话来说例子:当用户建立了一个距离模块(distance)*对话框下面会出现一些选项,其中的 口Explicit handling 就是是否启用显式处理的选项,默认是不开启的;*非显式处理 :【一番操作后的效果】【一番操作请参考同一系列下的距离对象处理教程】可以看到红框的地方有个数据 d =0.187321…Meters
2021-03-12 21:26:32
483
Robomaster机器人装甲板数字数据集(已标注*130)+权重+配置文件
2022-01-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人