当前位置: 首页 > news >正文

机械臂力控方法概述(一)

目录

1. MoveIt 适用范围

2. 力控制框架与 MoveIt 的区别

3. 力控方法

3.1 直接力控制 (Direct Force Control)

3.2 间接力控制 (Indirect Force Control)

3.2.1 柔顺控制 (Compliant Control)

3.2.2 阻抗控制 (Impedance Control)

3.2.3 导纳控制 (Admittance Control)

3.3 力/位混合控制 (Force/Position Hybrid Control)

4. 使用 ROS Control 框架:

5. 创建自定义控制器:

6. 集成力传感器与反馈回路:

7. 求解雅可比矩阵进行速度控制:


        在实际的机械臂力控任务中,一般不直接使用 MoveIt 来实现力控制。MoveIt 的主要功能集中在运动规划碰撞检测逆运动学求解路径优化等方面,而力控制通常涉及的是实时的力反馈力矩控制,这些功能不是 MoveIt 的主要强项。下面是更详细的解释:

1. MoveIt 适用范围

        MoveIt 适用于运动规划而非实时控制。MoveIt 的设计初衷是为机器人提供路径规划工具,帮助机器人规划出不与环境碰撞的可行路径,适用于自由运动或复杂环境中的路径计算。它的主要功能集中在:

  • 路径规划:基于环境信息和目标位置计算最优路径。
  • 碰撞检测:确保机械臂在规划路径时避免与环境中的物体发生碰撞。
  • 逆运动学:帮助找到末端执行器(如夹爪)在空间中的姿态对应的关节角度配置。

这些功能是离线或在线路径规划时非常重要的,但它们并不适用于实时的力/位置混合控制任务。

2. 力控制框架与 MoveIt 的区别

        机械臂的力控制(Force Control)要求能够根据传感器数据(例如力/扭矩传感器)的反馈,实时调整机械臂的运动或受力。这通常用于以下场景:

  • 接触控制:例如装配任务、打磨任务,机械臂需要在执行过程中与环境表面保持一定的力。
  • 柔顺控制:允许机械臂在特定方向上产生柔顺的运动,以避免对接触物体施加过大的力。

这种实时的力控制,需要高频率的控制回路,通常通过以下工具或方法实现:

  • 力/位置混合控制器:如 ros_controllers 中的 Cartesian Impedance Controller,或者基于力传感器的自定义控制器。
  • ROS 力矩控制包:例如 ros_control 提供的 force_torque_sensor_controller,用于结合力传感器的数据进行控制。
  • 力矩控制模式:很多机械臂控制器(如 KUKA、Universal Robots)提供了力矩控制模式,直接在硬件层面控制机械臂各关节的力矩输出。

3. 力控方法

3.1 直接力控制 (Direct Force Control)

        直接力控制旨在实时控制机器人末端执行器施加的力。通过使用力传感器实时监测施加的力,控制系统可以动态调整机器人的运动,以确保施加力与目标力相匹配。这种控制方式适用于需要精确施加力的应用,如自动化装配、打磨或焊接等。

3.2 间接力控制 (Indirect Force Control)

        间接力控制通过控制机器人的运动来间接实现对施加力的控制。这种方法通常依赖于机器人模型和动态响应,以调整关节或末端的运动来影响力的输出。间接力控制可以细分为几种主要方法:

3.2.1 柔顺控制 (Compliant Control)

        柔顺控制的目标是使机器人在与环境交互时具有一定的柔顺性。它允许机器人在一定范围内根据外部力进行适应,从而减少冲击或损伤。

        被动柔顺 (Passive Compliance)

被动柔顺通过机械设计(如弹簧、阻尼器等)实现,不需要控制系统的实时调整。机器人在受到外力时能够自然变形,以缓冲冲击或适应环境变化。

        主动柔顺 (Active Compliance)

        主动柔顺需要实时反馈和控制系统的参与。机器人根据力传感器的反馈动态调整运动,以确保施加的力在期望范围内,提供更高的适应能力。

3.2.2 阻抗控制 (Impedance Control)

        阻抗控制通过设置力与位移之间的动态关系来实现对力的控制。机器人能够根据外部力的变化调整其运动,表现出一定的“阻抗”,类似于弹簧的行为。

3.2.3 导纳控制 (Admittance Control)

        导纳控制与阻抗控制相对,主要关注在施加一定的力后,机器人如何反应以改变其运动状态。它允许机器人根据施加的力来调整其位移或速度,从而达到柔顺交互的效果。

