See Appendix for an itemized list with purchase links (updated as of June 2018).
- Intel Joule 570X Developer Kit (or comparable board)
-
Intel RealSense D415 or D435 RGBD Camera (or Openni2 support RGBD cameras)
2.1 USB type C to A 3.0 cable
You may use the cable included with the Joule, or order a shorter one.
-
3D Printed Parts
Models and printed object can be found in the 3D File section
3.1 Intel Joule enclosure body
3.2 Intel Joule Box Flat enclosure Top
3.3 Intel Joule Box Incline enclosure Top
3.4 Mount cuff connector
-
Pololu 12V, 2.2A Step Down. (Voltage Regulator D24V22F12)
-
Screws:
5.1 M2 X 8 Screw
5.2 M3 X 6mm Screw
5.3 M3 X 10mm Screw
5.4 M6 X 10mm Screw (for incline top camera)
-
Flat Flex, Ribbon Jumper Cables (20 pins 2.000" (50.80mm)) Molex, LLC 0152670357
- DC jack for Joule power source (you can "borrow" one from most standard wall-wart style adapters).
- Active Cooling System for Intel Joule Module
-
Optional based upon resources, but we used the Kinova Jaco 7-DOF manipulator (you could also use your own robot and modify the 'cuff mount')
- Here are the 3D Print-ready files for the Intel Joule housing box and mount with the end-effector.
Intel Joule box flat enclosure top
Intel Joule box incline enclosure top
Note: The incline top is to allow for mounting the camera further back and altering its view angle.
Assembly look with flat case top:
Assembly look with incline case top:
- We used Solidworks to design and test assembly fit for each part.
- We printed the model with Ultimaker 2+ and Creator Pro. The settings used are listed below:
- Layer height: 0.1 mm
- Infill Percentage: 50%
- Temperature: 225°C
- Alternatively, Shapeways supplies high quality 3D print services.
- The final printed models:
Mount cuff connector
Intel Joule enclosure body
Intel Joule box flat enclosure top
Intel Joule box incline enclosure top
- Connect the enclosure body [#3.1] and the end-effector cuff connector [#3.4] with 2X screws [#5.3]
- Unscrew the Kinova Jaco's last joint's top three screws. And directly secure the assembled parts (enclosure body + cuff connector) to the arm with 3X screw [#5.3]
- Secure the Intel Joule board [#1] into the enclosure with 4 X Screws [#5.1].
Please make sure the two wifi antenna would not touch each other and able to be fit in the enclosure.
Camera Mount 1
Camera Mount 2
-
Install flat front camera mount:
5.1 Mount the Intel RealSense camera with 2 X screw [#5.2].
Make sure the camera is securely mounted with the enclosure, which would not resulting much vibration when the end effector's moving
5.2 Connect camera and the Intel Joule with USB type C to A 3.0 cable [#2.1]
5.3 Secure the flat enclosure top with 4X screws [#5.2]
-
(Optional) Install incline camera mount:
6.1 Secure the incline enclosure top with 4X screws [#5.2]
6.2 Mount the camera on the enclosure with 1X screws [#5.4].
Make sure the camera is securely mounted with the enclosure, which would not resulting much vibration when the end effector's moving
6.3 Connect camera and the Intel Joule with USB type C to A 3.0 cable [#2.1]
Parts[#8]
You may purchase the part from this site.
The problem we encoutered was that the Joule would automatically shutdown due to the high temperatures. The passive cooling option is not a sufficient cooling option when the camera is running. With active cooling, we were able to run the camera at full FPS indefinitely without issue.
When installing this module, you need to take off the four screws which directly on the CPU module. Please remove them carefully and screw them securely with the active cooling module. And please use the thermal paste sticker when connect the heat sink with the CPU.
⚡️ Electrical
- Intel Joule with Intel RealSense D435 running requires ≥ 1.5A @ 12V
❗️Intel joule only requires ~0.6A @ 12V to boot.
- Kinova Mico Joint 6 supplies max 3A @ 24V
- Inside the hand, there is limited space to store the power conversion circuit. We use buck convertor from Pololu [#4] to convert the power from Kinova arm to supply intel Joule.
- The electronic schematic diagram of the power system.
- The final connected cable
We drilled a hole from the hand for the DC jack to go through.
- Plugging into board
- Please check this post to install the OS onto the Intel Joule.
- In my project, I used Lubuntu (Ubuntu/Linux core 16.03 LTS) with ROS-Desktop version installed.
-
ROS required packages (with minor modifications)
We used Compressed Image Transport Plugins to compressed the RGB Images.
We used one function
point_cloud_xyzrgb
inside thedepth_image_proc
to reconstruct the point cloud data from RGB and Depth images.And their dependency packages
image_common
andimage_geometry
-
This is a custom package trying to solve the problem that depth and color images are not arriving at the same time. This send a message with serialized rgb and depth image data. And we used JPEG lossy compression on Color and lossless compression on Depth.
-
-
Please follow the README document to install the driver.
-
Please build this after installing the driver.
Option 1
This option is mainly rely on Python codec and ROS realsense wrapper. It compresses RGB and Depth into one serialized array topic with custom message type: /camera/rgbd
. And the client side run the decompress methods to separate the one topic into two topics: /camera/color/decompressed
and /camera/depth/decompressed
, or it may use the decompression pacakge, which you can call the decompress function in your client side and decompress into two frames without republishing.
Option 2
This option is mainly rely on C++ and ROS realsense wrapper. It compresses RGB and Depth image separately into two topics: /camera/color/image_raw/compressed
and /camera/depth/image_raw/compressedDepth
. And the client side may use Message_filter
to synchronize those two topics.
- We are currently using [#10] TP-Link Router.
- We set the static IP addresses for both the client side and the server side.
We will run the roscore on the client side.
- Because we run the rerscore on the client side, please use command to set
ROS_MASTER_URI
andROS_IP
on each machine.
- use command
ifconfig
to retrieve the IP address from your workstation.
The ip addresses should be always the same, because we save the ip address in the router setting from the last step.
- Please make sure the Joule's
ROS_MASTER_URI
has been set to that ip address. And set theROS_IP
correctly.
As an example, if your workstation (ip address
192.168.1.10
) runningroscore
has a wireless adapter IP of192.168.1.12
, then make sure your terminal running the ROS environment has itsROS_MASTER_URI
pointed to the workstation like so:export ROS_MASTER_URI=http://192.168.1.10:11311
and set joule ip address with command:export ROS_IP=192.168.1.12
- Please refer to the ADA-Joule demo described in this document.