{"id":82,"date":"2017-03-31T01:01:57","date_gmt":"2017-03-31T01:01:57","guid":{"rendered":"http:\/\/sheriftolba.com\/wordpress\/?p=82"},"modified":"2026-01-02T02:15:07","modified_gmt":"2026-01-02T02:15:07","slug":"ubuntu-ros-on-beaglebone-black-bbb-rev-c","status":"publish","type":"post","link":"https:\/\/sheriftolba.com\/wordpress\/ubuntu-ros-on-beaglebone-black-bbb-rev-c\/","title":{"rendered":"ROS on Ubuntu on Beaglebone Black (BBB) Rev. C"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Beaglebone Black (BBB) is a very nice single-board PC that offers numerous features. When it comes to building robots that can do nontrivial tasks, it is my first choice. Installing an OS on the BBB and getting it ready to use can be time consuming. By following the simple steps provided in this post, large amounts of time can be saved and devoted instead to development of the software to accomplish the targeted tasks of the robot.<\/p>\n<p>Although BBB comes with a pre-installed copy of the<em> Debian Jessie<\/em> Linux distribution, ROS developers do not currently\u00a0build packages for Kinetic Jessie for <em>armhf<\/em>\u00a0architecture; they only provide builds for <em>amd64<\/em> and <em>arm64 \u00a0<\/em>(as mentioned\u00a0<a href=\"http:\/\/answers.ros.org\/question\/239466\/incomplete-packages-for-kinetic-armhf-jessie\/\">here<\/a>). \u00a0However, they have armhf builds for <em>Ubuntu Xenial<\/em>. Because Ubuntu is my favorite Linux distribution, this was a breeze for me!<\/p>\n<p>I hope this post will help you save some time. Also, please don&#8217;t hesitate to share your comments and suggestions to help make this post better. I will be using it as a living document that I will always try to update to reflect best approaches reached.<\/p>\n<h2>Installing Ubuntu Xenial on BBB<\/h2>\n<p>Using an SD card to flash the eMMC is easy for Windows users. An SD card \u2265 2GB is needed (I used 16GB). I will cover the necessary steps using Windows as this is what I used.<\/p>\n<ol>\n<li>Get\u00a0the latest image\u00a0<a href=\"http:\/\/elinux.org\/BeagleBoardUbuntu#eMMC:_All_BeagleBone_Varients_with_eMMC\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/li>\n<li>Download SD Formatter\u00a0<a href=\"https:\/\/www.sdcard.org\/downloads\/formatter_4\/eula_windows\/\" target=\"_blank\" rel=\"noopener\">here<\/a>\u00a0or\u00a0<a href=\"http:\/\/www.instructables.com\/id\/How-to-format-your-SD-card-back-to-the-original-si\/\" target=\"_blank\" rel=\"noopener\">here<\/a>. You will need to use this if you decide to rewrite the image on the card as you&#8217;ll notice that formatting the card \u00a0the normal way results in a shrunk card size.<\/li>\n<li>Download Win32 Disk Imager\u00a0<a href=\"https:\/\/sourceforge.net\/projects\/win32diskimager\/\" target=\"_blank\" rel=\"noopener\">here<\/a>. You will need this to burn the image onto the SD card.<\/li>\n<li>Download 7-Zip\u00a0<a href=\"http:\/\/www.7-zip.org\/download.html\" target=\"_blank\" rel=\"noopener\">here<\/a>. You will need this to extract the .xz compression of the .img file.<\/li>\n<\/ol>\n<p>Now that you&#8217;ve downloaded these files, follow the below steps to prepare your SD card for burning the image to the BBB&#8217;s eMMC.<\/p>\n<ol>\n<li>Use 7-Zip to extract the compressed image. This results a .img file.<\/li>\n<li>Open\u00a0Win32 Disk Imager, select \u00a0your BBB&#8217;s drive letter, and select your Ubunutu\u00a0.img file.<\/li>\n<li>Once you are done, safely remove the SD card.<\/li>\n<\/ol>\n<blockquote><p>I would like to note here that, having read a few articles here and there during the many installs that I&#8217;ve done on the BBB, I always had the misconception that\u00a0connecting the BBB to the USB port of my laptop is not a good idea when running the install and it is better to use 5V adapter for that purpose. THIS IS NOT TRUE. Continue reading to learn what really matters to initiate a successful install.<\/p><\/blockquote>\n<p>The important thing to keep in mind when starting to burn the image\u00a0on the BBB is to do the following:<\/p>\n<ol>\n<li>Insert the card into the BBB. It doesn&#8217;t really matter whether it is on or off.<\/li>\n<li>Connect the BBB to the USB port of your computer if not connected.<\/li>\n<li>Press the reset button.<img loading=\"lazy\" decoding=\"async\" style=\"display: block; margin: 15px;\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/2017-03-30-20.23.05-1024x622.jpg\" alt=\"\" width=\"640\" height=\"389\" \/><\/li>\n<li>To tell if an install has been successfully initiated, the four user LEDs should start to light in a sweeping sequence and continue for around 20 minutes.<\/li>\n<\/ol>\n<blockquote><p>Sometimes, the sweeping sequence may stop after a couple of minutes and the install will fail. You will know this by observing that the LEDs will all stay on. If this happens, just redo step 3 until the sweeping persists roughly for the amount of time mentioned above.<\/p><\/blockquote>\n<p>When the install finishes, the LEDs will light up steadily. You can then remove the SD card and press the restart button.<\/p>\n<p>Congratulations! you have just installed Ubuntu on your BBB.<\/p>\n<h2>Connecting \u00a0to \u00a0BBB through Putty<\/h2>\n<p>The next step is to be able to connect to the BBB through USB. Do the following:<\/p>\n<ol>\n<li>Get and install Putty from <a href=\"http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/latest.html\">here<\/a>.<\/li>\n<li>With the BBB plugged in to the USB port of your computer, browse to your BBB&#8217;s drive, find the suitable drivers for your Windows architecture, e.g. 64-bit vs 32-bit and install them.<\/li>\n<li>Run Putty and enter the IP address 192.168.7.2 in <em>Host Name<\/em> \u00a0and 22 in\u00a0<em>Port<\/em>.<\/li>\n<li>Pick a suitable name for your session (e.g. BBB) \u00a0then click <em>Save.<\/em><\/li>\n<li>With the saved session selected, \u00a0click <em>Open<\/em>.<\/li>\n<li>A terminal will be opened and, if Ubuntu installation was successful, you will be prompted to enter a username.<\/li>\n<li>Type <em>ubuntu\u00a0<\/em>and hit <em>Enter.<\/em><\/li>\n<li>Enter <em>temppwd<\/em> for the password.<\/li>\n<li>You are now logged into your embedded Ubuntu instance.<\/li>\n<\/ol>\n<blockquote><p>You can display the release info of your Ubuntu instance using the <code>cat<\/code> command as follows:\u00a0<code>cat \/etc\/*release<\/code><\/p><\/blockquote>\n<p><a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Ubuntu_Xenial.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Ubuntu_Xenial.png\" alt=\"\" width=\"708\" height=\"431\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Ubuntu_Xenial.png 708w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Ubuntu_Xenial-600x365.png 600w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Ubuntu_Xenial-300x183.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/a><\/p>\n<h2>Connecting your \u00a0BBB to the Internet \u00a0through USB<\/h2>\n<p>If you try pinging 8.8.8.8 (www.google.com), you will not get any response. This is because the BBB doesn&#8217;t know how to connect to the internet through USB. Hitting <code>Ctrl+c<\/code> will show that no packets have been received.<\/p>\n<p><a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-121\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_1.png\" alt=\"\" width=\"957\" height=\"135\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_1.png 957w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_1-600x85.png 600w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_1-300x42.png 300w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_1-768x108.png 768w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/><\/a><\/p>\n<p>To enable internet access through USB on Windows, follow these steps:<\/p>\n<h3>1) Bridging your network connection<\/h3>\n<ol>\n<li>Go to\u00a0<em>Control Panel\\Network and Internet\\Network Connections.<\/em><\/li>\n<li>Identify the two adapters that represent the connection used by your computer and the one representing the BBB. In my case, these were <em>WiFi<\/em> and <em>Ethernet 3<\/em>, respectively. BBB&#8217;s connection will contain <em>Linux USB Ethernet\/RNDIS Gadget<\/em> in its device description\u00a0section of the name.<a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-126\" style=\"display: block; margin: 15px;\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_4.png\" alt=\"\" width=\"440\" height=\"498\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_4.png 440w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_4-265x300.png 265w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/a><\/li>\n<li>Go to the <em>Sharing<\/em> tab in the properties of the connection used by your computer and check <em>Allow other users to connect through this computer&#8217;s internet connection<\/em>. \u00a0Next, select BBB&#8217;s connection from the dropdown menu.<a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-123\" style=\"display: block; margin: 15px;\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge.png\" alt=\"\" width=\"513\" height=\"566\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge.png 513w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge-272x300.png 272w\" sizes=\"auto, (max-width: 513px) 100vw, 513px\" \/><\/a><\/li>\n<li>Switch to the <em>Networking<\/em> tab \u00a0and edit the <em>Properties<\/em> of <em>Internet Protocol Version 4 (TCP\/IPv4)<\/em> to make sure that IP and DNS server addresses are obtained automatically.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-124\" style=\"display: block; margin: 15px;\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_2.png\" alt=\"\" width=\"483\" height=\"573\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_2.png 483w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_2-253x300.png 253w\" sizes=\"auto, (max-width: 483px) 100vw, 483px\" \/><\/li>\n<li>Repeat the previous step for BBB&#8217;s network adapter.<a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-125\" style=\"display: block; margin: 15px;\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_3.png\" alt=\"\" width=\"518\" height=\"631\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_3.png 518w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Bridge_3-246x300.png 246w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/a><\/li>\n<\/ol>\n<h3>2) Configuring \u00a0internet connectivity on your BBB<\/h3>\n<p>Now that we have created the bridge between the USB connection that connects the BBB to the computer and the one that connects the computer to the internet, it is time to configure the BBB to be able to utilize that bridge.<\/p>\n<p>Switch to Putty and do the following steps:<\/p>\n<ol>\n<li>Set the default gateway of your BBB to your computer&#8217;s IP address by using the command:<\/li>\n<li>\n<pre>sudo \/sbin\/route add default gw 192.168.7.1<\/pre>\n<\/li>\n<li>If you try to ping googe&#8217;s IP address (8.8.8.8) now, you should be able to receive packets.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-128\" style=\"display: block; margin: 15px;\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_2.png\" alt=\"\" width=\"887\" height=\"349\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_2.png 887w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_2-600x236.png 600w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_2-300x118.png 300w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_2-768x302.png 768w\" sizes=\"auto, (max-width: 887px) 100vw, 887px\" \/><\/li>\n<li>To be able to use domain names instead of IP address, you need to configure the name servers in your <em>resolve.conf<\/em>. You can do this by editing \u00a0that file and adding google&#8217;s name servers as follows:<a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_2.png\"><br \/>\n<\/a><\/li>\n<li>\n<pre>sudo nano \/etc\/resolv.conf<\/pre>\n<p>Add these to the file:<\/li>\n<li>\n<pre>domain localdomain\nsearch localdomain\nnameserver 8.8.8.8\nnameserver 8.8.4.4<\/pre>\n<\/li>\n<li>If you try to ping www.google.com, you will get a similar response to this:<a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-129\" style=\"display: block; margin: 15px;\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_3.png\" alt=\"\" width=\"774\" height=\"191\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_3.png 774w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_3-600x148.png 600w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_3-300x74.png 300w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Pinging_3-768x190.png 768w\" sizes=\"auto, (max-width: 774px) 100vw, 774px\" \/><\/a><\/li>\n<\/ol>\n<p>There is a\u00a0caveat with this approach:<\/p>\n<blockquote><p>CAVEAT 1 &#8211; Sometimes, the bridged connection can fail and attempting to connect to the internet from the BBB will not work. This can be fixed by unchecking the\u00a0&#8220;Allow other users to connect through this computer&#8217;s internet connection&#8221; in the Sharing tab of the main connection&#8217;s settings then re-applying it and selecting the second connection from the menu.<\/p><\/blockquote>\n<p>The other thing to keep in mind is that running the above steps enables internet connectivity only until the BBB is restarted. If you&#8217;d like these changes between restarts (the almost certain scenario), you need to add the commands that set the default gateway and name servers to the <em>rc.local<\/em> file as follows:<\/p>\n<ol>\n<li>\u00a0Edit the rc.local file in you favorite editor.<\/li>\n<li>\n<pre>sudo nano \/etc\/rc.local<\/pre>\n<\/li>\n<li>Add the two following lines to the end of the file.<\/li>\n<li>\n<pre># set default gateway\n\/sbin\/route add default gw 192.168.7.1 || exit 1\n\n# append nameservers to the end of the \/etc\/resolve.conf file\n# echo \"domain localdomain\\nsearch localdomain\\nnameserver 8.8.8.8\\nnameserver 8.8.4.4\" &gt; \/etc\/resolv.conf || exit 2<\/pre>\n<\/li>\n<\/ol>\n<h2>Installing \u00a0ROS on Ubuntu on BBB<\/h2>\n<p>Now that you are connected to the internet, you can install ROS on your Ubuntu. The following sections show you how to do this and are adapted versions from ROS&#8217;s installation instructions on <a href=\"http:\/\/wiki.ros.org\/kinetic\/Installation\/Ubuntu\" target=\"_blank\" rel=\"noopener\">Ubuntu install of ROS Kinetic<\/a> page.<\/p>\n<h3>1) Updating APT Configuration<\/h3>\n<p>First you need to configure <code>apt<\/code>&#8216;s\u00a0sources list to allow it to accept packages from all kinds of repositories that Ubuntu recognizes\u00a0(Main, Universe, Restricted, and Multiverse). This can be done using the following steps:<\/p>\n<ol>\n<li>Use your favorite text editor to edit the <code>sources.list<\/code> file:<\/li>\n<li>\n<pre>sudo nano \/etc\/apt\/sources.list<\/pre>\n<\/li>\n<li>Add\u00a0<code>restricted, universe, and multiverse<\/code>\u00a0after <code>main<\/code>\u00a0to the two entries \u00a0containing Ubuntu&#8217;s release name and updates (<code>xenial<\/code> and <code>xenial-updates<\/code> in my case). These entries represent the URI&#8217;s of the binaries or pre-compiled packages for Xenial and its updates.<a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Repositories_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-136\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Repositories_1.png\" alt=\"\" width=\"1294\" height=\"379\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Repositories_1.png 1294w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Repositories_1-600x176.png 600w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Repositories_1-300x88.png 300w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Repositories_1-768x225.png 768w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/Repositories_1-1024x300.png 1024w\" sizes=\"auto, (max-width: 1294px) 100vw, 1294px\" \/><\/a><\/li>\n<li>Save the file and quit.<\/li>\n<\/ol>\n<p>Next, ROS&#8217;s packages repository URI need to be added to <code>sources.list<\/code>. Although this will work, it is better to use the <code>sources.list.d<\/code> directory to add dedicated file to list ROS sources. This can be done as follows:<\/p>\n<pre>sudo sh -c 'echo \"deb http:\/\/packages.ros.org\/ros\/ubuntu $(lsb_release -sc) main\" &gt; \/etc\/apt\/sources.list.d\/ros-latest.list'<\/pre>\n<p>This command basically says: run the shell command <code>echo<\/code>, plugging in Ubuntu&#8217;s release name in the <em>args <\/em>section of the source&#8217;s entry and redirect the standard output to the file\u00a0<em>ros-latest.list<\/em>.<\/p>\n<p>The last step of this configuration is to add an authentication key to <code>apt<\/code> to make it trust the packages supplied by ROS&#8217;s repository. This can be done using this command:<\/p>\n<pre>wget http:\/\/packages.ros.org\/ros.key -O - | sudo apt-key add -<\/pre>\n<p>The <code>-O<\/code> option of <code>wget<\/code> specifies where to direct the output of the download. By using the <code>'-'<\/code>, we are telling it to direct it to standard output. \u00a0Similarly, the use of the\u00a0<code>'-'<\/code> when adding the key using <code>apt<\/code>&#8216;s key management utility <code>apt-key<\/code>, means read it from standard input.<\/p>\n<p>At this point, you should be ready to start the installation process for ROS &#8230;<\/p>\n<h3>2) ROS Install<\/h3>\n<p>Now that package sources have been specified, we need to resynchronize\u00a0<code>apt<\/code>&#8216;s package index files from their sources. Run the following command:<\/p>\n<pre>sudo apt-get update<\/pre>\n<p>To confirm that ROS Kinetic packages are now available and can be installed, you can search the cache as follows:<\/p>\n<pre>apt-cache search ros-kinetic<\/pre>\n<p>On ROS&#8217;s Kinetic install on Ubuntu (<a href=\"http:\/\/wiki.ros.org\/kinetic\/Installation\/Ubuntu\" target=\"_blank\" rel=\"noopener\">here<\/a>) under Section 1.4 Installation, different install options based on the different needs. In my case, I selected <em>ros-base<\/em> (bare bones) as I believe this should do the job on a BBB. If any specific packages are found to be needed later, individual install can be performed. To make sure that <em>ros-base<\/em> is available, \u00a0you may want to run the above command piping the output to <code>grep<\/code>.<\/p>\n<pre>apt-cache search ros-kinetic | grep ros-base<\/pre>\n<p><a href=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/ros-base-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-143\" src=\"http:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/ros-base-1.png\" alt=\"\" width=\"997\" height=\"108\" srcset=\"https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/ros-base-1.png 997w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/ros-base-1-600x65.png 600w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/ros-base-1-300x32.png 300w, https:\/\/sheriftolba.com\/wordpress\/wp-content\/uploads\/2017\/03\/ros-base-1-768x83.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><\/a><\/p>\n<p>You can now install\u00a0<em>ros-kinetic-ros-base<\/em> using <code>apt<\/code> as follows:<\/p>\n<pre>sudo apt-get install ros-kinetic-ros-base<\/pre>\n<p>Congratulations!! you now have ROS Kinetic on BBB &#8230; but there are a few things that you need do before starting to play with ROS and start building robots &#8230;<\/p>\n<h3>3) Initializing Some Tools<\/h3>\n<p>One of the tools you will likely\u00a0need is <em>rosdep<\/em>, which\u00a0is a command line system dependency installation tool. It is especially useful if you are a developer and want to build packages from source. It is also required by some ROS core components. Because it has been already installed as part of ROS install, we only need to initialize it and update it to get any new definitions. To confirm it is already installed, you can run:<\/p>\n<pre>rosdep --version<\/pre>\n<p>In my case, the installed version was 0.11.5. To initialize and update <em>rosdep<\/em>, you can run the two following commands:<\/p>\n<pre>sudo rosdep init\nrosdep update<\/pre>\n<p>As recommended by ros.org, it is useful to configure ROS environment variables to be automatically set on shell start. This can be done by adding the command that sources ROS&#8217;s <em>setup.bash<\/em> to your\u00a0<em>.bashrc.\u00a0<\/em>This can be done as follows:<\/p>\n<pre>echo \"source \/opt\/ros\/kinetic\/setup.bash\" &gt;&gt; ~\/.bashrc\nsource ~\/.bashrc<\/pre>\n<p>The first command appends the\u00a0<em>setup.bash<\/em> sourcing command to the end of the<em> .bashrc<\/em> file so that it can be run at the start of every bash session. The second command sources the <em>.bashrc<\/em> file for the current session to make it source <em>setup.bash<\/em>.<\/p>\n<p>Another useful tool for downloading ROS package sources is <em>rosinstall<\/em>. This can obtained using <em>apt<\/em> as follows:<\/p>\n<pre>sudo apt-get install python-rosinstall<\/pre>\n<h2>References<\/h2>\n<ol style=\"list-style-type: upper-roman;\">\n<li><a href=\"http:\/\/nootrix.com\/software\/ros-installation\/\" target=\"_blank\" rel=\"noopener\">Nootrix: ROS Installation Made Easy<\/a><\/li>\n<li><a href=\"http:\/\/wiki.ros.org\/kinetic\/Installation\/Ubuntu\" target=\"_blank\" rel=\"noopener\">ROS.org: Ubuntu install of ROS Kinetic<\/a><\/li>\n<li><a href=\"http:\/\/manpages.ubuntu.com\/manpages\/wily\/man8\/apt-key.8.html\" target=\"_blank\" rel=\"noopener\">apt-key man page<\/a><\/li>\n<li><a href=\"https:\/\/help.ubuntu.com\/community\/Repositories\/Ubuntu\" target=\"_blank\" rel=\"noopener\">Ubuntu Repositories<\/a><\/li>\n<li><a href=\"https:\/\/help.ubuntu.com\/community\/Repositories\/CommandLine\" target=\"_blank\" rel=\"noopener\">Ubuntu Repositories\/CommandLine<\/a><\/li>\n<li><a href=\"http:\/\/elinux.org\/BeagleBoardUbuntu#eMMC:_All_BeagleBone_Varients_with_eMMC\" target=\"_blank\" rel=\"noopener\">BeagleBoard Ubuntu<\/a><\/li>\n<li><a href=\"http:\/\/answers.ros.org\/question\/239466\/incomplete-packages-for-kinetic-armhf-jessie\/\" target=\"_blank\" rel=\"noopener\">ROS Answers: Incomplete packages for kinetic armhf jessie<\/a><\/li>\n<li><a href=\"http:\/\/ofitselfso.com\/BeagleNotes\/HowToConnectBeagleboneBlackToTheInternetViaUSB.php\" target=\"_blank\" rel=\"noopener\">How to Connect a Beaglebone Black to the Internet via USB<\/a><\/li>\n<li><a href=\"http:\/\/wiki.ros.org\/rosdep\" target=\"_blank\" rel=\"noopener\">rosdep<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Beaglebone Black (BBB) is a very nice single-board PC that offers numerous features. When it comes to building robots that can do nontrivial tasks, it is my first choice. Installing an OS on the BBB and getting it ready to use can be time consuming. By following the simple steps provided in this post,<a class=\"read-more\" href=\"https:\/\/sheriftolba.com\/wordpress\/ubuntu-ros-on-beaglebone-black-bbb-rev-c\/\"> [&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":87,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[],"class_list":["post-82","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"mb":[],"mfb_rest_fields":["title"],"_links":{"self":[{"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/posts\/82","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/comments?post=82"}],"version-history":[{"count":53,"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/posts\/82\/revisions"}],"predecessor-version":[{"id":679,"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/posts\/82\/revisions\/679"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/media\/87"}],"wp:attachment":[{"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/media?parent=82"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/categories?post=82"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sheriftolba.com\/wordpress\/wp-json\/wp\/v2\/tags?post=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}