首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在腾讯云快速玩转IsaacSim 4.5(2)-导入与模拟SO-101手臂

在腾讯云快速玩转IsaacSim 4.5(2)-导入与模拟SO-101手臂

原创
作者头像
用户4730701
修改2025-08-20 15:09:31
修改2025-08-20 15:09:31
5850
举报

大部分自行接触 IsaacSim 模拟器的新手,总在安装软件之后就不知道要执行什么东西,因此放弃的比率相当高。

为了解决这个问题,本文就带着大家直接操作 LeRobot 开源项目中 SO-101 机械手臂在 IsaacSim 4.5中的模拟,从导入模型到简单调整参数让SO-101执行简单动作,最后再导入一个 Python 代码,让我们透过键盘针对不同舵机进行操作。一套流程下来大约十来分钟就能完成,这能快速地让新手对 IsaacSim 有基本的体验与了解。

关乎 LeRobot 开源项目的细节,请自行阅读 HuggingFace 以及在 Github 上的说明,这里不赘述。

现在就开始进入我们的入门练习步骤:

启动 IsaacSim 模拟器

很多朋友一上来就会很冲动地直接点击桌面 IsaacSim 图标去启动模拟器,或者打开终端、到 IsaacSim 目录下执行 ./isaac-sim.sh 指令,但这样的启动方式在后面调用 ROS2 资源时会产生问题。因此最正规的启动方式,是开启终端之后,输入以下指令:

代码语言:txt
复制
cd ~/isaacsim  &&  ./isaac-sim.selector.sh

启动之后会先跳出下面对话框,请按照三个箭头处完成选项,然后点击 "START" 按钮去启动模拟器。

导入 SO-101 模型

在腾讯应用项目中,已经上传了 100GB 的 Assets 内容,里面也包括了 SO-101 的模型,我们就可以直接导入使用。如果是在自己的电脑上操作的话,可以直接执行以下指令,将SO-101模型文件下载到本地:

代码语言:txt
复制
git clone https://github.com/TheRobotStudio/SO-ARM100.git

现在点击模拟器的 File -> Import 就会弹出资源管理器,按照下图箭头所指的顺序 isaacsim_assets -> SO-ARM-101 -> Simulation -> SO-101 ,然后在下面对话框中选择 so101_new_calib.urdf 文件,打开即可。

最开始导入的模型非常小,几乎只能看到中间有个小黄点,现在就用鼠标滚轮将手臂放大到合适的尺寸。

现在试试点击模拟器左车从下面往上数第二个的 Play 键,看看手臂是否会轻微的抖动呢?

为模拟环境添加地板

要进行模拟之前,必须要先为环境配置地板,这样才能知道模型移动的底线在那里。请按照下面步骤执行:

Create -> Physics -> Ground Plane

就会看到模拟器已经铺上地板。

添加 Joint State 为模拟器与 ROS 2 信息互传

为了完成后面让 IsaacSim 模拟器与 ROS2 能进行交互工作,这里需要在模拟其中添加一个 Jiont States 。

请按照 Tools -> Robotics -> ROS 2 OmniGraphs -> Joint States 顺序进行(如下图)。

接着按照下面步骤进行

  1. 点击 Add
  2. 打开 World(defaultPrim) -> so101_new_calib -> root_joint ,选好之后点最下方 Select
  3. 回到前一个对话框后,分别将PublisherSubscriber 后面的方框选上,最后点击 OK 键

这样就完成 Joint_State 的添加。

启动 ROS2 并检查状态

到这里基本已经完成 IsaacSim 模拟器导入的 SO-101手臂模型与ROS2之间的信息沟通管道。现在我们就到模拟器外部开启一个命令终端,执行以下指令:

代码语言:txt
复制
source /opt/ros/humble/setup.sh
ros2 topic list

如果状态正常,就会出现如下图的 /parameter_events 与 /rosout 的信息。

现在回到模拟器,点击左侧功能最下方的 Paly -> Select All

再回到刚刚命令终端执行ros2 topic list指令,就会看到如下的信息:

代码语言:txt
复制
(env_isaaclab) ubunut@VM-0-9-ubuntu:$ ros2 topic list
/joint_command
/joint_states
/parameter_events
/rosout

现在多了 /joint_command 与 /joint_states 两个 topic,表示 IsaacSim 模拟器与 ROS2 完成通信连接。

执行Python控制代码

当我们完成上面步骤之后,就可以执行一个 joint_keyboard_control.py的 Python 代码,让我们透过键盘去控制SO-101机械手臂。

这里感谢 Jambo 博主在 《Isaac Sim 5与 ROS2 机械臂仿真教程》中《第九步:编写控制脚本》所提供的近百行代码,请点击链接到该处获取源码。

由于腾讯云实例上的文档编辑能力较弱,建议在本地先编辑 joint_keyboard_control.py 文件,将代码复制进去然后存档,再用 scp 将文件上传到腾讯云的实例中,这里的 IP 请自行在腾讯云控制台中查询。执行以下指令:

代码语言:txt
复制
scp  joint_keyboard_control.py ubuntu@<IP_OF_腾讯云实例>:    # 注意:别忘了最后面的":"

现在就会将控制代码上传到腾讯云实例的主目录(/home/ubuntu)下,回到先去开启的终端,执行以下指令:

代码语言:txt
复制
python3 joint_keyboard_control.py

就会看到如下右图中显示的指示:

其中:

11-6:选择关键,因为SO-101手臂上有6个舵机关节,按数字键让我们可以选择要摆动的位置;

a/d:a/d: 调整关节位置(a=减小, d=增大),我们都过按 "a(减小)" 或 "d(增大)"舵机的角度

例如:我们按 1 选择 shoulder_pan 关节,然后一直按着 a 减小角度,就会看到手臂逆时针转动(如下图),很好玩吧!

其他的控制就请自行比照办理,相信到了这一步,应该就挺有成就感的,真正感受到 IsaacSim 模拟器的功能了!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 启动 IsaacSim 模拟器
  • 导入 SO-101 模型
  • 为模拟环境添加地板
  • 添加 Joint State 为模拟器与 ROS 2 信息互传
  • 启动 ROS2 并检查状态
  • 执行Python控制代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档