1、什么是Isaac ? NVIDIA Isaac Introduce
Isaac是NVIDIA开发的一套应用于机器人的软件工具包由如下三部分组成:
Isaac Robot Engine(机器人引擎): 指的是一个框架,允许开发者轻松编写模块化应用程序并将其部署在开发的机器人上;
Isaac GEMs(GEMs应用集): 一个基于GPU加速的机器人算法集合包含了从路径规划到视觉感知;
Applications(应用):大量的应用案例包含从展示机器人特定属性的基础应用 到 实现机器人在复杂场景下的深度应用;
Isaac SDK附带了一个基于 Bazel 编译系统的C ++和Python工具链,用于构建和部署应用程序。开发者可以使用像 bazel run //apps/samples/realsense_camera
这样简单的命令来构建和运行自己的应用程序。所有外部依赖项都会被自动提取到系统中并会被编译为所有必需的文件(如此开发者不需要过度关系外部依赖,从而节约开发视觉)。
下图显示了Isaac SDK的生态系统:
Isaac Robot Engine
Isaac SDK includes the Isaac Robot Engine, a feature-rich framework for building modular robotics applications. With Isaac you can build an application out of small components which pass messages between each other and which can be configured to your custom use case. The Understanding Codelets section of this document gives a brief introduction on how to use components.
Many useful robotics libraries already exist, and Isaac integrates many of these, such as CUDA, NPP, OpenCV, ROS, PCL (wip), Eigen, and others.
Isaac is optimized for NVIDIA hardware like Jetson Xavier, Jetson TX/2, Jetson Nano, and workstation GPUs. You can deploy a cross-compiled application optimized for your platform with a single short command line script.
Gems
Robotics often combines many different disciplines including low-level hardware drivers, safe planning algorithms, fast and accurate computer vision, and high-level artificial intelligence. All of these disciplines have different challenges and success often require years of expertise.
The Isaac SDK comes with a collection of high-performance algorithms to solve challenging robotics problems. These algorithms are known as GEMs. Most importantly, Isaac provides integration of deep neural networks like stereo depth estimation and object detection.
Isaac includes GEMs for support of important hardware components and robotic peripherals.
The Isaac SDK prioritizes navigation functionality in the current release (2019.1), but other domains are planned to be added or enhanced in future releases. See the GEMs section of this document for further information.
Applications
Various sample applications are provided which highlight features of the Robot Engine or focus on the functionality of a particular GEM. These sample applications are good starting points for learning Isaac.
The Isaac SDK is meant for development of applications for complicated use cases like a delivery robot. The Carter application gives you a starting point for building your own delivery robot. Carter can drive to a goal location, patrol in a building, or bring you popcorn. The navigation stack of Carter is based on a Lidar.
To start on a smaller scale, see the Kaya application. Isaac includes instructions on how to build your own robot and bring it to life with artificial intelligence.
To ask and answer questions in the Isaac SDK developer community, visit the Isaac SDK Forum.
2、Isaac 如何安装? NVIDIA Isaac Setup
前言:
Isaac Ubuntu Host端仅支持Ubuntu18.04 (需安装CUDA, cuDNN,OpenCV,Python3,TensorFlow等等),运行NV 提供的脚本可自动安装!
Ubunut18.04 Host安装Isaac:
dennis@dennis:~/jetson/isaac_sdk_17919$ engine/build/scripts/install_dependencies.sh
dennis@dennis:~/jetson/isaac_sdk_17919$ python3 -c "import cv2 ; print(cv2.__version__)"
4.1.0
dennis@dennis:~$ python3 -c "import tensorflow as tf; print(tf.__version__)"
1.13.1
dennis@dennis:~/jetson/isaac_sdk_17919$ cudafe++ --version
cudafe: NVIDIA (R) Cuda Language Front End
Portions Copyright (c) 2005-2018 NVIDIA Corporation
Portions Copyright (c) 1988-2016 Edison Design Group Inc.
Based on Edison Design Group C/C++ Front End, version 4.14 (Sep 30 2018 21:07:44)
Cuda compilation tools, release 10.0, V10.0.166
dennis@dennis:~/jetson/isaac_sdk_17919$ nvcc
nvcc fatal : No input files specified; use option --help for more information
dennis@dennis:~/jetson/isaac_sdk_17919$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sun_Sep_30_21:07:36_CDT_2018
Cuda compilation tools, release 10.0, V10.0.166
dennis@dennis:~/jetson/isaac_sdk_17919$ bazel version
Build label: 0.19.2
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Mon Nov 19 16:25:09 2018 (1542644709)
Build timestamp: 1542644709
Jetson TX2(JetPack4.2 Installed) 安装Isaac:
dennis@dennis:~/jetson/isaac_sdk_17919$ engine/build/scripts/install_dependencies_jetson.sh -u nvidia -h 192.168.1.161
3、Run Isaac(试用)NVIDIA Isaac Sample
Step1. Bazel 编译apps/samples/stereo_dummy案例
Bug001. bazel build 错误(加载package 失败)
解决: 必须 root 即 sudo bazel build //apps/samples/stereo_dummy
dennis@dennis:~/jetson/isaac_sdk_17919/apps/samples/stereo_dummy$ bazel build //apps/samples/stereo_dummy
ERROR: error loading package '': Extension file not found. Unable to load package for '@com_github_googlecartographer_cartographer//:bazel/repositories.bzl': BUILD file not found on package path
ERROR: Skipping '//apps/samples/stereo_dummy': error loading package '': Extension file not found. Unable to load package for '@com_github_googlecartographer_cartographer//:bazel/repositories.bzl': BUILD file not found on package path
WARNING: Target pattern parsing failed.
ERROR: error loading package '': Extension file not found. Unable to load package for '@com_github_googlecartographer_cartographer//:bazel/repositories.bzl': BUILD file not found on package path
INFO: Elapsed time: 0.045s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)
PS: 编译时间根据配置时间长短不一
Step2. Bazel 运行apps/samples/stereo_dummy 案例
运行脚本:
$sudo bazel run //apps/samples/stereo_dummy
等待服务启动后,打开UbuntuHost 浏览器,输入:http://localhost:3000,即可看的如下Isaac Sight界面
dennis@dennis:~/jetson/isaac_sdk_17919$ sudo bazel run //apps/samples/stereo_dummy
[sudo] password for dennis:
WARNING: /home/dennis/jetson/isaac_sdk_17919/packages/viewers/BUILD:14:12: in srcs attribute of cc_binary rule //packages/viewers:libviewers_module.so: please do not import '//packages_x86_64/viewers:libviewers_module.so' directly. You should either move the file to this package or depend on an appropriate rule there
INFO: Analysed target //apps/samples/stereo_dummy:stereo_dummy (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
Target //apps/samples/stereo_dummy:stereo_dummy up-to-date:
bazel-genfiles/apps/samples/stereo_dummy/run_stereo_dummy
bazel-bin/apps/samples/stereo_dummy/stereo_dummy
INFO: Elapsed time: 0.263s, Critical Path: 0.00s, Remote (0.00% of the time): [queue: 0.00%, setup: 0.00%, process: 0.00%]
INFO: 0 processes.
INFO: Build completed successfully, 1 total action
INFO: Build completed successfully, 1 total action
2019-04-26 17:45:16.700 WARNING engine/alice/backend/backend.cpp@141: This application does not have an explicit scheduler configuration. One will be autogenerated to the best of the systems abilities if possible.
2019-04-26 17:45:16.700 WARNING engine/gems/scheduler/scheduler.cpp@327: No default execution groups specified. Attempting to create scheduler configuration for 8 remaining cores. This may be non optimal for the system and application.
2019-04-26 17:45:16.700 INFO engine/gems/scheduler/scheduler.cpp@280: Scheduler execution groups are:
2019-04-26 17:45:16.700 INFO engine/gems/scheduler/scheduler.cpp@289: __BlockerGroup__: Cores = [6, 7], Workers = No
2019-04-26 17:45:16.700 INFO engine/gems/scheduler/scheduler.cpp@289: __WorkerGroup__: Cores = [0, 1, 2, 3, 4, 5], Workers = Yes
2019-04-26 17:45:16.703 INFO engine/alice/backend/modules.cpp@217: Loaded module 'packages/dummies/libdummies_module.so': Now has 36 components total
2019-04-26 17:45:16.708 INFO engine/alice/backend/modules.cpp@217: Loaded module 'packages/viewers/libviewers_module.so': Now has 46 components total
2019-04-26 17:45:16.708 INFO engine/alice/application.cpp@309: Loaded 46 components: isaac::DummyStereoCamera, isaac::DummyTensorListGenerator, isaac::alice::Behavior, isaac::alice::Config, isaac::alice::ConfigBridge, isaac::alice::Failsafe, isaac::alice::FailsafeHeartbeat, isaac::alice::InteractiveMarkersBridge, isaac::alice::MessageLedger, isaac::alice::NodeStatistics, isaac::alice::Pose, isaac::alice::PoseInitializer, isaac::alice::PoseTreeJsonBridge, isaac::alice::PyCodelet, isaac::alice::Recorder, isaac::alice::RecorderBridge, isaac::alice::Replay, isaac::alice::ReplayBridge, isaac::alice::Scheduling, isaac::alice::Sight, isaac::alice::SightChannelStatus, isaac::alice::TcpPublisher, isaac::alice::TcpSubscriber, isaac::alice::Throttle, isaac::alice::UdpPublisher, isaac::alice::UdpSubscriber, isaac::alice::behaviors::Behavior, isaac::alice::behaviors::MemorySelectorBehavior, isaac::alice::behaviors::MemorySequenceBehavior, isaac::alice::behaviors::NodeGroup, isaac::alice::behaviors::ParallelBehavior, isaac::alice::behaviors::SwitchBehavior, isaac::alice::behaviors::TimerBehavior, isaac::dummies::ImageLoader, isaac::ml::SampleAccumulator, isaac::navigation::GroupSelectorBehavior, isaac::navigation::SelectorBehavior, isaac::viewers::ColorCameraViewer, isaac::viewers::DepthCameraViewer, isaac::viewers::DetectionsViewer, isaac::viewers::LidarViewer, isaac::viewers::MosaicViewer, isaac::viewers::PointCloudViewer, isaac::viewers::SegmentationCameraViewer, isaac::viewers::SegmentationViewer, isaac::viewers::TensorListViewer,
2019-04-26 17:45:16.708 DEBUG engine/alice/backend/node_backend.cpp@48: Creating node 'dummy'
2019-04-26 17:45:16.708 DEBUG engine/alice/backend/node_backend.cpp@48: Creating node 'depth_visualization'
2019-04-26 17:45:16.708 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='depth_visualization', component='isaac.viewers.DepthCameraViewer', key='tick_period'
2019-04-26 17:45:16.708 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='depth_visualization', component='isaac.viewers.DepthCameraViewer', key='colormap'
2019-04-26 17:45:16.712 INFO engine/alice/backend/modules.cpp@217: Loaded module 'packages/sight/libsight_module.so': Now has 48 components total
2019-04-26 17:45:16.712 DEBUG engine/alice/backend/node_backend.cpp@48: Creating node 'websight'
2019-04-26 17:45:16.712 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='websight', component='WebsightServer', key='tick_period'
2019-04-26 17:45:16.712 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='websight', component='isaac.sight.AliceSight', key='tick_period'
2019-04-26 17:45:16.712 DEBUG engine/alice/backend/node_backend.cpp@48: Creating node '_config_bridge'
2019-04-26 17:45:16.713 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='_config_bridge', component='isaac.alice.ConfigBridge', key='tick_period'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/node_backend.cpp@48: Creating node '_statistics'
2019-04-26 17:45:16.713 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='_statistics', component='NodeStatistics', key='tick_period'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/node_backend.cpp@48: Creating node '_pose_tree_bridge'
2019-04-26 17:45:16.713 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='_pose_tree_bridge', component='PoseTreeJsonBridge', key='tick_period'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/node_backend.cpp@48: Creating node '_interactive_markers_bridge'
2019-04-26 17:45:16.713 WARNING engine/alice/hooks/config_hook.cpp@58: Configuration does not contain a value and no default provided: node='_interactive_markers_bridge', component='InteractiveMarkersBridge', key='tick_period'
2019-04-26 17:45:16.713 INFO engine/alice/application.cpp@256: Starting application 'stereo_dummy' (instance UUID: 'ff3177ac-6807-11e9-9ae7-9dffd18dadfc') ...
2019-04-26 17:45:16.713 DEBUG engine/gems/scheduler/execution_groups.cpp@449: Launching 0 pre-start job(s)
2019-04-26 17:45:16.713 DEBUG engine/gems/scheduler/execution_groups.cpp@458: Replaying 0 pre-start event(s)
2019-04-26 17:45:16.713 DEBUG engine/gems/scheduler/execution_groups.cpp@449: Launching 0 pre-start job(s)
2019-04-26 17:45:16.713 DEBUG engine/gems/scheduler/execution_groups.cpp@458: Replaying 0 pre-start event(s)
2019-04-26 17:45:16.713 INFO engine/alice/backend/asio_backend.cpp@33: Starting ASIO service
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/node_backend.cpp@318: Starting node 'websight'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet 'websight/WebsightServer' ...
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet 'websight/WebsightServer' DONE
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@291: Starting job for codelet 'websight/WebsightServer'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet 'websight/isaac.sight.AliceSight' ...
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet 'websight/isaac.sight.AliceSight' DONE
2019-04-26 17:45:16.713 WARNING engine/alice/backend/codelet_backend.cpp@281: Codelet 'websight/isaac.sight.AliceSight' was not added to scheduler because no tick method is specified.
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/node_backend.cpp@318: Starting node '_config_bridge'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet '_config_bridge/isaac.alice.ConfigBridge' ...
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet '_config_bridge/isaac.alice.ConfigBridge' DONE
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@291: Starting job for codelet '_config_bridge/isaac.alice.ConfigBridge'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/node_backend.cpp@318: Starting node '_statistics'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet '_statistics/NodeStatistics' ...
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet '_statistics/NodeStatistics' DONE
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@291: Starting job for codelet '_statistics/NodeStatistics'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/node_backend.cpp@318: Starting node '_pose_tree_bridge'
2019-04-26 17:45:16.713 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet '_pose_tree_bridge/PoseTreeJsonBridge' ...
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet '_pose_tree_bridge/PoseTreeJsonBridge' DONE
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@291: Starting job for codelet '_pose_tree_bridge/PoseTreeJsonBridge'
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/node_backend.cpp@318: Starting node '_interactive_markers_bridge'
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet '_interactive_markers_bridge/InteractiveMarkersBridge' ...
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet '_interactive_markers_bridge/InteractiveMarkersBridge' DONE
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@291: Starting job for codelet '_interactive_markers_bridge/InteractiveMarkersBridge'
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/node_backend.cpp@318: Starting node 'dummy'
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet 'dummy/isaac.DummyStereoCamera' ...
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet 'dummy/isaac.DummyStereoCamera' DONE
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@291: Starting job for codelet 'dummy/isaac.DummyStereoCamera'
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/node_backend.cpp@318: Starting node 'depth_visualization'
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@61: Starting codelet 'depth_visualization/isaac.viewers.DepthCameraViewer' ...
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@73: Starting codelet 'depth_visualization/isaac.viewers.DepthCameraViewer' DONE
2019-04-26 17:45:16.714 DEBUG engine/alice/backend/codelet_backend.cpp@291: Starting job for codelet 'depth_visualization/isaac.viewers.DepthCameraViewer'
2019-04-26 17:46:10.860 INFO packages/sight/WebsightServer.cpp@106: Server connected / 1
附录:
Bazel 知识