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.
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:
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.
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.
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.
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
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.
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.
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.
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
Execution of Instructions: Computers, on the other hand, do not engage in abstraction. They execute the instructions provided to them in the form of machine code, which is a low-level representation of the high-level abstracted code written by humans.
No Creativity: Computers lack the ability to create or innovate. They follow the precise instructions given to them without understanding the context or purpose behind those instructions.
Example:
Human Abstraction: The function identified as "add" abstracts the concept of addition. Humans understand that this function takes two numbers and returns their sum, without needing to know how the addition is performed at the hardware level.
Computer Execution: When this function is executed, the computer translates it into machine code and performs the addition operation as instructed, without any understanding of the concept of addition.
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
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)
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.
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.
2022 Challenge: Supercharged
2020 Challenge: RePlay
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
How do computers/robots talk?
What is Speech Synthesis?
How does the EV3 robot talk?
What is an Audio File?
What is the format of an EV3 audio file?
How big are EV3 audio files?
How mush storage space is on an EV3?
How many words can an EV3 speak?
How do we get that many words?
Data Mining
Like miners who dig in the earth, data mining involves the extraction of data from various sources
Free/Open Data Sources (Google's Guttenberg Project)
Who wrote the most words? Who wrote a lot of words?