RoboCatz.com

RoboCatz

A FIRST LEGO league team (#144) that meets at the Carnegie Free Library of Swissvale on Saturday mornings during the fall and spring seasons. Meetings are from 9:30am to 12:30pm (including a snack break). One of the tenets of Andrew Carnegie libraries is that they offer free service to the community. In keeping with that important tenet, there is no cost to participate on the RoboCatz team.



Fall 2024

Roblox Project

Blank Roblox World with the genericShapes module (/documents/genericShapesBlankWorld.rbxl)
Blank world for generic shapes

Blank Roblox World with an under sea theme (/documents/underSeaWorld.rbxl)
Blank world for under the sea

Remote Controller

EV3 Remote Control (exercise-in-remote-control.htm)
Exercise in Remote Control

Asynchronous Functions

ALL output functions are Asynchronous In robotics, output functions are often asynchronous to enhance efficiency and responsiveness. Here are a few key reasons why this approach is beneficial:

  1. Parallel Processing: Asynchronous functions allow multiple tasks to run concurrently without waiting for each other to complete. This is crucial in robotics, where a robot might need to perform several actions simultaneously, such as moving, sensing, and processing data1.
  2. Real-Time Responsiveness: Robots often operate in dynamic environments where they must respond to changes quickly. Asynchronous functions enable robots to handle real-time events and interrupts more effectively, ensuring timely reactions to sensor inputs and environmental changes.
  3. Resource Optimization: By not blocking the main execution thread, asynchronous functions make better use of system resources. This leads to smoother and more efficient operation, especially in complex robotic systems with limited computational power.
  4. Improved User Experience: For robots interacting with humans, asynchronous functions can provide a more seamless and responsive experience. For example, a robot can continue to engage in conversation while processing background tasks.

Level of Abstraction !

What is Abstraction? Abstraction is indeed a fascinating and essential concept in computer science, primarily driven by human creativity and problem-solving skills. Here's a breakdown of how it works:

Human-Centric Process of Abstraction

  1. Simplification: Humans use abstraction to simplify complex systems by breaking them down into more manageable parts. This involves identifying the essential features of a problem while ignoring the irrelevant details. In Robot JavaScript, the language was abstracted in a way to reduce syntax requirements allowing for more flexibility in expressions.
  2. Creation of New Languages: Through abstraction, humans develop new programming languages and frameworks that provide higher-level constructs. These constructs allow programmers to write code that is more intuitive and easier to understand, without worrying about the underlying hardware details.
  3. Layered Approach: Abstraction often involves creating layers of functionality. For example, in software development, you might have a high-level language like Python, which abstracts away the complexities of memory management and machine code. JavaScript abstracts away the complexities of type casting.
  4. Reusability and Modularity: By abstracting common functionalities into libraries or modules, humans can reuse code across different projects, enhancing productivity and reducing errors.

Computers and Execution


Example:

Example:
function add(a,b) {
  return a + b
}
In summary, abstraction is a powerful tool used by humans to manage complexity and create more efficient and understandable code. Computers, however, are simply the executors of these abstracted instructions, following them precisely without any creative input.

driveFoward() and driveBackward() as Abstractions of Movement

The programmer (YOU) need to explain how the robot should move forward and backward. You need to define for the robot, the size of wheels, the power level, the distance criteria, synchronization, etc.

Gyro Sensor

Calibrates when initially plugged in or robot turned on. DO NOT MOVE the robot when it is calibrating. Observe the sensor through the "Port View" app on the 3rd tab of the EV3 interface. Use the left/right buttons to find the gyro sensor. Is the sensor value changing while the robot is not moving? If so, unplug the sensor from the port on the EV3 brick and plug it back in (CAREFULLY).

Vectors

Object avoidance. Practice with the robots.

Roblox Project

Roblox Project (/documents/ObstacleCourse1.rbxl)
Drone obstacle course. Look for the movement commands in the "Starting Script" located in the Workspace. You need to abstract these movement commands to simplify them to make it easier to program the drone.

Homework

Videos

Note: these videos have no sound. You only need to view them. There is no commentary or music.

FLL 2024 Runs


FLL 2023 Ideas B

FLL 2023 Ideas


Learning Curve

Origin of Written Language

A is for Ox (https://www.cbc.ca/news/canada/newfoundland-labrador/hawthorn-hieroglyphs-alphabet-1.6288328)
Essay on the origin of the Latin Alphabet

History of the alphabet (/images/EvolutionOfTheAlphabet.png)


Phoenician Alphabet (https://en.wikipedia.org/wiki/Phoenician_alphabet)
Phoenician Alphabet from Wikipedia

FLL 2024 Missions

Your team will be scored according to the following guidelines:






Your robot needs to perform the following missions:



The robot's performance will be scored as specified in this document:

see also: FLL Event Hub


Parents

For the 2024 season, you will need to enroll your child onto the team through a web-based system.

Create an account at:




Artificial Intelligence (AI)



Provide context before asking your AI question.

AI CoPilotSession 1
AI CoPilotSession 2
AI CoPilotSession 3
AI CoPilotSession 4
AI CoPilotSession 5

Robot JavaScript








Code from 2024

Code from 2023

Code from 2022

Code from 2021

Code from 2020

Code from 2019



FLL Team (https://github.com/MonongahelaCryptidCooperative/FLL-Block-2024-2025/)
GitHub: Monongahela Cryptid Cooperative

Robot Simulator

Spring 2024

Roblox Lesson on Drone Simulator (Roblox-Lesson-05.htm)
Roblox Lesson 5

Roblox Road Tracks (https://robocatz.com/documents/RoadTrackSquare.rbxl)
Roblox Project file used for the Drone

Roblox Game (https://www.roblox.com/share?code=a4c61537e961014f9585ef270e590578&type=ExperienceDetails&stamp=1714838465212)
Roblox Game 3 (created May 4th)

Roblox Game (https://www.roblox.com/games/17382874516/colosseum-ball-chase)
Roblox Game 2 (created May 4th)

Roblox Game (https://www.roblox.com/games/17382252055/unnamed)
Roblox Game 1 (created May 4th)

Roblox Lesson on Equations (Roblox-Lesson-04.htm)
Roblox Lesson 4

Roblox Lesson on Loops (Roblox-Lesson-03.htm)
Roblox Lesson 3

Roblox Lesson on genericShapes (Roblox-Lesson-02.htm)
Roblox Lesson 2

Roblox genericShapes (genericShapes-ModuleScript.htm)
Generic Shapes Module Script

Roblox First Program (PDF) (./documents/RobloxFirstProgram.pdf)
RoboCatz PDF Document

Lesson in Roblox Programming (./Roblox-Basics.htm)
RoboCatz website Lesson

Roblox Programming (PDF) (./documents/RobloxProgramming4.pdf)
RoboCatz PDF Document

2D and 3D Graphics Drawing




Fall 2023

RoboCatz Art Museum (https://www.roblox.com/games/13559439593/RoboCatz-Art-Museum)
An interactive art museum program from RoboCatz

FLL "Art Museum" Project 2023

Roblox Art Museum Project (/documents/Fall2023RobloxProject.zip)
ZIP file of the Roblox Art Museum Project









Computer Art: the Graphical Expression of Algorithms

Mandelbrot Set

Science Demos (https://sciencedemos.org.uk/mandelbrot.php)
Instructions: Move the mouse over an area and then use the scroll wheel to zoom in/out.

rust-mandelbrot (https://rust-mandelbrot.netlify.app/)
Instructions: Drag the mouse to reposition the image. Use the scroll wheel to zoom in/out.

http://tilde.club/~david (http://tilde.club/~david/m/#)
Instructions: Change the color scheme from by selecting the dialog box item. Drag the mouse to form a box. When you lift the mouse button, the computer will zoom in on the area dragged.

2D and 3D Graphics Drawing


Maze Generation

Lesson (https://robocatz.com/exercise-maze-generation.htm)
Lessons on writing Maze Generating programs in JavaScript using the Recursive Division technique.

Lesson using 3D-Art Program (https://robocatz.com/exercise-maze-generation-in-3D.htm)
Lessons on writing Maze Generating programs in JavaScript using the Recursive Division technique.

Recursive Division Maze Generation (https://en.wikipedia.org/wiki/Maze_generation_algorithm#Recursive_division_method)
Wikipedia: Mazes can be created with recursive division, an algorithm which works as follows: Begin with the maze's space with no walls. Call this a chamber. Divide the chamber with a randomly positioned wall (or multiple walls) where each wall contains a randomly positioned passage opening within it. Then recursively repeat the process on the sub-chambers until all chambers are minimum sized. This method results in mazes with long straight walls crossing their space, making it easier to see which areas to avoid.

Cellular Automata

A cellular automaton (pl. cellular automata, abbrev. CA) is a discrete model of computation studied in automata theory. Cellular automata are also called cellular spaces, tessellation automata, homogeneous structures, cellular structures, tessellation structures, and iterative arrays.[2] Cellular automata have found application in various areas, including physics, theoretical biology and microstructure modeling.

Lesson in Cellular Automata using 2D Art Program (https://robocatz.com/cellular-automata-game-of-life.htm)
Lessons on writing Cellular Automata programs in JavaScript.

Lesson in Cellular Automata using 3D Art Program (https://robocatz.com/cellular-automata-game-of-life-in-3D.htm)
Lessons on writing Cellular Automata programs in JavaScript.

Game of Life (https://beltoforion.de/en/game_of_life/)
Description and Website

Rules (https://cellularseeds.com/rules)
Cellular Automation Rules

Cellular Seeds (https://cellularseeds.com/game)
On-line Game of Life

from Wolfram (https://demonstrations.wolfram.com/3DTotalisticCellularAutomata/)
3D Totalistic Cellular Automata

Videos (https://slackermanz.com/2-state-discrete-mnca-example-videos/)
2-state-discrete-mnca-example-videos

Understanding-multiple-neighborhood-cellular-automata (https://slackermanz.com/understanding-multiple-neighborhood-cellular-automata/)
Multiple Neighborhood Rules

Lenia (https://chakazul.github.io/lenia.html)
Lenia - Advanced rules for Game of Life

Demo of Lenia (https://chakazul.github.io/Lenia/JavaScript/Lenia.html)
Lenia in JavaScript

Roblox Scripting

Lua Programming Language (https://create.roblox.com/docs/scripting/luau)
On-line Documentation website from the Roblox website.

Roblox Scripting (https://create.roblox.com/docs/scripting/scripts)
On-line Documentation website from the Roblox website.

Roblox Tutorials (https://create.roblox.com/docs/tutorials)
On-line Documentation website from the Roblox website.

Roblox Programming (PDF) (./documents/RobloxProgramming4.pdf)
RoboCatz Document

Lesson in Roblox Programming (./Roblox-Basics.htm)
RoboCatz website

Recursion Using Roblox Functions (https://devforum.roblox.com/t/tutorial-on-recursion/995195)
On-line Documentation website from the Roblox Developer's forum.

Object Oriented Programming in Roblox (https://devforum.roblox.com/t/roblox-oop-object-oriented-programming/1639499)
On-line Documentation website from the Roblox Developer's forum.

Art Museum (artMuseum-Roblox.htm)
This page will describe how to create the Art Museum in Roblox.

Amazing Maze (https://www.roblox.com/games/13559439593/RoboCatz-Art-Museum)
Art Museum program from RoboCatz

Spiral Staircase (spiralStaircase-Roblox.htm)
This page will describe how to create a spiral staircase in Roblox.

Extracting Data from Parts of Models (/extractingDataFromParts-Roblox.htm)
Use this script to extract data from models that you have added to your world. You can use this extracted data to copy/edit/manipulate the model and re-create it programmatically in other worlds.

2024 Challenge: Submerged


2023 MasterPiece


Robot Game Rule Book


Image of Competition Mat

2022 Challenge: Supercharged






2021 Challenge: Cargo Connect




2020 Challenge: RePlay






2019 Challenge: City Shaper

2018 Challenge: Into Orbit

2017 Challenge: Hydro Dynamics





Web Tools

Computer Art

This is a program to teach the JavaScript computer programming language using Computer Art as the vehicle for the instruction. Students are taught basic programming skills in an easy to use development environment that shows the programs in action in real time.




JavaScript Sample Code

3-Button Menu

while(true) {
  setLED(0)
  clearScreen()
  rect(10,10,160,60)
  drawText(15,30,'Press a key to')
  drawText(15,45,'  select a program')
  keyPressed=waitForPress()
  switch(keyPressed) {
  case 1:
    alert('You selected UP')
    setLED(4)
    sleep(2000)
    break
  case 2:
    alert('You selected ENTER')
    setLED(5)
    sleep(2000)
    break
  case 3:
    alert('You selected DOWN')
    setLED(6)
    sleep(2000)
    break
  }
}

Robot Simulator

This is a program to teach the robot computer programming language used for moving the robot. This simulator does not emphasize programming. Instead, it tries to teach strategies for getting the robot to accomplish goals and missions.


RobotC Simulator

This is a program to teach the RobotC computer programming language.








Programming Exercises for RobotC

Joystick Programming (exercise-joystick-programming.htm)
This is an exercise in programming the joystick used in the May Madness competition.

Line Following Exercise (exercise-in-line-following.htm)
This is an exercise in Line Following with many examples of robotC code.


Function Overloading Exercise (exercise-in-function-overloading.htm)
This is an exercise in Function Overloading and Multi Threaded programming with many examples of robotC code.




Our season will focus on robots that talk -- about trash. We will have talking robots.

Text to Speech

Data Mining

FLL Theme for this year: Trash