网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 人工智能 > 人形机器人 >

具身智能入门Isaac Sim——机器人设置-中级搭建机

时间:2026-03-23 18:16

人气:

作者:admin

标签:

导读:摘要:本教程详细介绍了如何在NVIDIA IsaacSim中设置UR10e机械臂与Robotiq 2F-140夹爪的联合仿真系统。主要内容包括:1)通过Docker创建适配Python3.11的ROS2环境;2)将xacro格式转换为URDF并导入...

目录

1 设置一个机械臂

1.1 学习目标

1.2 前置条件

1.3 构建并安装UR描述包(仅限Linux)

1.3.1 基于Docker创建Isaac sim和ROS2适配的环境

1.3.2 报错处理

(1)网络连接致无法下载

(2)Docker无法识别显卡

1.3.3 克隆并导入UR描述包(UR10e机械臂)

1.3.4 克隆并导入Robotiq 2F-140夹爪

1.4 连接机械臂与夹爪

1.5.1 法1:使用图形用户界面 (GUI) 连接UR10e与Robotiq 2F-140夹爪

(推荐)1.5.2 法2:使用机器人装配器 (Robot Assembler) 连接UR10e与Robotiq 2F-140夹爪

1.5 运行仿真


1 设置一个机械臂

1.1 学习目标

这是四部分系列教程中的第一部分。本教程展示了如何从URDF文件将Universal Robots的 UR10e机器人和Robotiq的2F-140夹持器导入NVIDIA Isaac Sim,并将它们连接在同一个关节架构(Articulation)下。

1.2 前置条件

(1)如果你是首次接触NVIDIA Isaac Sim,请在开始本教程前先完成 轮式机器人设置教程(Wheeled Robot Set Up Tutorials)。

a.具身智能入门Isaac Sim——机器人设置-初级设计轮式机器人1https://blog.csdn.net/weixin_45728280/article/details/158703717?spm=1011.2415.3001.5331

b.具身智能入门Isaac Sim——机器人设置-初级设计轮式机器人2https://blog.csdn.net/weixin_45728280/article/details/158841643?spm=1011.2415.3001.5331

c.具身智能入门Isaac Sim——机器人设置-初级设计轮式机器人3https://blog.csdn.net/weixin_45728280/article/details/158966478?spm=1011.2415.3001.5331

(2)在开始前请回顾ROS 2的安装说明:ROS 2 Installation。

安装链接:https://blog.csdn.net/weixin_45728280/article/details/155282593?spm=1011.2415.3001.5331

(3)回顾URDF导入器教程:URDF Importer Extension。

https://docs.isaacsim.omniverse.nvidia.com/5.1.0/importer_exporter/ext_isaacsim_asset_importer_urdf.html#isaac-sim-urdf-importer

(4)在已加载ROS环境的终端中,使用以下命令安装 xacro(仅限 Linux)

sudo apt install ros-$ROS_DISTRO-xacro

(5)在内容浏览器(Content Browser)中定位到import_manipulator文件夹,路径为:Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/

PS.

ROS URDF导入步骤仅在Linux上经过测试,在Windows上可能无法正常工作。如果正在使用Windows,可以跳过ROS导入步骤,直接使用内容浏览器中提供的USD文件。

1.3 构建并安装UR描述包(仅限Linux)

Isaac Sim 5.1需要Python 3.11,而ROS2的UR描述包原生并不支持该版本(Ubuntu22.04默认Python3.10、Ubuntu24.04默认Python3.12,Python查询指令如下),因此我们需要从源码构建该包。

python3 --version

PS.Isaac Sim内部是Python3.11,使用ROS2时两者Python版本必须一致!

1.3.1 基于Docker创建Isaac sim和ROS2适配的环境

通过Docker创造出一个干净的Python 3.11 + ROS 2编译环境,本文以Ubuntu22.04 Humble为例,Ubuntu22.04、Jazzy24.04教程参考https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/install_ros.html#isaac-custom-ros-build

(1)下载IsaacSim-ros_workspaces包

git clone https://github.com/isaac-sim/IsaacSim-ros_workspaces.git

(2)安装Docker(如已安装跳过)

a.更新软件包索引

sudo apt-get update

b.安装必要系统工具

sudo apt-get install ca-certificates curl gnupg

c.添加Docker官方GPG密钥

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

d.添加Docker软件源

echo \
  "往 /etc/apt/sources.list.d/docker.list 写入配置..."
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

e.更新并安装Docker

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

f.解决权限问题(不用sudo)

sudo groupadd docker
sudo usermod -aG docker $USER

g.重启

h.验证安装成功

docker ps

(3)编译dockerfile(类似于一键编译脚本)

如出现报错可查看1.3.2中是否有相同的,博主已把编译过程中出现的报错及解决方案放在里面。注意一定要保证网络流畅性,该编译过程根据网速情况需要1h上下!

