Hedgehog + Web IDE at the Workshop for ECER 17

Two weeks ago, on February 1st and 2nd, the annual workshop of the European Conference on Educational Robots 2017 took place at the TGM in Vienna. Around 80 young people from new and returning teams attended this event as a kick-off for their preparations for the tournament in late April.

For the first time, all teams competing in the PRIA open tournament spent these two days working on the Hedgehog controller in combination with an early access release of the Hedgehog IDE. As an early feedback, we are happy that many teams already decided to continue working with Hedgehog and even use it for the competition.

Not only was this event a great opportunity to engage the controller, it also helped us to test our IDE in a real world situation with real users. Doing so, we gained a lot of feedback which can be now turned into improvements.

In the following paragraphs I want to quickly revise the most important lessons learned:

  • IDE Release Size: For development we do not package or compress the client side code which leads to good debugging possibilities on the one hand, but to relatively long loading times and many HTTP requests (<400!) on the other hand. In order to solve this problem for production, we packaged the all the source into one big JavaScript file and minified it using webpack. Owing to limited time and some problems we ended up with a less than optimal setup leading to a final build size of ~4MB and just a little bit over 23 initial HTTP requests. Even with the bad WIFI situation at the workshop it worked quite well. However, we will surely spend some more time on that topic.

  • Installation and deployment of the IDE: As we had to install our software only on about 10 controller and again due to limited time (:D) we decided to create a package with the IDE itself as well as all required dependencies. Then we simply manually deployed it on the controller. The outcome was a short shell script which we copy and pasted into the controller's shell.

#!/bin/sh
# Set hostname
echo hedgehog$HEDGEHOG_ID > /etc/hostname  
# /etc/init.d/hostname.sh start

# Install required IDE packages
apt update  
apt install libssl-dev

# Install node
wget https://nodejs.org/dist/latest/node-v7.5.0-linux-armv6l.tar.xz  
tar -xf node-v7.5.0-linux-armv6l.tar.xz  
cp -R node-v7.5.0-linux-armv6l/* /usr/local/

# Download an install IDE
wget https://github.com/PRIArobotics/hedgehog-ide/releases/download/v0.1-alpha/hedgehog-ide-v0.1-alpha-linux-armv6l.tar.gz  
tar xf hedgehog-ide-0.1-alpha-build.tar.gz --no-same-permissions  
mkdir /home/pi/hedgehog_programs  
chown pi:pi /home/pi/hedgehog_programs

# Setup IDE daemon
cp hedgehog-ide/systemd/hedgehog-ide.service /lib/systemd/system  
systemctl start hedgehog-ide.service  
systemctl enable hedgehog-ide.service

# Profit!
  • DNS names for the controllers: IP addresses are hard to remember, therefore, we assigned a .local domain to every controller. That worked out pretty well on such a small scale, but will quickly become bothersome as number of controllers increases. Especially as we had to set every hostname manually. Perhaps, we should think about some automatic discovery...

  • Browser compatibility: Currently, the IDE only runs completely smooth on Chrome. Firefox works as well, but there are some issues. This is definitely a must-fix.

All in all, the workshop went quite well and gave us a convenient opportunity to gain feedback for the project. We can't wait to see cool Hedgehog robots at ECER!