Mastering BeagleBone Robotics

Hi guys, I was the technical reviewer of this book by Packt Publishing and I am helping them promote it. Do check the book out if you are interested in learning how to do robotics implementations with Beaglebone Black. The lessons can be extrapolated to most development boards including the Raspberry Pi and the language is fairly easy to understand. Look out for my name in the technical reviewers section! http://bit.ly/MBbR8907...

Playing with OpenCV Vision Library on Ubuntu 14.04 x86_54

I have been starting to play with OpenCV as a part of my work for security systems. I haven’t found any Perl libraries for this except Image::Resize::OpenCV, Cv::* and Image::ObjectDetect which I might look at later, for now I will start with python libraries. At a later stage I might decide to write a Perl binding for OpenCV library. No commitments yet. It depends on my needs 🙂 For starters, here is what I do: sudo apt-get install libavformat-dev libcv2.4 libhighgui2.4 python-opencv opencv-doc libcv-dev libcvaux-dev libhighgui-dev there are a few examples for python in /usr/share/doc/opencv-doc/examples/python and in /usr/share/doc/opencv-doc/examples/python2 I will start off by trying...

Setting up ArchLINUX on BeagleBone Black – Part 3 – Setting up I2C and PWM controller

This Article is a placeholder for work in progress and I will log my success as I go forward. ArchLINUX has proven to be the lightest of all the distros that I have installed yet on Beaglebone Black. I have already got all the basics up and running and now I am setting up my perl stack and I2C and PWM interfaces. Make sure you have followed my previous instructions for ArchLINUX here. List of Instructions for Archlinux Install base devel and include all the sub packages. This is needed for installing XS modules and its roughly equivalent to build-essential package on Ubuntu $ pacman -S base-devel Install i2c-tools $ pacman -S i2c-tools Now we can go ahead and install Device::SMBus. This is the interface that I released to CPAN for connecting to I2C devices, in the last release Device::SMBus 1.05 I removed some dependencies on board and distribution specific differences in i2c-dev installations, so it works without issues on both Raspberry Pi and BeagleBone Black , ubuntu,armstrong and archlinux installations. $ cpan Device::SMBus I use the LSM303DLHC for my work with LSM303DLHC Altimeter and Magnetometer $ cpan Device::LSM303DLHC Installing module for using LPS331AP Altimeter Barometer $ cpan Device::LPS331AP Installing module for using L3GD20 Gyroscope $ cpan Device::L3GD20 My two ways of controlling PWM on Beagelbone Black: External I2C PWM Generator like PCA9685: I have already implemented this method before on Raspberry Pi, Since we have already setup I2C on ArchLINUX above, using PCA9685 is quiet simple, and while I have not lokked into the fact if the BeagleBone Black has a seperate microcontroller with a clock for controlling...

Setting up ArchLINUX on BeagleBone Black – Part 2

so I have been trying to get my usual environment up on archlinux.first comes vim $ pacman -Syq vim $ pacman -Syq perl-moose There is a cpan package for easily maintaining CPAN packages on arch linux CPANPLUS::Dist::Arch, its a CPANPLUS backend for ArchLINUXhttps://metacpan.org/pod/release/JUSTER/CPANPLUS-Dist-Arch-1.28/lib/CPANPLUS/Dist/Arch.pod $ cpan CPANPLUS::Dist::Arch setup cpan to use us automatically $ setupdistarch Install Device::SMBus as a pacman package $ cpanp -i...

Setting up ArchLINUX on BeagleBone Black – Part 1

Today I decided to give Archlinux a whirl with my BeagleBone Black board. Its a little more complicated to get it up and running compared to default suppported Angstrom distribution and generic GNU/LINUX distros, but it helps me save a lot of space. Instructions are listed on arch linux arm website at http://archlinuxarm.org/platforms/armv7/ti/beaglebone-black but I noticed that the download links go  down quiet often so you might have to try a couple of times to get the download complete. The Initial install occupies 28% of mmc storage compared to around 65% for angstrom, leaving lot of space for me to play around in! 🙂 As long as I can find a good wifi driver for the tiny usb wifi dongle I bought, I will stick to this distro for my UAV project. More on the adventures if things go as...

No space left on Beaglebone Black Angstrom!!

Few minutes back I just realised that space on my Beaglebone Blackis full!! Wow 2GB occupied on a tiny linux install that I made yesterday!! As it turns out the default Angstrom distribution is set in debug mode, which fills up the logs like crap! so the space on my black is full now. If you face the same issue here is the quick fix! edit the /etc/systemd/journald.conf and change the following settings: SystemMaxUse=16M MaxLevelStore=info MaxLevelSyslog=info Reboot with: init 6 edit the /etc/systemd/journald.conf and change the following settings: SystemMaxUse=16M MaxLevelStore=info...