cd IsaacSim-ros_workspaces
./build_ros.sh -d humble -v 22.04

(4)激活环境

告诉当前的终端(Terminal)去哪里寻找ROS 2的指令、软件包和库文件,激活Isaac Sim专用的ROS 2接口环境。

打开新的终端,然后输入如下指令:

cd IsaacSim-ros_workspaces
source build_ws/humble/humble_ws/install/local_setup.bash
source build_ws/humble/isaac_sim_ros_ws/install/local_setup.bash
isaac sim

如启动isaac sim时报错无法识别显卡详见1.3.2

1.3.2 报错处理
(1)网络连接致无法下载

报错:

ethan@ec-embodied:~/IsaacSim-ros_workspaces$ ./build_ros.sh -d humble -v 22.04
Updating git submodules...
Using Ubuntu 22.04 with ROS Humble
[+] Building 5.9s (14/43)                                        docker:default
 => [internal] load build definition from ubuntu_22_humble_python_312_min  0.0s
 => => transferring dockerfile: 7.31kB                                     0.0s
 => [internal] load metadata for docker.io/library/ubuntu:22.04            5.7s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => [ 1/39] FROM docker.io/library/ubuntu:22.04@sha256:3ba65aa20f86a0fad9  0.0s
 => => resolve docker.io/library/ubuntu:22.04@sha256:3ba65aa20f86a0fad9df  0.0s
 => [internal] load build context                                          0.0s
 => => transferring context: 18.78kB                                       0.0s
 => CACHED [ 2/39] WORKDIR /workspace                                      0.0s
 => CACHED [ 3/39] RUN apt-get update &&     apt-get install -y --no-inst  0.0s
 => CACHED [ 4/39] RUN apt update && apt upgrade -y && apt clean           0.0s
 => CACHED [ 5/39] RUN apt update &&     apt install --no-install-recomme  0.0s
 => CACHED [ 6/39] RUN apt update && apt install locales                   0.0s
 => CACHED [ 7/39] RUN locale-gen en_US en_US.UTF-8 &&     update-locale   0.0s
 => CACHED [ 8/39] RUN update-alternatives --install /usr/bin/python3 pyt  0.0s
 => CACHED [ 9/39] RUN curl -s https://bootstrap.pypa.io/get-pip.py -o ge  0.0s
 => ERROR [10/39] RUN wget https://raw.githubusercontent.com/ros/rosdistr  0.1s
------
 > [10/39] RUN wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc && apt-key add ros.asc:
0.046 --2026-03-14 13:51:52--  https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc
0.047 Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 0.0.0.0, ::
0.048 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|0.0.0.0|:443... failed: Connection refused.
0.048 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... failed: Connection refused.
------
ubuntu_22_humble_python_312_minimal.dockerfile:47
--------------------
  45 |         rm get-pip.py
  46 |     
  47 | >>> RUN wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc && apt-key add ros.asc
  48 |     RUN sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
  49 |     
--------------------
ERROR: failed to build: failed

解决方案:

修改脚本,添加走代理网络同时提高网络容忍度,文件路径如下(如需具体修改细节可给博主留言,日常在线)

(2)Docker无法识别显卡
报错:
ethan@ec-embodied:~/IsaacSim-ros_workspaces$ isaac sim
[sudo] password for ethan: 
non-network local connections being added to access control list
docker: Error response from daemon: unknown or invalid runtime name: nvidia

Run 'docker run --help' for more information

解决:

# 添加仓库源
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 更新并安装
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

# 配置 Docker 运行时
sudo nvidia-ctk runtime configure --runtime=docker

# 重启 Docker 服务
sudo systemctl restart docker

# 验证显卡可以识别,此处指令后可以看到显卡信息
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.7.1-base-ubuntu22.04 nvidia-smi
1.3.3 克隆并导入UR描述包(UR10e机械臂)

关闭刚才启动的Isaac Sim,打开新的终端,输入如下指令:

(1)进入IsaacSim-ros_workspaces

cd ~/IsaacSim-ros_workspaces/build_ws/humble/isaac_sim_ros_ws/src

(2)克隆代码并切换分支

git clone https://github.com/UniversalRobots/Universal_Robots_ROS2_Description.git
cd Universal_Robots_ROS2_Description
git checkout humble

PS.如大家使用的是Isaacsim5.1,Ubuntu24.04,直接主机打开ROS节点确认节点名称后在Isaacsim上调用即可。如不会可以后台给博主私信。

