账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
以马达控制器ROS1驱动程式实现机器人作业系统
 

【作者: ADI】2024年12月19日 星期四

浏览人次:【440】

机器人作业系统(ROS)驱动程式是基於ADI产品而开发,因此可直接在ROS生态系统中使用这些产品。本文概述如何在应用、产品和系统(例如自主导航、安全气泡地图和资料采集机器人)中使用和整合这些驱动程式;以及如此将如何有助於迅速评估新技术,并避免出现与协力厂商产品的互通性问题。


在本文探讨的所有产品中,将重点关注用於ADI Trinamic马达控制器的ROS驱动程式,该驱动程式是用於嵌入式运动控制的完整板级模组,融合ADI Trinamic运动控制专业知识,以及ADI的类比技术和电源设计技能。


什麽是ROS?

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


技术工作原理


ROS始於2007年,已成为自驾车、工业机器人、飞行器等领域备受欢迎的机器人开发原型制作平台。经过不断发展,该技术现在已经有两个版本:ROS1和ROS2。ROS1和ROS2系统必须相互隔离,但通过ROS桥,这两个系统之间可进行通讯和交换资料。


表一:ROS1和ROS2的主要区别

因素

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月推出以来则不断滚动更新发行版本。


ROS基本概念

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



图一 : ROS基本资料流程。
图一 : 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中,发表者节点是主题的广播者,而订阅者节点是主题的收听者。


在图二中,generic_motor_control的节点是广播者。/cmd_vel是velocity_ publisher发表的主题。这表示,velocity_publisher提供基於马达控制(或命令速度)的速度资讯。



图二 : 发表者-订阅者
图二 : 发表者-订阅者

而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主题透过发送消息(主题发布者)或接收消息(主题订阅者)进行通讯,并且必须采用匹配的资料类型。


例如,在图二中,来自velocity_publisher节点的速度资讯(命令速度)希??被velocity_subscriber节点存取/使用。如果主题发布者velocity_publisher使用资料类型geometry_msgs/Twist,则主题订阅者velocity_subscriber也应使用相同的资料类型。


服务

发表者-订阅者通讯模式是开放式模式,不适用於分散式系统中通常需要的回复交互。服务支援节点透过发送请求和接收回应进行通讯。发表者-订阅者通讯模式使用.srv档,在这些档中,指定了请求和回应的消息类型等服务描述。


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


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



图三 : 使用服务示例
图三 : 使用服务示例

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


将解决方案整合至ROS生态系统

ADI是ROS-Industrial联盟的正式成员,ROS-Industrial是一个开源专案,旨在将ROS软体的先进功能扩展到与工业相关的硬体与应用中。作为该技术社群的一份子,ADI最初的目标是针对工业领域开发专用模组。


ADI针对不同的专用模组开发了ROS驱动程式。为了展示所开发的驱动程式并利用ROS的功能,ADI也开发了ADI自主移动机器人(ADAM)作为内部自主移动平台(叁见图四)。



图四 : ADAM
图四 : ADAM

ADAM:ADI自主移动机器人

ADAM由ROS提供支援,并搭载ROS支援的不同元件。该平台展示了ADI的ROS驱动程式如何整合到移动机器人应用中,特别是自主导航应用。


图五所示为具有不同模组的ADAM的简化硬体图。该ADAM主要连接以下元件:


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


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


· EVAL-ADTF3175D-NXZ或 CMOS ToF提供出色的高解析度,与深度运算和处理、镭射驱动器、电源管理以及具有叁考韧体/软体的开发工具相辅相成,可带来更多优势。


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



图五 : ADAM硬体图
图五 : ADAM硬体图

图六所示为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),使机器人能够移动。



图六 : ADAM导航堆叠的简化ROS架构。
图六 : ADAM导航堆叠的简化ROS架构。

ADI Trinamic马达控制器ROS驱动程式


ADI Trinamic马达控制器(TMC)是用於嵌入式运动控制的完整板级解决方案,融合ADI Trinamic运动控制专业知识,以及ADI的类比技术和电源设计技能。支援单轴/多轴步进马达、无刷直流马达(BLDC)等各类马达,可用介面包括 CAN、 EtherCAT、RS-232、RS-485 和USB,支援的协定涵盖Trinamic运动控制语言(TMCL)、CANopen、 over EtherCAT (CoE)、 CANopen 或 Modbus。


名为TMCL-IDE的IDE可协助用户开发应用并对这些模组轻松重新编程。该IDE使用TMCL实现独立操作,或使用标准化CANopen协议,允许使用者设定叁数、即时针对资料进行视觉化处理,并开发/调试独立应用。


由於TMC使新型智慧执行器成为可能,并且随着ROS而日益普及,尤其是在机器人领域中,我们针对这些模组开发了额外的支援,如ROS驱动程式,进而进一步扩展制造业和工业自动化的用例。具体来说,预计这些ROS驱动程式将能够控制马达的速度、位置或扭矩,以及监控马达控制器和马达资讯。


TMC ROS驱动程式与TMCL-IDE提供的功能相似,但其能够让支援ROS的系统节点轻松使用这些TMC,无需安装任何其他驱动程式。截至本文发表之时,该驱动程式仅支援CAN介面(特别是SocketCAN),其他介面正在开发中,很快也将提供支援。此处列出目前支援的ADI Trinamic马达控制器模组(TMCM)。


软体架构

图七所示为adi_tmcl的简化软体架构。



图七 : adi_tmcl的简化软体架构
图七 : adi_tmcl的简化软体架构

如图七所示,由於adi_tmcl使用大多数Linux系统预设支援的SocketCAN 驱动程式,所以不需要任何额外的驱动程式。此外,adi_tmcl具有自己的TMCL协议解析器,因而能够理解用户请求的符合TMCL的发送/接收指令。作为最後一层,tmcl_ros_node以发表者、订阅者和服务的形式在ROS系统上提供直接介面。每种形式均提供特定的功能,这些功能可选择使用一组叁数进行配置。


结论

运用ADI Trinamic马达控制器可实现新型智慧执行器。随着ROS日益普及,尤其是在机器人领域,针对这些模组开发额外支援,如ROS驱动程式,旨在进一步扩展制造业和工业自动化用例。


本文展示ROS如何扩展元件,其带来的优势为提供附加价值,例如扩展工业应用;透过ROS通讯框架,与协力厂商产品可轻松实现交互操作;提供更广泛的选项,方便客户在其系统中选用产品;快速评估新技术并立即开始使用。


(本文作者为ADI软体系统工程师Krizelle Paulene Apostol,资深软体系统工程师Jamila Macagba及软体系统设计工程经理Maggie Maralit)


相关文章
CAD/CAM软体无缝加值协作
创新更容易!2024年受瞩目的Arduino创新产品简介
探讨用於工业马达控制的CANopen 协定
确保机器人的安全未来:资安的角色
双臂机器人引风潮 类人形应用尤欠东风
相关讨论
  相关新闻
» 卢超群:以科技提高生产力 明年半导体景气谨慎乐观并逐步成长
» Rohde & Schwarz 行动通讯测试高峰会聚焦无线通讯最新发展 - 现已提供线上回放
» 全球智慧手机用户数持续增长 2028年苹果将超越三星
»
» Honda发表全新e:HEV油电混合动力系统:S+ Shift技术


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.2048.18.118.164.227
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw