ROS(Robot Operating System)为机器人技术提供了标准化的开发框架和中间件,通过定义接口和约定,简化了硬件与软件的集成,提高了开发效率。它拥有强大的工具集和生态系统,支持从算法开发到系统集成的全过程,促进了技术创新与合作。
Isaac Lab是机器人训练平台,那么做数据驱动的机器人工作时,就很有必要与ROS打通,尤其在Sim2Real领域,很多Real的机器人环境都是基于ROS的。总之,ROS在机器人技术的全链条中,包括Sim2Real过程,都扮演着至关重要的角色。
经过实践我发现,在isaac lab里使用python ros似乎不是一个好的事情,官方目前还没有例程,找到一个相关issue,官方回答使用python ros似乎非常的慢,他们打算使用c++方法,实践也似乎证明了这一点,好在配置不复杂,加两个环境变量即可;
首先在isaac lab代码里添加启用ros2_bridge插件:
import omni
ext_manager = omni.kit.app.get_app().get_extension_manager()
ext_manager.set_extension_enabled_immediate("omni.isaac.ros2_bridge", True)
然后运行isaac lab 程序,会看到没有配置环境变量错误,主要为 RMW_IMPLEMENTATION 和 PTAH这两个;
[110.973s] Isaac Sim Python App is loaded.
[112.605s] Simulation App Startup Complete
[112.640s] [ext: omni.isaac.ros2_bridge-2.26.4] startup
2024-07-15 06:26:01 [112,595ms] [Warning] [omni.isaac.ros2_bridge.scripts.extension] ROS_DISTRO env var not found, Please source ROS2 Foxy, or Humble, before enabling this extension
[112.645s] Using backup internal ROS2 humble distro[116.239s] To use the internal libraries included with the extension please set:
RMW_IMPLEMENTATION=rmw_fastrtps_cpp
PATH=%PATH%;d:/omniverse/pkg/isaac_lab/isaaclab/_isaac_sim/exts/omni.isaac.ros2_bridge/humble/lib
Before starting Isaac Sim
2024-07-15 06:26:05 [116,189ms] [Error] [omni.isaac.ros2_bridge.scripts.extension] ROS2 Bridge startup failed
import rclpy failed
根据错误,设置环境变量即可
该方法应该在isaac sim相关的python程序中也适用;
打开WLS2 ubuntu,即可看到发布出来的 ros2 topic
isaac sim 与 WLS2 ros2实现通信可以看这篇文章:
http://t.csdnimg.cn/hXkWZhttp://t.csdnimg.cn/hXkWZ