0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实现机器人操作系统——ADI Trinamic电机控制器ROS1驱动程序简介

eeDesigner 来源:eeDesign 作者:eeDesign 2024-04-24 15:43 次阅读

摘要

机器人操作系统(ROS)驱动程序基于ADI产品而开发,因此可直接在ROS生态系统中使用这些产品。本文将概述如何在应用、产品和系统(例如,自主导航、安全气泡地图和数据收 集机器人)中使用和集成这些驱动程序;以及这样将如何有助于迅速评估新技术,并避免出现与第三方产品的互操作性问题。在本文探讨的所有产品中,将重点关注最近发布的用 于 ADI Trinamic电机控制器的ROS驱动程序,该驱动程序是用于嵌入式运动控制的完整板级模块,融合ADI Trinamic运动控制专业知识,以及ADI的模拟工艺技术和电源设计技能。1

什么是ROS?

ROS 是机器人中间件,包含一组软件库和强大的开发工具(从驱动程序到先进算法),可作为机器人系统或应用的开发基础。ROS涉及多领域(例如,消费电子工业、汽车等),支 持多个平台(Linux、Windows、MacOS和一些嵌入式平台),而且100%开源,并提供商业选项。得益于来自全球技术社区的专用资源,ROS可获得丰富的支持,从而帮助用户简化其设计和应用。

该技术的工作原理是什么?

ROS始于2007年,已成为自动驾驶汽车、工业机器人、飞行器等领域备受欢迎的机器人开发原型制作平台。经过不断发展,该技术现在有两个版本:ROS1和ROS2

ROS1和ROS2系统必须相互隔离,但通过ROS桥,这两个系统之间 可进行通信和交换数据。有关更多信息,请访问ros2/ros1_bridge 页面。

因素 ROS1 ROS2
通信协议 XMLRPC + TCPROS DDS
构建 ROS 主控制器 + 分布式 完全分布式
构建系统 Catkin (基于cmake) colcon/ament (基于cmake)
构建输出 ros_ws/devel ros_ws/install
参数 全局参数服务器
动态重新配置
每节点参数
发布 XML Python (+XML、YAML 替代语言)
命令 roslaunch、rosrun、rostopic等 ros2 launch、 ros2 run、 ros2 topic等
平台 主要是ubuntu Linux、MacOS、 Windows

ROS支持的平台

ROS Noetic是ROS1的最终版本,将于2025年5月终止支持,而ROS2自2020年6月推出以来,不断滚动更新发行版。

如需获取完整列表,请查看这些链接,以了解ROS1支持的平台 和 ROS2支持的平台。

ROS基本概念

图1显示了ROS的一些基本概念,包括功能包、节点、主题、服务和消息。

wKgZomYouAyAfkQtAABv5Cu4bTs574.svg

图1. ROS基本数据流。

注:对ROS1和ROS2而言,下文讨论的ROS基本概念相似。

功能包

ROS功能包是ROS程序或节点的主要组织系统。这是ROS中最核心的构建/发布项。创建ROS功能包时,请务必设置专用的ROS工作空间。该工作空间被称为catkin工作空间,其中catkin是ROS的官方构建系统。

节点

ROS节点是在ROS中创建的可执行程序。它们是执行特定任务的 进程。ROS节点可使用ROS客户端库(如Python客户端库rospy和C++ 客户端库roscpp)相互通信。节点可以订阅和/或发布主题,也 可以提供或使用服务。3

主题

ROS主题是ROS节点生成(或者发布,用ROS的术语来说)的数据通道。

在ROS中,发布者节点是主题的广播者,而订阅者节点是主题的收听者。

在图2中,generic_motor_control的节点是广播者。/cmd_vel是velocity_ publisher发布的主题。这表示,velocity_publisher提供基于电机控制(或命令速度)的速度信息。

wKgaomYouA6AbcqUAACRm9qyDJk262.svg

