1.机器人抓取与操作介绍-深蓝学院
介绍
操作任务
操作
• Insertion
• Pushing and sliding
• 其它操作任务
抓取
• 两指(平行夹爪)抓取
• 灵巧手抓取
7轴
Franka
对应人的手臂
6轴 UR构型去掉一个自由度
课程大纲
Robotic Manipulation 操作
• Robotic manipulation refers to the ways robots interact with the objects around them
Manipulation is hard
• Arm, hand, eyes协作
• 一般manipulation问题 -> 有限的manipulation问题 -> 参数化manipulation问题
• 通用grasping -> 静态grasping
机器人抓取的进化
落地和挑战
1.1 机器人运动规划控制方法介绍
对比:
• 感知需求:自动驾驶的场景更复杂,机器人识别精度要求更高;
• 无决策&预测模块,无定位&地图模块;
• 规划器:机器人要求6DoF规划,笛卡尔到关节空间,更有挑战性;
• 控制:机器人要求力控,精细操作要求复杂。
机器人场景众多且分散,是否更加具有挑战需要看具体场景需求以及量化指标
Notation of Rigid Body
Rotation
常见表示
• 旋转矩阵 SO(3):3 × 3 matrix
• 欧拉角:3 × 1 vector,
• 四元数:4 × 1 vector, (x, y, z, w)
• 轴角: 3 × 1 vector(轴)+ scaler (角)
对于四种表示的可逆和组合形状需要牢记
- 万向锁
- (pitch 90度时roll和yaw的motion一致)
- RPY顺序,当\beta为90度时,
- 物理上,来自旋转顺序
自身旋转和固定坐标系旋转
p 右乘(自身旋转):
p 先绕x轴旋转,再绕y轴旋转,最后绕z轴旋转,那么总的旋
转矩阵为这三个旋转矩阵的乘积(按照旋转的顺序从右到左
相乘):
R = R z R y R x R=R_z R_y R_x R=RzRyRx
一个角度为90°时,丧失一个自由度
Special Euclidean Group SE(3)
经典方法回顾-运动学
DH参数法
- 对机器人的每个关节做frame assignment
Z轴一般是旋转轴,x轴是两个旋转轴的common normal
• 定义相关assignment的规则和约定 - 注意DH的变种,classic DH 和Model DH
DH参数
DH参数案例
Franka: 使用Craig convention (modifued DH)
这里需要按照下面这个参数定义来:
note Z_i ->Z_{i+1} 旋转,逆时针为正,右手定则。
https://frankaemika.github.io/docs/control_parameters.html
李群和李代数基础
a group that is also a differentiable manifold, such that group multiplication and taking inverses are both differentiable. p SO(3) SE(3)都满足李群的性质要求
b 李代数: SE(3)李群对应的李代数se(3)
POE(指数积)-正运动学介绍
• 螺旋运动:通过螺旋轴和转角表达
• T的计算
• 机器人正运动学可以用指数乘法表示
Differential Kinematics
- 对于一个具有 n个关节的机器人,其 Jacobian 矩阵 J是一个 6*n 的矩阵(对于一般的三维空间操作,考虑位置和姿态的六维向量),其中每一列对应一个关节,矩阵的元素表示末端执行器在基坐标系下的线速度和角速度与关节速度的关系。
• Measures the relationship of “velocity”
• 可以通过解析法或者数值法求Jacobian
逆运动学
雅可比矩阵和IK位置求解方法
-
注意Jacobian求逆的数值方法:LM,SVD,QP等
-
注意local minimum的处理方法
Line search -
LM方法其Jacobian逆
参考link
伪代码
规划
框架
空间:
• 构型空间 Configuration space
• 笛卡尔空间
• C-space到笛卡尔的映射相对容易
路径规划-高维空间
• 基于采样的方法: RRT, PRM
• 基于优化的方法
• 后处理
• 碰撞检测
轨迹生成&规划&优化介绍
基于sampling based方法生成的path往往需要后处理平滑 C-space(joint space)需要做速度规划,往往通过cubic spline等方法来实现,保证联系且满足一定的边界约束再进行C-space和Cartesian space的变换,同时优化和碰撞检测需要处理
控制
从笛卡尔空间到关节控制
• 关节模组控制
• 力控
末端力控
关节力
机器人传感器和视觉介绍
视觉感知任务
机器人学习方法介绍
通过学习的方法来解决机器人问题,特别是规划和控制问题
p 常见学习任务
• 运动学和规划器:
• 机器人运动学学习:学习机器人FK和IK模型,输出一般为关节角
• 通用规划学习-sampling-based planning:输出一般为采样点
• 任务学习
• 静态场景-抓取:输出一般为抓取位姿
• 操作学习&policy学习(例如叠衣服):输出一般为action
• 通用场景学习(语言指令+长时序任务):输出action,(中间一般有planning)
监督学习方法
抓取位姿学习&数据集
• 二指&平行夹爪-Planar抓取:
ü Cornell
ü Jacquard
• 二指&平行夹爪- 6DoF抓取:
ü Graspnet
ü Grasp anything
• 灵巧手抓取:
ü DexYCB
强化学习
p 强化学习一般定义为MDP和POMDP问题,通过 s, t, a, r 来定
义状态转移和奖励函数
p 相比于监督学习,一般不需要数据集,通过探索来得到数据
p 可以通过reward来定义长期奖励,intuitively比较适合规划任务
p 可以通过policy iteration来迭代,上限更高
p 对数据采集要求量大,对仿真要求高,相对不容易训练,且训
练成本较高
p 需要Gym env 和 仿真环境
p 需要处理sim-to-real问题
大模型
长时序复杂任务往往比较挑战
• 例如下图的gearbox组装任务,步骤繁多,且有出错的可能;
• 任务可能较为多样化,基于规则的方法相对难以调整,以及难以和人自然交互
两种范式(非定义)
• VLA端到端模型介绍
Vision-Language-Action
• VLM&LLM + Control Policy 分层模型
Task planner + control action • 两者之间的界限不严格
机器人VLA模型-端到端方法
• 静态场景
• 任务多样化,且描述方式多样化
• 语言到动作有gap
• 有一点的交互和澄清的需求
自动驾驶-端到端方法
• 通过一个纯视觉(UniAD)或者融合(FusionAD)的BEV模型来完成端到端的多任务(感知、地图、预测、决策和规划)自动驾驶模型
• 输出是规划轨迹(5秒左右)
• 任务理解容易,e.g. a点到b点;或者根据routing行驶
• 但是场景和行为多样化;决策交互和感知有挑战;动
态场景
大模型分层框架
分层规划方案VLM&LLM + Control Policy
• 大模型做任务拆解和规划
• 相关动作模型(control policy, visuomotor policy)输出轨迹
• 传统算法优化轨迹
LLM&VLM for planning
• 通过prompt来做任务规划
• 输入描述和能力,生成伪代码,代码,或者任务序列
• 最上层任务规划和人机交流,低频
https://github.com/microsoft/PromptCraft-Robotics/blob/main/examples/manipulation/pick_stack_msft_logo.md
实践工具
研发流程
特点:团队小,功能多,交互业务多
版本发布后问题需要优化,可以补充到产品需求设计中
- 机器人产品这里更多指自主或生活场景里通用&半通用机器人产品,非经典的机器人自动化产品
ROS
p 机器人中间件:ROS&ROS2
p 可视化工具和插件
p 核心算法和工程包:ROS Control,Navigation,Moveit
p 消息通讯和序列化
p 自动驾驶中间件Cyber
常用控制包
ROS2 control使用非常重要,一般基于这个框架进行开发。
硬件组件参考
调试指南
ROS2 moveit则可以参考实现。
仿真
用于自测
- 仿真引擎
- V-rep(CoppeliaSim )
- MuJoCo
- Bullet
- 仿真环境
- Isaac sim
- RLbench
- Gazebo
CoppeliaSim (PyRep)仿真图像和代码
• 代码示例和动画
• RLBench基于PyRep,有相关数据集和标准任务
Docker:部署和研发标准化方案
• Image and container
• Docker build 构建image
• Docker run 运行container
• Docker exec 进入正在运行的container
调试:logging, GDB&PDB, ros2 log
性能分析perf, profile
Git:熟练使用
调试:logging
• Logging是自测和运营问题的重要排查手段,
• 自动化log分析也是生产环境提效的手段
• 好的log习惯很重要
调试:GDB&PDB
• GDB用于断点,core dump排查等
• 其它静态分析,单测,内存分析等相关工具也需要有
所了解
性能分析perf, profile
• 生产环境中,算法工程师需要和软件,系统积极
配合准备相关的排查链路和需求
Git
• 有比较好的git使用习惯,commit习惯
• 熟悉常见操作,特别是分支合并操作
https://docs.ros.org/en/humble/Tutorials/Demos/Logging-and-logger-configuration.html
• 熟悉团队的MR&PR提交规则
推荐MIT课程,B站上可以搜计算机缺失的一课
p 业界研发流程:需求-技术评审-开发-自测-提测
ref
https://www.shenlanxueyuan.com/course/727/task/29238/show
相关文章:

1.机器人抓取与操作介绍-深蓝学院
介绍 操作任务 操作 • Insertion • Pushing and sliding • 其它操作任务 抓取 • 两指(平行夹爪)抓取 • 灵巧手抓取 7轴 Franka 对应人的手臂 6轴 UR构型去掉一个自由度 课程大纲 Robotic Manipulation 操作 • Robotic manipulation refers…...

六,Linux基础环境搭建(CentOS7)- 安装HBase
Linux基础环境搭建(CentOS7)- 安装HBase 大家注意以下的环境搭建版本号,如果版本不匹配有可能出现问题! 一、HBase下载及安装 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“…...

《计算机网络网络层:连接虚拟世界的关键桥梁》
一、网络层概述 网络层在计算机网络中占据着至关重要的地位,它作为连接不同网络的关键层次,起着承上启下的作用。网络层的主要任务是实现网络互连,将数据设法从源端经过若干个中间节点传送到目的端,为分组交换网上的不同主机提供通…...

【AIGC】2024-arXiv-CtrLoRA:一种可扩展且高效的可控图像生成框架
2024-arXiv-CtrLoRA: An Extensible and Efficient Framework for Controllable Image Generation CtrLoRA:一种可扩展且高效的可控图像生成框架摘要1. 引言相关工作3. 方法3.1 准备工作3.3 有效适应新条件3.4 条件嵌入网络的设计 4. 实验4.1 实验设置4.2 与现有方法…...