3.3 力/位混合控制 (Force/Position Hybrid Control)

        力/位混合控制结合了位置控制和力控制的特性。在抛光或打磨过程中,机械臂需要精确控制末端执行器的位置以跟随工作表面,同时保持恒定的接触力。这种情况下,机器人通过力位控制可以实现目标,即在表面移动时保持适当的施加力,以确保均匀的表面处理效果。例如,打磨时,机械臂可以通过力传感器实时监测施加的力,并根据反馈调整移动速度,以保持恒定的打磨压力。

4. 使用 ROS Control 框架

ROS 提供了ros_control框架,该框架为机械臂的实时控制提供了接口。力控可以通过创建自定义控制器并使用此框架来实现:

  • Position Controller:控制机械臂的关节位置,适用于导纳控制。
  • Effort Controller:直接控制关节的力矩,适用于阻抗控制。
  • Velocity Controller:控制机械臂关节的速度,常用于结合导纳控制的实现。

5. 创建自定义控制器

在 ROS 中,通常需要根据具体的控制需求编写一个自定义控制器:

  • 使用 ROS Control 中的控制器框架,在控制器中订阅外部的传感器数据(例如,力传感器)。
  • 实现实时反馈逻辑:比如,当检测到力传感器的输出超出预设范围时,调整机械臂末端的速度或关节位置。

6. 集成力传感器与反馈回路

  • 力传感器的集成:机械臂末端通常安装力/力矩传感器,实时采集与外部环境的力反馈。
  • 数据处理:通过订阅力传感器的 ROS 话题,将采集到的力数据输入到自定义控制器中。
  • 反馈控制:根据力传感器数据,控制器实时调整机械臂的运动参数(位置、速度或力),以保持恒定的接触力。

7. 求解雅可比矩阵进行速度控制

在实现笛卡尔空间的末端速度控制时,通常需要求解雅可比矩阵,将末端的线速度和角速度转换为各关节的速度。此过程可以通过 ROS 中的 Orocos KDL 库实现:

  • 雅可比矩阵求解:Orocos KDL 库提供了直接的雅可比矩阵求解函数,用于笛卡尔空间与关节空间之间的转换。
  • 速度控制:通过求解雅可比矩阵,实时调整机械臂末端的速度,实现对外力的响应。

相关文章:

机械臂力控方法概述(一)

