首页 > 其他分享 >Universal_Robots_ROS2_Driver实现UR机械臂仿真控制(2)

Universal_Robots_ROS2_Driver实现UR机械臂仿真控制(2)

时间:2024-11-14 21:16:10浏览次数:3  
标签:group Driver Universal move driver Robots UR 位姿 moveit

目录

一、最终效果展示

二、整体架构

三、模块说明

四、模块接口说明


一、最终效果展示

  • 效果展示
<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="yEJCry5q-1731570110105" src="https://live.csdn.net/v/embed/434073"></iframe>

实现UR机械臂指定位姿控制


  • 结果分析

move.cpp:期望位姿;rviz2:检测到的位姿;ur_sim:机械臂的实际位姿

位姿:位置(position)和姿态(orientation)

通过观察可以发现,经过轨迹规划运动后,UR机械臂在一定误差允许范围内达到了期望的位姿。


二、整体架构

这里的user_pkg、move_group、user_driver都是功能包;

我们可以使用ur_sim代替真实的ur_robots


三、模块说明

  • 3.1 user_pkg

这个功能包是用户自定义的,主要作用是下发目标位姿,用户可以根据moveit2提供的官方例程实现。

  • 3.2 move_group

move_group功能包可以通过moveit_setup_assistant工具生成,其主要是运行两个节点(moveit_group node、rviz node),有了moveit_group node就可以实现与user_node和user_driver中节点的通信。

  • 3.3 user_driver

user_driver作为用户的自定义功能包,实际上是基于UR官方提供的Universal_Robots_ROS2_Driver中的ur_robot_driver驱动,其中更多的是增加了自定义的一些配置,但驱动部分还是使用ur_robot_driver。

  • 3.4 ur_robot

这里用ur_sim代替真实的UR机器人。

move_group、user_driver的构造主要参考UR官方教程中的Universal Robots ROS tutorials,这个教程主要是帮助用户运行他们的自定义用例。

 整个教程主要分成三步:

  1. Assembling the URDF:构造符合用户需求的自定义机器人模型
  2. Start the ur_robot_driver:构造符合机器人模型需求的驱动功能包(基于ur_robot_driver)
  3. Build the MoveIt! config:通过moveit_setup_assistant创建moveit_group功能包

四、模块接口说明

  • 4.1 目标位姿的发放(User_node<->move_group)

在“Universal_Robots_ROS2_Driver实现UR机械臂仿真控制(1)”中,我们最终实现了通过可视化的方式调用MoveIt中的命令完成机械臂仿真控制。但我们知道在实际控制中,我们需要定量的位姿目标来实现控制目的,而不是可视化的面板操作方式。

move_group node为用户提供了两种主要接口,一种是GUI接口,即我们的可视化操作接口;另一种是编程接口(c++/python)。本示例中主要通过c++接口(move_group_interface)实现自定义节点与move_group node的通信,完成目标位姿的发放。

MoveIt官方文档内容

move_group_interface(ROS Wrappers in C++)是通过脚本程序使用Moveit的最简单的方法,十分适合初学者,提供对MoveIt的许多功能的统一访问。

Using MoveIt Directly Through the C++ API:

使用MoveIt构建更复杂的应用程序通常需要开发人员深入研究MoveIt的c++ API。另外,使用c++ API可以直接跳过许多ROS服务/操作层,从而显著提高性能。

  • 4.2 轨迹规划与下发(move_group<->user_driver)

move_group获取目标位姿后,根据 /joint_states topic提供的关节信息,通过内部规划器实现轨迹规划,并将轨迹点通过 FollowJointTrajectoryAction 发送给UR机械臂上运行的控制器。

利用 moveit_setup_assistant 生成 moveit_config 包时,会生成配置 moveit_controllers 和 ros2_controllers 两种控制器,其中 moveit_controllers 是虚拟控制器,并不具备实际的控制能力,其主要作用是负责连接MoveIt的运动规划器和底层控制器(ros2_controllers),确保生成的轨迹能够被底层控制器实际执行。由于moveit_controllers的映射作用,要求 moveit_controllers.yaml 中配置的控制器名称和类型要与 ros2_controllers 中的实际控制器的保持一致,否则会导致控制器不匹配问题,进而无法发送轨迹到指定底层控制器。

  • 4.3 user_driver控制器驱动

这部分可以参考Universal_Robots_ROS2_Driver实现UR机械臂仿真控制(1)的UR机械臂驱动接口。

