© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Building Your Robot using AWS Robomaker
Artur Rodrigues & Alex Coqueiro
Solutions Architecture Team
AWS Public Sector - Canada, Latin America and Caribbean
@alexbcbr
Agenda
WHY (Robotics Momentum)
WHAT (Robotics in a opensource world)
HOW (Development, Simulation, Deployment)
Agenda
WHY (Robotics Momentum)
WHAT (Robotics in a opensource world)
HOW (Development, Simulation, Deployment)
Robotic Arms
International Space
Station
Drones
Education
Water
Home
Self-Driving Vehicles
Autonomous Walker
Rover
Modern Robots landscape
“Mobile” robotics
Source: IDTechEx
By 2030
70% of all mobile material
handling equipment will
be autonomous
By 2023
It’s estimated that mobile
autonomous robots will emerge
as the standard for logistic and
fulfillment processes
Agenda
WHY (Robotics Momentum)
WHAT (Robotics in a opensource world)
HOW (Development, Simulation, Deployment)
What defines a robot?
A robot is an (autonomous) machine that can sense its
environment, that performs computations to make
decisions, and that performs actions in the real world
Compute
Sense Act
Distinct types of robots (Hardware)
Drones Robotic arms Ground mobility
Robot Operating System (ROS)
Ubuntu 18.04
Most widely used software framework for robot
application prototyping, development and
deployment.
Opensource powering the world’s robots
Robot – Application
ROS
OS*
Hardware
Ubuntu 20.04
macOS 10.14
Windows 10
https://docs.ros.org/en/foxy/Releases.html
ROS
• Developers can focus on delivering value, not
infrastructure
• Analogy: ROS is to Robots
what Node/Rails is to web development
• Robot design patterns
• CLI tools for deployment, monitoring and
debugging
• Simulation tools allows for more flexible design
• Library of hardware interfaces and patterns
• A community of experts to help
ROS 2 is production-grade ROS
ROS 2 makes it easier to convert ROS-based prototypes into products that work effectively in
real-world applications
Enterprise features:
Production quality core libraries
Enhanced security
Improved determinism
Real time communication support
Real world networking support
Layered architecture:
Multi-OS support
Industry-standard middleware layer
Improved abstraction
Unified API
Interoperability with ROS1:
ROS1 bridge enables hybrid systems
https://aws.amazon.com/blogs/robotics/ros-2-foxy-fitzroy-robot-development
AWS RoboMaker
Simulation
ROS
open-source
tools and cloud
extensions
Fleet
management
Development
environment
Agenda
WHY (Robotics Momentum)
WHAT (Robotics in a opensource world)
HOW (Development, Simulation, Deployment)
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
Demo: Personal Care System
Robotics development cycle
A W S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S
Simulation
(Robot + Physical World)
Iterative development
(Application & Hardware)
Fleet management
Development Simulation Deployment
Robots 101
(Encoders)
Actuators (Motor)
Building Your Environment
Robot application SDK
Robot simulator
Models (SDF, URDF, OBJ, STL, Collada)
Physical Engine (ODE)
3D Engine (OGRE)
Middleware (ROS)
www.gazebosim.org
docs.ros.org/en/foxy/Installation.html
AWS Cloud 9
Eclipse Cyclone DDS
Atom + ROS plugins
wiki.ros.org/IDEs
Robot IDE
Assets
github.com/aws-robotics
avdata.ford.com
github.com/osrf
3D worlds
Cloud Assets
Datasets
ROS Melodic
ROS 2 Foxy
Python & C++
colcon
ROS Filesystem Level
Project
├── doc
| └── index.md
├── project_msgs
| ├── msg
| | ├── Foo.msg
| | └── Bar.msg
| ├── CMakeLists.txt
| └── package.xml
├── project_utils
| ├── launch
| | └── launch_robot.launch
| ├── scripts
| | └── do_stuff.cpp
| ├── CMakeLists.txt
| └── package.xml
Project
├── doc
| └── index.md
├── project_msgs
| ├── msg
| | ├── Foo.msg
| | └── Bar.msg
| ├── setup.py
| └── package.xml
├── project_utils
| ├── launch
| | └── ...
| ├── scripts
| | └── do_stuff.py
| ├── setup.py
| └── package.xml
ROS launch
- Spawns multiple ROS nodes running in parallel
- Sets parameters in the parameter server
- XML (ROS1), Python (ROS2)
- AWS RoboMaker simulation uses ROS launch to start your applications
roslaunch package_name file.launch
<launch>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name"
value="$(find aws_robomaker_hospital_world)/worlds/hospital.world"/>
<arg name="use_sim_time" value="true"/>
</include>
<include file="$(find pr2_gazebo)/launch/pr2_no_arms.launch" pass_all_args="true"/>
</launch>
Example command:
ROS key concepts
Nodes
Processes that perform computations
(Ex: your Python files)
Discovery
The process through which nodes determine how to
talk to each other including name registration and
lookup to the rest of the Computation Graph
Messages
A message is simply a data structure,
comprising typed fields
Topics
Messages are routed via a transport system with
publish / subscribe semantics. A node sends out a
message by publishing it to a topic
Services
Request / reply is done via services, which are
defined by a pair of message structures: one
for the request and one for the reply
ROS Bags
Bags are a format for saving and playing
back ROS message data
ROS Publish / Subscribe Model
Pub
node
Sub
node
Topic
Publish Subscribe
/unexpected_activity
message
frontdoor
moving:
[
x=1,
y=0,
z=0
]
Presence Sensor
/care_system
rospy (Publish Messages #1)
import rospy
from std_msgs.msg import String
def __init__(self):
self._pub = rospy.Publisher(‘/unexpected_activity’, String, queue_size=1)
def publish_presence_sensor_detected(self):
#####################
# Device detected presence
#####################
msg.data = ”frontdoor”
self._pub.publish(msg)
rospy (Receiving Messages)
import rospy
from std_msgs.msg import String
def __init__(self):
self._hazard = rospy.Subscriber(‘/unexpected_activity’, String, self.callback)
def callback(self, data):
rospy._loginfo(data.data)
colcon
• colcon is a command line tool to improve the workflow of building,
testing and using multiple software packages. It automates the
process, handles the ordering and sets up the environment to use the
packages.
colcon build
colcon bundle
• rosnode list
List of Nodes
• rostopic list
List of topics
• rostopic echo /unexpected_activity
List content of the topic
• roslaunch my_package care_system.launch
Launch robot
• rostopic pub /unexpected_activity std_msgs/String frontdoor
Package creation
• colcon build
Building robots package
• colcon bundle
bundle robot artifacts for deployment
ROS Middleware Commands
Robotics development cycle
A W S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S
Simulation
(Robot & Physical World)
Iterative development
(Application & Hardware) Fleet management
Development Simulation Deployment
Hardware, less hard with ROS
The ROS pub/sub bus uses common messages to move data.
Built in messages for common sensors and actuators:
• Cameras
• Depth Sensors
• LIDAR / RADAR
• IMU
• Force Feedback Servos
• Power systems
• GPS
Plus easily extensible
Gazebo – Dynamic Physics Simulator
Models simulation in the Physical Engine (ODE)
leveraging 3D Engine (OGRE) using Gazebo
Gazebo World
3D Models (SDF*, with
Mesh, STL, OBJ, DAE, etc)
Virtual Robot (URDF**)
* Simulation Description Format
http://sdformat.org
** Unified Robotic Description Format
http://http://wiki.ros.org/urdf
AWS RoboMaker WorldForge
A U T O M A T I C A L L Y G E N E R A T E O N E O R M O R E R E S I D E N T I A L S I M U L A T I O N W O R L D S W I T H I N M I N U T E S
• Out-of-the box 3D assets and
world templates
• Generate a world within minutes
• Concurrent world generation – up
to hundreds of worlds
• Fully integrated with RoboMaker
simulation run
• Tag worlds at creation time
AWS RoboMaker Simulation
F U L L Y M A N A G E D I N F R A S T R U C T U R E F O R R O B O T I C S S I M U L A T I O N
Managed robotics and
simulation software
stack frees up
engineering resources
Fully
managed
Concurrent simulations
at cloud scale via a
single API call
Highly
scalable
Pay-as-you-go pricing
at per-CPU and
per-minute granularity
Cost
effective
Automatic generation of
virtual simulation worlds
with randomization
Automatic 3D
world generation
ROS visualization – RViz
Map
Robot
model
Laser
scan
Source: https://github.com/ros-visualization/rviz
ROS visualization – RQT
Source: http://wiki.ros.org/rqt
Robotics development cycle
A W S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S
Simulation
(Robot + Physical World)
Iterative development
(Application & Hardware) Fleet management
Development Simulation Deployment
Challenges with robot fleet management
Over-the-air
software updates
Secure
access control
Remote
operations
Remote
troubleshooting
Fleet monitoring
and alerting
Key features
• Deploy at scale using
IoT thing groups
• Configure deployments
with rollbacks, timeouts,
and rollouts
• Easily integrate software
to AWS services
AWS IoT Greengrass
Deploy and manage device software at scale to reduce costs and simplify
operations
C L O U D S E R V I C E : D E P L O Y , M A N A G E D E V I C E S O F T W A R E A T - S C A L E
Local Actions
Operation Insights
AWS IoT Greengrass Core
Virtual
robot
Robotics deployment cycle
Robot Artifacts
Robotics development cycle
A W S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S
Simulation
(Robot + Physical World)
Iterative development
(Application & Hardware) Fleet management
Development Simulation Deployment
72 sensors
Low-end CPU
Cloud extensions
ROS Example - Robot Care Systems
Resources
AWS RoboMaker scenario-based simulation launcher
https://github.com/aws-samples/aws-robomaker-simulation-launcher
3D Worlds and ROS cloud extensions
https://github.com/aws-robotics
AWS robotics blog with detailed guides on CI/CD and more
https://aws.amazon.com/blogs/robotics
Get started with AWS RoboMaker today!
https://aws.amazon.com/robomaker
Sample application with test node
https://github.com/aws-robotics/aws-robomaker-sample-application-cloudwatch
Learn about ROS
https://ros.org
Questions?
Thank you!
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Alex Coqueiro
Solutions Architecture Team
AWS Public Sector - Canada, Latin America and Caribbean
@alexbcbr

Building Your Robot using AWS Robomaker

  • 1.
    © 2021, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Building Your Robot using AWS Robomaker Artur Rodrigues & Alex Coqueiro Solutions Architecture Team AWS Public Sector - Canada, Latin America and Caribbean @alexbcbr
  • 2.
    Agenda WHY (Robotics Momentum) WHAT(Robotics in a opensource world) HOW (Development, Simulation, Deployment)
  • 3.
    Agenda WHY (Robotics Momentum) WHAT(Robotics in a opensource world) HOW (Development, Simulation, Deployment)
  • 4.
    Robotic Arms International Space Station Drones Education Water Home Self-DrivingVehicles Autonomous Walker Rover Modern Robots landscape
  • 6.
    “Mobile” robotics Source: IDTechEx By2030 70% of all mobile material handling equipment will be autonomous By 2023 It’s estimated that mobile autonomous robots will emerge as the standard for logistic and fulfillment processes
  • 7.
    Agenda WHY (Robotics Momentum) WHAT(Robotics in a opensource world) HOW (Development, Simulation, Deployment)
  • 8.
    What defines arobot? A robot is an (autonomous) machine that can sense its environment, that performs computations to make decisions, and that performs actions in the real world Compute Sense Act
  • 9.
    Distinct types ofrobots (Hardware) Drones Robotic arms Ground mobility
  • 10.
    Robot Operating System(ROS) Ubuntu 18.04 Most widely used software framework for robot application prototyping, development and deployment. Opensource powering the world’s robots Robot – Application ROS OS* Hardware Ubuntu 20.04 macOS 10.14 Windows 10 https://docs.ros.org/en/foxy/Releases.html
  • 11.
    ROS • Developers canfocus on delivering value, not infrastructure • Analogy: ROS is to Robots what Node/Rails is to web development • Robot design patterns • CLI tools for deployment, monitoring and debugging • Simulation tools allows for more flexible design • Library of hardware interfaces and patterns • A community of experts to help
  • 12.
    ROS 2 isproduction-grade ROS ROS 2 makes it easier to convert ROS-based prototypes into products that work effectively in real-world applications Enterprise features: Production quality core libraries Enhanced security Improved determinism Real time communication support Real world networking support Layered architecture: Multi-OS support Industry-standard middleware layer Improved abstraction Unified API Interoperability with ROS1: ROS1 bridge enables hybrid systems https://aws.amazon.com/blogs/robotics/ros-2-foxy-fitzroy-robot-development
  • 13.
    AWS RoboMaker Simulation ROS open-source tools andcloud extensions Fleet management Development environment
  • 14.
    Agenda WHY (Robotics Momentum) WHAT(Robotics in a opensource world) HOW (Development, Simulation, Deployment)
  • 15.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. Demo: Personal Care System
  • 16.
    Robotics development cycle AW S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S Simulation (Robot + Physical World) Iterative development (Application & Hardware) Fleet management Development Simulation Deployment
  • 17.
  • 18.
    Building Your Environment Robotapplication SDK Robot simulator Models (SDF, URDF, OBJ, STL, Collada) Physical Engine (ODE) 3D Engine (OGRE) Middleware (ROS) www.gazebosim.org docs.ros.org/en/foxy/Installation.html AWS Cloud 9 Eclipse Cyclone DDS Atom + ROS plugins wiki.ros.org/IDEs Robot IDE Assets github.com/aws-robotics avdata.ford.com github.com/osrf 3D worlds Cloud Assets Datasets ROS Melodic ROS 2 Foxy Python & C++ colcon
  • 19.
    ROS Filesystem Level Project ├──doc | └── index.md ├── project_msgs | ├── msg | | ├── Foo.msg | | └── Bar.msg | ├── CMakeLists.txt | └── package.xml ├── project_utils | ├── launch | | └── launch_robot.launch | ├── scripts | | └── do_stuff.cpp | ├── CMakeLists.txt | └── package.xml Project ├── doc | └── index.md ├── project_msgs | ├── msg | | ├── Foo.msg | | └── Bar.msg | ├── setup.py | └── package.xml ├── project_utils | ├── launch | | └── ... | ├── scripts | | └── do_stuff.py | ├── setup.py | └── package.xml
  • 20.
    ROS launch - Spawnsmultiple ROS nodes running in parallel - Sets parameters in the parameter server - XML (ROS1), Python (ROS2) - AWS RoboMaker simulation uses ROS launch to start your applications roslaunch package_name file.launch <launch> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="$(find aws_robomaker_hospital_world)/worlds/hospital.world"/> <arg name="use_sim_time" value="true"/> </include> <include file="$(find pr2_gazebo)/launch/pr2_no_arms.launch" pass_all_args="true"/> </launch> Example command:
  • 21.
    ROS key concepts Nodes Processesthat perform computations (Ex: your Python files) Discovery The process through which nodes determine how to talk to each other including name registration and lookup to the rest of the Computation Graph Messages A message is simply a data structure, comprising typed fields Topics Messages are routed via a transport system with publish / subscribe semantics. A node sends out a message by publishing it to a topic Services Request / reply is done via services, which are defined by a pair of message structures: one for the request and one for the reply ROS Bags Bags are a format for saving and playing back ROS message data
  • 22.
    ROS Publish /Subscribe Model Pub node Sub node Topic Publish Subscribe /unexpected_activity message frontdoor moving: [ x=1, y=0, z=0 ] Presence Sensor /care_system
  • 23.
    rospy (Publish Messages#1) import rospy from std_msgs.msg import String def __init__(self): self._pub = rospy.Publisher(‘/unexpected_activity’, String, queue_size=1) def publish_presence_sensor_detected(self): ##################### # Device detected presence ##################### msg.data = ”frontdoor” self._pub.publish(msg)
  • 24.
    rospy (Receiving Messages) importrospy from std_msgs.msg import String def __init__(self): self._hazard = rospy.Subscriber(‘/unexpected_activity’, String, self.callback) def callback(self, data): rospy._loginfo(data.data)
  • 25.
    colcon • colcon isa command line tool to improve the workflow of building, testing and using multiple software packages. It automates the process, handles the ordering and sets up the environment to use the packages. colcon build colcon bundle
  • 26.
    • rosnode list Listof Nodes • rostopic list List of topics • rostopic echo /unexpected_activity List content of the topic • roslaunch my_package care_system.launch Launch robot • rostopic pub /unexpected_activity std_msgs/String frontdoor Package creation • colcon build Building robots package • colcon bundle bundle robot artifacts for deployment ROS Middleware Commands
  • 27.
    Robotics development cycle AW S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S Simulation (Robot & Physical World) Iterative development (Application & Hardware) Fleet management Development Simulation Deployment
  • 28.
    Hardware, less hardwith ROS The ROS pub/sub bus uses common messages to move data. Built in messages for common sensors and actuators: • Cameras • Depth Sensors • LIDAR / RADAR • IMU • Force Feedback Servos • Power systems • GPS Plus easily extensible
  • 29.
    Gazebo – DynamicPhysics Simulator
  • 30.
    Models simulation inthe Physical Engine (ODE) leveraging 3D Engine (OGRE) using Gazebo Gazebo World 3D Models (SDF*, with Mesh, STL, OBJ, DAE, etc) Virtual Robot (URDF**) * Simulation Description Format http://sdformat.org ** Unified Robotic Description Format http://http://wiki.ros.org/urdf
  • 31.
    AWS RoboMaker WorldForge AU T O M A T I C A L L Y G E N E R A T E O N E O R M O R E R E S I D E N T I A L S I M U L A T I O N W O R L D S W I T H I N M I N U T E S • Out-of-the box 3D assets and world templates • Generate a world within minutes • Concurrent world generation – up to hundreds of worlds • Fully integrated with RoboMaker simulation run • Tag worlds at creation time
  • 32.
    AWS RoboMaker Simulation FU L L Y M A N A G E D I N F R A S T R U C T U R E F O R R O B O T I C S S I M U L A T I O N Managed robotics and simulation software stack frees up engineering resources Fully managed Concurrent simulations at cloud scale via a single API call Highly scalable Pay-as-you-go pricing at per-CPU and per-minute granularity Cost effective Automatic generation of virtual simulation worlds with randomization Automatic 3D world generation
  • 33.
    ROS visualization –RViz Map Robot model Laser scan Source: https://github.com/ros-visualization/rviz
  • 34.
    ROS visualization –RQT Source: http://wiki.ros.org/rqt
  • 35.
    Robotics development cycle AW S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S Simulation (Robot + Physical World) Iterative development (Application & Hardware) Fleet management Development Simulation Deployment
  • 36.
    Challenges with robotfleet management Over-the-air software updates Secure access control Remote operations Remote troubleshooting Fleet monitoring and alerting
  • 37.
    Key features • Deployat scale using IoT thing groups • Configure deployments with rollbacks, timeouts, and rollouts • Easily integrate software to AWS services AWS IoT Greengrass Deploy and manage device software at scale to reduce costs and simplify operations C L O U D S E R V I C E : D E P L O Y , M A N A G E D E V I C E S O F T W A R E A T - S C A L E
  • 38.
    Local Actions Operation Insights AWSIoT Greengrass Core Virtual robot Robotics deployment cycle Robot Artifacts
  • 39.
    Robotics development cycle AW S R O B O T I C S M A K E S I T E A S Y T O B U I L D , T E S T , A N D M A N A G E R O B O T I C S A P P L I C A T I O N S Simulation (Robot + Physical World) Iterative development (Application & Hardware) Fleet management Development Simulation Deployment
  • 40.
    72 sensors Low-end CPU Cloudextensions ROS Example - Robot Care Systems
  • 41.
    Resources AWS RoboMaker scenario-basedsimulation launcher https://github.com/aws-samples/aws-robomaker-simulation-launcher 3D Worlds and ROS cloud extensions https://github.com/aws-robotics AWS robotics blog with detailed guides on CI/CD and more https://aws.amazon.com/blogs/robotics Get started with AWS RoboMaker today! https://aws.amazon.com/robomaker Sample application with test node https://github.com/aws-robotics/aws-robomaker-sample-application-cloudwatch Learn about ROS https://ros.org
  • 42.
  • 43.
    Thank you! © 2021,Amazon Web Services, Inc. or its affiliates. All rights reserved. Alex Coqueiro Solutions Architecture Team AWS Public Sector - Canada, Latin America and Caribbean @alexbcbr