图2. 发布者-订阅者。

而ros_application的节点是收听者,velocity_subscriber订阅主题/cmd_vel。这表示,velocity_subscriber访问或使用velocity_publisher提供的速度信息。

消息

主题是数据通道,而消息是数据,采用与ROS兼容、适用于不同传感器的格式。

以下是适用于ROS消息格式的示例传感器:

飞行时间(ToF)摄像头:sensor_msgs/Image、sensor_msgs/PointCloud

惯性测量单元(IMU)传感器:sensor_msgs/Imu

电机控制:geometry_msgs/Twist

车轮编码器:geometry_msgs/TwistStamped、geometry_msgs/TwistWithCovarianceStampe


ROS主题通过发送消息(主题发布者)或接收消息(主题订阅者)进行通信,并且必须采用匹配的数据类型。

例如,在图2中,来自velocity_publisher节点的速度信息(命令速度)希望被velocity_subscriber节点访问/使用。如果主题发布者velocity_publisher使用数据类型geometry_msgs/Twist,则主题订阅者velocity_subscriber也应使用相同的数据类型。

服务

发布者-订阅者通信模式是开放式模式,不适用于分布式系统中通常需要的回复交互。4

服务支持节点通过发送请求和接收响应进行通信。发布者-订阅者通信模式使用.srv文件,在这些文件中,指定了请求和响应的消息类型等服务描述。

服务是双向同步通信模式,其中包含客户端和服务器。服务器节点提供服务,而客户端节点发送请求并等待服务器节点做出响应。

例如,在图3中,server_node提供服务SetVelocity.srv以更改命令速度vel。该服务接受float32格式的速度值,并以字符串格式返回状态;如果设置了请求的速度,则为"success";否则,为"FAIL"。

wKgaomYouBGAMND0AADLM9Qi0Yw791.svg

图3. 使用服务示例

client_node发送请求,将命令速度设置为2.5 mbps。server_node收到请求后,立即发送"success"响应。

将ADI解决方案集成到ROS生态系统中

ADI是ROS-Industrial联盟的正式成员,ROS-Industrial是一个开源项目,旨在将ROS软件的高级功能扩展到与工业相关的硬件与应用。5 作为该技术社区的一份子,ADI最初的目标是面向工业领域开发专用模块。

ADI针对不同的专用模块开发了ROS驱动程序。为了展示所开发的驱动程序并利用ROS的功能,ADI公司开发了ADI自主移动机器人(ADAM)作为内部自主移动平台(参见图4)。

wKgaomYouBOAKOPZAABWyEJmNJk709.jpg

图4. ADAM。

ADAM:ADI自主移动机器人

ADAM由ROS提供支持,并搭载ROS支持的不同器件。该平台展示了ADI公司的ROS驱动程序如何集成到移动机器人应用中,特别是自主导航应用。

图5所示为具有不同模块的ADAM的简化硬件图。该ADAM主要连接以下器件:

ADIS16470或 IMU传感器采用精密陀螺仪、加速度计、磁力计和压力传感器的多轴组合,这些器件主要用作检测反馈,用 于改善位置/方向估算。

ADBMS6948是一款多单元电池监控器,可测量多达16个串联连接的电芯,在整个温度范围内具有较高的测量精度。

EVAL-ADTF3175D-NXZ 或 CMOS ToF提供出色的高分辨率,与深度计算和处理、激光驱动器电源管理以及具有参考固件/软件的开发工具相辅相成,可带来更多优势。

ADI Trinamic电机控制器是用于嵌入式运动控制的完整板级解决方案,融合ADI Trinamic运动控制专业知识,以及ADI的模拟工艺技术和电源设计技能。1


wKgaomYouBiALHjcAAbWokD3AdA652.svg

Figure 5. A high level hardware diagram of the ADAM.

