Hi!
I would like to announce the first publicly available version of Physical Etoys (http://tecnodacta.com.ar/gira/projects/physical-etoys/). Physical Etoys is an "extension" to Etoys. We believe Etoys is a wonderful software that helps children explore their own creativity in fun and educational ways, so we wanted to give Etoys the possibility to interact with real world objects such as robotic kits and innovative joysticks.
The current list of supported hardware: 1. Arduino, an open-source physical computing platform based on a simple microcontroller board. 2. Nintendo Wiimote, the primary controller for Nintendo’s Wii console. 3. Parallel port, a type of interface for connecting various peripherals to the computer. 4. RoboSapien v2, a toy-like biomorphic robot. 5. Roboquad, a 4-legged robot that somewhat resembles a spider and a dog. 6. I-Sobot, the world’s smallest humanoid robot in production. 7. Lego Mindstorms Nxt, a programmable robotics kit released by Lego.
Unfortunately, this version of Physical Etoys only works in Windows. We are currently working on supporting Linux (especially the Sugar platform) so stay tuned for future releases!
Check our website (http://tecnodacta.com.ar/gira/projects/physical-etoys/) for more information.
Cheers! Richo
On 01.03.2010, at 21:59, Ricardo Moran wrote:
Hi!
I would like to announce the first publicly available version of Physical Etoys (http://tecnodacta.com.ar/gira/projects/physical-etoys/). Physical Etoys is an "extension" to Etoys. We believe Etoys is a wonderful software that helps children explore their own creativity in fun and educational ways, so we wanted to give Etoys the possibility to interact with real world objects such as robotic kits and innovative joysticks.
The current list of supported hardware:
- Arduino, an open-source physical computing platform based on a simple microcontroller board.
- Nintendo Wiimote, the primary controller for Nintendo’s Wii console.
- Parallel port, a type of interface for connecting various peripherals to the computer.
- RoboSapien v2, a toy-like biomorphic robot.
- Roboquad, a 4-legged robot that somewhat resembles a spider and a dog.
- I-Sobot, the world’s smallest humanoid robot in production.
- Lego Mindstorms Nxt, a programmable robotics kit released by Lego.
Unfortunately, this version of Physical Etoys only works in Windows. We are currently working on supporting Linux (especially the Sugar platform) so stay tuned for future releases!
Check our website (http://tecnodacta.com.ar/gira/projects/physical-etoys/) for more information.
Cheers! Richo
Awesome!
I assume this uses a plugin to get the data - where's the code?
A lot more sensors could be added to something like this. In particular ones that are built into laptops nowadays, like accelerometers. Would you take contributions?
- Bert -
On Mon, Mar 1, 2010 at 6:43 PM, Bert Freudenberg bert@freudenbergs.dewrote:
Awesome!
Thanks!
I assume this uses a plugin to get the data - where's the code?
No, actually. We tried to develop this stuff using mostly Smalltalk code. For Arduino and SqueakNxt we are only using the SerialPort class. The other projects use FFI to access the libraries that do the hard work. If you're interested I can give you the links to their websites.
A lot more sensors could be added to something like this. In particular ones that are built into laptops nowadays, like accelerometers. Would you take contributions?
Yes, of course! We would be very glad to accept contributions. In fact, we want to increase the list of supported hardware with everything considered worthwhile, and the sensors built into laptops seem to be a great addition.
Cheers! Richo
- Bert -
On 02.03.2010, at 01:38, Ricardo Moran wrote:
On Mon, Mar 1, 2010 at 6:43 PM, Bert Freudenberg bert@freudenbergs.de wrote: Awesome!
Thanks!
I assume this uses a plugin to get the data - where's the code?
No, actually. We tried to develop this stuff using mostly Smalltalk code. For Arduino and SqueakNxt we are only using the SerialPort class. The other projects use FFI to access the libraries that do the hard work. If you're interested I can give you the links to their websites.
Hmm, that's unfortunate. I was hoping to get this included in Etoys properly, but FFI is a no-go there. My idea was having a generic hardware-interface plugin that could input/output any number of signals (from joysticks and accelerometers over the XO's sensor port to special hardware like Scratch's PicoBoard or Phidgets etc.).
Well maybe we can at least find a common interface in Smalltalk for all the great interface-to-real-world projects ...
- Bert -
A lot more sensors could be added to something like this. In particular ones that are built into laptops nowadays, like accelerometers. Would you take contributions?
Yes, of course! We would be very glad to accept contributions. In fact, we want to increase the list of supported hardware with everything considered worthwhile, and the sensors built into laptops seem to be a great addition.
Cheers! Richo
I might be missing something obvious here, but why is FFI forbidden in Etoys? Is it a matter of security?
Regarding the "generic hardware-interface plugin", I think it would be great to have something like that but don't you think the underlying platforms are very much incompatible with each other?
On Tue, Mar 2, 2010 at 4:32 AM, Bert Freudenberg bert@freudenbergs.dewrote:
On 02.03.2010, at 01:38, Ricardo Moran wrote:
On Mon, Mar 1, 2010 at 6:43 PM, Bert Freudenberg bert@freudenbergs.dewrote:
Awesome!
Thanks!
I assume this uses a plugin to get the data - where's the code?
No, actually. We tried to develop this stuff using mostly Smalltalk code. For Arduino and SqueakNxt we are only using the SerialPort class. The other projects use FFI to access the libraries that do the hard work. If you're interested I can give you the links to their websites.
Hmm, that's unfortunate. I was hoping to get this included in Etoys properly, but FFI is a no-go there. My idea was having a generic hardware-interface plugin that could input/output any number of signals (from joysticks and accelerometers over the XO's sensor port to special hardware like Scratch's PicoBoard or Phidgets etc.).
Well maybe we can at least find a common interface in Smalltalk for all the great interface-to-real-world projects ...
- Bert -
A lot more sensors could be added to something like this. In particular
ones that are built into laptops nowadays, like accelerometers. Would you take contributions?
Yes, of course! We would be very glad to accept contributions. In fact, we want to increase the list of supported hardware with everything considered worthwhile, and the sensors built into laptops seem to be a great addition.
Cheers! Richo
On Wednesday 03 March 2010 05:12:32 am Ricardo Moran wrote:
I might be missing something obvious here, but why is FFI forbidden in Etoys? Is it a matter of security?
AFAIK, Etoys is conceived to be a self-contained computing machine. Primitives and plugins purely an optimization or facilitation. FFI is a bridge to host- specific libraries and it is open-ended. It reduces Etoys to a shell for the libraries. The code within the libraries is not available for browsing/modification within Etoys.
Subbu
Oh, I see. Thanks for the explanation.
On Thu, Mar 4, 2010 at 1:36 AM, K. K. Subramaniam subbukk@gmail.com wrote:
On Wednesday 03 March 2010 05:12:32 am Ricardo Moran wrote:
I might be missing something obvious here, but why is FFI forbidden in Etoys? Is it a matter of security?
AFAIK, Etoys is conceived to be a self-contained computing machine. Primitives and plugins purely an optimization or facilitation. FFI is a bridge to host- specific libraries and it is open-ended. It reduces Etoys to a shell for the libraries. The code within the libraries is not available for browsing/modification within Etoys.
Subbu
On 03.03.2010, at 00:42, Ricardo Moran wrote:
I might be missing something obvious here, but why is FFI forbidden in Etoys? Is it a matter of security?
Yes. One of the advantages of having a Virtual Machine is that you can be quite sure what the code running in it can and can not do. It has a pretty narrow interface to the "outer system". By allowing FFI that interface widens to all the libraries on the system, which means all bets are off.
Additionally, FFI calls are highly platform-specific, whereas Etoys projects are supposed to work on any platform.
Regarding the "generic hardware-interface plugin", I think it would be great to have something like that but don't you think the underlying platforms are very much incompatible with each other?
That's the point of having plugins - they are an extension of the Virtual Machine. Just like the VM itself, they present an abstraction to the code inside the image. The actual implementation can differ a lot across platforms (and often does) but the image doesn't have to care.
So, that generic plugin would present all its actual hardware to the user as a collection of abstract input or output ports. There only need to be a few functions:
- get number of available ports (1 to n) - get label of a port (just a string to be used in the UI, possibly hierarchical) - get the kind (input/output) of a port - get value range (min/max/step) for a port - open a port for actual use - read data from an open input port - write data to an open output port - close a port
If there is hardware that wouldn't fit into that framework it can be extended of course, but it seems it could cover a lot, no?
- Bert -
On Thu, Mar 4, 2010 at 9:23 AM, Bert Freudenberg bert@freudenbergs.dewrote:
On 03.03.2010, at 00:42, Ricardo Moran wrote:
I might be missing something obvious here, but why is FFI forbidden in
Etoys? Is it a matter of security?
Yes. One of the advantages of having a Virtual Machine is that you can be quite sure what the code running in it can and can not do. It has a pretty narrow interface to the "outer system". By allowing FFI that interface widens to all the libraries on the system, which means all bets are off.
Additionally, FFI calls are highly platform-specific, whereas Etoys projects are supposed to work on any platform.
Yes, those are very good reasons for excluding FFI from Etoys. If we write a plugin to handle the communication with the external libraries we use, would you reconsider including our work in Etoys? (now that I think of it, we will probably have some license issues... I will have to check that). Anyway, I think you can include the Arduino and SqueakNxt projects, they don't use FFI at all, only the SerialPlugin. Would that be ok? I must say, I would really love to see our projects included in Etoys!
Regarding the "generic hardware-interface plugin", I think it would be
great to have something like that but don't you think the underlying platforms are very much incompatible with each other?
That's the point of having plugins - they are an extension of the Virtual Machine. Just like the VM itself, they present an abstraction to the code inside the image. The actual implementation can differ a lot across platforms (and often does) but the image doesn't have to care.
So, that generic plugin would present all its actual hardware to the user as a collection of abstract input or output ports. There only need to be a few functions:
- get number of available ports (1 to n)
- get label of a port (just a string to be used in the UI, possibly
hierarchical)
- get the kind (input/output) of a port
- get value range (min/max/step) for a port
- open a port for actual use
- read data from an open input port
- write data to an open output port
- close a port
If there is hardware that wouldn't fit into that framework it can be extended of course, but it seems it could cover a lot, no?
Ok, I understand your idea better now. It seems you want something a lot more low level than what we are doing. But you're right, it would be cool to have a plugin to handle all that stuff and write the corresponding protocols on top of that.
Cheers Richo
- Bert -
On 05.03.2010, at 20:27, Ricardo Moran wrote:
On Thu, Mar 4, 2010 at 9:23 AM, Bert Freudenberg bert@freudenbergs.de wrote:
On 03.03.2010, at 00:42, Ricardo Moran wrote:
I might be missing something obvious here, but why is FFI forbidden in Etoys? Is it a matter of security?
Yes. One of the advantages of having a Virtual Machine is that you can be quite sure what the code running in it can and can not do. It has a pretty narrow interface to the "outer system". By allowing FFI that interface widens to all the libraries on the system, which means all bets are off.
Additionally, FFI calls are highly platform-specific, whereas Etoys projects are supposed to work on any platform.
Yes, those are very good reasons for excluding FFI from Etoys. If we write a plugin to handle the communication with the external libraries we use, would you reconsider including our work in Etoys? (now that I think of it, we will probably have some license issues... I will have to check that). Anyway, I think you can include the Arduino and SqueakNxt projects, they don't use FFI at all, only the SerialPlugin. Would that be ok? I must say, I would really love to see our projects included in Etoys!
I'd love to see more ways to connect Etoys with the real world. We integrated WorldStethoscope support already, and there is Joystick support, the camera works on some machines etc. We have the ScratchPlugin which would allow to connect to the ScratchBoard, and the Etoys code for this is sitting in a ticket already.
Now I can't promise to take your code in before having looked at it, and I'm not the only one deciding that, but we're certainly going to consider it :)
- Bert -
Hi Bert,
I split the Arduino and SqueakNxt packages on SqueakSource so that the Etoys code wouldn't get mixed with the core classes that manage communication with the devices. I also added a few comments and I translated the spanish comments so that you find the code easier to understand.
For Arduino, you will find the following packages: * ArduinoCore (http://www.squeaksource.com/ArduinoCore/) * ArduinoEtoys (http://www.squeaksource.com/ArduinoEtoys/) * ArduinoCompiler (http://www.squeaksource.com/ArduinoCompiler/) - This is the only package that needs FFI, I use it to automatically upload Firmata into the Arduino board. This package is not required but it makes life easier.
For SqueakNxt, you will find the following packages: * SqueakNxtCore (http://www.squeaksource.com/SqueakNxtCore/) * SqueakNxtEtoys (http://www.squeaksource.com/SqueakNxtEtoys/)
I removed all the remaining references to FFI (we used to have a dll to handle the nxt communication but now we only use serial ports) and I'm working on improving the nxt code to fix a few bugs regarding the sensors info.
Anyway, if you look at the code, please send me back what you think. I'm looking forward to learn from your code critics.
Thanks for the interest!
Richo
On Fri, Mar 5, 2010 at 7:38 PM, Bert Freudenberg bert@freudenbergs.dewrote:
On 05.03.2010, at 20:27, Ricardo Moran wrote:
On Thu, Mar 4, 2010 at 9:23 AM, Bert Freudenberg bert@freudenbergs.de
wrote:
On 03.03.2010, at 00:42, Ricardo Moran wrote:
I might be missing something obvious here, but why is FFI forbidden in
Etoys? Is it a matter of security?
Yes. One of the advantages of having a Virtual Machine is that you can
be quite sure what the code running in it can and can not do. It has a pretty narrow interface to the "outer system". By allowing FFI that interface widens to all the libraries on the system, which means all bets are off.
Additionally, FFI calls are highly platform-specific, whereas Etoys
projects are supposed to work on any platform.
Yes, those are very good reasons for excluding FFI from Etoys. If we
write a plugin to handle the communication with the external libraries we use, would you reconsider including our work in Etoys? (now that I think of it, we will probably have some license issues... I will have to check that).
Anyway, I think you can include the Arduino and SqueakNxt projects, they
don't use FFI at all, only the SerialPlugin. Would that be ok?
I must say, I would really love to see our projects included in Etoys!
I'd love to see more ways to connect Etoys with the real world. We integrated WorldStethoscope support already, and there is Joystick support, the camera works on some machines etc. We have the ScratchPlugin which would allow to connect to the ScratchBoard, and the Etoys code for this is sitting in a ticket already.
Now I can't promise to take your code in before having looked at it, and I'm not the only one deciding that, but we're certainly going to consider it :)
- Bert -
On 12.03.2010, at 22:23, Ricardo Moran wrote:
Hi Bert,
I split the Arduino and SqueakNxt packages on SqueakSource so that the Etoys code wouldn't get mixed with the core classes that manage communication with the devices. I also added a few comments and I translated the spanish comments so that you find the code easier to understand.
For Arduino, you will find the following packages:
- ArduinoCore (http://www.squeaksource.com/ArduinoCore/)
- ArduinoEtoys (http://www.squeaksource.com/ArduinoEtoys/)
- ArduinoCompiler (http://www.squeaksource.com/ArduinoCompiler/) - This is the only package that needs FFI, I use it to automatically upload Firmata into the Arduino board. This package is not required but it makes life easier.
For SqueakNxt, you will find the following packages:
- SqueakNxtCore (http://www.squeaksource.com/SqueakNxtCore/)
- SqueakNxtEtoys (http://www.squeaksource.com/SqueakNxtEtoys/)
I removed all the remaining references to FFI (we used to have a dll to handle the nxt communication but now we only use serial ports) and I'm working on improving the nxt code to fix a few bugs regarding the sensors info.
Anyway, if you look at the code, please send me back what you think. I'm looking forward to learn from your code critics.
Thanks for the interest!
Richo
Sounds cool. Why did you create that many repositories? Why not just one "Arduino" and one "SqueakNxt" repository? Or even just one "PhysicalEtoys" repo. Typically you put all the packages belonging to one project in the same repository.
- Bert -
I will do some more work on an interface to the Velleman K8055/VM110 Interface Card in a few weeks if you would like to add it to the list. Here's a wiki page on my last effort some years back: http://wiki.squeak.org/squeak/5907
I would love to include it on our list, but I would like to test it first. I'll see if I can get a K8055 (living in Argentina doesn't help very much).
Cheers Richo
On Thu, Mar 4, 2010 at 11:55 AM, Derek O'Connell doconnel@gmail.com wrote:
I will do some more work on an interface to the Velleman K8055/VM110 Interface Card in a few weeks if you would like to add it to the list. Here's a wiki page on my last effort some years back: http://wiki.squeak.org/squeak/5907 _______________________________________________ etoys-dev mailing list etoys-dev@squeakland.org http://lists.squeakland.org/mailman/listinfo/etoys-dev
etoys-dev@lists.squeakfoundation.org