立仪光谱共焦在玻璃上奥秘与应用
在现代工业和科学研究中,玻璃因其透明、坚硬和易加工的特性被广泛应用于各个领域。然而,玻璃的厚度测量一直是困扰业界的一大难题。传统的千分尺或电容式传感器虽然在一定程度上能满足生产需求,但在精度、效率以及适用范围上存在明显的局限。…...

【天气识别系统】Python+卷积神经网络算法+人工智能+深度学习+TensorFlow+算法模型训练+Django网页界面
一、介绍 天气识别系统,以Python作为主要编程语言,通过收集了4种常见的天气图像数据集(多云、雨天、晴天、日出),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练,最后得到一个识…...

MiniCTX:面向大语言模型定理证明的上下文相关基准测试系统
卡内基梅隆大学的研究人员推出MiniCTX,这是一个强大的基准测试系统,旨在通过整合前所未有的多重上下文元素(包括前提、先前证明、注释、符号以及导入和声明等结构组件)来彻底改变大型语言模型中定理证明能力的评估方式,…...

树莓派开发相关知识三PWM控制转速
基于树莓派PWM控制 控制L298N马达驱动转速 马达驱动转速 1、L298N电路图: 2、需要留意的有几点 INA~IND四个引脚分别控制OUTA-OUTD,即,INA高电平则OUTA有电。 ENA,ENB分别使能控制OUTA~OUTB以及OUTC~OUTD。 OUT口有VCC电压驱动…...

