Showing results for 
Search instead for 
Did you mean: 

Intel® Joule™ compute module for Robotics

(Disclosure: I am an Intel employee, but the following is based on my own experience and reflects my own opinions.)

Recently I have been experimenting with using the Intel Joule compute module and the Joule development kit for robotics. I would like to share a few of my experiences here. I'm also going to be showing the system described below off at ROScon 2016 in a few weeks. A lot of this is still experimental though and involved some workarounds (and just plain hacking...) that will not be needed in the future (not even in the near future) but I had a deadline

I previously built a "reference robot" to demonstrate autonomous navigation (using ROS*) with the Intel® RealSense™ Robotic Development Kit ("RDK" in the following). That kit uses an UP Board* from Aaeon*, which uses a previous generation ("Cherry Trail") processor. I used the RDK-based version at an sessionID=1412 IDF workshop on autonomous navigation and developed my initial software stack on it under Ubuntu 14.04 and Indigo. I would still recommend the RDK as the primary system for building an autonomous robot, at least until the ZR300 camera is released (the R200 I'm using in my initial tests is not officially supported on the Joule) and Ubuntu is officially available on the Joule.

However, since this is about robotics on the Joule...

Getting my software ported to the Joule required two things: ROS and RealSense. Installing ROS is easiest under Ubuntu, and fortunately Ubuntu can be installed on the Joule with a /thread/106120 little bit of effort. I used Ubuntu 16.04 and ROS Kinetic, so also ported my software stack from ROS Indigo to ROS Kinetic. Then you need to get a RealSense camera working. I used the R200 that I used in my RDK robot. The R200 is not officially supported on the Joule but it can be installed with a /thread/106179 little bit of effort. Neither install is perfect (both need some workarounds at present), but are good enough for development purposes---and I now have a working, autonomously navigating, robot running around using ROS and a RealSense camera on the Joule!

I'm also using a USB2AX adapter to talk to Dynamixel servos. Because this needs an extra USB port, I had to use a USB3.0 hub. Then I needed a powered hub, and at the time I could only find ones that used 5V power. So I had to include the 5V power convertor you see... however, I have since found a powered hub that takes 12V that I am experimenting with that I hope to be able to run off the same 3S LiPo battery I am using for the Joule carrier. In the longer run, I expect to see robotics-oriented Joule carriers that integrates all the necessary ingredients on one board.

Also, I also expect to soon be able to upgrade to the ZR300 RealSense camera, which is better choice to use with the Joule than the R200. But in the meantime this setup lets me work on my software stack...

Anyhow, here are pictures of the front and back of my test robots: the black one on the left uses the RDK, the white one on the right uses the Joule. These are both laser-cut frames of my own design.

As an aside, I have also been experimenting with active cooling on the Joule. While not strictly speaking necessary, it does significantly improve performance by letting the Joule maintain higher clock rates for longer. Here is a closeup of my active cooling setup on the Joule version of my robot. This is not shown in the pictures above.

I have since found a much smaller fan attached directly to the provided passive heat sink works almost as well; this was just a fan I happened to have sitting around in my spare parts bin. I will comment more once I have done a little more testing, but I'm sure others will provide lots of options for this. The RDK version of the UP board has integrated active cooling as you can see above. On a robot a fan is a perfectly reasonable tradeoff for extra performance in my opinion.

1 Reply

A better picture of my test setup, running cpp-capture, under Ubuntu 16.04, on a Joule compute module. Also shown is a closeup of an alternative active cooling solution using a 25mm x 25mm x 10mm 5V fan. To mount it on the passive heat sink I just jammed two M2.5 bolts between two of the fins (the space between them is 2.3mm, so this works ok).

To connect to the on-board fan connector you need ZHR JST connectors and a crimp tool than can crimp the itty-bitty 1mm wide connectors. This fan uses 120mA but so I am using it with a powered USB hub for the R200 to avoid overloading the on-board 5V regulator. Other configurations (i.e. connecting the RealSense directly to the board without a powered hub) may or may not work: I haven't tested all the combinations yet.

Finally, note this particular hub takes 12V so a Y-connector makes it possible to use a single power supply.