目录 1. MoveIt 适用范围 2. 力控制框架与 MoveIt 的区别 3. 力控方法 3.1 直接力控制 (Direct Force Control) 3.2 间接力控制 (Indirect Force Control) 3.2.1 柔顺控制 (Compliant Control) 3.2.2 阻抗控制 (Impedance Control) 3.2.3 导纳控制 (Admittance Control…...

1971. 寻找图中是否存在路径

有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接&#x…...

FLINK SQL语法(1)

DDL Flink SQL DDL(Data Definition Language)是Flink SQL中用于定义和管理数据结构和数据库对象的语法。以下是对Flink SQL DDL的详细解析: 一、创建数据库(CREATE DATABASE) 语法:CREATE DATABASE [IF…...

【Fargo】1:基于libuv的udp收发程序

开发UDP处理程序 我正在开发一个基于libuv的UDP发送/接收程序,区分发送端和接收端,设计自定义包数据结构,识别和处理丢包和乱序。 创建项目需求 用户正在要求一个使用libuv的C++程序,涉及UDP发送和接收,数据包包括序列号和时间戳,接收端需要检测丢包和乱序包。 撰写代…...

WebSocket介绍和入门案例

目录 一、WebSocket 详解1. 定义与特点:2. 工作原理:3. 应用场景: 二、入门案例 一、WebSocket 详解 1. 定义与特点: WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时、双向的数据传…...

k8s集群版本升级

Kubernetes 集群版本升级是为了获得最新的功能、增强的安全性和性能改进。然而,升级过程需要谨慎进行,特别是在生产环境中。通常,Kubernetes 集群的版本升级应遵循逐步升级的策略,不建议直接跳过多个版本。 Kubernetes 版本升级的…...

XML 和 SimpleXML 简介

XML 和 SimpleXML 简介 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它定义了一组规则,用于在文档中编码数据,以便人和机器都能理解。XML 的设计目标是既易于人类阅读,也易于机器解析。SimpleXML 是 PHP…...

MySQL 中 LIKE 语句的 `%` 和 `_` 以及 BLOB 和 TEXT 的详细解析和案例示范

1. LIKE 语句中的 % 和 _ 用法 1.1 % 通配符的用法 % 通配符代表零个或多个字符。它是 MySQL 中用于模糊匹配的强大工具之一,可以在任何字符的位置使用。 示例 1:查找以特定字符开头的记录 假设我们有一个电商订单系统的 orders 表,其中包…...

git clone卡在Receiving objects

git clone卡在Receiving objects 一直卡主 $ git clone gitxxx.git Cloning into xxx... remote: Enumerating objects: 75926, done. remote: Counting objects: 100% (18844/18844), done. remote: Compressing objects: 100% (6566/6566), done. Receiving objects: 60% (…...

vue+ant 弹窗可以拖动

通过自定义指令实现拖拽功能 在main.js里加入drag自定义指令 我自己测试时发现modal不管如何设置宽度,居中等,他的初始的left都为0,如果不设置好,容易出现点击后刚开始移动弹窗会偏移一段距离。 Vue.directive(drag, {bind(el)…...

(42)MATLAB中使用fftshift绘制以零为中心的功率谱

文章目录 前言一、MATLAB代码二、仿真结果画图 前言 在分析信号的频率分量时,将零频分量平移到频谱中心会很有帮助。本例给出绘制以零为中心的功率谱的方法。 一、MATLAB代码 代码如下: f 1; % 余弦波的振荡频率&#xf…...

Windows本地部署中文羊驼模型(Chinese-Alpaca-Pro-7B)(通俗易懂版)

最近由于项目原因需要部署大语言模型, 但碍于经济实力, 只能部署在笔记本电脑上部署量化模型, (电脑至少有16G运行内存),搜集了网上的相关部署资料仍然踩了不少坑,原因在于开源项目在不断更新,导致我们看了别人的教程仍…...

Web3的挑战与机遇:技术发展的现状分析

在Web3的世界中,去中心化和用户主权的理念正逐渐走向主流,推动了现有商业模式和技术生态系统的深刻变革。区块链技术及其核心应用之一——智能合约,正在促使这一转变的发生。智能合约的主要功能是通过自动化和预设协议执行,以减少…...

LangGraph - Hierarchical Agent Teams

本文翻译整理自 Hierarchical Agent Teams https://langchain-ai.github.io/langgraph/tutorials/multi_agent/hierarchical_agent_teams/ 文章目录 一、前言二、设置三、创建工具四、Helper Utilities五、定义代理 Team研究 Team文档写作Team 六、添加图层 一、前言 在前面的…...

2021-04-14 proteus中仿真时74HC245三态双向端口扩展输出

缘由proteus中仿真时74HC245输出时电平显示灰色(不确定电平状态)是为什么?-编程语言-CSDN问答 缘由C语言翻译单片机开关检测器-编程语言-CSDN问答 参考74ls245的工作原理及作用详解 - 电子发烧友网 参考74ls245_百度百科...

解决UNSPSC商品分类的层级不足的方法

《联合国标准产品和服务守则》(UNSPSC)是一个分层框架,旨在对产品和服务进行分类。其主要目标是通过提供统一的方法来对产品和服务进行分类,从而简化采购和供应链管理。 虽然 UNSPSC 有效地将产品分为各种商品类别,但…...

Pytest基于fixture的参数化及解决乱码问题

我们知道,Pytest是Python技术栈下进行自动化测试的主流测试框架。支持灵活的测试发现、执行策略,强大的Fixture夹具和丰富的插件支持。 除了通过pytest的parametrize标签进行参数化外,我们通过fixture的param参数也可以比较方便地实现参数化…...

使用excel.js(layui-excel)进行layui多级表头导出,根据单元格内容设置背景颜色,并将导出函数添加到toolbar

本段是菜狗子的碎碎念,解决办法请直接从第二段开始看。layui多级表头的导出,弄了两天才搞定,中途一度想放弃,还好坚持下来了。一开始用的是layui的toolbar里自带的那个导出,但是多级表头没有正常导出,单元格…...

Mysql 5.7 安装与卸载(非常详细)

一、环境介绍 操作系统:CentOS 7 MySQL:5.7 二、MySQL卸载 # 查看软件 rpm -qa|grep mysql # 卸载MySQL yum remove -y mysql mysql-libs mysql-common rm -rf /var/lib/mysql rm /etc/my.cnf 继续查看是否还有 MySQL 软件,有的话继续删…...

030 elasticsearch查询、聚合

文章目录 查询聚合查询RestHighLevelClientElasticsearchRestTemplat SpringData对ES客户端的封装:ElasticsearchRestTemplate SpringData对CRUD的封装:ElasticsearchRepository 原生ES客户端:RestHighLevelClient 查询 package com.xd.cube…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

测试markdown--肇兴

day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...