Bev Facey Community High

CSE2240: Robotics Programming 2

Students add to their understanding of robotics programming by employing procedural programming techniques and fundamental data structures to create programs that display greater agency and autonomy. They learn how to analyze, modify, write and debug robotics algorithms and programs in which modularity is achieved through subprograms such as functions and fundamental data structures such as arrays.

Theory

  1. demonstrate how basic procedural programming approaches can be used to create robotics programs
    • include the following:
      • subprograms that can be readily mapped to specific subsections of a robot’s architecture
      • the decomposition of complex robotic tasks into subtasks improving both the maintainability and extendibility of the programs
      • the potential for code reuse both in the same and in other robotics programs
      • the promotion of data hiding and information protection in robotics programs
      • the enhancement of the readability of a robotics program
      • the reduction in side effect errors

Practical

  1. demonstrate how basic procedural programming approaches can be used to create task libraries
    • demonstrate how they:
      • increase design, coding and debugging efficiency
      • can improve robotic artificial intelligence leading to programs that display greater agency and/or autonomy
  2. demonstrate an understanding of data structures such as arrays and how they can be used in robotics
    • outline and describe the data structures available in a typical robotic programming environment
    • outline the main advantages of data structures such as arrays over primitive data types in robotics programming
    • describe and illustrate the main operations associated with the data structures supported by a robotic programming environment
    • describe and demonstrate how data structures can be used to simulate aspects of human cognition such as memory in robotics programs
  3. design a robotics system consisting of at least one robot, associated control systems and environment that use procedural programming approaches and fundamental data structures to carry out a simple set of predetermined tasks
    • identify the general tasks the robot will be required to carry out including:
      • breaking those tasks into simpler tasks by continuing the process until each task can be treated as a subprogram
      • drafting a task hierarchy that associates the tasks and subtasks
    • describe and diagram the environment in which the robot will be required to operate by:
      • identifying the elements in the environment that can be manipulated by the robot and determining their location
      • identifying the elements in the environment to be detected by the robot’s sensors and determining their location
      • determining the type and location of internal barriers in the environment
      • setting the outer limits of the environment
    • identify the capabilities the robot will require to carry out the tasks
    • determine the control approach to be used, including what level of operator control will be required if the robot cannot support a fully autonomous mode of operation
    • design the robot, using the tasks to be accomplished, the proposed environment, the required capabilities and the control approach as parameters
    • check your design for congruency against the task list to be accomplished and with the proposed environmental specifications
    • modify the design, as required
    • carry out the design process sequentially using a top-down approach and employ stepwise refinement
  4. use procedural programming approaches to build the environment, robot and controlling mechanism called for by the design
    • construct that portion of the environment required for the first task or tasks on the task sequence
    • assemble as much of the robot, as is required, to accomplish those tasks
    • write algorithms that use modular programming approaches to outline how the first set of tasks is to be accomplished including:
    • use appropriate problem decomposition techniques to break each task into subtasks capable of being represented as modules
      • identify the sense, plan and action component of each module
      • identify the data requirements of each module and determine which requirements should be met by fundamental data types
      • organize each module, as required, using the appropriate structures to control program flow
      • link the modules into calling and called modules
      • write the algorithm in an acceptable format
      • use appropriate techniques to determine if the algorithm will achieve the original intent
    • use an RCL, capable of using structured and procedural approaches and supporting fundamental data structures, to translate the algorithms into a program including:
      • convert the algorithms into programs consisting of linked modules/subprograms that reflect the structure of the algorithm
      • use appropriate types of subprograms to implement the various sections of the algorithm
      • maintain an appropriate balance between the coupling or dependency and cohesion or focus of the subprograms
      • pass data between the subprograms without unintended side effects
      • use internal and external documentation
    • load and execute program, and track and eradicate errors by:
      • testing each of the physical subsystems of the robot(s) to eliminate engineering errors
      • testing the robot(s) within the appropriate section of the environment to confirm that the robot is interacting with the environment as called for by the algorithm
      • using self-test code and check points in each module, as well as observation, to eliminate run-time and internal logic errors
      • comparing the robot’s actions with the intent of the algorithm
      • modifying the original task list, environment, algorithm and/or program, as required
    • participate in intermittent critiques throughout the iterative process; e.g., planning, analysis, design, testing, evaluation

Competencies and Skills

You will also be evaluated on your basic competencies such as your ability to: