基于 NVIDIA Isaac Sim 与 ROS2 实现 Kaya 机器人全向运动控制
前言
全向运动是现代机器人的核心能力之一,能够让机器人无需转向即可向任意方向移动,在仓储自动化、服务机器人等对精度和灵活性要求较高的场景中不可或缺。NVIDIA Kaya 机器人搭载全向驱动系统,可无缝对接 NVIDIA Isaac Sim 仿真平台与 ROS2 框架,实现高效的仿真与实机控制。
一、前置准备
在进行 Isaac Sim 与 ROS2 的桥接前,需确保系统已正确安装适配的 ROS2 版本。
另外,需要在 Isaac Sim 中打开 ROS2 bridge:
![图片:ROS2 Bridge 界面]
二、核心技术基础
1. 全向运动与 Kaya 机器人
全向运动机器人拥有三个自由度,分别为前进 / 后退、横向移动和旋转运动。这类机器人通常配备全向轮等特殊运动机构,无需调整自身朝向就能完成方向切换。
NVIDIA Kaya 机器人是一款小型多功能机器人,基于 Jetson Nano 平台构建,适配 AI 与机器人应用开发。它搭载 3 个全向轮组成的全向驱动系统,支持与 Isaac Sim 的无缝集成,可实现仿真与真实环境的统一部署。
2. Isaac Sim 与 ROS2 的核心协作组件
在 Isaac Sim 中,OmniGraph 是实现仿真逻辑的核心工具,其节点通信机制与 ROS2 的节点 - 话题模型类似。控制 Kaya 机器人的关键 OmniGraph 节点包括以下四类:
- **Break 3 Vector:**将 3D 运动矢量分解为 x、y、z 三个独立分量,用于管理机器人的各运动轴。
- **Make 3 Vector:**将分解后的 x、y、z 分量重新组合为 3D 运动矢量,定义机器人的期望运动方向。
- **Articulator Controller:**负责控制机器人的关节与执行器,将期望运动矢量转化为轮子的实际物理运动指令。
- **Holonomic Driver:**全向驱动专用驱动节点,确保机器人按照设定速度平稳完成全向运动。
USD 文件则用于定义机器人的物理与视觉属性,包含轮子、传感器、执行器等关键部件的参数。OmniGraph 中的控制节点需要通过调用 USD 配置,才能实现对机器人运动的精准仿真。
以 Isaac Sim 4.5.0 为例,ActionGraph 作为实现形式:
![图片:ActionGraph 节点图示例]
在配置 Kaya 机器人时使用了大量官方节点。
三、OmniGraph 控制流程搭建
Isaac Sim 中 Kaya 机器人的全向运动控制,是通过 OmniGraph 节点的有序连接实现的,具体流程分为四步:
- **输入处理:**基于用户指令或传感器数据生成运动指令,传入 Break 3 Vector 节点进行矢量分解。
- **运动矢量重组:**分解后的 x、y、z 分量经处理后,通过 Make 3 Vector 节点重新组合为完整的期望运动矢量。
- **关节控制指令生成:**运动矢量被输入 Articulator Controller 节点,该节点计算每个轮子需要执行的动作,以达成期望运动状态。
- **全向运动执行:**Holonomic Driver 节点协调所有轮子的运动,确保机器人在仿真环境中完成平稳的全向移动。
![图片:ActionGraph 节点连接示意图]
四、ROS2 控制代码实现
要实现 ROS2 对 Kaya 机器人的控制,核心是编写节点程序,通过/cmd_vel 话题发布速度指令。
ROS2 编译并运行自定义功能包方法如下:
# 开启一个新的终端
cd ~/kaya_ws
# 切换到 kaya_ws 工作空间的根目录
colcon build --symlink-install
# 快速编译,适合代码修改后
source install/setup.bash
# 将编译后的工作空间'注册'到当前终端的 ROS 2 环境中
ros2 run kaya_control kaya_drive
# 启动 kaya_control 功能包中的 kaya_drive 节点(ROS 2 中'节点'是最小的可执行单元,对应一个功能模块)


