ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Your link leads to the Odroid-HC2. ROS definitely works on the Odroid-HC2, because it's basically identical to the Odroid XU4, and I have personal experience running ROS on it.

Your question title says Odroid N2+. I don't have personal experience with it, but I'm 95% certain it will work with ROS, too - if it runs Ubuntu, it's very easy to install ROS as well.

One consideration is that these boards (like most SBCs) have ARM processors. For 99% of ROS packages this is not a problem, because almost everything runs on ARM as well. The only situation where it can become a problem is when you're running a hardware driver that depends on a proprietary binary library, and the hardware vendor only ships x64 binaries, not ARM. So if you want to use a specific sensor or so, better check beforehand if it supports ARM.

The other little quirk with the Odroid XU4 that I've noticed is that it has the "big.Little" architecture (4 fast CPU cores and 4 slow CPU cores); the Odroid N2+ has the same architecture. This sometimes leads to situations where a ROS node gets scheduled on a slow CPU core (because to Ubuntu, all cores are the same) and suddenly runs much slower. This can be avoided by using taskset to explicitly schedule a node on the fast CPUs (4,5,6,7).

<launch>
  <!-- The CPUs to use, specified by their id, separated by commas and
       with no whitespace in between -->
  <arg name="cpu_affinity"         if="$(arg use_cpu_affinity)" default="4,5,6,7" />
  <arg name="cpu_affinity_set"     if="$(arg use_cpu_affinity)" value="taskset -c $(arg cpu_affinity)" />
  <arg name="cpu_affinity_set" unless="$(arg use_cpu_affinity)" value="" />

  <!-- Load driver -->
  <node machine="$(arg machine)" pkg="openni2_camera" type="openni2_camera_node" name="driver"
        launch-prefix="$(arg cpu_affinity_set)" output="screen">

[...]

Your link leads to the Odroid-HC2. ROS definitely works on the Odroid-HC2, because it's basically identical to the Odroid XU4, and I have personal experience running ROS on it.

Your question title says Odroid N2+. I don't have personal experience with it, but I'm 95% certain it will work with ROS, too - if it runs Ubuntu, it's very easy to install ROS as well.

One consideration is that these boards (like most SBCs) have ARM processors. For 99% of ROS packages this is not a problem, because almost everything runs on ARM as well. The only situation where it can become a problem is when you're running a hardware driver that depends on a proprietary binary library, and the hardware vendor only ships x64 binaries, not ARM. So if you want to use a specific sensor or so, better check beforehand if it supports ARM.

The other little quirk with the Odroid XU4 that I've noticed is that it has the "big.Little" architecture (4 fast CPU cores and 4 slow CPU cores); the Odroid N2+ has the same architecture. This sometimes leads to situations where a ROS node gets scheduled on a slow CPU core (because to Ubuntu, all cores are the same) and suddenly runs much slower. This can be avoided by using taskset to explicitly schedule a node on the fast CPUs (4,5,6,7).

<launch>
  <!-- Switch on to specify specific CPUs which the driver may use -->
  <arg name="use_cpu_affinity" default="false"/>

  <!-- The CPUs to use, specified by their id, separated by commas and
       with no whitespace in between -->
  <arg name="cpu_affinity"         if="$(arg use_cpu_affinity)" default="4,5,6,7" />
  <arg name="cpu_affinity_set"     if="$(arg use_cpu_affinity)" value="taskset -c $(arg cpu_affinity)" />
  <arg name="cpu_affinity_set" unless="$(arg use_cpu_affinity)" value="" />

  <!-- Load driver -->
  <node machine="$(arg machine)" pkg="openni2_camera" type="openni2_camera_node" name="driver"
        launch-prefix="$(arg cpu_affinity_set)" output="screen">

[...]