I have started to update my old projects with Beaglebone Black and ROS Indigo version.
Before ROS installation the best option is to install the Ubuntu 14.04(LTS) arm version. It is recommended because package install will be available for ROS and there’s no need to build the them.
Ubuntu Arm 14.04 Install
I had chosen to install it on an SD card (16GB class 10) since then there will be more than enough space for everything I need. The other option could be to use eMMC on-board flash storage, but that has only 4GB space.
1. Download the image to your computer. Update: the image no longer available here is another image
2. On Windows unpack the above downloaded file and use the Win32DiskImager to write the image on the SD card.
3. Put the SD card to the Beaglebone Black, and press and hold the switch 2
while you are booting.
4. Login to the Beaglebone Black via ssh, user/pass ubuntu/temppwd .
Ubuntu post install steps
The partition will be only 2Gb you can check if you ssh to the BBB and give the following command:
df -h
To have the full card size use the following commnads on the BBB:
cd /opt/scripts/tools git pull sudo ./grow_partition.sh sudo reboot
Changing the kernel version
The bone-ubuntu-14.04.2-console-armhf-2015-07-08-2gb.img image has some issues with the kernel. It only allows 720Mhz for the maximum frequency. It can be seen if the
cpufreq-info
command has given in the BeagleBone Black terminal. It is easy to fix this, all that needs to be done is to change the kernel version. Once again give this on the BBB:
sudo apt-get update sudo apt-get install linux-image-4.1.3-ti-r7
I have tried this version and it worked for me. See more info in this link.
Optional post step
The Beaglebone Black has only 512 MB ram, any extra memory could come handy. It can be extended by creating swap file on the SD card. On the BBB:
sudo mkdir -p /var/cache/swap/ sudo dd if=/dev/zero of=/var/cache/swap/swapfile bs=1M count=1024 sudo chmod 0600 /var/cache/swap/swapfile sudo mkswap /var/cache/swap/swapfile sudo swapon /var/cache/swap/swapfile
Change the /etc/fstab file to have these settings even after reboot.
/var/cache/swap/swapfile none swap sw 0 0
More info .
I have followed this guide, here is more useful information about the linux installation on BBB.
ROS Indigo Install
Jade is the latest version of the ROS, but since Indigo has the LTS (Long Term Support) I will stick with this version. SSH to the BBB and give the following command series:
1. Setting the locale
sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX
2. Setup sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
3. Setup keys
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
4. Installation
sudo apt-get update sudo apt-get install ros-indigo-ros-base
5. Initialize rosdep
sudo apt-get install python-rosdep sudo rosdep init rosdep update
6. Environment setup
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc source ~/.bashrc
More information about the installation can be found here.
After installation everything is in place. If you are new to the ROS I recommend these tutorials.
Here is a sneak-peek what can be done easily with ROS and BBB:
the image isnt available at that link
Thanks for the notice, please try that one: https://rcn-ee.online/rootfs/2015-12-11/microsd/bone-ubuntu-14.04.3-console-armhf-2015-12-11-2gb.img.xz
It seems like the image link is once again dead.
Hi Phillip, unfortunately they keep changing the links. However you can look here for a proper prebuilt image: http://elinux.org/BeagleBoardUbuntu , https://rcn-ee.com/rootfs/ .
rosdep init and rosdep update don’t seem to be able to retrieve files
rosdep init can be bypased by using wget and manually downloading 20-default.list into the rosdep directory. However, not sure how to manually satisfy rosdep update (getting errno 1 on each file)
Looking around it seems that the issue lies with SSLv3 requirements, and python 2.7 only seems to support SSL23.
Any advice, I’ve followed through your steps and thats the only issue I’ve been having
That is one of the issues I encountered on my laptop (no wonder). It’s very annoying and have to say that it even depends on ISP. I ha e the same issues when I’m at home, but the university for instance seems to provide those certificates so from there the same thing on the same laptop works…
I actually haven’t got around figuring this out
Hey, nice tutorial! I have a question though. After I upgraded the Kernel to 4.x I got issues with the Adafruit BBIO library which I used to contrl the PWM pins on the BBB (and worked fine with the 3.8 Kernel). So my question, are you using and did you manage to get the PWM pins to work with your rover? Cheers!
Thank you!:). Currently I’m not using the PWM on the BBB. I have a Tiva launchpad and controlling it through Rosserial. For that reason I haven’t faced this issue yet. However my plan is to use directly the PWM on BBB, when I’ve managed it I will share the howto with you.
Thanks a lot for this useful tutorial !! Can you please share the driver written for your differential drive robot?
Sure! We are using the standard diff drive controller from ros_control: http://wiki.ros.org/diff_drive_controller
Hello, I am sorry for duplicating my message in this branch but may be it is better to post it here. I would like to write a wrapper ROS (Indigo) code for BeagleBone (Rev. C) with the installed Debian 8.7 2017-03-19 4GB SD IoT image on it. I installed the latest image available at BeaglBoard.org. Would suggested procedure work for my configuration?
Thank you!
Hi,
If you want to use Debian 8.7, then I would recommend to use ROS – Kinetic (latest version). Here is the guide for that. I haven’t checked the changes in Kinetic after Indigo, but I know that catkin build system is still there in Kinetic.
I you want to keep the ROS – Indigo, then there is image for Wheezy Debian on beaglebone.org and here is the instructions for that combination.
I vote on doing the 1st version(Jessie + Kinetic).
To back to your original question, I had a quick look on the differences between two install instructions and I haven’t seen big changes, however I recommend to use directly the ROS wiki. Hope that helps!
Thank you for the great answer. May be you could help me to clear some more things? First, I have no freedom to switch to the ROS-Kinetic and have to keep the ROS-Indigo. I am using Jessie because it was in the latest image. I wrote some scripts suing gpio, adc, and pru and I would like to control them using the ROS-Indigo. I can change the image but will I keep the functionality of stuff I have done so far (tree-overlay, c- and assembly code)? What would you recommend in this case (Ubuntu or Wheezy Debian, or may be something else)?
I have tried the combination that I mention in this article( Indigo + Ubuntu 14.04) and all the issues I had I was able to resolve. Unfortunatly I don’t find the full images for BB anymore however you could try out the min fs version. I expect that you have to download a lot of packages and might have to change the kernel to your flavor( to make sure that gpio, etc. works properly).
Other option is to take the latest the 16.04 image and use docker to make Indigo work together with this version. I have never tried this but in theory it could work. @bmagyar might able to help you out, I will check with him.
I would spend a few day just to try out different combinations to find out which fits the best for you. My vote is on Ubuntu it is well supported for ROS, but of course you need to make sure it fits your needs.
One more thing, if you finished with your project and you put it to a public place( eg.: github) please don’t forget to share with us! 🙂
Hello,
thank you again! I am sorry for late reply, I got sick and went to bed early yesterday.
Yes, I will try different combinations and see what works. I have only one BB, therefore, before I start experiments, I will document everything I have done so far:) I will try things that you mentioned before using Docker and if nothing get work I will ask again for your help with the use of Docker.
I would gladly upload everything I did, and I would ask for your feedback but I am not sure I am allowed to do that. I am doing unpaid intern and signed some disclosure papers. I will ask. However, I did not do anything fancy like you did or would not be accessible on web, in my project BB serve as a hardware management system (reading signals from adc, dc-dc convertors,
sensors, control ssr …).
I am sorry for off-topic but I could not get two prus working. I wanted to split assembly code for three sensors in two parts (2+1) and use first 12 bytes of their shared memory at 0x00010000 to write/read their signals but only first prussdrv_exec_program() worked in any combination of two exec lines. So, I am using one pru for all three sensors.
…
prussdrv_map_prumem(PRUSS0_SHARED_DATARAM, &pruDataMemory);
…
prussdrv_exec_program (0, “./pru0.bin”);
prussdrv_exec_program (1, “./pru1.bin”);
Thank you for your help!!!
Hi,
Unfortunatly I couldn’t bring the PRU-s to live on my projects. I’m a newbie in that area, but that is definetly my next step to learn. For that reason I cannot help in these issues. I’m currently using a TIVA launchpad with rosserial to avoid these.
Hi,
I could not get interrupts working for prus 🙂 I am doing address poling. And as I understand, the PRU‐ICSS is not currently supported by Texas Instruments. I might move to the TIVA launcpad as well.
TIVA launcpad = TIVA launchpad
Hello Everyone,
Just in case, the link for installing ROS-indigo + Debian:jessie: https://gist.github.com/mhaberler/621bc9df63a8f5800b64