SpringBoot最常用的注解
1、RestController 作用:与Controller类似,但是RestController会自动将返回值转换为JSON格式。 2、RequestMapping 作用:用于映射请求URL和处理方法。 RequestMapping是Spring MVC框架中的一个核心注解,它用于映射HTTP请求和控…...

js 获取当前时间与前一个月时间
// 获取当前时间的毫秒数 var currentTimeMillis new Date().getTime();// 获取前一个月的Date对象 var dateLastMonth new Date(); dateLastMonth.setMonth(dateLastMonth.getMonth() - 1);// 获取前一个月的毫秒数 var timeMillisLastMonth dateLastMonth.getTime();conso…...

深度了解flink rpc机制(四) 组件启动流程源码分析
前言 目前已发布了3篇关于Flink RPC相关的文章,分别从底层通信系统akka/Pekko,RPC实现方式动态代理以及Flink RPC相关的组件做了介绍 深度了解flink rpc机制(一)-Akka/Pekko_flink pekko akka-CSDN博客 深度了解flink rpc机制&…...

C++基于opencv的视频质量检测--遮挡检测
文章目录 0.引言1. 原始代码分析1.1 存在的问题 2. 优化方案3. 优化后的代码4. 代码详细解读4.1. 输入检查4.2. 图像预处理4.3. 高斯模糊4.4. 梯度计算4.5. 计算梯度幅值和方向4.6. 边缘检测4.7. 计算边缘密度4.8. 估计遮挡程度4.9. 限定结果范围4.10. 返回结果 0.引言 视频质…...

手机玩潜水员戴夫?GameViewer远程如何随时随地玩潜水员戴夫教程
如果你是潜水员戴夫的忠实玩家,你知道如何在手机上玩潜水员戴夫吗?潜水员戴夫是一个以神秘蓝洞为背景的海洋冒险游戏。在这个游戏里你白天可以在美丽的大海里打鱼,晚上可以经营寿司店。现在这个游戏也能实现用手机随时随地畅玩了!…...

UE5 喷射背包
首选创建一个输入操作 然后在输入映射中添加,shift是向上飞,ctrl是向下飞 进入人物蓝图中编写逻辑,变量HaveJatpack默认true,Thrust为0 最后...

【Vue3】第三篇
Vue3学习第三篇 01. 组件组成02. 组件嵌套关系03. 组件注册方式04. 组件传递数据Props05. 组件传递多种数据类型06. 组件传递Props校验07. 组件事件08. 组件事件配合v-model使用09. 组件数据传递10. 透传Attributes 01. 组件组成 在vue当中,组件是最重要的知识&…...

c++二级指针
如果要通过函数改变一个指针的值,要往函数中传入指针的指针 如果要通过函数改变一个变量的值,那就要往函数中传入这个变量的地址 改变a的值和b的值 #include <iostream>using namespace std;void swap(int* a, int* b) {int temp *a;*a *b;*b …...

客户端存储 — IndexedDB 实现分页查询
前言 相信 IndexedDB 大家都有过了解,但是不一定每个人都有过实践,并且其中涉及到事务、游标等概念,会导致在初次使用时会有些不适应,那么本文会通过 IndexedDB 实现分页查询的形式进行实践,在开始之前,可…...

logback 如何将日志输出到文件
如何作 将日志输出到文件需要使用 RollingFileAppender,该 Appender 必须定义 rollingPolicy ,另外 rollingPollicy 下必须定义 fileNamePattern 和 encoder <appender name"fileAppender" class"ch.qos.logback.core.rolling.Rollin…...

