大部分自行接触 IsaacSim 模拟器的新手,总在安装软件之后就不知道要执行什么东西,因此放弃的比率相当高。
为了解决这个问题,本文就带着大家直接操作 LeRobot 开源项目中 SO-101 机械手臂在 IsaacSim 4.5中的模拟,从导入模型到简单调整参数让SO-101执行简单动作,最后再导入一个 Python 代码,让我们透过键盘针对不同舵机进行操作。一套流程下来大约十来分钟就能完成,这能快速地让新手对 IsaacSim 有基本的体验与了解。
关乎 LeRobot 开源项目的细节,请自行阅读 HuggingFace 以及在 Github 上的说明,这里不赘述。
现在就开始进入我们的入门练习步骤:
很多朋友一上来就会很冲动地直接点击桌面 IsaacSim 图标去启动模拟器,或者打开终端、到 IsaacSim 目录下执行 ./isaac-sim.sh
指令,但这样的启动方式在后面调用 ROS2 资源时会产生问题。因此最正规的启动方式,是开启终端之后,输入以下指令:
cd ~/isaacsim && ./isaac-sim.selector.sh
启动之后会先跳出下面对话框,请按照三个箭头处完成选项,然后点击 "START" 按钮去启动模拟器。
在腾讯应用项目中,已经上传了 100GB 的 Assets 内容,里面也包括了 SO-101 的模型,我们就可以直接导入使用。如果是在自己的电脑上操作的话,可以直接执行以下指令,将SO-101模型文件下载到本地:
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
就会看到模拟器已经铺上地板。
为了完成后面让 IsaacSim 模拟器与 ROS2 能进行交互工作,这里需要在模拟其中添加一个 Jiont States 。
请按照 Tools -> Robotics -> ROS 2 OmniGraphs -> Joint States
顺序进行(如下图)。
接着按照下面步骤进行
Add
World(defaultPrim) -> so101_new_calib -> root_joint
,选好之后点最下方 Select
Publisher
与 Subscriber
后面的方框选上,最后点击 OK 键这样就完成 Joint_State 的添加。
到这里基本已经完成 IsaacSim 模拟器导入的 SO-101手臂模型与ROS2之间的信息沟通管道。现在我们就到模拟器外部开启一个命令终端,执行以下指令:
source /opt/ros/humble/setup.sh
ros2 topic list
如果状态正常,就会出现如下图的 /parameter_events 与 /rosout 的信息。
现在回到模拟器,点击左侧功能最下方的 Paly -> Select All
,
再回到刚刚命令终端执行ros2 topic list
指令,就会看到如下的信息:
(env_isaaclab) ubunut@VM-0-9-ubuntu:$ ros2 topic list
/joint_command
/joint_states
/parameter_events
/rosout
现在多了 /joint_command 与 /joint_states 两个 topic,表示 IsaacSim 模拟器与 ROS2 完成通信连接。
当我们完成上面步骤之后,就可以执行一个 joint_keyboard_control.py
的 Python 代码,让我们透过键盘去控制SO-101机械手臂。
这里感谢 Jambo 博主在 《Isaac Sim 5与 ROS2 机械臂仿真教程》中《第九步:编写控制脚本》所提供的近百行代码,请点击链接到该处获取源码。
由于腾讯云实例上的文档编辑能力较弱,建议在本地先编辑 joint_keyboard_control.py 文件,将代码复制进去然后存档,再用 scp 将文件上传到腾讯云的实例中,这里的 IP 请自行在腾讯云控制台中查询。执行以下指令:
scp joint_keyboard_control.py ubuntu@<IP_OF_腾讯云实例>: # 注意:别忘了最后面的":"
现在就会将控制代码上传到腾讯云实例的主目录(/home/ubuntu)下,回到先去开启的终端,执行以下指令:
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 删除。