Raspberry Pi 3 experiments

I did some experiments with Raspberry Pi 3 to install ROS for instance. The Raspberry Pi 3 has some power supply issues since the power needed is higher than Raspberry Pi 2.
I noticed that Raspberry Pi 3 is a Raspberry Pi 2 overclocked + WifiN + Bluetooth 4.0.
If the power supply is not enough, there are spurious reboot…
Moreover, the Raspberry Pi 3 is not compatible with Ubuntu 14 (Trusty) often used to install ROS.

I return back to the Raspberry Pi 2 for the moment.

1 Like

Thanks for the feedback!

We (at least @Nicolas) did some quick experiments and what amazed us was the heat of the board compared to the RPi2.
Did you notice this as well?

I will use the RPI3 as a OPENELEC media center. I will tell you about the temperature issue.

You made me curious there. I will try at the weekend to install it on an Raspi 3 with Ubuntu Mate 16.
There is always the option to install it from source.

It is the first time I use ROS. I am not good enough to compile it. I prefer going back to the second one. But if you succeded to compile itt I am very interested.

@Thot I can confirm you can use ROS Jade on Raspberry Pi 3; although it takes some time.

I’ve deployed it on Raspbian Jessie - make sure you get the newest distribution from the raspberrypi.org. After the introduction of the WiFi and the Bluetooth there were some teething problems and I have had inconsistent operation of the builtin WiFi in RPi 3. With the last one it seems to be fine. The Ubuntu Mate 16.04 LTS also can be installed but many of the depending packages for ROS (ex. PCL, eigen, etc.) are not yet available as binary installs and it would be tedious to install all from source. You should also use a minimum 16GB SD card - as fast as you can get.

Once you have the system ready and running (expanded the boot disk, updated the system, etc.) you can start installing ROS Jade from source. Before doing that you will need to increase your swap file to 1GB (1024) because some of the compiling (ex. roscpp) will need aprox 1.7GB memory and your Pi will simply crash.

You can do that by modifying the dphys-swapfile

sudo nano /etc/dphys-swapfile

And change the line

CONF_SWAPSIZE=100

into

CONF_SWAPSIZE=1024

Next you can either restart your PI or just the swap daemon:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

The second instruction will take bout 30 seconds to run (it creates the swap file) so don’t be alarmed if the prompt doesn’t return immediately.

Usefree -m to make sure that you have 1024 of swap memory.

Now you can start installing the ROS stack using the instructions from the ROS site. You can use the Ubuntu guidelines.

One suggestion: at point 2.1.1 there are 3 options in the instructions. I recommend you to use none of them, but instead use the robot variant. I have installed the desktop one which took significantly longer - but worked - but this one installs tools like rvis that really don’t make sense to run on a Pi. robot should install faster and should provide you all the packages needed. So use these commands for section 2.1.1 instead:

$ rosinstall_generator robot --rosdistro jade --deps --wet-only --tar > jade-robot-wet.rosinstall
$ stool init -j8 src jade-robot-wet.rosinstall

All in all it should take about 3 hours to have everything setup.

On the other hand because 16.04 is the LTS for Ubuntu and ROS had already a distribution for Raspberry (armhf) it is just a matter of time before they will release the binaries for it. Probably in about 2-3 months they should be available. Since there are dependencies on other packages those will need to be released first.

Wow, thank you very much for all these explanations !!:grinning: I have tried several times to compile ROS on the RPI3 and I did not succeded because I did not know all of these (I just start ROS)
I also had the spurious reboot issues during some of the installations… It does not help.
But I have already installed ROS-indigo on the RPI2 with success and I already did the tutorials. I will wait the 2-3 months as you said to concentrate on the robotic things.

@Thot If you’re interested in learning ROS this book is one of the best I’ve seen recently. It is quite hard to find a good ROS book - the standard manuals are pretty dry and the books that were available until now were very basic. This is quite serious but has a more quite accesible presentation style.

2 Likes

Thank you, it is ordered :slight_smile:

Hello @sonel,

For information, I succeded to install ROS on Raspberry Pi 3 (Jessie). It works very well. I use the Raspberry Pi Camera Module V2.0 to manage visual processing and it works very well 60FPS !!.
The issues went because of low power supply (now with 5V, 2A it works very well)
The Ubuntu Mate seems also to be unstable on the Pi 3.

Thank you for your help. If we meet, i owe you a beer :wink:

2 Likes

I sumed up the process here :

@Thot: looks like the new version of ROS (kinetic) is definitely going to be supported on RPi as standard (Debian arm64) but there are some warnings - I’m sure it’s just a matter of days until things are fixed.

What are the advantages of ROS over Pypot?

Ros and pypot are completely different.
Pypot is more a python library to pilot robot motors function of different sensors. The main advantage is that the installation isvery simple and you can program very quickly what you want and test it. The management of dynamixel motor is also very well done.
ROS is more an operating system and the installation is not easy. There is also a learning phase which can be long. It is not a scripting language but an architecture with several component communicating. It seems more complicated but the big thing is that the real time issues are managed. The other big things is the existing libraries. The amount of work done around the world can be used. You can easily plan to add 3d vision with only one camera or others magic stuffs.

Could you give me more example of developer tools please? I’ve tried to understand what it is and how it works, but I was unable to understand anything. I’ve not found any schematic like for Darwin OP framework.

Here is a Schematic :

To be brief, when you use ROS, you must first execute

roscore

Then you can run the different “nodes”

rosrun camera camera.py
rosrun facetracker facetracker.py
rosrun turret turret.py

the three nodes are going to be launched in parallel
the camera node will publish an image on “image” topic
the facetracker subscript the “image” topic and an action is done each time topic is updated. Here, there is face detection. The face detection will publish another topic “faceposition” which is the coordinate of the face in the image (if there is)
The turret node subscript the “faceposition” topic and makes the servomotor of the turret so that the face is at the center of the screen.

The service is just a function dedicated to a node such as “set_compliant” for the turret.
For each node, there is a documentation for which topic is taken or published, which service…
In case there are 2 camera, the risk is that the two camera publish on the same topic. To avoid this, you can redirect the topic in /right/image and /left/image.

The modularity is very usefull. In the above example, you can do :

rosrun web_video_server web_video_server.py

then a web server is created and gives you access to all “image” topics in “real time” streaming. A cool way to make FPV easily on any robot.

I wish it is clear…

1 Like

Your answers create some new questions!

1/ It seems very powerful, so I guess you use Pypot to drive motors in the turret node?

2/ What is the main advantage of this workflow, according to you? Is it an adaptable program on different robots? A kind of standardization? Doest it give you facilities instead of doing anything manually with Pypot?

3/ Is there an impact on the CPU performances?

4/ Is there a similar workflow available with Pypot? (primitive etc)

1/ I imagine I will do that, yes. But I have to understand some concepts about geometry. ROS natively takes into account kinematics direct and indirect if you formalise all.
2/ The main advantage of ROS is the community and the amount of work already done. For instance, since the community is huge, ROS will be compiled for Raspberry Pi 3. Having a small computer with ROS is a great project to have ROS drone, ROS cars ROS… things. Unfortunaltely, if I have to use 3D vision with mono camera, It will be difficult to make this with Pypot. You can do “high tech” robots very quickly.
3/ It is a point I have to test. But on Raspberry Pi 3, I can do instantaneous video streaming at 80060030fps. I cannot say more for the moment…
4/ I do not know others workflow for the moment. I just discovered Darwin OP workflow. I created a workflow for Poppy named FIRE (inspired by flight control) but having a community of 1 person is not very interesting :slight_smile:

For information ROS may be powerful but it also means compiling things difficultly you will probably never use…