I for one welcome our new Robotic Overlords

When the robots take over, do you want them to be developed using a sane language like Haskell or Agda? Or some dangerous untyped OO language? I think the answer is obvious. The question is, "How?". The robots will not be developed by us, but by the children of today. So, we must reach their pure minds before they have been unsafely coerced by the evil unbelievers who do not worship the gods λ, Π, and ω. My long term vision is: A company which produces an extensible robotics platform for children and adults ages 8 and up. The platform would be very open, extensible, and hackable. The robotic programming languages would be based around concepts like functional reactive programming, dependent types, etc. Children would begin with a simple FRP language to control the robot. They would solve simple problems like "go forward until an object is encountered." As the young masters grow, they can tackle more difficult problems such as maze solving. Even later they can delve into more advanced subjects like computer vision, speech recognition and synthesis, or mind control rays. The short term vision can be summarized in one word "leverage". We need to find an existing robotic platform which can be easily targeted somehow using Haskell or Agda. Perhaps something that can be targeted using atom or lava? Maybe something Arduino based? I have created a wiki page here to record your suggestions and ideas: http://haskell.org/haskellwiki/RoboticOverlords The requirements now are something that is: - hackable/open - easily obtained - reasonable in price - can easily be targeted via Haskell The only candidate I know of so far is lego mindstorms via the NXT package on hackage, Though some could argue that lego mindstorms are not reasonably priced. http://hackage.haskell.org/package/NXT Let's here your ideas! - jeremy

On Tue, Sep 27, 2011 at 4:01 PM, Jeremy Shaw
Let's here your ideas!
Here's a post outlining Arduino + Haskell via Atom: http://leepike.wordpress.com/2010/05/31/twinkle-twinkle-little-haskell/ Atom might be a tool to use for any number of targets, but I haven't used it so I really don't know how it might fit into FRP style programming. Antoine

On Sep 27, 2011, at 2:01 PM, Jeremy Shaw
When the robots take over, do you want them to be developed using a sane language like Haskell or Agda? Or some dangerous untyped OO language? I think the answer is obvious.
The question is, "How?". The robots will not be developed by us, but by the children of today. So, we must reach their pure minds before they have been unsafely coerced by the evil unbelievers who do not worship the gods λ, Π, and ω.
Timing: you have it. I presented the work behind https://github.com/acowley/roshask at IROS 2011 just this morning. ROS is possibly the most widely used robotics middleware today, and you can now use Haskell to work with existing ROS components. While FP isn't hugely popular among the robotics community (I've been pitching functional approaches here for several years), this time around I am optimistic that we've turned the corner, or at least started that process. There was a lot of support, and developers behind other large projects expressed eagerness to rely more heavily on the compositionally of good old functions. I am not aware of as good a story for Arduino-level development. Atom may be an appropriate foundation for such an effort, but I also hope that we can get GHC ARM support sorted out, and then use platforms like the forthcoming Raspberry Pi as the computational core of an inexpensive robotics platform. In short, you can just about achieve your vision today with a TurtleBot from Willow Garage and roshask. Anthony
My long term vision is:
A company which produces an extensible robotics platform for children and adults ages 8 and up. The platform would be very open, extensible, and hackable.
The robotic programming languages would be based around concepts like functional reactive programming, dependent types, etc.
Children would begin with a simple FRP language to control the robot. They would solve simple problems like "go forward until an object is encountered." As the young masters grow, they can tackle more difficult problems such as maze solving. Even later they can delve into more advanced subjects like computer vision, speech recognition and synthesis, or mind control rays.
The short term vision can be summarized in one word "leverage".
We need to find an existing robotic platform which can be easily targeted somehow using Haskell or Agda. Perhaps something that can be targeted using atom or lava? Maybe something Arduino based?
I have created a wiki page here to record your suggestions and ideas:
http://haskell.org/haskellwiki/RoboticOverlords
The requirements now are something that is:
- hackable/open - easily obtained - reasonable in price - can easily be targeted via Haskell
The only candidate I know of so far is lego mindstorms via the NXT package on hackage, Though some could argue that lego mindstorms are not reasonably priced.
http://hackage.haskell.org/package/NXT
Let's here your ideas! - jeremy
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 09/28/11 12:47 AM, Anthony Cowley wrote:
I am not aware of as good a story for Arduino-level development. Atom may be an appropriate foundation for such an effort, but I also hope that we can get GHC ARM support sorted out, and then use platforms like the forthcoming Raspberry Pi as the computational core of an inexpensive robotics platform.
W.r.t. GHC ARM I would like to note that basic support is already merged into GHC HEAD. Cross-compiling is still missing, but if you can live with for example OMAP4/OMAP3/i.MX53 based board for development on native ARM/Linux and use ARM/Linux as your robotics platform then it should be usable for you already. Please note GHCi support is still missing... Thanks, Karel

Hi, Am Mittwoch, den 28.09.2011, 09:30 +0200 schrieb Karel Gardas:
Please note GHCi support is still missing...
which implies that Template Haskell does not work. So if you are considering using TH in your library when it is avoidable, remember that you are making your code unusable on most non-x86-architectures. Greetings, Joachim -- Joachim "nomeata" Breitner mail@joachim-breitner.de | nomeata@debian.org | GPG: 0x4743206C xmpp: nomeata@joachim-breitner.de | http://www.joachim-breitner.de/

Hi, On 09/28/11 10:35 AM, Joachim Breitner wrote:
Am Mittwoch, den 28.09.2011, 09:30 +0200 schrieb Karel Gardas:
Please note GHCi support is still missing...
which implies that Template Haskell does not work. So if you are considering using TH in your library when it is avoidable, remember that you are making your code unusable on most non-x86-architectures.
Following http://hackage.haskell.org/trac/ghc/wiki/Platforms -- it seems GHCi should be working on x86, x86_64, PowerPC and SPARC. There is ongoing work to make it working on ARM. Karel

