Duration
80 hours (usually 12 days including breaks)
Requirements
- Programming experience in C or C++
- Programming experience in Python (useful but not necessary; can be taught as part of course)
- Experience with Linux command line
Audience
- Developers
- Engineers
- Scientists
- Technicians
Overview
Robotics and Artificial Intelligence (AI) are powerful tools for the development of safety systems in nuclear facilities.
In this instructor-led, live training (online or onsite), participants will learn the different technologies, frameworks and techniques for programming different types of robots to be used in the field of nuclear technology and environmental systems.
The 4-week course is held 5 days a week. Each day is 4-hours long and consists of lectures, discussions, and hands-on robot development in a live lab environment. Participants will complete various real-world projects applicable to their work in order to practice their acquired knowledge.
The target hardware for this course will be simulated in 3D through simulation software. The code will then be loaded onto physical hardware (Arduino or other) for final deployment testing. The ROS (Robot Operating System) open-source framework, C++ and Python will be used for programming the robots.
By the end of this training, participants will be able to:
- Understand the key concepts used in robotic technologies.
- Understand and manage the interaction between software and hardware in a robotic system.
- Understand and implement the software components that underpin robotics.
- Build and operate a simulated mechanical robot that can see, sense, process, navigate, and interact with humans through voice.
- Understand the necessary elements of artificial intelligence (machine learning, deep learning, etc.) applicable to building a smart robot.
- Implement filters (Kalman and Particle) to enable the robot to locate moving objects in its environment.
- Implement search algorithms and motion planning.
- Implement PID controls to regulate a robot’s movement within an environment.
- Implement SLAM algorithms to enable a robot to map out an unknown environment.
- Test and troubleshoot a robot in realistic scenarios.
Format of the Course
- Interactive lecture and discussion.
- Lots of exercises and practice.
- Hands-on implementation in a live-lab environment.
About the Hardware
- Hardware kits will be confirmed by the instructor before the training. Kits will more-or-less contain the following components:
- Arduino board
- Motor controller
- Distance sensor
- Bluetooth slave
- Prototyping board and cables
- USB cable
- Vehicle kit
- Participants will need to provision their own hardware.
Course Customization Options
- To customize any part of this course (programming language, robot model, microcontroller, etc.) please contact us to arrange.
Course Outline
Week 01
Day 01
Introduction
- What Makes a Robot smart?
Physical vs Virtual Robots
- Smart Robots, Smart Machines, Sentient Machines and Robotic Process Automation (RPA), etc.
The Role of Artificial Intelligence (AI) in Robotics
- Beyond “if-then-else” and the learning machine
- The algorithms behind AI
- Machine learning, computer vision, natural language processing (NLP), etc.
- Cognitive robotics
Day 02
The Role of Big Data in Robotics
- Decision-making based on data and patterns
The Cloud and Robotics
- Linking robotics with IT
- Building more functional robots that access more information and collaborate
Case Study: Industrial Robots
- Mechanical Robots
- Robots in Nuclear Facilities
- Radiation detection and protection
- Robots in Nuclear Reactors
- Radiation detection and protection
Day 03
Hardware Components of a Robot
- Motors, sensors, microcontrollers, cameras, etc.
Common Elements of Robots
- Machine vision, voice recognition, speech synthesis, proximity sensing, pressure sensing, etc.
Day 04
Development Frameworks for Programming a Robot
- Open source and commercial frameworks
- Robot Operating System (ROS)
- Architecture: workspace, topics, messages, services, nodes, actionlibs, tools, etc.
Languages for Programming a Robot
- C++ for low level controlling
- Python for orchestration
- Programming ROS nodes in Python and C ++
- Other languages
Day 05
Tools for Simulating a Physical Robot
- Commercial and open source 3D simulation and visualization software
Tools for Designing the Physical Characteristics of a Robot
- Commercial and open source CAD software
Case Study: Mechanical Robots
- Robots in the nuclear technology field
- Robots in environmental systems
Week 02
Day 06
Crash Course in Python
- Software installation and setup
- Useful packages and utilities
- Working with Python data structures, operators, loops, conditionals, functions, methods, etc.
- Writing a sample program
- Team project
Day 07
Preparing for Robot Development
- Setting up the development environment (e.g., Arduino IDE)
- Exploring the Arduino language (C/C++) syntax
- Coding, compiling, and uploading to the microcontroller
- Assembling the hardware components of an Arduino robot
Day 08
Working with Arduino Components
- Analog sensors
- Digital sensors
Working with Arduino Communication Modules
- Bluetooth Modules
- Wi-Fi Modules
- RFID Modules
- I2C and SPI
- Mobile internet
Day 09
Constructing a Robot
- Planning the features and characteristics of a robot
- Implementing robot movement
Team project
Day 10
Controlling the Robot
- Implementing the controller
- Connecting to the robot (wired and wirelessly)
Team Project
Week 03
Day 11
Programming the Robot
- Simulating a robot with Gazebo / ROS
- Understanding ROS node
- Programming a node in Python and C ++
- Messages and topics in ROS
- Publication / subscription paradigm
Team Project
- Bump & Go with real robot
- Discussion and review
Day 12
Programming the Robot (continued…)
- Frames in ROS and reference changes
- 2D information processing of cameras with OpenCV
- Information processing of a laser
Team Project
- Safe tracking of objects by color
- Discussion and review
Day 13
Testing the Robot
- Tools for testing your code
- Unit testing
- Creating a test suite
- Automating your tests
- Troubleshooting
Team Project
- Safe tracking of objects by color
- Discussion and review
Day 14
Programming the Robot (Continued…)
- Services in ROS
- 3D information processing of RGB-D sensors with PCL
- Maps and Navigation with ROS
Day 15
Programming the Robot (Continued…)
- Completing tasks with ActionLib
Team Project
- Search for objects in the environment
Week 04
Day 16
Programming the Robot (Continued…)
- Completing tasks with ActionLib
Day 17
Programming the Robot (Continued…)
- Speech Recognition and Speech Generation
- Troubleshooting
Team Project
- Controlling a robot using voice
Day 18
Programming the Robot (Continued…)
- Controlling robotic arms with MoveIt!
- Controlling robotic neck for active vision
- Troubleshooting
Team Project
- Search and collection of objects
Day 19
Deploying the Robot
- Deploying the robot in the physical world
- Monitoring and servicing robots in the field
- Using a mobile app to control a robot
Securing the Robot
- Preventing unauthorized tampering
- Preventing hackers from viewing and stealing sensitive data
Day 20
Data Analytics
- Collecting and organizing data generated by the robot
- Making sense of the data through visualization tools and processes
Building a Robot Collaboratively
- Building a robot in the cloud
- Building a mobile app to interact with your robot
- Joining the robotics community
Future Outlook for Robots in the Science and Energy Field
Summary and Conclusion