Learning Blender - Building a Tank

shantanubhadoria 17-06-2014 10:29:44

I am still trying to pick up more skills with Blender in my evenings. I have been working on this sketch for a Battle Tank modelled on a Indian Army tank called the Arjun. There is still a lot not in place including the tracks. I have also looked at this graphics engine called Unity 3D which lets you rig up a game or a walkthrough using blender models and some scripting and rigging. Perhaps I will be able to create something interesting soon?
In the meanwhile enjoy my incomplete tank here : 


    MBT Arjun - In Progress     by shantanubhadoria     on Sketchfab

  • 3D Modelling
  • Blender

Giant Moth Invasion

shantanubhadoria 06-06-2014 07:40:04

Saw this Giant Moth in the appartment corridor today. It apparently belongs to Tropical Sallowtail Moth family.


  • Blog
  • Singapore
  • Tropical Sallowtail Moth

Teaching myself Blender

shantanubhadoria 01-06-2014 02:13:17

Today I was watched Rio again and I decided to learn some 3d modelling. I am not sure how it will ever be compatible with my existing skill sets(Perhaps it can help in my quadcopter project?). I am just starting with the basics,

I picked up a free and surprisingly effective 3d modelling software made for linux called Blender.

I created a tiny animation with my name on it. The text breaks up into small cubes and dissolves away. The steps are straight out of one of the blender tutorials. I messed up the dissolving away part but you will probably not notice it in the video.


  • 3D Modelling
  • Blender

Create your open source report card (From github)

shantanubhadoria 14-04-2014 20:09:30

Found this interesting tool to generate a funny but cool story for your developer habits and preferences. It seems to pull the developer profile data from github. Anyone can enter their github profile name to generate their own story.


  • Github

Playing with FreeSwitch

shantanubhadoria 28-01-2014 01:10:24

Today I have started playing around with freeswitch to explore the possiblity of using it as a tool for secure audio routing.


FreeSWITCH is free and open source communications software for the creation of voice and messaging products. It is licensed under the Mozilla Public License (MPL), a free software license. Its core library, libfreeswitch, is capable of being embedded into other projects, as well as being used as a stand-alone application.

More updates soon . . .

  • FreeSWITCH

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

shantanubhadoria 14-12-2013 19:50:51

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 PWM or it generate a "software PWM", if its the latter, there are obvious benefits to using a external PWM generator like PCA9685. Since I already bought this PWM microcontroller when I was building a quad on the Raspberry Pi, I might go ahead and use it again with BeagleBone Black if it proves to be a better option for performance.

TO use PCA9685 with perl simply install Device::PCA9685 on your BB and connect your PCA9685 to the I2C Pins like I do. There are other ways to do it without using perl but I won't go into that unless I need it. To look into syntax details of how to use Device::PCA9685 look up the documentation for Device::PCA9685 on metacpan

$ cpan Device::PCA9685

Onboard PWM Pins on Beaglebone Black:

BeagleBone black uses a internal clock in its arm335x CPU to generate a PWM on its 8 or so PWM pins. The way to use this is to set the internal registers in the CPU using /dev/mem to trigger the high and low in the PWM signal at the correct moment as required. I will probably write a perl library to maipulate these registers directly from perl for using OMAP335x CPU to achieve the desired PWM signal. 

Stay Tuned . . .

UPDATE: All PWMs are not created equal

I have done my research and I realised that all PWM outputs are not created equal when it comes to the Beaglebone Black. Essentially the black has 

  • Two independent PWM outputs with dual-edge symmetric operation
  • Two independent PWM outputs with single-edge operation
  • One independent PWM output with dual-edge asymmetric operation

So no two similar PWM output which makes me edgy, because having rotors running on different clocks is a bit dodgy especially if I hope to have finer tuned control on my quad so I have dropped the idea to write the perl driver for BBB CPU controlled PWM.

I haven't gone into details of different types of PWM but from a brief read up on the web, a dual edge symmetric PWM provides better quality signal for running Brushless DC motor, in a X config quad that I have, I am not sure I want to have different quality signals running the four motors.

  • ArchLinux
  • Beaglebone Black
  • Device::L3GD20
  • Device::LPS331AP
  • Device::LSM303DLHC
  • Device::SMBus
  • GNU
  • Linux

Setting up ArchLINUX on BeagleBone Black - Part 2

shantanubhadoria 14-12-2013 07:20:59

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 Device::SMBus


  • ArchLinux
  • Beaglebone Black
  • GNU
  • Linux

Setting up ArchLINUX on BeagleBone Black - Part 1

shantanubhadoria 14-12-2013 06:15:56

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 planned.

  • ArchLinux
  • Beaglebone Black
  • GNU
  • Linux

No space left on Beaglebone Black Angstrom!!

shantanubhadoria 07-12-2013 20:49:28

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:




Reboot with:

init 6

edit the /etc/systemd/journald.conf and change the following settings: SystemMaxUse=16M MaxLevelStore=info MaxLevelSyslog=info
  • Angstrom Linux
  • Beaglebone Black
  • GNU
  • Linux

Setting up perl and cpan the usual way on Angstrom Linux

shantanubhadoria 07-12-2013 08:44:56

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 working.

  • Angstrom Linux
  • Beaglebone Black
  • GNU
  • Linux
  • Perl