Franka Robot 错误处理

news/2024/11/18 10:41:09/文章来源:https://www.cnblogs.com/ai-ldj/p/18292909

使用 FCI 时,您会遇到多种错误,这些错误可能是由于用户发送的不合规命令、通信问题或机器人行为而导致的。以下小节详细介绍了最相关的错误。有关完整列表,请查看 API文档

请注意,发生错误后,您可以自动清除错误并继续使用该franka::Robot::automaticErrorRecovery()命令运行程序,无需用户干预。继续之前请检查异常字符串,以确保错误不是严重错误。某些错误也可以通过切换外部激活设备或使用 Desk 中的错误恢复按钮手动清除。

由于不符合指令值而导致的错误

如果用户发送的命令值不符合接口要求,则会出现下列错误之一:

  • 由于运动发生器的初始值错误而导致的错误:

    • joint_motion_generator_start_pose_invalid

    • cartesian_position_motion_generator_start_pose_invalid

    • cartesian_motion_generator_start_elbow_invalid

    • cartesian_motion_generator_elbow_sign_inconsistent

这些错误表明当前机器人值与用户发送的初始值之间存在差异。要修复这些错误,请确保控制回路从机器人状态下观察到的最后一个命令值开始。例如,对于关节位置接口:

double time{0.0};
robot.control([=, &time](const franka::RobotState& robot_state, franka::Duration period) -> franka::JointPositions {time += period.toSec();if (time == 0) {// Send the last commanded q_c as the initial valuereturn franka::JointPositions(robot_state.q_c);} else {// The rest of your control loop
     ...}});

由于使用关节位置/速度运动生成器时违反位置限制:

joint_motion_generator_position_limits_violation而产生的错误,将产生。解决此错误应该很简单:确保您发送的值在 限制范围内。笛卡尔接口对逆运动学后产生的关节信号也有限制:

cartesian_motion_generator_joint_position_limits_violation如果控制的逆运动学求解器产生超出限制的关节配置,则会触发 。

由于速度限制违规和不连续性错误而导致的错误,指的是 加速度和/或加速度限制违规。如果您使用关节运动发生器,可能的错误是:

  • joint_motion_generator_velocity_limits_violation

  • joint_motion_generator_velocity_discontinuity (违反加速度限制)

  • joint_motion_generator_acceleration_discontinuity(违反冲击极限)

如果使用笛卡尔坐标系,可能出现的错误是:

笛卡尔极限:

  • cartesian_motion_generator_velocity_limits_violation

  • cartesian_motion_generator_velocity_discontinuity(违反加速度限制)

  • cartesian_motion_generator_acceleration_discontinuity(违反冲击极限)

逆运动学后的关节限制

  • cartesian_motion_generator_joint_velocity_limits_violation

  • cartesian_motion_generator_joint_velocity_discontinuity (违反加速度限制)

  • cartesian_motion_generator_joint_acceleration_discontinuity(违反冲击极限)

为了减轻速度违规或不连续性错误,请确保您命令的信号不违反限制对于每个运动发生器,控制使用向后欧拉来区分用户发送的信号。例如,如果使用关节位置运动发生器,在时间𝑘<span><span>用户发送命令𝑞𝑐,𝑘<span><span>,由此产生的速度、加速度和加速度将是:

  注意𝑞𝑐,𝑘−1,𝑞˙𝑐,𝑘−1<span><span>和 𝑞¨𝑐,𝑘−1<span><span>总是以机器人状态返回给用户𝑞𝑑,𝑞˙𝑑<span><span>和 𝑞¨𝑑<span><span>这样,即使在数据包丢失的情况下,您也可以提前计算出结果导数。

最后,对于扭矩接口,扭矩率限制违规会触发错误:

  • controller_torque_discontinuity

控制系统还利用反向欧拉法计算扭矩率,即 

。用户先前命令的期望扭矩也会在机器人状态中发送回𝜏𝑑, 因此即使在数据包丢失的情况下,您也可以提前计算最终的扭矩率。