Setting up perl and cpan the usual way on Angstrom Linux

I have gotten so used to using super convenient the default setups on ubuntu  for perl that other flavours of linux are feeling increasingly user-unfriendly. After I have been forced to switch to Angstrom on my Beaglebone Black, I have been trying to get it up like I usually like my Linux. There are tons of things missing in stock Angstrom distribution of perl and it just doesn’t do things right. So I decided to write a little guide on how to remove the existing perl distro and build a fresh version from the source: $ opkg remove perl --force-depends --force-remove $ wget http://www.cpan.org/src/5.0/perl-5.18.1.tar.gz  $ tar -xvf perl-5.18.1.tar.gz $ cd perl-5.18.1 Update system time, Configure can cause problems if you don't do this step  $ date -s "7 DEC 2013 22:47:00" $ ./Configure -d prefix=/usr/local/perl Go get some cofffee, this will take a while. $ make Mix it up get some hot chocolate this time 🙂 $ make install That will get you your usual cpan app on command line. Now if you want to install cpanminus there are few more step than usual. Upgrade your wgt as Angstrom on BB ships with a version of wget older than what is supported by cpanminus. Specifically the option –retry-connrefused used by cpanm is not supported by older versions of wget. $ opkg wget $ cpan App::cpanmius This should get your cpanm...

Reverting back to Angstrom Linux on my Beaglebone Black

Today I flashed back the Angstrom Kernel on my Beaglebone Black Board. Ubuntu arm Linux kernel caused me some issues with my realtek rtl8192cu wifi dongle, I was not keen to spend much time resolving this so I switched to Angstrom linux. I am quiet used to the process now. Its basically the same process as installing ubuntu on the BB except in this case I burn angstrom on to the SD card instead. This is all a part of the hung up process for me moving my Perl Autopilot development for my quadrotor drone over to my Beaglebone Black Board since my Raspberry Pi is now busy serving as the media center for my TV. However good thing is that I don’t need to use the PCA9685 chipset for generating the PWM signals since the Beaglebone black has its own GPIO Pins which can generate the right Pulse for controlling the DC motors. I can also get rid of the the breadboard for the moment, which might even help me remove a portion of the frame I was using for mounting all these extras. This means I will have some weight reduction, yippee 🙂 I am still working with the algorithms for Getting the right orientation values, I am some distance away from getting all the sensor data for achieving a straight hover capability. Most of this because I had to suspend this project first for all my trips to Macau and Hong Kong and then for my trip to Canada and later all the work committments. I hope I can get something going by the end of this...

Talking to LSM303DLHC Accelerometer and Compass using perl and Device::LSM303DLHC

I bought a pololu’s AltIMU inertial measurement unit that includes among other things a onboard Accelerometer and Magnetometer in the form of the LSM303DLHC chipset. I decided to write down the steps I take to get it working with my Beaglebone Black and Raspberry Pi boards using perl, to help those who are trying to achieve the same. First follow the instructions to install Device::SMBus on Beaglebone Black if you have a Beaglebone Black, or instructions to install Device::SMBus on a raspberry Pi if you are using a Raspberry Pi board Then install Device::LSM303DLHC from cpan sudo apt-get install Device::LSM303DLHC then put this code in a file and save it as lsm303dlhc.pl : #!/usr/bin/perl use strict; use warnings; use Device::LSM303DLHC;  my $dev = Device::LSM303DLHC->new(I2CBusDevicePath => '/dev/i2c-1'); $dev->Magnetometer->enable(); $dev->Accelerometer->enable(); while(){   my $accelerometer = $dev->Accelerometer->getRawReading();   my $compass = $dev->Magnetometer->getRawReading();   print "\tACCELEROMETER: $accelerometer->{x}\t$accelerometer->{y}\t$accelerometer->{z}\t\tCOMPASS: $compass->{x}\t$compass->{y}\t$compass->{z}\t\n" ; } Run this file now, you will get the following result:     The code and these modules have been tested to work on both Raspberry Pi models and on Beaglebone black, and there is no reason why it wont work in other dev boards as long you have perl and the other dependencies for Device::SMBus on...

Setting up Device::SMBus on Beaglebone Black

Yesterday I managed to find time to setup debian on my Beaglebone Black. So today I am going about setting up Device::SMBus perl library on it so that I can start talking to my smart I2C devices through it. First step is ofcourse getting the dependencies in place sudo apt-get install libi2c-dev build-essential libmoose-perl I2C kernel modules are enabled by default on debian so we don’t need to enable them explicitly like we need to in Pi. On debian beaglebone black i2c bus doesn’t seem to support quick write so i2cdetect -y 1 does not work Instead I use i2cdetect -r 1 This should show you the list of i2c devices connected to your board. Next install Device::SMBus from cpan. sudo cpan...