标签:group,Driver,Universal,move,driver,Robots,UR,位姿,moveit
From: https://blog.csdn.net/m0_60079093/article/details/143772217

相关文章

  • 痞子衡嵌入式:关于恩智浦SDK2.0里事务型中断处理函数(DriverIRQHandler)的重定向注意事
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是SDK2.0里事务型中断处理函数(DriverIRQHandler)的重定向注意事项。最近有一个i.MXRT客户在使用官方SDK外设驱动里的中断处理函数时遇到了代码重定向失效问题,客户用得是一个XIPFlash工程,想把程序中......
  • 新手入门Java自动化测试的利器:Selenium WebDriver
    新手入门Java自动化测试的利器:SeleniumWebDriver今天我们将深入探讨一款强大的Java自动化测试工具——SeleniumWebDriver。在正式介绍SeleniumWebDriver之前,让我们首先对Selenium本身进行简要概述,以便更好地理解其背景和功能。官方学习网站:https://www.selenium.dev/Sele......
  • The 3rd Universal Cup. Stage 16: Nanjing
    B.BirthdayGift把原始串的偶数位取反,题目从消除相同就可以转换为消除不同。因此只要有不同位,就一定可以消除。因此最终剩下的串一定是全0或者全1。因此答案就是翻转后的1、0之差。我们用2尽可能的减少0,1只差即可。#include<bits/stdc++.h>#definelllonglongvo......
  • 新手入门Java自动化测试的利器:Selenium WebDriver
    今天我们将深入探讨一款强大的Java自动化测试工具——SeleniumWebDriver。在正式介绍SeleniumWebDriver之前,让我们首先对Selenium本身进行简要概述,以便更好地理解其背景和功能。官方学习网站:https://www.selenium.dev/Selenium是一个开源的自动化测试框架,WebDriver是其核心......
  • JAVA自动化扫描并使用Driver进行小型DDOS-----JAVA
    packagecom.alatus.searchinfo.config;importcom.alatus.searchinfo.Entity.AccountEntity;importcom.alatus.searchinfo.utils.HttpUtils;importcom.alibaba.excel.context.AnalysisContext;importcom.alibaba.excel.metadata.CellExtra;importcom.alibaba.excel......
  • iOS微信授权登录中Universal Link(通用链接)的配置
    配置UnuversalLinks1.苹果开发者账号打开配置2.配置JSON文件,创建一个空白文件(必须纯文本,命名为apple-app-site-association,去除后缀名)。这里建议让后台人员在其本地创建,避免文件传输时,文件自动被更改格式、后缀自动添加等问题{"applinks":{"apps":[],......
  • The 3rd Universal Cup. Stage 15: Chengdu 解题集
    A.ArrowaRow我们把整个序列划分成若干个形似\(\text{>>>>..>>}\)的连续段,并尝试用一个最右边连通块里最左边的\(\text{>>>}\)去覆盖掉左边不和它在一个段里的所有\(\text{>}\),如果最右边的连续段长度小于2或者没有连续段则肯定无解。对于在同一个连续段里其他的\(\te......
  • 网站robots文件怎么优化?robots.txt文件的作用及生成
    Robots.txt文件是网站根目录下的一个纯文本文件,用于指导搜索引擎蜘蛛如何抓取和访问网站内容,通过设置不同的规则,可以有效地控制哪些页面可以被抓取,哪些不可以被抓取,从而优化网站SEO效果和保护敏感信息。什么是robots.txt?定义:robots.txt是一个存放在网站根目录下的纯文本文件,用来......
  • 使用chromedriver抓取网页截图
    前提:1、电脑安装了谷歌浏览器2、下载chromedriver-win64,放到C:\ProgramFiles\Google\Chrome\chromedriver-win64  安装路径chromedriver-win64 下载地址:ChromeforTestingavailability3、importorg.apache.commons.io.FileUtils;importorg.openqa.selenium.Outp......
  • ndis.sys 是 Windows 操作系统中的一个关键系统文件,属于 网络驱动接口规范(NDIS,Network
    ndis.sys是Windows操作系统中的一个关键系统文件,属于网络驱动接口规范(NDIS,NetworkDriverInterfaceSpecification)的一部分。它是一个用于管理网络驱动程序和网络接口卡(NIC)之间通信的核心组件,主要负责网络设备驱动与操作系统的接口。具体来说,ndis.sys充当了操作系统与网络......