!!!超级大雷!!!

       官方教程是通过ROS节点调用该机械臂,但因为ubuntu22.04默认编译是python3.10,Isaacsim5.1是python3.12(虽然教程上说是python3.11,但早已切换),isaacsim与ros编译版本不一致就无法进行通信桥接(即使通过docker去隔离环境也不行、如有技术大神可以做到求分享)

       故博主该处避开了ROS2导入,通过将机械臂.xacro格式转为isaacsim能够识别的urdf格式进行调用。

       通过ROS2调用的好处在与ROS2中修改机械臂可以实时传回Isaacsim,而格式转换不行,该方案是博主目前能够找到的最优的解决方案,否则就把Isaacsim版本降为4.2 or 使用ubuntu24.04 复用isaacsim5.1。

(3)转换机械臂格式

cd ~/IsaacSim-ros_workspaces/build_ws/humble/isaac_sim_ros_ws/src/Universal_Robots_ROS2_Description/urdf/

格式转换:

xacro ur.urdf.xacro \
    name:=ur10e \
    ur_type:=ur10e \
    tf_prefix:=ur10e_ \
    visual_params:=$(ros2 pkg prefix ur_description)/share/ur_description/config/ur10e/visual_parameters.yaml \
    physical_params:=$(ros2 pkg prefix ur_description)/share/ur_description/config/ur10e/physical_parameters.yaml \
    joint_limit_params:=$(ros2 pkg prefix ur_description)/share/ur_description/config/ur10e/joint_limits.yaml \
    kinematics_params:=$(ros2 pkg prefix ur_description)/share/ur_description/config/ur10e/default_kinematics.yaml \
    > ur10e_for_isaac.urdf

建立相对路径(否则Isaacsim无法识别)

sed -i 's|package://ur_description|/home/ethan/IsaacSim-ros_workspaces/build_ws/humble/isaac_sim_ros_ws/src/Universal_Robots_ROS2_Description|g' ur10e_for_isaac.urdf

(4)导入机械臂

打开isaacsim-File-Import-找到存储urdf路径-Import

设置参数并设置存储路径(output)

1.3.4 克隆并导入Robotiq 2F-140夹爪

(1)克隆

cd /IsaacSim-ros_workspaces/build_ws/humble/isaac_sim_ros_ws/src
git clone https://github.com/ros-industrial-attic/robotiq.git

(2)修改路径

由于包是为ROS 1设计的旧包,在Isaac Sim中使用它需要修改路径。

进入包目录下robotiq/robotiq_2f_140_gripper_visualization/urdf,将四个文件内filename路径修改为下图样式,注意不要遗漏

(3)将xacro格式转为urdf

(4)导入Isaac sim

新建场景

File > New。这是为了创建一个纯净的工作空间来生成夹爪的“零件包”(USD 文件)。

导入文件

File > Import,选中刚才转换好的robotiq_2f_140.urdf

设置输出路径

USD Output设为目标路径。

关键物理参数设置

finger_joint (主驱动关节): Natural Frequency(固有频率)设为300。这决定了夹爪合拢的力量感和响应速度。

其他Mimic关节 (从动关节): Natural Frequency设为2500。为什么要设这么高? 因为从动关节需要极高的硬度来维持连杆机构不散架,防止它们在高速运动时像面条一样晃动。​​​​​

(5)关节参数设置

导入模型已经提前设置好,具体参数及作用如下

a.Lower/Upper Limit

关节旋转的最小和最大角度。

b.Stiffness (刚度) & Damping (阻尼)

决定了夹爪合拢时是“硬邦邦”的还是“软绵绵”的。这里的37.51957是经过优化的经验值。

c.Max Force

 夹爪最大的握力。

d.Stiffness (刚度)

想象成关节处装了一个弹簧。数值越高,手指越硬,越能抵抗外力;数值低,手指就像软糖,一碰就歪。

e.Damping (阻尼)

想象成关节里灌了浓稠的机油。它用来吸收多余的能量。如果没有阻尼,手指在运动停止时会来回像钟摆一样晃动很久。

f.Reference Joint (参考关节):

告诉仿真器“谁是老大”。对于这个夹爪,finger_joint是老大,其他关节必须模仿它的动作。

g.Natural Frequency (固有频率)

这个参数在Isaac Sim中非常特殊。它代表了控制器的响应速度。

(6)主从关节联动逻辑(Mimic Logic)

a.Reference Joint (参考关节)

路径:/robotiq_arg2f_140_model/joints/finger_joint

含义:这是“领头羊”。所有的从动关节都会盯着这个关节。当这个关节转动 1°,其他从动关节会根据传动比(Gearing)跟着转。

b.Reference Joint Axis (参考轴)

参数:rotX

含义:告诉系统,主关节是在哪个轴上旋转的。在这里是绕X轴旋转。如果选错了轴(比如选成了rotY),从动关节就收不到正确的运动信号。

c.Natural Frequency (固有频率):2500

核心作用:硬化连接。

深度解释:在物理引擎中,模拟一组互相连接的连杆是非常消耗计算资源的,且容易产生误差。把频率设为2500(非常高),是为了让这些从动关节的响应极其迅速、生硬。这样它们就能紧紧地“锁”在主关节的运动上,防止在高速运动或碰撞时,连杆之间出现肉眼可见的裂缝或延迟。