Karel Gardas wrote:
Hi,
On 09/28/11 10:35 AM, Joachim Breitner wrote:
Am Mittwoch, den 28.09.2011, 09:30 +0200 schrieb Karel Gardas:
Please note GHCi support is still missing...
which implies that Template Haskell does not work. So if you are considering using TH in your library when it is avoidable, remember that you are making your code unusable on most non-x86-architectures.
Following http://hackage.haskell.org/trac/ghc/wiki/Platforms -- it seems GHCi should be working on x86, x86_64, PowerPC and SPARC. There is ongoing work to make it working on ARM.
I happen to know (because I'm trying to fix it) that GHCI is broken (since about 6.8) on PowerPC. Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/

So currently, it's okay to make Haskell code that targets Android
smartphones, the Beagleboard, the Raspberry Pi or the OpenPandora as long as
you use the development version of GHC?
2011/9/28 Karel Gardas
On 09/28/11 12:47 AM, Anthony Cowley wrote:
I am not aware of as good a story for Arduino-level development. Atom may be an appropriate foundation for such an effort, but I also hope that we can get GHC ARM support sorted out, and then use platforms like the forthcoming Raspberry Pi as the computational core of an inexpensive robotics platform.
W.r.t. GHC ARM I would like to note that basic support is already merged into GHC HEAD. Cross-compiling is still missing, but if you can live with for example OMAP4/OMAP3/i.MX53 based board for development on native ARM/Linux and use ARM/Linux as your robotics platform then it should be usable for you already. Please note GHCi support is still missing...
Thanks, Karel
______________________________**_________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/**mailman/listinfo/haskell-cafehttp://www.haskell.org/mailman/listinfo/haskell-cafe

On 09/28/11 10:42 AM, Yves Parès wrote:
So currently, it's okay to make Haskell code that targets Android smartphones, the Beagleboard, the Raspberry Pi or the OpenPandora as long as you use the development version of GHC?
No, it's not that easy. As cross-compiling is not working (yet!) then your development and runtime platform needs to be the same. This means not only kernel should be the same (w.r.t. its API/functionality) but also standard libc and other runtime libraries. This means that since Android is using different libc than let say your ARM development board with Ubuntu installed, then you are not able to develop Android binary on Ubuntu/ARM development system. So what you can do now is really just develop (or build) on ARM/Linux and deploy/run on the same ARM/Linux. Anyway, this is current stage, but IIRC people are working on making real cross-compilation working so this may change in the near future... Karel

This means not only kernel should be the same (w.r.t. its API/functionality) but also standard libc and other runtime libraries.
Yes, this is what I understood. I wasn't talking about portable *binaries*,
just about the ARM platforms which were efficient enough to run GHC.
I guessed one would have to re-compile her/his code with every platform (but
is that a big deal?).
2011/9/28 Karel Gardas
On 09/28/11 10:42 AM, Yves Parès wrote:
So currently, it's okay to make Haskell code that targets Android smartphones, the Beagleboard, the Raspberry Pi or the OpenPandora as long as you use the development version of GHC?
No, it's not that easy. As cross-compiling is not working (yet!) then your development and runtime platform needs to be the same. This means not only kernel should be the same (w.r.t. its API/functionality) but also standard libc and other runtime libraries. This means that since Android is using different libc than let say your ARM development board with Ubuntu installed, then you are not able to develop Android binary on Ubuntu/ARM development system.
So what you can do now is really just develop (or build) on ARM/Linux and deploy/run on the same ARM/Linux. Anyway, this is current stage, but IIRC people are working on making real cross-compilation working so this may change in the near future...
Karel

On 09/28/11 11:06 AM, Yves Parès wrote:
This means not only kernel should be the same (w.r.t. its API/functionality) but also standard libc and other runtime libraries.
Yes, this is what I understood. I wasn't talking about portable *binaries*, just about the ARM platforms which were efficient enough to run GHC.
Ah, then ARMv5 with 128MB RAM might be sufficient enough for simple Haskell app compiled by GHC. I do have ARMv5 with 32MB RAM (good'n'old NSLU2) but have not tested anything on it yet... Karel

Yes, but compilation might be damn slow.
I forget about the SheevaPlugs (ARMv5 Kirkwood 1,2 GHz)! They are kind of
cheap for what they offer, it's a very nice embedded platform.
2011/9/28 Karel Gardas
On 09/28/11 11:06 AM, Yves Parès wrote:
This means not only kernel should be the same (w.r.t. its
API/functionality) but also standard libc and other runtime libraries.
Yes, this is what I understood. I wasn't talking about portable *binaries*, just about the ARM platforms which were efficient enough to run GHC.
Ah, then ARMv5 with 128MB RAM might be sufficient enough for simple Haskell app compiled by GHC. I do have ARMv5 with 32MB RAM (good'n'old NSLU2) but have not tested anything on it yet...
Karel

On 09/28/11 12:41 PM, Yves Parès wrote:
Yes, but compilation might be damn slow. I forget about the SheevaPlugs (ARMv5 Kirkwood 1,2 GHz)! They are kind of cheap for what they offer, it's a very nice embedded platform.
Yes, or you can even attempt to install some ARMv5 linux on ARMv7 platform. They usually provide 1GB RAM and even dual-cores these days... and yet you will be able to run your code on low-power ARMv5 in your robot... Karel
participants (7)
-
Anthony Cowley
-
Antoine Latter
-
Erik de Castro Lopo
-
Jeremy Shaw
-
Joachim Breitner
-
Karel Gardas
-
Yves Parès