图6所示为ADAM的简化ROS架构,该ADAM使用ROS驱动程序和自主导航所需的多个应用/算法节点。IMU数据(/imu/data_raw)和ADI Trinamic电机控制器反馈(/tmc_info) 用作姿态估算的输入,从而得到机器人的里程测量结果(/odom)。激光雷达数据(/scan) 是用于生成地图的同步定位与地图绘制(SLAM)算法的主要输入;ToF数据(/image_raw) 还可用作其他SLAM算法的输入。然后,move_base节点 将等待用户发出任何目标姿态,并向ADI Trinamic电机控制器发送速度命令(/cmd_vel) ,使机器人移动。

wKgZomYouByAY-znAAP0AKMv5is027.svg

图6. ADAM导航堆栈的简化ROS架构。

ADI Trinamic电机控制器ROS驱动程序

ADI Trinamic电机控制器(TMC)是用于嵌入式运动控制的完整板级解决方案,融合ADI Trinamic运动控制专业知识,以及ADI的模拟工艺技术和电源设计技能。1 支持单轴/多轴步进电机、无刷直流电机(BLDC)等各类电机,可用接口包括 CAN、 EtherCAT®、RS-232、RS-485USB,支持的协议涵盖Trinamic运动控制语言(TMCL™)、CANopen®、 over EtherCAT (CoE)、 CANopen 或 Modbus。1

名为TMCL-IDE的IDE可帮助用户开发应用并对这些模块轻松重新编程。该IDE使用TMCL实现独立操作,或使用标准化 CANopen® 协议,允许用户设置参数、实时对数据进行可视化处理,并开发/调试独立应用。

由于TMC使新型智能执行器成为可能,并且随着ROS日益普及,尤其是在机器人领域,我们针对这些模块开发了额外支持,如ROS驱动程序,从而进一步扩展制造业和工业自动化的用例。具 体来说,预计这些ROS驱动程序将能够:

控制电机的速度、位置或扭矩

监控电机控制器和电机信息


TMC ROS驱动程序与TMCL-IDE提供的功能相似,但它能够让支持ROS的系统节点轻松使用这些TMC,无需安装任何其他驱动程序。截至本文发表之时,该驱动程序仅支持CAN接口(特别是SocketCAN),其他接口正在开发中,很快也将提供支持。

此处列出了目前支持的ADI Trinamic电机控制器模块(TMCM)。

软件架构

图7所示为adi_tmcl的简化软件架构。

wKgZomYouB6Ae8zNAAXkKXwWEMM140.svg

图7. adi_tmcl的简化软件架构。

如图7所示,由于adi_tmcl使用大多数Linux系统默认支持的SocketCAN 驱动程序,所以不需要任何额外的驱动程序。此外,adi_tmcl具有自己的TMCL协议解析器,因而能够理解用户请求的符合TMCL的发送/接收命令。作为最后一层,tmcl_ros_node以发布者、订阅者和服务的形式在ROS系统上提供直接接口。每种形式均提供特 定的功能,这些功能可使用以下部分详细介绍的一组参数进行配置。

特性

adi_tmcl提供一系列特性,包括:

支持不同的TMC板

使用TMCL-IDE对TMC模块进行一次性配置

移动/停止电机

能够获取TMC/电机信息

执行自定义TMC命令

能够获取所有轴参数值

能够获取所有全局参数值

支持多个TMC板设置

轻松集成到ROS系统/应用中


敬请关注下月《模拟对话》中的文章"掌控搭载ROS1驱动程序的Trinamic电机控制器",文中将详细探讨这些特性,并举例说明如何使用这些特性。

结论

利用ADI Trinamic电机控制器可实现新型智能执行器。随着ROS日益普及,尤其是在机器人领域,我们针对这些模块开发了额外支持,如ROS驱动程序,旨在进一步扩展制造业和工业自动化用例。

在本文中,我们展示了ROS如何扩展器件,带来以下优势:

提供附加价值,比如扩展工业应用;

通过ROS通信框架,与第三方产品可轻松实现互操作;

