機器人學的研究充滿了令人興奮和有趣的問題,但也有一些令人沮喪的問題,如傳感器校準、構建轉換樹、管理分布式系統以及調試脆弱系統中的奇異故障。
我們在 QUT’s Centre for Robotics (QCR) 構建了 BenchBot 平臺?,使機器人學家能夠將時間集中在研究機器人學中令人興奮和有趣的問題上。
我們最近還升級到了 由 NVIDIA Omniverse 助力的 NVIDIA ISAAC Sim ,該公司對 BenchBot 平臺進行了大量重大改進。無論機器人是你的愛好、學術追求還是工作, BenchBot 和 NVIDIA ISAAC Sim 功能都能讓你只需幾行 Python 就可以跳入機器人的奇妙世界。在這篇文章中,我們分享了我們是如何創建 BenchBot 的,它的功能,我們計劃在未來在哪里使用它,以及您可以在自己的工作中使用它。我們的目標是通過介紹如何使用 BenchBot ,為您提供開始從事自己的機器人項目和研究的工具。我們還分享了與新的 NVIDIA ISAAC Sim 集成時所學到的知識。

這篇文章還為我們的 機器人視覺場景理解( RVSU )挑戰 提供了上下文,目前它正在進行第三次迭代。RVSU挑戰是一個動手解決家用機器人一個基本問題的機會:他們如何理解自己的環境中有什么,在哪里。通過競爭,您可以獲得包括 NVIDIA A6000 GPU 和2500美元現金在內的獎品份額。
BenchBot 背后的故事
BenchBot 解決了我們語義場景理解研究中的一個需求。我們主持了一個 目標檢測挑戰 并制作了 新的評估指標 ,但需要將這項工作擴展到機器人領域:
- 什么是理解場景?
- 如何評估理解水平?
- 代理在理解場景中扮演什么角色?
- 模擬中的理解能轉移到真實世界嗎?
- 為了理解如何轉移到現實世界,模擬需要什么?
我們制作了 BenchBot 平臺,使您能夠專注于這些重大問題,而不會迷失在機器人系統通常帶來的挑戰的海洋中。 BenchBot 由許多活動部件組成,這些部件將這些操作復雜性抽象出來(圖 2 )。
以下是 BenchBot 架構的一些關鍵組件和功能:
- 您可以通過編寫一個調用 BenchBot API 的 Python 腳本來創建機器人問題的解決方案。
- 您可以使用 可定制的評估工具 輕松了解您的解決方案執行給定機器人任務的情況。
- supervisor 代理了典型機器人系統的高級API和低級接口之間的通信。
- 主管是后端不可知的。機器人可以是真實的,也可以是模擬的,它只需要運行 ROS 。
- 所有配置都存在于 模塊化附加系統 中,允許您使用自己的任務、機器人、環境、評估方法、示例等輕松擴展系統。
我們所有的代碼都是 MIT 許可下的開源代碼。有關更多信息,請參閱 BenchBot :評估真實感 3D 仿真和真實機器人的機器人學研究 ( PDF )。
如果移動部件使用戶體驗復雜化,那么很多移動部件不一定是件好事,因此設計用戶體驗也是開發 BenchBot 的一個中心重點。
控制系統有三個基本命令:
benchbot_install --help benchbot_run --help benchbot_submit --help
以下命令有助于跨多個環境構建強大的評估工作流:
benchbot_batch --help
下面是一個簡單的 Python 命令,用于與機器人的感覺運動能力交互:
python from benchbot_api import Agent, BenchBot class MyAgent(Agent): def is_done(self, action_result): … def pick_action(self, observations, action_list): … def save_result(self, filename, empty_results, results_format_fns): … BenchBot(agent=MyAgent()).run()
有了一個簡單的 Python API ,世界級的真實感模擬,以及管理整個系統所需的少量命令,我們已經準備好將 BenchBot 應用到我們的第一個大輸出: RVSU 挑戰。
RVSU 挑戰
RVSU 挑戰 促使研究人員開發出能夠理解周圍環境的語義和幾何方面的機器人視覺系統。挑戰包括六項任務,具有基于對象、語義、同步定位和映射( SLAM )和場景變化檢測( SCD )的多個難度級別。
挑戰還集中在家用機器人的一個核心要求上:它們需要了解其環境中的物體以及它們在哪里。這個問題本身就是語義 SLAM 任務中遇到的第一個挑戰,機器人必須探索環境,找到所有感興趣的對象,并將它們添加到 3D 地圖中。
SCD 任務更進一步,要求機器人在不同的時間點報告環境中對象的變化。我的同事 David Hall 在下面的視頻中出色地概述了這一挑戰。
使用 NVIDIA ISAAC Sim 將 RVSU 挑戰帶入生活
最近,我們將 BenchBot 從使用舊的基于虛幻引擎的 NVIDIA ISAAC Sim 升級為新的 Omniverse-powered NVIDIA ISAAC Sim 。這給 BenchBot 帶來了許多關鍵好處,讓我們對未來 Omniverse 仿真的發展感到興奮。我們看到顯著好處的領域包括:
- 質量:NVIDIA RTX 渲染生成了美麗的真實照片級模擬,所有這些都與我們之前使用的資產相同。
- 性能:我們獲得了強大的動態照明效果,以及復雜的映射反射,所有這些都是實時生成的,用于真實物理的實時模擬。
- 可定制化:在 Python API 對于 Omniverse 和 NVIDIA ISAAC , Sim 可以完全控制模擬器,允許我們重新啟動模擬、交換環境和以編程方式移動機器人。
- 簡約 :我們將 整個 C ++接口庫 替換為 單個 Python 文件 .
qcr/benchbot_sim_omni 存儲庫收集了我們在向新的 NVIDIA ISAAC Sim 過渡過程中的經驗教訓,還可以作為 BenchBot 生態系統之外的獨立軟件包使用。該軟件包是一個可定制的 HTTP API ,用于加載環境、放置機器人和控制仿真。它是使用 NVIDIA ISAAC Sim 以編程方式運行仿真的一個很好的起點。
我們歡迎關于如何擴展此包功能的請求和建議。我們還希望它能為您使用 NVIDIA ISAAC Sim 啟動自己的項目提供一些有用的示例,例如以下示例。
NVIDIA ISAAC Sim 中的開放環境
開放環境首先需要一個正在運行的模擬器實例。通過實例化SimulationApp
類創建一個新實例,使用open_usd
選項可以選擇初始打開的環境:
python from omni.isaac.kit import SimulationApp inst = SimulationApp({ "renderer": "RayTracedLighting", "headless": False, “open_usd”: MAP_USD_PATH, })
值得注意的是,每個 Python 腳本只能運行一個仿真實例,初始化實例后必須導入 NVIDIA ISAAC Sim 組件。
使用 NVIDIA ISAAC Sim API 中的幫助程序在運行時選擇不同的階段:
python from omni.isaac.core.utils.stage import open_stage, update_stage open_stage(usd_path=MAP_USD_PATH) update_stage()
在環境中放置機器人
在開始模擬之前,在環境中加載并放置機器人。使用Robot
類和以下代碼行執行此操作:
python from omni.isaac.core.robots import Robot from omni.isaac.core.utils.stage import add_reference_to_stage, update_stage add_reference_to_stage(usd_path=ROBOT_USD_PATH, prim_path=ROBOT_PRIM_PATH) robot = Robot(prim_path=ROBOT_PRIM_PATH, name=ROBOT_NAME) robot.set_world_pose(position=NP_XYZ * 100, orientation=NP_QUATERNION) update_stage()
控制模擬
NVIDIA ISAAC Sim 中的仿真由 SimulationContext 類控制:
python from omni.isaac.core import SimulationContext sim = SimulationContext() sim.play()
然后, step 方法對以 60Hz 運行的模擬進行細粒度控制。我們使用此控件來管理傳感器發布、轉換樹和狀態檢測邏輯。
我們偶然發現的另一個有用的代碼示例是使用dynamic_control
模塊在模擬過程中獲取機器人的地面真實姿勢:
python from omni.isaac.dynamic_control import _dynamic_control dc = _dynamic_control.acquire_dynamic_control_interface() robot_dc = dc.get_articulation_root_body(dc.get_object(ROBOT_PRIM_PATH)) gt_pose = dc.get_rigid_body_pose(robot_dc)
結果
希望這些代碼示例對您開始使用 NVIDIA ISAAC Sim 有所幫助。除此之外,我們還取得了一些令人印象深刻的成果:
- 我們的照片級真實感模擬的顯著改進
- 強大的實時照明效果
- 通過基本 Python 代碼完全定制
圖 3 、 4 和 5 顯示了從 Omniverse 過渡到 Omniverse 的一些我們最喜歡的視覺改進。
更進一步:其他領域的 BenchBot
雖然語義場景理解是我們研究的重點,也是我們在研究中使用語義場景的起源,但 BenchBot 的應用并不局限于這一領域。 BenchBot 使用豐富的 add-on architecture 構建,允許對系統進行模塊化添加和調整,以適應不同的問題領域。
QCR 的 視覺學習和理解研究計劃 已經開始利用這種靈活性將 BenchBot 及其全方位模擬應用于一系列有趣的問題。圖 6 顯示了我們正在考慮使用 BenchBot 的幾個領域:
- 致力于將最先進的語義 SLAM 與 QuadricSLAM 和我們的 開源 GTSAM 二次曲面擴展 結合使用。
- 使用 定制 BenchBot 附加組件 在 Omniverse 的照片級真實感模擬中收集合成數據集。
- 探索神經輻射場( NeRFs )如何幫助增強場景理解和 使用噪聲數據構建更好的對象貼圖 。
我們制作了 BenchBot ,重點是使其適合您的研究問題。雖然我們很喜歡將其應用于我們的研究問題,但我們很高興看到其他人將其應用于何處。 add-ons repository 中記錄了創建您自己的加載項,我們希望在 官方附加組件組織 中添加一些第三方加載項。
結論
我們希望這篇深入的評論具有深刻的見解,并幫助您進入機器人領域,解決令我們機器人專家興奮不已的問題。
我們歡迎參加 RVSU 挑戰賽,無論您對語義場景理解的興趣是隨意的還是正式的、學術的還是工業的、競爭的還是迭代的。我們認為,您會發現與 BenchBot 系統競爭是一種豐富的體驗。您可以 注冊挑戰 ,并通過 EvalAI 挑戰頁面 提交條目。
如果您正在尋找 BenchBot 和 Omniverse 的下一步發展方向,以下是一些建議:
- 按照 我們的教程?開始使用 BenchBot 。
- 創建一些 custom add-ons 并和 官方 BenchBot 頻道 共享。
- 使用 wrapping library 開始以編程方式運行 Omniverse 和 NVIDIA ISAAC Sim?.
- 如果你有研究協作的想法或你想將其應用到的問題,請聯系 BenchBot 的作者。
在QCR,我們很高興看到機器人技術的發展方向。有了 BenchBot 和新的 Omniverse-powered NVIDIA ISSAC Sim等工具,現在是加入并開始玩機器人的最佳時機。
?