makenai / robotnik Goto Github PK
View Code? Open in Web Editor NEWDrag and drop robotics educational library starring Johnny Five and Blockly (crowd goes wild)
Drag and drop robotics educational library starring Johnny Five and Blockly (crowd goes wild)
Should we create a Gitter chat for general brainstorming and ideas instead of cluttering up issues?
The virtual joystick is cool, but gamepad / keyboard support would be better for battles. Note there is a gamepad API spec. The virtual joystick and buttons should give visual feedback that the buttons are being pressed, since connectivity with a single piece of hardware is fun enough to debug.
https://developer.mozilla.org/en-US/docs/Web/Guide/API/Gamepad
Removing the Ace library from static and adding the CodeMirror npm module to robotnik.js
Issues when you swap from block view to code view and CSS misaligns things in the correct order so you get the toolbox drawer peeking through.
It's not friendly to just start a server and ask someone to navigate to it. It would be nicer if it was packaged up like one of these:
In order to get the project into an Angular state of mind, the existing code needs to be refactored into Angular directives.
Currently, the way we run generated code is to write it to the local filesystem and execute it as a child process. Two issues:
Right now we just show 'Running' when they hit run. The process could actually have failed horribly in the background. Let's get better communication going.
After installing the robotnik, i am getting error in my chrome console when accessing the URL.
Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost:8057/socket.io/socket.io.js
In the interest of starting to plan some future blocks and functionality, I've started a wiki for planned blocks. Please drop your ideas in here:
I'm thinking of using a workshop format like this to define components and workshop steps. This would define the blocks that appear during the workshop, help generate the pre and post code, possibly generate a schematic, and have helpful steps to guide people. I'm going to work toward making a proof of concept that uses this. Later, this format could be generated within robotnik its self as part of the 'build' or 'circuit' tab.
Thoughts?
{
title: 'Makerland Workshop',
description: 'This is a workshop for Makerland Conference using a sumobot kit
with an LED and a proximity sensor.',
components: [
{
component: 'Led',
pin: 13
},
{
component: 'Servo',
pin: 7,
type: 'continuous'
},
{
component: 'Servo',
pin: 11,
type: 'continuous'
},
{
component: 'Sensor',
pin: 'A0'
}
],
exercises: [
{
text: 'First, try to make an LED blink when you push a button.'
},
{
text: 'Now make a motor turn clockwise'
}
]
}
When someone edits code in the code tab, then changes the blocks, their changes will disappear. We should probably create a new tab with their edited version preserved, or at least prompt them if they really want to throw away their changes. Could also prompt before creating a new tab.
When you switch between exercises it pushes another set of components onto the ones previously, this needs to be cleared out each time.
This is a TODO for me so I don't forget is all.
I love what you've done so far! I am VERY interested in what your plans are for this. I am really excited about the idea of creating a robotics IDE for kids, so this is a great start.
My vision for an IDE would be something that has configurable components and exposes more of the Johnny-Five APIs for different objects. I'd like to let the user create pre-fabbed configurations for different bots based on things like servos, and reflectance arrays, and then let loose with a Blockly interface.
I went down the path of creating a Scratch to J5 Binding but it is really limited in what can be done. I had some ideas, but really, a Blockly interface is much more versatile.
Anyways, I'd be happy to contribute, or if you'd rather I just fork and run with it on my own (I don't see a license?), I'm happy to do that as well.
Thoughts?
Completely unlicensed usage of an animated GIF.
It would be great if we saved state between sessions, so that if something unexpected happens, people can resume their block / code states. Dragging blocks is tedious, so its not fun to recreate something you lost. This could be saved on the client side using window.name or cookies or html 5 storage. It could also be saved to the filesystem.
I think I tried to get sockets working before Makerland, but had some compatibility issues. To solve the problem as quickly as possible, I am sending messages between the client and server using a POST request on '/message'. Using sockets would be much more responsive and real time.
We can use the blockly Bower module (or npm if we want to use it server-side) and get that folder out of the static resources.
The repository takes forever to check out. I think it's because it includes the .svn history for blockly. Need to dive in and clean that up so it takes less than forever.
http://blog.gbacon.com/2009/08/git-shrinking-subversion-import.html
It would be great to see this working Chromebots: http://blog.iceddev.com/2014-10-04-chromebots-lowering-the-barrier-to-entry.html
Right now the boilerplate code (that surrounds the generated code) is hard coded in robotnik.js as preCode and postCode. To work for @BrianGenisio's plan of pluggable configurations, we're going to need to define the hardware components and pins elsewhere.
We should also have flexible boilerplate so we can support different kinds of boards like the SparkCore that will initialize Johnny-Five differently.
If this is to become a handy dandy IDE, we should autoindent.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.