提供更广泛的选项,方便客户在其系统中选用ADI产品;

快速评估新技术并立即开始使用。欲了解更多信息,请访问ADI工业机器人页面。


有关更多信息,请访问ADI的工业机器人 页面。

探索永不停息

敬请关注有关ADI Trinamic电机控制器ROS1驱动程序的文章,深入了解相关信息

敬请关注未来发表的有关用于ADI Trinamic电机控制器的ROS2的文章

下载ADI Trinamic电机控制器ROS1和ROS2 驱动程序

购买ADI Trinamic电机 和 电机控制器 评估版


参考电路

1 "用于电机和运动控制的ADI Trinamic硬件。" ADI公司

2 "ros2/ros2_documentation。" GitHub, Inc.

3"了解ROS节点。" ROS.org.

4"服务。" ROS.org.

5"ROS-Industrial。" ROS.org.

"适合运动控制应用的工业通信协议和接口。" ADI公司

作者

wKgaomYouCCAFsr_AAAahT5m9Ic131.jpg

Krizelle Apostol

Krizelle Paulene Apostol是一名软件系统工程师,她所在的ADI公司菲律宾开发中心与智能运动和机器人部门展开合作。她于2019年12月加入ADI公司,工作地点位于菲律宾甲米地。她毕业于菲律宾信心学院,获计算机工程学士学位。她曾参与众多项目,专注于ROS、Gazebo仿真、固件开发、通信协议和算法开发等领域。

wKgaomYouCSAJ1f9AAAbHXuXn_c900.jpg

Jamila Macagba

Jamila “Jam” Aria Macagba是一名高级软件系统工程师,她所在的ADI公司菲律宾开发中心与智能运动和机器人部门展开合作。她于2018年7月加入ADI公司,工作地点位于菲律宾甲米地。她毕业于菲律宾大学洛斯巴洛斯分校,获电气工程学士学位。她主要负责ROS系统中的ROS驱动程序开发与集成工作。

wKgaomYouCaAAhS6AAAauAee8EY785.jpg

Maggie Maralit

Maggie是一名软件系统设计工程经理,她所在的ADI公司菲律宾开发中心与工业运动和机器人部门展开合作。她于2019年4月加入ADI公司,工作地点位于菲律宾甲米地。她毕业于菲律宾大学洛斯巴洛斯分校(位于菲律宾拉古纳),获计算机科学学士学位。她目前在菲律宾工厂率领工程师小组,为工业机器人项目提供支持。从2009年至2010年,Maggie在惠普担任应用专家;从2010年至2013年,在Canon Information Technologies Phils., Inc.担任高级软件工程师;从2013年至2015年,在Ionics EMS, Inc.担任固件开发工程师;从2015年至2019年,在新加坡大陆汽车公司担任高级嵌入式软件工程师。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ADI
    ADI
    +关注

    关注

    144

    文章

    45812

    浏览量

    248610
  • 机器人
    +关注

    关注

    210

    文章

    28180

    浏览量

    206311
  • 电机控制
    +关注

    关注

    3525

    文章

    1854

    浏览量

    268321
  • 操作系统
    +关注

    关注

    37

    文章

    6727

    浏览量

    123181
  • 电机控制器
    +关注

    关注

    20

    文章

    515

    浏览量

    32029
收藏 人收藏

    评论

    相关推荐

    ROS机器人开发更便捷,基于RK3568J+Debian系统发布!

    的快速发展,智能机器人设备已成为工业自动化体系的佼佼者,而智能机器人设备核心—ROS系统,是机器人领域的集大成者,主要应用于
    发表于 07-09 11:38

    ROS RIKIBOT基础--使用系列 第一章节】ROS机器人硬件系统 精选资料分享

    控制器ROS控制器采用树莓派4B或者Jetson Nano,运行运行Ubuntu Mate18.04或Ubuntu18.04系统,具体型号有差异。
    发表于 07-30 06:59

    ROS机器人开发更便捷,基于RK3568J+Debian系统发布!

    ROS系统是什么 ROS(Robot Operating System)是一个适用于机器人的开源的元操作系统。它提供了
    发表于 11-30 16:01

    ROS的含义与机器人操作系统ROS的介绍

    Operating System 的缩写,原本是斯坦福大学的一个机器人项目,后来由 WillowGarage 公司发展,目前由 OSRF(Open Source Robotics Foundation,Inc)公司维护的开源项目。 1、首先是一个
    发表于 09-26 14:08 12次下载

    机器人操作系统ROS详细介绍

    ),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的
    发表于 11-18 18:09 2352次阅读

    AD5252-微控制器操作系统驱动程序

    AD5252-微控制器操作系统驱动程序
    发表于 05-13 15:15 4次下载
    AD5252-微<b class='flag-5'>控制器</b>无<b class='flag-5'>操作系统</b><b class='flag-5'>驱动程序</b>

    AD7298-微控制器操作系统驱动程序

    AD7298-微控制器操作系统驱动程序
    发表于 05-22 11:13 6次下载
    AD7298-微<b class='flag-5'>控制器</b>无<b class='flag-5'>操作系统</b><b class='flag-5'>驱动程序</b>

    AD5162-微控制器操作系统驱动程序

    AD5162-微控制器操作系统驱动程序
    发表于 05-22 15:05 35次下载
    AD5162-微<b class='flag-5'>控制器</b>无<b class='flag-5'>操作系统</b><b class='flag-5'>驱动程序</b>

    AD5790-微控制器操作系统驱动程序

    AD5790-微控制器操作系统驱动程序
    发表于 05-22 20:30 3次下载
    AD5790-微<b class='flag-5'>控制器</b>无<b class='flag-5'>操作系统</b><b class='flag-5'>驱动程序</b>

    AD7291-微控制器操作系统驱动程序

    AD7291-微控制器操作系统驱动程序
    发表于 05-22 20:39 9次下载
    AD7291-微<b class='flag-5'>控制器</b>无<b class='flag-5'>操作系统</b><b class='flag-5'>驱动程序</b>

    AD5449-微控制器操作系统驱动程序

    AD5449-微控制器操作系统驱动程序
    发表于 05-23 09:17 4次下载
    AD5449-微<b class='flag-5'>控制器</b>无<b class='flag-5'>操作系统</b><b class='flag-5'>驱动程序</b>

    ROS机器人操作系统实现原理(上)

    本文介绍ROS机器人操作系统(Robot Operating System)的实现原理,从最底层分析ROS代码是如何
    的头像 发表于 05-19 17:41 961次阅读
    <b class='flag-5'>ROS</b><b class='flag-5'>机器人</b><b class='flag-5'>操作系统</b>的<b class='flag-5'>实现</b>原理(上)

    ROS机器人操作系统实现原理(下)

    本文介绍ROS机器人操作系统(Robot Operating System)的实现原理,从最底层分析ROS代码是如何
    的头像 发表于 05-19 17:42 1132次阅读

    ROS机器人操作系统

    可能很多初学者听到机器人操作系统,就被“操作系统”几个字吓住了。其实简单点说,**ROS就是一个分布式的通信框架,帮助程序进程之间更方便地通
    的头像 发表于 05-19 17:46 2138次阅读
    <b class='flag-5'>ROS</b><b class='flag-5'>机器人</b><b class='flag-5'>操作系统</b>

    移动机器人ROS操作系统原理与应用

    ROS1不同的是,ROS2诞生的目的就是为了让更多机器人使用,所以在设计上更加符合技术的发展方向,也运用了很多最近的技术框架。
    发表于 01-02 12:28 532次阅读
    移动<b class='flag-5'>机器人</b>与<b class='flag-5'>ROS</b><b class='flag-5'>操作系统</b>原理与应用