Robot programming and integration are crucial aspects of industrial robotics. They involve creating instructions for robot behavior, implementing control algorithms, and integrating robots with sensors and other automation components. These skills are essential for designing effective robotic systems.

Understanding robot programming principles and system integration techniques enables engineers to develop efficient, safe, and reliable robotic solutions. This knowledge connects directly to the broader topics of , dynamics, and covered in the chapter on Industrial Robotics.

Robot programming principles

Robot programming fundamentals

Top images from around the web for Robot programming fundamentals
Top images from around the web for Robot programming fundamentals
  • Robot programming creates instructions defining desired robot behavior and movement for specific tasks, requiring knowledge of robot capabilities, limitations, and intended application
  • Robot control architectures organize structure and communication protocols to control and coordinate robotic system components
    • Centralized architectures have a single central controller managing all robot operations
    • Decentralized architectures distribute control among multiple subsystems or modules
    • Hybrid architectures balance global coordination and local autonomy by combining centralized and decentralized elements
  • Robot programming languages include low-level (assembly) for direct hardware control and high-level (, ) for higher abstraction and ease of use
  • Programming paradigms such as imperative (procedural), object-oriented, and behavior-based have strengths and weaknesses, chosen based on application requirements

Motion planning and control algorithms

  • Motion planning and trajectory generation determine optimal robot path and movement sequence to reach target position while avoiding obstacles and satisfying constraints
  • Robot control algorithms ensure precise and stable motion control of robot joints and end-effector
    • Proportional-Integral-Derivative (PID) control adjusts robot motion based on error between desired and actual positions
    • (MPC) optimizes robot motion by predicting future system behavior and constraints
  • calculates joint angles needed to achieve desired end-effector position and orientation
  • and avoidance algorithms prevent robot from colliding with obstacles in its workspace
  • Singularity avoidance techniques prevent robot from reaching configurations where it loses degrees of freedom and cannot move in certain directions

Robot program development

Programming environments and frameworks

  • Robot programming environments provide tools and libraries for developing and simulating robot programs (, , manufacturer-specific environments)
  • (ROS) is an open-source framework simplifying robot application development with libraries, tools, and conventions
    • Supports C++, Python, and uses publish-subscribe architecture for modular, distributed robot control
    • Packages like MoveIt! provide high-level motion planning and manipulation capabilities for various robot platforms
  • MATLAB Robotics System Toolbox offers high-level environment for designing, simulating, deploying robot applications with algorithms for kinematics, dynamics, control, and interfaces to robots and simulators
  • Manufacturer-specific environments (ABB , KUKA WorkVisual) provide integrated development environments (IDEs) tailored to specific robot controllers and languages

Simulation and debugging techniques

  • Simulation allows virtual testing and validation of robot programs before physical hardware deployment using simulators like and for realistic modeling of robots, environments, sensors
  • Debugging and troubleshooting techniques identify and resolve issues in robot programs
    • Breakpoints pause program execution at specific lines for inspecting variables and program state
    • Step-through execution runs program line by line to observe behavior and identify errors
    • Logging records program flow, variable values, and system events for analysis and debugging
  • Virtual commissioning uses simulation to test and validate robot programs and system integration before physical commissioning, reducing development time and risks
  • (HIL) simulation integrates physical robot components with simulated environments for realistic testing and validation
  • Automated testing frameworks enable systematic testing of robot programs and system integration to ensure functionality, performance, and reliability

Robotic system integration

Sensor integration

  • System integration combines hardware and software components to create cohesive, functional robotic system by integrating robots with sensors, actuators, controllers, and other automation equipment
  • Common sensors in robotic systems provide feedback on robot's environment, position, interaction forces
    • Vision sensors (cameras) enable object recognition, tracking, guidance for inspection, pick-and-place tasks
    • Force/torque sensors measure forces and moments on robot end-effector for force control and compliant motion
    • Proximity sensors detect nearby objects to avoid collisions and ensure safe robot operation
    • Encoders measure robot joint positions and velocities for precise motion control and localization
  • Sensor fusion combines data from multiple sensors to improve perception and robustness (combining vision and depth sensors for 3D object recognition)

Communication protocols and PLC integration

  • Industrial communication protocols (, , ) establish reliable, real-time communication between robot controller and other automation components
  • Programmable Logic Controllers (PLCs) control and coordinate overall automation process, integrating with robot controller through digital I/O, fieldbus communication, or OPC UA
  • (OPC UA) is a platform-independent communication protocol for secure, reliable data exchange between industrial systems and devices
  • Fieldbus systems (, ) enable distributed control and communication among automation components using a shared bus topology
  • Ethernet-based protocols (, ) leverage standard Ethernet infrastructure for real-time industrial communication and interoperability

Safety and calibration

  • Safety integration protects human workers and prevents equipment damage using devices like emergency stop buttons, light curtains, safety PLCs properly integrated and configured
  • Risk assessment identifies and evaluates potential hazards in robotic system to determine necessary safety measures and controls
  • Functional safety standards (, ) provide guidelines for designing and implementing safety-related control systems in industrial automation
  • System calibration establishes accurate relationships between robot and other component coordinate systems using techniques like and
  • Hand-eye calibration determines transformation between robot end-effector and camera coordinate systems for precise vision-guided tasks
  • Robot-world calibration aligns robot base coordinate system with fixed reference frame in the environment for accurate positioning and navigation

Robotic system performance analysis

Performance metrics and reliability analysis

  • Performance metrics assess robotic system efficiency and effectiveness in meeting industrial application requirements
    • is time for robot to complete one full operation or task
    • measures number of parts or products processed per unit time
    • Accuracy and relate to robot's ability to precisely position end-effector and consistently perform tasks
  • Reliability analysis assesses robotic system's ability to operate consistently without failure over extended period using metrics like (MTBF) and (MTTR)
  • (FMEA) identifies potential failure modes, causes, consequences to prioritize risks and develop mitigation strategies
  • (FTA) is a top-down approach to identify and analyze conditions and factors that can cause system failures or undesired events
  • Reliability testing subjects robotic system to various stress factors (temperature, vibration, load) to evaluate its durability and identify potential failure modes

Optimization and continuous improvement

  • (RCA) identifies underlying causes of failures or performance issues using techniques like and Ishikawa (fishbone) diagrams
  • Maintenance strategies optimize robotic system performance and reliability
    • involves scheduled inspections and servicing to prevent failures
    • uses data analytics to anticipate and address potential issues before occurrence
    • responds to failures and breakdowns as they occur, focusing on quick repair and restoration of system operation
  • Continuous improvement methodologies (, ) optimize robotic system performance and reliability by eliminating waste, reducing variability, enhancing process efficiency
  • (SPC) monitors robotic system performance using control charts to detect deviations from desired levels and identify improvement opportunities
  • (DOE) optimizes robotic system parameters and settings by systematically varying factors and analyzing their effects on performance metrics

Key Terms to Review (54)

5 Whys: The 5 Whys is a problem-solving technique used to explore the cause-and-effect relationships underlying a particular problem. By repeatedly asking 'why' (typically five times), individuals can identify the root cause of an issue, which is essential in optimizing processes and systems, especially in robot programming and integration. This method encourages deeper thinking and helps to eliminate assumptions, allowing for a clearer understanding of issues that may arise in robotics projects.
Accuracy: Accuracy refers to the degree to which a measurement, calculation, or specification conforms to the true value or intended standard. It is crucial in various fields, as it influences reliability and performance in system outputs and decision-making processes. The importance of accuracy is evident in designing systems, controlling processes, and validating models, ensuring that outcomes meet required specifications.
Articulated Robot: An articulated robot is a type of robotic arm characterized by its jointed structure that allows for a wide range of motion, similar to a human arm. This configuration enables articulated robots to perform complex tasks with precision in various applications, including assembly, welding, and material handling. The design typically includes multiple rotary joints, which provide the robot with several degrees of freedom, making it highly versatile and adaptable to different environments.
C++: C++ is a high-level programming language that is widely used for system and application software development. It is an extension of the C programming language, incorporating object-oriented features, which allow for better organization of complex programs and code reuse. The language is known for its performance and flexibility, making it suitable for various applications, including robotics and embedded systems.
CAN Bus: CAN Bus, or Controller Area Network Bus, is a robust vehicle bus standard designed for real-time control applications, enabling communication among various components in a vehicle or robotic system. This protocol allows microcontrollers and devices to communicate with each other without a host computer, making it essential for the seamless integration of sensors, motors, and control systems in mechatronic applications.
CANopen: CANopen is a communication protocol based on the Controller Area Network (CAN) that is widely used in embedded systems for automation and control. It facilitates the networking of devices, allowing them to communicate seamlessly in real-time, which is essential for the integration and programming of robotic systems and the effective interfacing of different subsystems. CANopen provides a standardized way for devices to share information, improving interoperability and reliability in complex systems.
Collision detection: Collision detection refers to the computational techniques used to determine when two or more physical objects in a virtual environment intersect or come into contact with each other. This process is crucial for ensuring the safety and efficiency of robotic systems, as it helps prevent accidents, ensures proper functioning, and allows for smooth integration of robots into their operating environments.
Cycle Time: Cycle time is the total time it takes to complete one cycle of a process, from the beginning of one operation to the beginning of the next. In automation and robotics, understanding cycle time is crucial for optimizing performance, ensuring efficiency, and integrating components effectively into a system. It encompasses all aspects of a task, including programming, operation, and actuator response, making it a key factor in productivity and system design.
Design of Experiments: Design of Experiments (DOE) is a systematic approach used to plan, conduct, and analyze controlled tests to evaluate the factors that may influence a particular outcome. It allows engineers and researchers to determine the relationships between variables in a structured manner, optimizing processes and improving product quality. By using DOE, one can identify which factors are significant and how they interact, facilitating effective decision-making in robot programming and integration.
DeviceNet: DeviceNet is a network protocol used for communication between industrial devices and systems, based on the Controller Area Network (CAN) protocol. It allows various devices such as sensors, actuators, and controllers to communicate with each other seamlessly, facilitating integration in automation environments. DeviceNet enhances system interoperability and simplifies the management of complex automation networks by providing a standardized communication method.
EtherCAT: EtherCAT (Ethernet for Control Automation Technology) is a real-time Ethernet network protocol specifically designed for automation and control applications, allowing devices to communicate efficiently with low latency. It provides a flexible and powerful means of connecting various components in a system, enabling seamless communication between devices such as sensors, actuators, and controllers in mechatronic systems. This network protocol is crucial for ensuring synchronization and reliability in the operation of robotic systems, integrating multiple subsystems while maintaining high performance.
Ethernet/IP: Ethernet/IP (Ethernet Industrial Protocol) is an industrial networking protocol that utilizes standard Ethernet technology to enable real-time communication and control between devices in automation systems. It combines the widely-used Ethernet networking with the Common Industrial Protocol (CIP), allowing for seamless integration of various industrial devices like sensors, actuators, and controllers, leading to improved interoperability and efficiency in manufacturing and process control environments.
Failure Mode and Effects Analysis: Failure Mode and Effects Analysis (FMEA) is a systematic method for evaluating processes to identify where and how they might fail and assessing the relative impact of different failures. It aims to prioritize potential failures based on their severity, occurrence, and detection to improve product design and reliability. This technique enhances understanding of potential failure points, helping teams implement corrective actions before issues arise in manufacturing or system integration.
Fault Tree Analysis: Fault Tree Analysis (FTA) is a systematic, graphical method used to identify and analyze potential failures in a system, breaking down complex processes into simpler components to understand how failures might occur. This technique provides insights into the relationships between various failures and their causes, making it an essential tool for assessing the reliability and safety of robotic systems during programming and integration.
Fuzzy logic control: Fuzzy logic control is a method of reasoning that mimics human decision-making processes to handle uncertainty and imprecision in systems. It allows for more flexible and adaptive control strategies by using fuzzy sets and rules, enabling machines to interpret vague or ambiguous information. This approach is particularly useful in automation and robotics, where traditional binary logic falls short in complex environments.
Gazebo: In the context of robotics, a gazebo refers to a powerful simulation tool that allows users to create, simulate, and visualize robotic systems in a virtual environment. This tool supports the integration of various sensors and algorithms, enabling developers to test and validate their robot designs before deploying them in the real world. Gazebo is commonly used for tasks such as robot programming, path planning, and performance evaluation, making it a critical component for seamless robot integration.
Hand-Eye Calibration: Hand-eye calibration is a technique used in robotics to determine the spatial relationship between a robot's end effector and a camera mounted on it. This process is crucial for tasks such as object recognition and manipulation, where precise alignment of the robot's actions with visual input is necessary. By establishing this relationship, the robot can accurately interpret visual information and execute movements effectively, ensuring seamless interaction between perception and action.
Hardware-in-the-loop: Hardware-in-the-loop (HIL) is a simulation technique used in the development and testing of complex real-time embedded systems. This method integrates physical hardware components with simulated models, allowing for thorough validation and testing of systems before they are deployed. By using HIL, engineers can assess the interactions between hardware and software in a controlled environment, which is essential for ensuring system reliability and performance across various applications.
IEC 62061: IEC 62061 is an international standard that focuses on the safety of machinery and systems, specifically related to functional safety for electrical, electronic, and programmable electronic safety-related systems. This standard provides guidelines for the design, implementation, and validation of safety-related control systems in machines, ensuring they meet necessary performance levels and are reliable in preventing accidents and hazards during operation.
Inverse kinematics: Inverse kinematics is a mathematical process used to determine the joint angles and positions needed for a robotic arm or mechanism to achieve a desired end-effector position and orientation. This process is essential for tasks like programming robots, controlling their dynamics, planning their motions, and understanding their kinematic behaviors in various coordinate systems.
Ishikawa Diagram: An Ishikawa diagram, also known as a fishbone diagram, is a visual tool used to identify and analyze the potential causes of a specific problem or effect. This diagram organizes possible causes into categories, helping teams to systematically explore the various factors that contribute to an issue in processes like robot programming and integration. It facilitates root cause analysis, encouraging collaborative discussions to pinpoint areas for improvement in system design and function.
ISO 13849: ISO 13849 is an international standard that provides guidelines for the design and integration of safety-related control systems in machinery. It focuses on ensuring that these systems perform reliably and safely to minimize risks of harm to operators and other individuals involved with machinery. The standard addresses aspects such as risk assessment, performance levels, and system architecture to facilitate safe operations in robotic and automated environments.
Kinematics: Kinematics is the branch of mechanics that focuses on the motion of objects without considering the forces that cause this motion. It is essential for understanding how robots and mechanical systems move, as it involves concepts like position, velocity, and acceleration. Kinematics provides the mathematical framework necessary to analyze movement, which is crucial when integrating robotic systems into broader mechatronic applications.
Lean: Lean refers to a systematic approach focused on minimizing waste within manufacturing systems while simultaneously maximizing productivity. This methodology emphasizes efficiency, continuous improvement, and delivering value to the customer, which are all vital in optimizing robot programming and integration processes.
MATLAB: MATLAB is a high-level programming language and interactive environment designed for numerical computing, data analysis, algorithm development, and visualization. It is widely used in engineering and scientific fields for its powerful matrix manipulation capabilities, making it an essential tool in various applications such as control systems, robotics, and data processing.
MATLAB Robotics System Toolbox: The MATLAB Robotics System Toolbox is a collection of tools and functions designed for designing, simulating, and testing robotic systems. It supports the modeling of robot kinematics, dynamics, and control algorithms, while providing a framework for integrating various robotics components, including sensors and actuators. This toolbox plays a critical role in programming and integrating robots for practical applications.
Mean Time Between Failures: Mean Time Between Failures (MTBF) is a measure of reliability that calculates the average time between the occurrence of failures in a system or component. This metric is crucial in assessing the performance and dependability of robotic systems, helping engineers and programmers design better integration strategies to minimize downtime and enhance overall functionality.
Mean Time to Repair: Mean Time to Repair (MTTR) is a key performance metric that measures the average time taken to repair a failed system or component and restore it to operational status. It provides insight into the reliability and maintainability of systems, highlighting how quickly repairs can be executed after a failure, which is crucial in environments where robots are programmed for specific tasks and integration into larger systems is required.
Modbus TCP: Modbus TCP is a communication protocol that facilitates the exchange of data between electronic devices over a TCP/IP network. It enables various devices, such as robots and sensors, to communicate in a standardized way, making it essential for integrating automation systems and robot programming.
Model Predictive Control: Model Predictive Control (MPC) is an advanced control strategy that utilizes a mathematical model of a system to predict future behavior and optimize control inputs over a specified time horizon. This technique continuously solves an optimization problem at each time step, allowing for real-time adjustments based on predicted outcomes. MPC is particularly useful in managing complex systems with constraints, enabling better performance and flexibility in dynamic environments.
Motion Planning: Motion planning is the process of determining a sequence of movements for a robot to achieve a specific goal while avoiding obstacles and ensuring smooth trajectories. This concept is crucial in robotics, as it allows robots to navigate their environment effectively, whether it's moving from point A to point B or manipulating objects within their workspace. Motion planning integrates various algorithms and techniques to optimize paths and ensure that robots can operate safely and efficiently in dynamic environments.
Offline programming: Offline programming is the process of developing robot control programs without the robot being actively engaged in the programming environment. This allows for the simulation and optimization of robotic tasks in a virtual setting, ensuring that programs can be tested and refined before being implemented on the actual robot. This approach minimizes downtime and increases efficiency by allowing programming to take place while the robot is performing other tasks or during scheduled maintenance periods.
OPC Unified Architecture: OPC Unified Architecture (OPC UA) is a machine-to-machine communication protocol designed for industrial automation, providing a framework for the exchange of data between various devices and systems. It integrates various data access, alarms, and historical data access into a unified architecture, promoting interoperability among different manufacturers' devices and software in an industrial environment. OPC UA is crucial for enabling seamless integration in robotics and mechatronic systems, where diverse components must communicate effectively to achieve desired outcomes.
PID Control: PID control, which stands for Proportional-Integral-Derivative control, is a widely used control loop feedback mechanism that helps maintain a desired output by continuously calculating an error value as the difference between a setpoint and a process variable. This method utilizes three distinct parameters: proportional gain, integral gain, and derivative gain, which work together to optimize system performance by adjusting the control input to reduce the error. PID control is essential in various applications, including robotics, to achieve precise motion and stability.
Predictive Maintenance: Predictive maintenance is a proactive maintenance strategy that uses data analysis and monitoring tools to predict equipment failures before they occur, enabling timely interventions to prevent unexpected breakdowns. By leveraging various data sources and advanced analytics, this approach enhances operational efficiency and reduces downtime in systems and machinery.
Preventive Maintenance: Preventive maintenance refers to the regular and systematic upkeep of equipment and systems to prevent unexpected failures and extend their lifespan. In the context of robotic systems, it involves scheduled inspections, adjustments, cleaning, and replacements of parts to ensure optimal performance and reliability. This proactive approach helps in identifying potential issues before they escalate, which is crucial for maintaining productivity in automation and integration processes.
Profibus: Profibus, short for Process Field Bus, is a standardized communication protocol used in automation technology that facilitates data exchange between various devices in industrial settings. It enables seamless communication among sensors, actuators, and controllers, promoting interoperability and efficient control of automated systems. By allowing devices from different manufacturers to communicate effectively, Profibus enhances system integration across multiple platforms.
PROFINET: PROFINET is an open industrial Ethernet standard used for communication between devices in automation technology, designed to integrate field devices like sensors and actuators with higher-level systems such as controllers and HMIs. It supports real-time data exchange and ensures seamless connectivity across various types of industrial equipment. Its flexibility and interoperability make it essential in modern industrial applications, particularly in integrating robots and developing human-machine interfaces.
Python: Python is a high-level, interpreted programming language known for its readability and versatility, widely used in various applications including robotics and automation. Its simple syntax allows programmers to focus on problem-solving rather than complex code structures, making it particularly suitable for rapid prototyping and integration in robotic systems.
Reactive Maintenance: Reactive maintenance is a type of maintenance that occurs after a system or component fails, focusing on restoring functionality rather than preventing future issues. This approach often leads to unplanned downtime, increased repair costs, and can negatively impact overall efficiency. In the context of robotics and automation, reactive maintenance plays a critical role as it determines how quickly and effectively robotic systems can be restored to operational status after unexpected failures.
Repeatability: Repeatability refers to the ability of a system, particularly in robotics and measurement technologies, to produce consistent results under identical conditions over multiple trials. It is a critical aspect of performance that ensures reliable operation, allowing systems to reproduce the same output when subjected to the same input or process. This concept is essential for ensuring accuracy and reliability in robot programming and integration as well as in selecting appropriate transducer technologies for various applications.
Robot Operating System: Robot Operating System (ROS) is an open-source framework designed for developing robotic software applications. It provides a collection of tools, libraries, and conventions that simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms. With its modular architecture, ROS allows developers to build and integrate components more efficiently, making it easier to manage the programming and integration of robots.
Robot-world calibration: Robot-world calibration is the process of aligning a robot's coordinate system with the physical world in which it operates, ensuring accurate navigation and task execution. This process involves adjusting the robot's internal sensors and control systems to reflect real-world measurements, allowing it to correctly interpret its surroundings and interact with objects. Proper calibration is essential for effective robot programming and integration, as it directly impacts the robot's ability to perform tasks accurately and reliably.
RobotStudio: RobotStudio is a powerful simulation and offline programming tool designed for industrial robots, enabling users to create, test, and optimize robotic applications in a virtual environment. This software allows engineers and programmers to visualize and simulate robot operations, facilitating integration with production processes while minimizing downtime and errors. By using RobotStudio, users can improve efficiency and accuracy in robot programming and enhance the overall productivity of manufacturing systems.
Root Cause Analysis: Root cause analysis (RCA) is a systematic approach used to identify the underlying reasons for a problem or defect in processes, systems, or products. By determining the root causes, organizations can implement effective solutions that prevent recurrence, thereby improving quality and efficiency. This process is critical in various applications, especially when programming and integrating robots and calibrating sensors to ensure accuracy and reliability in operation.
ROS: ROS, or Robot Operating System, is an open-source middleware framework designed to facilitate the development and integration of robotic software. It provides essential tools, libraries, and conventions that enable developers to create robot applications efficiently and collaboratively, promoting code reuse and modularity. ROS supports various programming languages and hardware platforms, making it a popular choice for robotics projects across industries.
SCARA Robot: A SCARA (Selective Compliance Assembly Robot Arm) robot is a type of industrial robot characterized by its unique design that allows for high-speed and precise horizontal movements, making it ideal for assembly operations. This type of robot typically features a two-link arm with a vertical compliance, allowing it to excel in tasks that require both agility and precision, such as pick-and-place applications. Its programming and integration are crucial in manufacturing environments, where its ability to operate in specific coordinate systems enhances efficiency and accuracy.
Sensor Integration: Sensor integration refers to the process of combining data from multiple sensors to create a cohesive and accurate representation of an environment or system. This integration allows for improved decision-making, enhanced performance, and more reliable automation in various applications, particularly in robotics and mechatronic systems. By synthesizing data from different sensor types, systems can better understand and react to dynamic conditions.
Six Sigma: Six Sigma is a data-driven methodology aimed at improving processes by minimizing defects and variability. It focuses on using statistical analysis to identify and eliminate the causes of errors, thereby enhancing overall quality and efficiency in manufacturing and service industries.
Statistical Process Control: Statistical process control (SPC) is a method used to monitor and control a process by using statistical methods. It helps identify variations within the process, ensuring that it operates at its full potential by maintaining consistent quality and performance. This approach is essential in industries where precision and efficiency are critical, as it allows for real-time feedback and improvements in automated systems.
Teach Pendant Programming: Teach pendant programming is a method used to program robots by manually guiding them through tasks using a handheld device, known as a teach pendant. This approach allows operators to physically manipulate the robot's end effector while recording the movements, which are then converted into code for automated execution. This hands-on technique enables quick adjustments and fine-tuning of the robot's path and actions, making it a practical solution in robotic integration.
Throughput: Throughput refers to the amount of work or data processed in a given amount of time, often used to measure the performance and efficiency of systems. It is a critical metric in various applications, including robotics, digital signal processing, and real-time systems, helping determine how effectively resources are utilized and how quickly tasks are completed.
Trajectory planning: Trajectory planning is the process of determining the optimal path for a robot to follow in order to move from a starting point to a desired endpoint while considering various constraints. This involves calculating both the spatial path and the timing of movement, ensuring that the robot moves efficiently and accurately. Effective trajectory planning integrates kinematic models to understand joint movements and helps in programming robots for precise operations in dynamic environments.
V-REP: V-REP, or Virtual Robot Experimentation Platform, is a versatile robot simulation software that enables users to design, simulate, and control robotic systems in a 3D environment. It integrates various aspects of robotics, including physics engines and programming interfaces, making it a powerful tool for robot programming and integration tasks.
© 2024 Fiveable Inc. All rights reserved.
AP® and SAT® are trademarks registered by the College Board, which is not affiliated with, and does not endorse this website.