<code class="docutils literal notranslate"><span class="pre">libfranka自版本以来,速率限制器0.4.0会修改用户发送的信号,使其符合所有这些限制(逆运动学之后的关节限制除外)。您可以查看include/franka/rate_limiting.h和 src/rate_limiting.cpp获取有关如何计算所有接口的结果速度、加速度和加速度的示例代码。我们再次强调,对不连续信号使用速率限制很容易导致不稳定的行为,因此请确保您的信号足够平滑,然后再启用此稳健性功能。

由于沟通问题导致的错误

如果在实时循环期间,控制在 20 个周期(即 20 毫秒)内未收到任何数据包,您将收到错误communication_constraints_violation。请注意,如果您的连接出现间歇性丢包,它可能不会停止,但即使您的源信号符合接口规范,它也可能触发不连续错误。在这种情况下,请查看我们的故障排除部分 ,并考虑启用信号处理功能 以提高控制循环的稳健性。

机器人行为错误

这些监控功能并不符合任何安全规范,也不能保证用户的安全。它们仅用于帮助研究人员开发和测试他们的控制算法。

反射误差: 如果估计的外部扭矩𝜏^𝑒𝑥𝑡<span><span>或力量&nbsp;𝑂𝐹^𝑒𝑥𝑡<span><span>超过配置的阈值,将分别触发cartesian_reflex或 joint_reflex错误。您可以使用 non realtime 命令配置阈值franka::Robot::setCollisionBehavior

<span class="math notranslate nohighlight"><span><span><span><span>如果您希望机器人与环境接触,则必须将碰撞阈值设置为更高的值。否则,一旦您抓住物体或推向表面,就会触发反射。此外,如果阈值较低,没有接触的非常快速或突然的运动可能会触发反射;外部扭矩和力只是估计值,根据机器人配置,这些值可能不准确,尤其是在高加速阶段。您可以通过观察来监控它们的值𝜏^𝑒𝑥𝑡<span><span>和𝑂𝐹^𝑒𝑥𝑡<span><span>&nbsp;处于机器人状态。

<span class="math notranslate nohighlight"><span><span><span class="math notranslate nohighlight"><span class="math notranslate nohighlight"><span><span><strong>自防碰撞</strong><span><span>。如果机器人达到接近自碰撞的配置,则会触发错误 <span style="color: #ff0000;"><strong>self_collision_avoidance_violation</strong>

<span class="math notranslate nohighlight"><span><span><span class="math notranslate nohighlight"><span class="math notranslate nohighlight"><span><span><span><span><span style="color: #ff0000;"><strong>此错误不能保证机器人在任何配置和速度下都能防止自碰撞。如果使用扭矩接口,以全速驱动机器人,机器人可能会自碰撞。</strong>

  • 如果达到扭矩传感器的极限tau_j_range_violation, 将触发。这并不能保证传感器在任何高扭矩相互作用或运动后不会损坏,但旨在防止部分损坏。

  • 如果达到允许的最大功率power_limit_violation,将触发。它将阻止机器人移动并继续控制循环。如果达到关节或笛卡尔极限,您将分别得到joint_velocity_violation或一个cartesian_velocity_violation错误。

  • 如果达到关节或笛卡尔极限,您将分别得到joint_velocity_violation或一个cartesian_velocity_violation错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741376.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis Plus 3.X版本的insert填充自增id的IdType.ID_WORKER策略源码分析

总结/朱季谦 某天同事突然问我,你知道Mybatis Plus的insert方法,插入数据后自增id是如何自增的吗? 我愣了一下,脑海里只想到,当在POJO类的id设置一个自增策略后,例如@TableId(value = "id",type = IdType.ID_WORKER)的注解策略时,就能实现在每次数据插入数据库…

共享ip服务器实现外网访问

