ROS 2边学边练(45)-- 构建一个能动的机器人模型

2024-05-09 22:20

本文主要是介绍ROS 2边学边练(45)-- 构建一个能动的机器人模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

        在上篇中我们搭建了一个机器人模型(其由各个关节(joint)和连杆(link)组成),此篇我们会通过设置关节类型来实现机器人的活动。

        在ROS中,关节一般有无限旋转(continuous),有限旋转(revolute)和滑动(prismatic)三种类型,除了上述三种关节类型外,ROS还支持其他类型的关节,如planar(平面关节,允许在平面正交方向上平移或旋转)和floating(浮动关节,允许进行平移和旋转运动)等。这些关节类型提供了更复杂的运动学模型,以支持更广泛的机器人设计和应用。

动动手

        同样是在urdf文件中实现。[原文件:06-flexible.urdf]

运行

        按下面命令看看这个可活动的机器人效果如何。

$ros2 launch urdf_tutorial display.launch.py model:=urdf/06-flexible.urdf

        可以发现除了Rviz机器人模型出现外,还有另外一个小窗口也弹了出来(上一篇中也有,只不过内容很少),上面罗列了好几个关节(joint)的控制条,我们可以尝试拖动这些滑动条看看机器人如何活动。

关节

<joint name="head_swivel" type="continuous"><parent link="base_link"/><child link="head"/><axis xyz="0 0 1"/><origin xyz="0 0 0.3"/>
</joint>

        这里描述了头部关节的相关属性,该关节连接了机器人身体(base_link)和头部(head),类型为continuous,意味着可以无限制旋转(所有方向所有角度),受限于实际的物理限制,往往不能做到全方位全角度旋转,几个轮子关节的类型也是同样如此。需要注意的是我们从上面的代码中可以看到axis属性,这指定了旋转轴,(x, y, z)-> (0, 0, 1),该头部节点只能绕着z轴转动。

抓手
<joint name="left_gripper_joint" type="revolute"><axis xyz="0 0 1"/><limit effort="1000.0" lower="0.0" upper="0.548" velocity="0.5"/><origin rpy="0 0 0" xyz="0.2 0.01 0"/><parent link="gripper_pole"/><child link="left_gripper"/>
</joint>

        机器人的左右两只抓手关节类型都为revolute,有限制(角度)的旋转,通过limit属性我们指定了力矩(effort,单位Nm)、最小最大角度(lower/upper,单位弧度)、速度(velocity),实际过程中的值可能会与目标值不一致。

对于旋转关节(revolute),effort 通常表示的是力矩(torque),单位可能是牛顿·米(Nm)或磅·英尺(lb-ft),而不是牛顿(N)。牛顿(N)是力的单位,而力矩是力和力臂的乘积,用来描述力对物体绕某点旋转的效果。

对于滑动关节(prismatic),effort 通常表示的是力(force),单位可能是牛顿(N)或磅(lb)。

抓臂
<joint name="gripper_extension" type="prismatic"><parent link="base_link"/><child link="gripper_pole"/><limit effort="1000.0" lower="-0.38" upper="0" velocity="0.5"/><origin rpy="0 0 0" xyz="0.19 0 0.2"/>
</joint>

        抓臂关节的类型设置成了prismatic,滑动,能起到让手臂伸缩的作用。对于滑动关节的属性lower和upper单位不再是弧度而是米。

其他

       除了前面提到的关节类型,还有两种关节能够在空间中移动。其中,滑动关节(prismatic joint)只能沿一个维度移动,而平面关节(planar joint)则可以在一个平面,或者说两个维度上移动。此外,浮动关节(floating joint)是不受约束的,可以在三个维度中的任意一个维度上移动。这些关节不能仅用一个数值来指定,因此在本教程中不包括它们。

姿态控制原理(Rviz)

        在我们拖动滑动条时,Rviz中的机器人关节也随着活动,并带动与其连接的其他组件运动,这是怎么实现的呢?

  1. GUI(控制窗口)解析urdf文件并确定各个活动关节及其限制;
  2. GUI读取滑动条数值并发布sensor_msgs/msg/JointState消息;
  3. 节点robot_state_publisher利用这些消息数据计算不同模块之间的位姿转换;
  4. Rviz最终通过转换树的信息数据进行显示转换后的机器人位姿。

        后续的章节我们会添加一些物理属性到urdf中,并利用xacro(xml格式的宏)来精简我们的代码。

本篇完。

这篇关于ROS 2边学边练(45)-- 构建一个能动的机器人模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974665

相关文章

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费