d.Damping Ratio (阻尼比):0.005

核心作用:极速同步。

深度解释:这个值接近于 0。它的目的是消除任何延迟感。如果这个值设高了,从动关节在跟随主关节时会显得“慢半拍”或者有粘滞感,导致夹爪闭合不严。

1.4 连接机械臂与夹爪

       正如现实中的机器人可以针对不同任务更换工具一样,仿真机器人也能从这种能力中获益。本节概述了将UR10e机器人与Robotiq 2F-140夹爪连接的两种方法:

  • 选项 1:展示如何使用固定关节(Fixed Joint)和共享关节链(Shared Articulation)将夹爪直接连接到机器人上。

  • 选项 2: 展示如何利用机器人装配器(Robot Assembler)和变体(Variant)将末端执行器连接到机器人。根据所选变体的不同,夹爪将作为负载(Payload)添加,这使我们能够根据启用的变体来加载或卸载不同的末端执行器。

1.5.1 法1:使用图形用户界面 (GUI) 连接UR10e与Robotiq 2F-140夹爪

(1)打开文件

打开在上一个活动中创建的UR10e USD 文件 (ur.usd)。

(2)导入夹爪

将我们之前创建的robotiq_2f_140.usd文件拖放到场景(Stage)中。

(3)重命名

将导入的 robotiq_2f_140.usd 原始节点(Prim)重命名为 ee_link

(4)设置位姿

ee_link 的变换(Xform设置为与wrist_3_link相同的位置和朝向。

平移 (Translate): (1.18425, 0.2907, 0.06085)

旋转 (Orient): (-90, 0, -90)

(5)移除重复根节点

选中ee_link/root_joint

在属性编辑器(Property Editor)的Physics > Articulation Root部分,移除Articulation Root。注意:确保整个机器人只保留一个单一的Articulation Root(通常在机器人的底座)。

(6)配置关节

向下滚动到属性编辑器中的Joints部分。

将Body0设置为/ur10e/wrist_3_link,从而将末端执行器连接到机器人上。

(7)嵌套机器人架构 (Robot Schema)

将UR10e的机器人架构与2F-140夹爪的架构合并,

选中ur10e原始节点。向下滚动到属性编辑器的IsaacRobotAPI部分。在 isaac:physics:robotjointsisaac:physics:robotLinks两个字段中均添加 /ur10e/ee_link这样做是为了确保UR10e的机器人架构中包含了2F-140夹爪的架构信息。

(推荐)1.5.2 法2:使用机器人装配器 (Robot Assembler) 连接UR10e与Robotiq 2F-140夹爪

        使用“机器人装配器”来连接UR10e与Robotiq 2F-140夹爪。机器人装配器会将夹爪作为变体(Variant)添加到基础机器人的子层中,从而让你在切换不同末端执行器时拥有更大的灵活性。

(1)打开文件

 打开在上一个活动中创建的UR10e USD文件 (ur.usd)。

(2)导入夹爪

将我们之前创建的robotiq_2f_140.usd文件拖放到场景(Stage)中。

(3)重命名

将导入的robotiq_2f_140 原始节点(Prim)重命名为ee_link

报红清理掉即可。

(4)打开装配器

通过菜单栏Tools > Robotics > Asset Editor > Robot Assembler打开机器人装配器。

(5)设置基础机器人 (Base Robot)

在Select Base Robot字段中,选择/ur10e

在Attach Point 字段中,选择 wrist_3_link

(6)设置待连接机器人 (Attach Robot)

在Select Attach Robot字段中,选择 /ur10e/ee_link。在Attach Point字段中,选择 robotiq_arg2f_base_link

(7)设置命名空间

将Assembly Namespace设置为ee_link

(8)开始装配

点击Begin Assembling Process(开始装配流程)。

(9)调整位姿

调整连接点的朝向,以确保末端执行器正确安装到夹爪上。通过点击Z +90,使夹爪绕 Z 轴旋转 90 度。

(10)测试

点击Assemble and Simulate(装配并仿真)来测试流程。

(11)完成

点击End Simulation And Finish(结束仿真并完成)以结束该过程。

1.5 运行仿真

(1)选中机器人

在 Stage(场景) 面板中,选中ur10e原始节点(Prim)。

(2)查找变体栏

在右下角的Property Editor(属性编辑器) 中,找到 Variants(变体) 部分。

(3)移除夹爪

ee_link 选项旁,选择None,夹爪将从机器人上移除。

(4)添加夹爪

ee_link选项旁,选择robotiq_2f_140,夹爪将重新添加到机器人上。

(5)保存资产

通过菜单栏File > Save或按Ctrl+S保存该资产。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信