Podcast
Questions and Answers
Which command in the VAL language causes the robot to close its gripper immediately?
Which command in the VAL language causes the robot to close its gripper immediately?
VAL language was developed for the PUMA series of robots.
VAL language was developed for the PUMA series of robots.
True (A)
What does the WAIT command do in the VAL language?
What does the WAIT command do in the VAL language?
It implements a specific task by pausing the program until a condition is met.
The command ______ moves the robot to a specific location.
The command ______ moves the robot to a specific location.
Signup and view all the answers
Match the following VAL commands with their functions:
Match the following VAL commands with their functions:
Signup and view all the answers
What is the purpose of the CIRCLE command?
What is the purpose of the CIRCLE command?
Signup and view all the answers
The commands APPRO and DEPARTS are used for joint, world, and tool coordinates.
The commands APPRO and DEPARTS are used for joint, world, and tool coordinates.
Signup and view all the answers
Name one of the primary advantages of using AL language.
Name one of the primary advantages of using AL language.
Signup and view all the answers
The _____ command moves the robot along a straight line path.
The _____ command moves the robot along a straight line path.
Signup and view all the answers
Which VAL command indicates the robot's elbow to point up?
Which VAL command indicates the robot's elbow to point up?
Signup and view all the answers
What is a primary function of a ROS node?
What is a primary function of a ROS node?
Signup and view all the answers
A ROS message is stored in a file with the .srv extension.
A ROS message is stored in a file with the .srv extension.
Signup and view all the answers
What file contains details about a ROS package, including its name and dependencies?
What file contains details about a ROS package, including its name and dependencies?
Signup and view all the answers
Nodes in ROS communicate with each other using _____ or _____ to exchange data.
Nodes in ROS communicate with each other using _____ or _____ to exchange data.
Signup and view all the answers
Match the following ROS components to their functions:
Match the following ROS components to their functions:
Signup and view all the answers
What is one reason to use ROS in robotics?
What is one reason to use ROS in robotics?
Signup and view all the answers
Which of the following describes a benefit of using ROS architecture?
Which of the following describes a benefit of using ROS architecture?
Signup and view all the answers
ROS is only useful for large robot systems and is not applicable to educational purposes.
ROS is only useful for large robot systems and is not applicable to educational purposes.
Signup and view all the answers
A ROS metapackage can contain executables and configuration files.
A ROS metapackage can contain executables and configuration files.
Signup and view all the answers
What are the three main levels of ROS?
What are the three main levels of ROS?
Signup and view all the answers
What file extension is used for service descriptions in ROS?
What file extension is used for service descriptions in ROS?
Signup and view all the answers
ROS packages are the main unit of an ROS __________.
ROS packages are the main unit of an ROS __________.
Signup and view all the answers
Match the following ROS components with their descriptions:
Match the following ROS components with their descriptions:
Signup and view all the answers
Which of the following is a potential limitation of using ROS?
Which of the following is a potential limitation of using ROS?
Signup and view all the answers
Learning to model a robot in ROS is straightforward and quick.
Learning to model a robot in ROS is straightforward and quick.
Signup and view all the answers
What are the benefits of using ROS for fast prototyping?
What are the benefits of using ROS for fast prototyping?
Signup and view all the answers
Flashcards
VAL Language
VAL Language
A user-friendly textual robot language developed by Unimation for PUMA robots.
Robot Configuration Commands
Robot Configuration Commands
Commands like RIGHTY, LEFTY, ABOVE, and BELOW change the robot's physical arrangement to resemble a human arm.
MOVE Command
MOVE Command
Instructs the robot to move to a specific location.
MOVES Command
MOVES Command
Signup and view all the flashcards
OPEN/CLOSE Commands
OPEN/CLOSE Commands
Signup and view all the flashcards
SET Command
SET Command
Signup and view all the flashcards
GOTO Command
GOTO Command
Signup and view all the flashcards
IF...THEN...ELSE...END Command
IF...THEN...ELSE...END Command
Signup and view all the flashcards
APPRO/DEPART Command
APPRO/DEPART Command
Signup and view all the flashcards
Cartesian Coordinates
Cartesian Coordinates
Signup and view all the flashcards
What is a ROS package?
What is a ROS package?
Signup and view all the flashcards
What is a ROS metapackage?
What is a ROS metapackage?
Signup and view all the flashcards
What is a ROS manifest file?
What is a ROS manifest file?
Signup and view all the flashcards
What are ROS messages?
What are ROS messages?
Signup and view all the flashcards
What is a .msg file?
What is a .msg file?
Signup and view all the flashcards
What are ROS services?
What are ROS services?
Signup and view all the flashcards
What is a .srv file?
What is a .srv file?
Signup and view all the flashcards
What is the ROS Computation Graph?
What is the ROS Computation Graph?
Signup and view all the flashcards
ROS: What is it?
ROS: What is it?
Signup and view all the flashcards
When to use ROS?
When to use ROS?
Signup and view all the flashcards
ROS Challenges
ROS Challenges
Signup and view all the flashcards
ROS Limitations
ROS Limitations
Signup and view all the flashcards
ROS Filesystem
ROS Filesystem
Signup and view all the flashcards
ROS Package Manifests
ROS Package Manifests
Signup and view all the flashcards
ROS Message Types
ROS Message Types
Signup and view all the flashcards
ROS Computation Graph
ROS Computation Graph
Signup and view all the flashcards
Study Notes
Module VI: Programming of Robots
- Course topic: Programming of Robots
- Instructor: Dr.R.Priyadarshini
Syllabus
- Introduction to robot control
- Robot programming
- Robot languages
- Introduction to ROS
- Robot Languages (ROS1, ROS2)
- ROS software's
- Gazebo
- ROS Architecture Diagram
- ROS characteristics
Classification of Robot Languages
- Robot languages are broadly classified into 3 major classes:
- First generation language
- Second generation language
- World modeling and task-oriented object language
General Requirements of a Language for Robot Control
- Geometric and kinematic calculations: Data types for coordinate systems in homogeneous coordinates, matrix arithmetic, and high-level operations to solve kinematic equations.
- World modeling: Ability to define objects using surfaces, manipulate objects as a whole, attach objects to the robot, and detect collisions. It is related to simulation and computer-aided design.
- Motion specification: Implies functions for linear interpolation, circle finding from points, fitting curves, and specifying speed, acceleration, and approach direction. Also, useful for weaving as used in arc welding.
- Use of sensing: Program branching and servo control.
- Teaching: Ability to accept path points taught by leading or walking through. This is an aspect of trajectory generation.
- Communication: With other machines
- Vision and other complex sensing: (such as tactile imaging). Separate system feeds a simple result such as object orientation. This capability can be within the language itself.
Robot Languages
- MIT's language MHI (1960): Main robot-specific constructs are moves and sensor tests.
- WAVE (early 1970s): Developed at Stanford. Introduces Cartesian coordinates, coordinated joint motions, and compliance by letting certain joints move freely under external loads.
- AL: An influential language still being extended. Provides Cartesian specification of motions, compliance, data types, and control structures of an Algol-like language, support for world modeling (e.g., attachment), and concurrent process execution.
Versatile Assembly Language (VAL)
- Popular textual robot language developed by Unimation Inc. for PUMA robots.
- User-friendly
- Uses WAIT and SIGNAL commands for specific tasks.
- Subroutines written in BASIC and translated with an interpreter.
- Compiled BASIC has more flexibility.
- Provides arm movement, grippers, and speed control.
Robot Configuration Control
- RIGHTY: changes robot configuration to resemble a right human arm
- LEFTY: changes robot configuration to resemble a left human arm
- ABOVE: makes the robot's elbow point up
- BELOW: makes the robot's elbow point down
Motion Control
- MOVE: moves the robot to a specific location.
- MOVES: moves the robot on a straight line path from specified distances in X,Y,Z.
- DRAW: moves the robot along a straight line through specified distances in X, Y, and Z directions.
- APPRO: moves the robot to a location that is offset (along tool Z-axis) from a specified point.
- DEPART: moves along the current tool Z-axis
- APPROS/DEPARTS: same as APPRO/DEPART instruction, but along straight line paths.
- CIRCLE: moves the robot through circular interpolation via three specified point location
Hand Control
- OPEN: indicates opening of the gripper, CLOSES: indicates closing.
- OPENI/CLOSEI: same functions as OPEN/CLOSE but immediately.
- GRASP: indicates the gripper to close.
- MOVEST PART: servo controller end effector causes straight line motion.
- MOVET PART: causes gripper to move to position by joint-interpolated motion
Location Assignment and Modification
- SET
- HERE
Program Control, Interlock, and Input/Output Controls
- SETI: sets the value of integer variable to an expression result
- TYPEI: displays an integer variable name and its value.
- PROMPT:
- GOTO: unconditional branch
- GOSUB/RETURN: necessary for subroutine calls
- IF...THEN ELSE END: logical operations and conditional branching
Content (continued)
- PROCEED: resumes operations.
- SIGNAL: turns signals ON or OFF at specified output channels
- IFSIG/WAIT: test states of one or more external signals
- RESET: turns off all external output signals
- REACT: indicates reactions
- REACTI: interrupts robot motion immediately
- IOPUT/IOGET: used to send or receive from a digital I/O module
- ADC/DAC:
Simple VAL Program (DEMO.A)
- (1) APPRO PART, 50: Move to a location 50mm above PART
- (2) MOVES PART: Move along straight line to PART
- (3) CLOSEI: Close gripper jaws to grip the object immediately
- (4) DEPARTS 150: Withdraw 150mm from PART along straight line path
- (5) APPROS BOX, 200: Approach straight line to location 200mm above BOX
- (6) MOVE BOX: Move to BOX
- (7) OPENI: Open the hand
- (8) DEPART 75: Withdraw 75mm from Box.
- END
Meaning of the program (DEMO.A)
- Detailed description of the steps in the simple VAL program (see above).
Robot Kinematics
- Robot is regarded as a chain of rigid links connected by revolute or prismatic joints.
- Control of flexible structures is not discussed.
- Important problems in analysis and control exist. Some have accepted solutions, others are subjects of research,.
- Steps to formulate are: Kinematic equations, solving kinematic equations, forward problem of dynamics (finding motions), inverse problem of dynamics (finding torques), specifying trajectory, actuator servo control.
Forward Kinematics
- Scheme to determine joint angles of a robot by its position in the world coordinate system.
- For a manipulator, the position and orientation of the end-effector are derived from the given joint angles and link parameters
Reverse Kinematics
- Scheme to determine the position of the robot in the world coordinate system by knowing the joint angles and link parameters.
- Deriving the joint angles and the different configuration of the manipulator from the position and orientation of the end-effector is called the reverse kinematics problem.
Introduction to ROS
- ROS (Robot Operating System): An open-source robot operating system.
- Software libraries and tools to build robot applications across various robotic platforms.
- Developed in 2007 at Stanford Artificial Intelligence Laboratory and later at Willow Garage.
- Managed by the Open Source Robotics Foundation (OSRF) since 2013.
- Two sides: Operating System and User contributed packages.
ROS has two "sides"
- Operating System side: Provides standard operating system services (hardware abstraction, low-level device control, message passing, package management).
- User contributed packages: Implement common robot functionality (SLAM, planning, perception, vision, manipulation)
What is ROS?
- A meta-operating system for robots, providing operating system- like services and tools.
- Facilitates code writing, building, and running code across multiple computers
- Similar to "Robot Frameworks" like Player, YARP, Orocos, CARMEN, Orca, MOOS, and Microsoft Robotics Studio.
The ROS Equation
- Plumbing: ROS's publish-subscribe messaging infrastructure for easily constructing distributed computing systems.
- Tools: Extensive set of tools for configuring, starting, introspecting, debugging, visualizing, logging, and stopping distributed computing systems.
- Capabilities: Collection of libraries implementing useful robotic functionalities (e.g., mobility, manipulation, perception).
- Ecosystem: A strong community support that integrates and documents packages. (Ros.org)
ROS History
Various Distributions
- List of ROS distributions with names and dates
Characteristics of ROS
- Distributed Process: ROS programs are structured as nodes, each independent and exchanging data systematically.
- Package Management: ROS packages group related processes, code, files and data, making organization and collaboration easy.
- Public Repositories: Packages can be published to GitHub or other public repositories with the appropriate licenses..
- API (Application Programming Interface): ROS programming can insert it into the code for program creation.
- Supporting various Programming Languages: ROS is compatible with several languages including Python, C++, Java, C#, Lua, and Ruby.
Components of ROS
- Client library: Supporting many programming languages.
- Hardware interface: For controlling hardware and data transmission/reception in ROS
- Robotics Application Framework: Creating different Robotics Applications
- Simulation tools: to control robots in a simulated environment.
- Software development tools: used for developing ROS code.
Key Components of ROS
- Nodes: Independent processes representing ROS programs.
- Messages/Data: Data exchanged between nodes.
- Services: Functions that can be called remotely between nodes.
- Topics: Channels for asynchronous message exchange between nodes.
- Packages: Units organizing ROS code, configurations files, nodes, and datasets.
- ROS components work together for seamless communication and coordination of robot tasks.
Core Elements of ROS Architecture
- Nodes: Fundamental processing units.
- Master: Central node managing communication among other nodes. Keeps track of active nodes and facilitates message passing.
- Messages: Data structures used by nodes.
- Topics: Named buses for node communication.
- Services: Synchronous communication channels.
Example
- Dividing robot application tasks (e.g. controlling motor speed and processing sensor input) among separate nodes using ROS topics effectively improves organization and maintainability.
Three-Level ROS Architecture
- Task level: Handles high-level tasks (e.g., missions).
- Behaviour level: Defines robot behaviors for tasks (e.g., dive, cruise, find pipe).
- Controlling and sensor/actor level: Controls robots actuators and sensor data(e.g., sensor control, localization, motors)
ROS Architecture with robots, sensors, controllers and the central computer
- Diagram describing structure
Client Layer
- List of ROS client libraries
ROS 2 Architecture Overview
- Diagram describing the ROS 2 architecture
Benefits of Open Source ROS
- Collaboration: Fosters rapid innovation through global development.
- Cost-effectiveness: Free access to software libraries.
- Adaptability: Ease of customization to meet requirements.
- Community support: Help from a vast community through forums and documentation.
ROS Architecture
- Concept involves Graph Resource Names (a naming system to globally reference nodes, topics and services).
- Consistent and organized structure within ROS framework.
- Hierarchical system with namespaces to avoid naming collisions.
Why ROS?
- Free and open-source robotics software framework
- Message passing interface between processes
- Operating system-like features
- High-level programming language support and tools
- Availability of third-party libraries
- Off-the-shelf algorithms
- Ease in prototyping
- Ecosystem/community support
- Extensive tools and simulators
Robot Operating Systems - Examples
- ROS Noetic (stable version often used for research and academic purposes).
- ROS 2 (evolution of ROS 1, with enhanced capabilities for real-time systems, multi-robot systems, and security).
- Micro-ROS (targeted for embedded systems with limited resources, ideal for small robots)
ROS Contains Many Open Source Implementations
- Motion planning
- Mapping and localization
- Navigation
- Perception
- Coordinate frame representation
- Simulation
ROS Concepts
- ROS file system
- ROS computation graph
- ROS community
ROS Filesystem
- Metapackages
- Packages (package manifests, message types, service types).
- Diagram of the file system structure
ROS Computation Graph
- Overview and diagram showing communication methods.
ROS Nodes
- Function and usage of various nodes. Diagram of how to connect nodes.
ROS Topics
- Described as named buses for ROS nodes to send and receive data
- Anonymity of publishers and subscribers
- Message types in each topic
ROS Messages
- Messages have simple data structures, using primitive types such as integer, floats.
- Message types include arrays and arbitrarily nested structures.
Creating the Messages
- Diagram showing package, msg definition, build system, C++ msg source code, Python msg source code, and other source code.
ROS Services
- Overview of ROS services (Request/Reply mechanism, client and server nodes).
ROS Master
- Describes the parameter server in relation to ROS nodes and its purpose. Diagram of how this works.
ROS Bags
- Data logging as a debugging tool in ROS system.
- Efficient logging tool for data logging.
- Data is stored in a single file with the .bag extension
Creating ROS Applications
- Steps to create ROS applications (ROS workspace, ROS package, ROS nodes). Detailed instruction to build ROS application.
ROS Build System: CATKIN
- Build system for compiling ROS packages. Custom build system made from CMake and Python scripting.
ROS Workspace
- Contains ROS packages and essential files for ROS code development. Hierarchical structure with folders (src, build, devel.). Structure and organization of a ROS workspace.
Creating ROS Workspace
- Instruction for creation of a ROS workspace.
ROS Packages
- Organizes software into packages containing code, data, documentation for structured development.
- How to create a ROS package. Includes creating CMakeLists.txt, package.xml, source, and include directories.
ROS Client Libraries
- These libraries provide ROS functionalities in various programming languages
- ROS Client libraries examples: roscpp, rospy, rosli
Creating ROS Nodes
- Steps to create ROS nodes (including header files, modules, initialization with ros::NodeHandle, printing messages).
ROS Header Files and Modules
- ROS header files (std_msgs). Diagram showing steps to create ROS header files and how to use the header files in the code.
ROS Initialization (initializing Nodes)
- How to initialize ROS Nodes using C++ and Python
Printing Messages in a ROS Node
- ROS_INFO, ROS_WARN, ROS_DEBUG, ROS_ERROR, ROS_FATAL.
Creating ROS Node Handler
- How to create a NodeHandle instance for ROS nodes
Hello World Example
- Description of the basic Hello World example (steps for a ROS code).
Steps to Build the Program
- Detailed steps to build a ROS application example.
Creating the workspace
- Instruction for workspace creation (using specific commands).
Creating a hello world Package
- Instruction for package creation (using specific commands).
Package.xml
- Instruction about usage of package.xml file
CMakeLists.txt
- Instruction about usage of CMakeLists.txt file
Creating a ROS C++ Node
- Creating a talker and listener node for a simple communication in ROS
Creating ROS C++ Node | Publisher Node
- How to write C++ publisher node (talker node)
Creating ROS C++ Node | Subscriber Node
- How to write C++ subscriber node (listener node).
Editing the CMakeLists.txt File
- Four lines of code that needs to be added for successful compilation.
Building C++ Nodes
- Running the catkin_make command to build the nodes.
Executing C++ Nodes
- Running the nodes(talker and listener) to execute and see the outputs.
Executing C++ nodes
- How to run roscore, rosrun talker node, rostopic list, and rosrun listener node on the terminal.
Open-RDK Documentation & Packages
- Webpage information on how to get started with ROS 2 bridge and packages
Evolution of ROS - Differences ROS1 & ROS2
- Differences between ROS1 and ROS2 versions (communication, building, coding style).
- Key features of ROS2 and its versions. Benefits and different fields of usage.
ROS2 Design
- Components of the ROS 2 architecture (client layer, middleware, OS layer, user code, user nodes). Functions of each layer. Diagram describing the structure of ROS2.
Advanced Programming and Customization
- Introduction to C++ in ROS2
Developing ROS2 C++ Application
- Setting up the C++ programming environment for ROS2
Creating ROS2 Workspace
- Detailed instructions on how to set up a ROS2 workspace including installing and cloning code.
Cloning Sample Repo
- Instructions for cloning examples from repositories.
Creating ROS2 Package
- Steps to create a ROS2 package, including the creation of the necessary files.
Creating Simple Publisher Node
- Detailed instructions to create ros2 publisher nodes.
Creating Simple Subscriber Node
- Detailed instructions to create ros2 subscriber nodes.
Setting Up the Environment
- Check if the ROS environment is correctly set up. If not, reinstalling or correcting the environment variable settings and running the necessary commands.
Core ROS Concepts
- Brief explanations of fundamental ROS concepts. Overview of ROS nodes, topics, services, and ROS tools.
Hands-on
- Procedures for launching the turtle simulation and other practical use cases.
Interesting Facts
- Facts about ROS2, including whether it is a complete rewrite or an evolution of ROS1.
ROS2 Transforms (tf)
- Concept of ROS2 transforms, and its usage to depict position and orientation of robotic objects (i.e., sensor, coordinate frames), and its implementation.
- Instructions for how to use ROS2 Transform to view frames
ROS2 Visualization (rViz)
- Introduction to ROS 2 visualization tool rviz2
Gazebo Simulation (Ignition)
- Simulation using Gazebo to simulate the behavior and interaction of robots in virtual environments.
About Us - SILIRIS
- Brief overview of SILIRIS Technologies, and its entities working on robotics, electronics, and more.
- Brief overview of the company products (including robot kits).
Our Portfolio
- Range of different components produced by the company (PCB design to assembly, Hobby robot kits, drones, surveillance robots, customized solutions or electric cycles and more).
Arms & Grippers, Sensors & Modules, Hobby Robot Kits, Electronic Kits & Components, Surveillance Beetle Robot, Ground Station, Wolf - RC Platform, Wolf - ROS Platform, Drones (UAV's), Racing Drones, Drones Kits, Standard ebike/eScooter Batteries, Customized Lithium based Battery Solutions, PCB Design to Assembly, Rigid 1-2 Sided, Rigid Flex, Standard Multilayer, Others/Custom Designs , Assembly & Testing
- List of SILIRIS products, categorized by product type.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Test your knowledge on VAL and ROS programming languages used in robotics. This quiz covers commands, functions, and key advantages of each language. Assess your understanding of robot operation and communication in the context of VAL language and the Robot Operating System (ROS).