信息 服务器厂商:炎火云 系统:Windows-2012R2-Datacenter-cn 面板:phpstudy 共享ip服务器实现外网访问思路 通过nat端口映射将内网端口映射到共享ip(即公网ip)端口,实现使用共享ip+端口访问服务器 步骤 首先确定好服务器端口 我这里用的是默认的80端口接着要在防火墙里面…

MySQL-18.主从复制

C-18.主从复制 1.主从复制概述1.1 如何提升数据库并发能力 在实际工作中,我们常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再方法数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis…

Jetbrains IDE (IntelliJ) 启用原生Wayland支持

启用最新jbr 打开你要设置的IDE,ctrl+shift+a 后输入“runtine”,回车,在显示的窗口中选择jbr21的最新版本,如图所示:设置jvm参数 确认后,点击窗口右下角的小齿轮(如果已经打开了任何项目,先关掉),选择“Edit Custom VM Options“,在出现的文本框最后面加上这么一行:…

30、Django-项目部署-nginx

原理: 安装: 配置: - 这里uwsgi_pass 表示使用uwsgi协议转发代理 - include 表示加载uwsgi协议的参数(固定) - nginx -t   #检查配置文件语法修改uWSGI:socket 表示启用uwsgi协议 本文来自博客园,作者:little小新,转载请注明原文链接:https://www.cnblogs.com/li…

15、 Django-多表操作-多个模块的关联-多对多的增删改查- models.manytomany()

针对多对多的关系django会自动创建第三张表、也可以通过through参数指定第三张表models.py from django.db import models# Create your models here.#多对多 #用户表:电影 = N:M #一个用户可以收藏多部电影 #一部电影可以被不同的用户收藏#电影 class Movie(models.Mode…

14、 Django-多表操作-多个模块的关联-一对多的增删改查- models.ForeignKey()

#多模块关联-- 关联分类:Django中的三个函数-- ForeignKey-称为外键:一对多、将字段定义在多的一端中-- ManyToMnayField:多对多、将字段定义在两端的任意一端中-- OneToOneField:一对一、将字段定义在任意一端中如:一对一:一对多:多对多:常用 如: 模型models.py from …

一文熟悉拖拽式表单设计器的方方面面

通过本文,可以详细了解拖拽式表单设计器的更多优势和特点。很多客户朋友都想知道用什么样的软件平台可以实现提质、降本、增效的目的。可以来了解低代码技术平台、拖拽式表单设计器的更多功能与特点。作为专业的服务商,流辰信息为客户提供整套低代码技术平台服务解决方案,通…

Simple WPF: C# 使用基本的async/await实现异步

本文介绍了基本async/await关键字基于TAP任务异步模型的异步任务处理方法。最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。 创作不易,如果觉得有用请在Github上为博主点亮一颗小星星吧! 博主开始学习编程于11年前,年少时还只会使用cin 和cout ,给单片…

植物大战僵尸1.2.0.1073汉化版

下载链接:https://download.csdn.net/download/hello_hlqk/89528378?spm=1001.2101.3001.9499 植物大战僵尸是一款益智策略类塔防游戏,玩家通过武装多种植物切换不同的功能,快速有效地把僵尸阻挡在入侵的道路上。不同的敌人,不同的玩法构成五种不同的游戏模式,加之黑夜、…

3-电子支付技术与系统

3.1 电子货币及其职能 3.1.1 电子货币的定义 在电子商务迅速发展和金融电子化的背景下,电子货币成为媒介商品交易的重要工具。电子货币(ElectronicMoney,)是指用一定金额的现金或存款从发行者处兑换并获得代表相同金额的数据或者通过银行及第三方推出的快捷支付服务,通过使…

先有鸡还是先有蛋?这是领域驱动设计落地最大的困局

本文书接上回 《关于领域驱动设计,大家都理解错了》 欢迎关注公众号“老肖想当外语大佬”: https://mp.weixin.qq.com/s/HHJ5vt2_iT0-CFcw0HcPnA 先有鸡还是先有蛋的困局 前文我们提出了“领域驱动设计是一种价值观”这个观点,那么落地领域驱动设计就是践行价值观的过程,实…