IEEE Robotics & Automation Magazine - March 2022 - 48
created through structure from motion and representing a
specific location in the world, is stored in the cloud with a
unique ID. The set of features and descriptors constituting
this map then define a coordinate system that is fixed to the
world; if those features can be detected later and their 3D
positions can be recovered, the coordinate system can also be
recaptured. Devices wishing to localize to a particular anchor,
known by its unique ID, then create their own structurefrom-motion
map, which they submit to the cloud service as
a query. If correspondences for the feature points in the query
can be found in the reference map in the cloud, the service
returns a relative pose.
This service is cross platform and relies on a device's
onboard visual odometry to build these visual maps to create
and query an anchor. On HoloLens devices, the onboard
head-tracking processes handle this. For mobile devices,
ARKit and ARCore provide the image features and poses for
iOS and Android, respectively. On robotic systems, a special
research version of the software development kit (SDK) was
released with Ubuntu Linux support as well as a Robot Operating
System (ROS) wrapper (https://github.com/microsoft/
azure_spatial_anchors_ros). Unlike other devices, where the
visual pose estimation happens in the context of a platformspecific
odometry system (e.g., an ARCore or ARKit session),
pose estimation solutions on mobile robots can be quite
diverse. The Linux version of the SDK thus accepts undistorted
images and poses and computes its own features. The pose
of the camera can be directly estimated through visual odometry
on the robot and by attaching the camera with a calibrated
transformation to a mobile base that estimates its pose
through some other means (e.g., with lidar). While the success
of localization queries to ASA depends heavily on the
particular cameras, trajectories, and environments in question,
in practice, the performance is in the range of centimeter-level
accuracy. This is documented in Figure 2(b), where
the robot's estimate of its pose with respect to the anchor
2×
closely matches the actual robot pose when it is transformed
into the HoloLens's field of view, as seen in the close alignment
of the robot and its holographic model.
System Overview
The system is organized in a modular and distributed fashion,
with components deployed on the HoloLens, on the robot,
and in the cloud. It is possible to run the HoloLens and robot
at the same time, where the mission parameters and some
visualizations are sent between the devices with ROS, and to
define and run the mission at different times, in which case
the mission definition is serialized and stored in a databse in
the Azure cloud. An overview of these components and the
flow of data among them appears in Figure 3.
The HoloLens runs an application that is built using the
Unity 3D engine (https://unity.com/). Some prebuilt components
from the MR Toolkit (https://github.com/microsoft/
MixedRealityToolkit-Unity) handle the user's interaction with
the app's holograms. The ROS# (https://github.com/siemens/
ros-sharp) package acts as a bridge between the Unity environment
and ROS communication framework. HoloLens
provides support for creating and querying ASA through an
SDK, and this functionality is connected to Unity through an
XR plugin layer. These components work together to enable
the user to create and move holographic markers in the environment
and store the poses of these waypoints with respect
to spatial anchor coordinate systems.
On our robot, a Boston Dynamics Spot, we connect a
companion computer (an Intel NUC running Ubuntu 18.04)
through the robot's ethernet port to run our user code. This
code includes a wrapper for Spot's Google Remote Procedure
Call-based SDK (https://github.com/boston-dynamics/spot
-sdk) that connects its data streams to ROS topics (https://
github.com/clearpathrobotics/spot_ros) as well as a corresponding
bridge node that receives messages from the ROS#
component in the HoloLens Unity app that are sent over a
2×
(a)
(b)
Figure 2. Mission planning and execution. (a) The view through the HoloLens as the user moves holographic markers for the
trajectory waypoints. Each waypoint is represented by a sphere for the desired position and a camera frustum to define the
orientation the robot should take for inspection. The axes to the right of the trajectory mark the origin of an automatically created
spatial anchor coordinate system. (b) The user's view as the robot executes the mission, with a robot model overlaid on the physical
one and a sample data capture at an inspection pose. This user view during mission execution is only for illustration, as the robot can
autonomously execute the mission without human intervention.
48 * IEEE ROBOTICS & AUTOMATION MAGAZINE * MARCH 2022
https://www.unity.com/
https://github.com/microsoft/MixedRealityToolkit-Unity
https://github.com/microsoft/MixedRealityToolkit-Unity
https://github.com/siemens/ros-sharp
https://github.com/siemens/ros-sharp
https://github.com/microsoft/azure_spatial_anchors_ros
https://github.com/microsoft/azure_spatial_anchors_ros
https://www.github.com/boston-dynamics/spot-sdk
https://www.github.com/boston-dynamics/spot-sdk
https://github.com/clearpathrobotics/spot_ros
https://github.com/clearpathrobotics/spot_ros
IEEE Robotics & Automation Magazine - March 2022
Table of Contents for the Digital Edition of IEEE Robotics & Automation Magazine - March 2022
Contents
IEEE Robotics & Automation Magazine - March 2022 - Cover1
IEEE Robotics & Automation Magazine - March 2022 - Cover2
IEEE Robotics & Automation Magazine - March 2022 - Contents
IEEE Robotics & Automation Magazine - March 2022 - 2
IEEE Robotics & Automation Magazine - March 2022 - 3
IEEE Robotics & Automation Magazine - March 2022 - 4
IEEE Robotics & Automation Magazine - March 2022 - 5
IEEE Robotics & Automation Magazine - March 2022 - 6
IEEE Robotics & Automation Magazine - March 2022 - 7
IEEE Robotics & Automation Magazine - March 2022 - 8
IEEE Robotics & Automation Magazine - March 2022 - 9
IEEE Robotics & Automation Magazine - March 2022 - 10
IEEE Robotics & Automation Magazine - March 2022 - 11
IEEE Robotics & Automation Magazine - March 2022 - 12
IEEE Robotics & Automation Magazine - March 2022 - 13
IEEE Robotics & Automation Magazine - March 2022 - 14
IEEE Robotics & Automation Magazine - March 2022 - 15
IEEE Robotics & Automation Magazine - March 2022 - 16
IEEE Robotics & Automation Magazine - March 2022 - 17
IEEE Robotics & Automation Magazine - March 2022 - 18
IEEE Robotics & Automation Magazine - March 2022 - 19
IEEE Robotics & Automation Magazine - March 2022 - 20
IEEE Robotics & Automation Magazine - March 2022 - 21
IEEE Robotics & Automation Magazine - March 2022 - 22
IEEE Robotics & Automation Magazine - March 2022 - 23
IEEE Robotics & Automation Magazine - March 2022 - 24
IEEE Robotics & Automation Magazine - March 2022 - 25
IEEE Robotics & Automation Magazine - March 2022 - 26
IEEE Robotics & Automation Magazine - March 2022 - 27
IEEE Robotics & Automation Magazine - March 2022 - 28
IEEE Robotics & Automation Magazine - March 2022 - 29
IEEE Robotics & Automation Magazine - March 2022 - 30
IEEE Robotics & Automation Magazine - March 2022 - 31
IEEE Robotics & Automation Magazine - March 2022 - 32
IEEE Robotics & Automation Magazine - March 2022 - 33
IEEE Robotics & Automation Magazine - March 2022 - 34
IEEE Robotics & Automation Magazine - March 2022 - 35
IEEE Robotics & Automation Magazine - March 2022 - 36
IEEE Robotics & Automation Magazine - March 2022 - 37
IEEE Robotics & Automation Magazine - March 2022 - 38
IEEE Robotics & Automation Magazine - March 2022 - 39
IEEE Robotics & Automation Magazine - March 2022 - 40
IEEE Robotics & Automation Magazine - March 2022 - 41
IEEE Robotics & Automation Magazine - March 2022 - 42
IEEE Robotics & Automation Magazine - March 2022 - 43
IEEE Robotics & Automation Magazine - March 2022 - 44
IEEE Robotics & Automation Magazine - March 2022 - 45
IEEE Robotics & Automation Magazine - March 2022 - 46
IEEE Robotics & Automation Magazine - March 2022 - 47
IEEE Robotics & Automation Magazine - March 2022 - 48
IEEE Robotics & Automation Magazine - March 2022 - 49
IEEE Robotics & Automation Magazine - March 2022 - 50
IEEE Robotics & Automation Magazine - March 2022 - 51
IEEE Robotics & Automation Magazine - March 2022 - 52
IEEE Robotics & Automation Magazine - March 2022 - 53
IEEE Robotics & Automation Magazine - March 2022 - 54
IEEE Robotics & Automation Magazine - March 2022 - 55
IEEE Robotics & Automation Magazine - March 2022 - 56
IEEE Robotics & Automation Magazine - March 2022 - 57
IEEE Robotics & Automation Magazine - March 2022 - 58
IEEE Robotics & Automation Magazine - March 2022 - 59
IEEE Robotics & Automation Magazine - March 2022 - 60
IEEE Robotics & Automation Magazine - March 2022 - 61
IEEE Robotics & Automation Magazine - March 2022 - 62
IEEE Robotics & Automation Magazine - March 2022 - 63
IEEE Robotics & Automation Magazine - March 2022 - 64
IEEE Robotics & Automation Magazine - March 2022 - 65
IEEE Robotics & Automation Magazine - March 2022 - 66
IEEE Robotics & Automation Magazine - March 2022 - 67
IEEE Robotics & Automation Magazine - March 2022 - 68
IEEE Robotics & Automation Magazine - March 2022 - 69
IEEE Robotics & Automation Magazine - March 2022 - 70
IEEE Robotics & Automation Magazine - March 2022 - 71
IEEE Robotics & Automation Magazine - March 2022 - 72
IEEE Robotics & Automation Magazine - March 2022 - 73
IEEE Robotics & Automation Magazine - March 2022 - 74
IEEE Robotics & Automation Magazine - March 2022 - 75
IEEE Robotics & Automation Magazine - March 2022 - 76
IEEE Robotics & Automation Magazine - March 2022 - 77
IEEE Robotics & Automation Magazine - March 2022 - 78
IEEE Robotics & Automation Magazine - March 2022 - 79
IEEE Robotics & Automation Magazine - March 2022 - 80
IEEE Robotics & Automation Magazine - March 2022 - 81
IEEE Robotics & Automation Magazine - March 2022 - 82
IEEE Robotics & Automation Magazine - March 2022 - 83
IEEE Robotics & Automation Magazine - March 2022 - 84
IEEE Robotics & Automation Magazine - March 2022 - 85
IEEE Robotics & Automation Magazine - March 2022 - 86
IEEE Robotics & Automation Magazine - March 2022 - 87
IEEE Robotics & Automation Magazine - March 2022 - 88
IEEE Robotics & Automation Magazine - March 2022 - 89
IEEE Robotics & Automation Magazine - March 2022 - 90
IEEE Robotics & Automation Magazine - March 2022 - 91
IEEE Robotics & Automation Magazine - March 2022 - 92
IEEE Robotics & Automation Magazine - March 2022 - 93
IEEE Robotics & Automation Magazine - March 2022 - 94
IEEE Robotics & Automation Magazine - March 2022 - 95
IEEE Robotics & Automation Magazine - March 2022 - 96
IEEE Robotics & Automation Magazine - March 2022 - 97
IEEE Robotics & Automation Magazine - March 2022 - 98
IEEE Robotics & Automation Magazine - March 2022 - 99
IEEE Robotics & Automation Magazine - March 2022 - 100
IEEE Robotics & Automation Magazine - March 2022 - 101
IEEE Robotics & Automation Magazine - March 2022 - 102
IEEE Robotics & Automation Magazine - March 2022 - 103
IEEE Robotics & Automation Magazine - March 2022 - 104
IEEE Robotics & Automation Magazine - March 2022 - 105
IEEE Robotics & Automation Magazine - March 2022 - 106
IEEE Robotics & Automation Magazine - March 2022 - 107
IEEE Robotics & Automation Magazine - March 2022 - 108
IEEE Robotics & Automation Magazine - March 2022 - 109
IEEE Robotics & Automation Magazine - March 2022 - 110
IEEE Robotics & Automation Magazine - March 2022 - 111
IEEE Robotics & Automation Magazine - March 2022 - 112
IEEE Robotics & Automation Magazine - March 2022 - 113
IEEE Robotics & Automation Magazine - March 2022 - 114
IEEE Robotics & Automation Magazine - March 2022 - 115
IEEE Robotics & Automation Magazine - March 2022 - 116
IEEE Robotics & Automation Magazine - March 2022 - 117
IEEE Robotics & Automation Magazine - March 2022 - 118
IEEE Robotics & Automation Magazine - March 2022 - 119
IEEE Robotics & Automation Magazine - March 2022 - 120
IEEE Robotics & Automation Magazine - March 2022 - 121
IEEE Robotics & Automation Magazine - March 2022 - 122
IEEE Robotics & Automation Magazine - March 2022 - 123
IEEE Robotics & Automation Magazine - March 2022 - 124
IEEE Robotics & Automation Magazine - March 2022 - Cover3
IEEE Robotics & Automation Magazine - March 2022 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2010
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2010
https://www.nxtbookmedia.com