Files.newBufferedReader和Files.readAllLines
在Java中,Files.newBufferedReader 和 Files.readAllLines 都是用于从文件中读取数据的工具方法,但它们的使用场景和功能有所不同。下面我将详细解释这两个方法的含义、用途、区别、优缺点以及各自的使用场景。 1. Files.newBufferedReader 含义和用途…...

MySQL 数据库备份与恢复全攻略
MySQL 数据库备份与恢复全攻略 引言 在现代应用中,数据库是核心组件之一。无论是个人项目还是企业级应用,数据的安全性和完整性都至关重要。为了防止数据丢失、损坏或意外删除,定期备份数据库是必不可少的。本文将详细介绍 MySQL 数据库的备…...

Appium中的api(一)
目录 1.基础python代码准备 1--参数的一些说明 2--python内所要编写的代码 解释 2.如何获取包名和界面名 1-api 2-完整代码 代码解释 3.如何关闭驱动连接 4.安装卸载app 1--卸载 2--安装 5.判断app是否安装 6.将应用放到后台在切换为前台的时间 7.UIAutomatorViewer的使用 1--找…...

【AI辅助设计】没错!训练FLUX LoRA就这么简单!
前言 得益于开源社区的力量,在各位大佬的努力下,现在16G VRAM的家用电脑也可以训练FLUX的LoRA了 👏。 今天我使用fluxgym这个方法,训练LoRA,并记录过程。 篇幅有限,这里就不一一展示了,有需要的…...

Mac 下安装FastDFS
首先我们需要下载相对应的安装包: libfastcommonFastDFS 下载完成后我们先将其解压到桌面。 1.安装libfastcommon 我们进入到libfastcommon-master目录中执行./make.sh和sudo ./make.sh install,具体代码如下: 2.安装FastDFS 同安装libfa…...

人工智能的未来:重塑生活与工作的变革者
随着人工智能(AI)技术的快速发展,我们正处于一个前所未有的变革时代。AI不仅在医疗、企业运营和日常生活中发挥着重要作用,而且正在重新定义我们的生活和工作方式。本文将探讨人工智能技术的应用前景以及它如何改变我们的生活和工…...

【微服务】Java 对接飞书多维表格使用详解
目录 一、前言 二、前置操作 2.1 开通企业飞书账户 2.2 确保账户具备多维表操作权限 2.3 创建一张测试用的多维表 2.4 获取飞书开放平台文档 2.5 获取Java SDK 三、应用App相关操作 3.1 创建应用过程 3.2 应用发布过程 3.3 应用添加操作权限 四、多维表应用授权操作…...

学习threejs,使用粒子实现下雪特效
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Points简介1.11 ☘️…...

unity3d——Time
在Unity3D中,Time类是一个非常重要的工具类,它提供了一系列与时间相关的属性和方法,帮助开发者在游戏中实现各种时间相关的操作。以下是一些Time类常用的方法及其示例: 一、常用属性 Time.time 含义:表示从游戏开始到…...

天地图实现海量聚合marker--uniapp后端详细实现
本文章详细的讲解了前后端代码来 实现uniapp天地图功能的实现 以及 后端海量数据的聚合查询 和网格算法实现思路。 并对当数据量增加和用户频繁请求接口时可能导致服务器负载过高做了前后端优化。 前端uniapp: 实现了天地图的行政区划边界/地图切换/比例尺/海量数…...

Bug | 项目中数据库查询问题
问题描述 理论上,点击查询后,表头应当显示中文。而不是上面的在数据库中的表头【如上图示】 正常点击查询后,如果没有输入值,应当是查询所有的信息。 原因分析: 这里是直接使用SELECT * 导致的。例如: S…...

C++入门基础知识129—【关于C 库函数 - time()】
成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 库函数 - time()的相关内容࿰…...