I’m a software engineer, currently working in Financial IT in London.

I really enjoy programming, but it’s sometimes frustrating that the fruit of so much hard work can’t have a direct physical impact…

With robotics I really enjoy the “completeness” that it offers for an engineer : you have the mechanical challenge to build your robot, the electronics skills needed for the circuitry and finally the programming of the logic (which is often the part I never finish, mostly because I must be having enough of it during work hours 🙂 ).


39 Responses to About

  1. iboman says:

    Working on an ESP32 dev board for makers. It is optimized for robotics applications. I would like to hear your comments and suggestions. I will optimize the design based on the user needs.

    • trandi says:

      Hi there, thanks for reaching out… Not sure what to suggest, there’s already quite a lot of choice out there, and I’m more than happy with the ones I’ve used for my latest projects, ie the thermal printer and self balancing robot…

      Sorry for not being more specific.


  2. dvalimona says:

    Hi Dan!
    I am interested, which version of ESP32 i can use for your self-balancing bot?
    And what better for your bot: espruino or esp32?

  3. Jesus Ayuso says:

    Hi Trandi

    I saw your version of TLD for Android. I think that your work is great.
    I’m trying to use it in my robot for it to follow anything that moves.
    Did you do any improvement recently?
    The objects can be tracked but after some time the enclosing rectangle expands too much and looses the object.


    • trandi says:

      Hi thanks, I’m glad you found it useful…
      Sorry no, I haven’t worked on it for a while, and actually it doesn’t really work properly, only the tracking really works, not the detection/learning… this is why the box keeps growing and never comes back.

      I’m trying now to find some time on porting Georg’s new CMT algorithm to Android (http://www.gnebehay.com/cmt/).


      • Jesus Ayuso says:

        Let me know if I can help porting the CMT algorithm to Android.
        I also belive that Android is a great platform for robotics, and these kind of trackers are necessary.

      • trandi says:

        Thanks, porting CMT is actually very different… I initially thought it would be much simpler as it’s Python not C++, BUT it makes heavy use of numpy and scipy… and I need to find the equivalent Java library, IF there’s any…

        You could help by pointing me in that direction…

        And yes, I agree with you, it’s surprising that there’s not more interest in using Android as a robotics platform… I mean there is, but given how cheap a reasonably OK android phone it nowadays, compared to getting a Raspberry PI let’s say + screen + wifi + bluetooth, etc. …

        Thanks, Dan

        On 1 July 2014 07:01, Robotics / Electronics / Physical Computing wrote:


      • Jesus Ayuso says:


        I finally managed to get an efficient version of CMT and TLD on Android.
        Do you want to see it?

      • trandi says:

        Hi Jesus,

        Of course, could you please provide a link or something ?


        On 29 November 2014 at 17:39, Robotics / Electronics / Physical Computing wrote:


  4. jo says:

    I can see you did some stuff using KalmanFilters,
    can you help me to use it in forecasting the Cpi index, please?

  5. Vikas Vasani says:

    I have have a small question.
    Do u have used android NDK (native development kit) for opencv
    programming in android platform or not? do u have use native code(c++)
    for object tracking?

    • trandi says:

      No, there is no need to, except in some very specific cases for performance reasons. In my case I have not.


      • Vikas Vasani says:

        will u pls tell that use of Native code in android increases of decreases performance(speed etc.) of application when it run on android phone?

  6. Vikas Vasani says:

    I am going to develop my first object following robot.
    Will you please give some information about system specification of android phone which is capable enough to do all task of robot, like what should be minimum RAM or what type of processor the andriod phone should have to do object tracking and moving things etc.

    pls help.

    • trandi says:

      Hi Vikas,

      It really depends if you want to do any object tracking/recognition with your phone?
      If YES, they you need the best phone you can find as you’ll always be short of resources. You’ll basically have to scale the image to match the CPU of your phone (the RAM doesn’t matter that much) and the exact procession on the image.
      If NO, if you use your Android just for AI algorithms or driving the motors / sensors (through a IOIO for example or an Arduino), then you can get absolutely any phone as it would be more than enough.

      Hope this helps,

      • Vikas Vasani says:

        Hi trandi…thanks for rply…
        Basically i want to create robot like you have shown in your video under article “Physical Face Following with OpenCV on Android” which also have wheels to move towards the detected object.
        so, what specific resolution of camera and processor will i need in my android phone?
        Is 3 megapixel camera and 512 MB RAM is enough?

      • trandi says:

        To be honest, I have no idea. The San Francisco phone I use must be one of the cheapest… so I imagine pretty much any Android phone would do.

        Also do note that while I used OpenCV in my example, there’s apparently (I haven’t tried it myself) an easier way to do face detection (specifically) using a included Android library (*android.media.FaceDetector I think*).


    • Vikas Vasani says:

      I have done object detection apllication using opencv and andoid.
      Basically i want to develop object following robot using andriod phone and opencv. bur i dont have any idea about how to communicate between android and robot(servos etc).
      i have knowledge about programming a controller but i just want to know how to communicate between android phone and controller?
      can you give me brief information about this? or any article or something useful to communicate using USB.


  7. Hi Dan,
    found your modification to a Tiger I excellent.

    I would like to have a shot at something similar, but maybe a less costly model as the vehicle ( 1/24 scale possibly ).

    Is is possible to get see your source code and electronics schematics ? I would likely use a Maple uController board from Leaflabs as the controller, and try using C.

    Whatever you have got, in whatever language or platform ( arduino I believe ) , would be fantastic kick-start for me.

    If not no problem at all. What you have already on your website is great inspiration and very encouraging.

    All the best, Seán

    • trandi says:

      Hi Sean,

      Thank you, I’m glad that you like my project !
      The Java code (as mentioned in the post I have flashed the NXT to use LeJOS) is pasted in the post, in the “05Jun2011” subtitle, you just have to click on the link to expand it.

      Also, there is this post https://trandi.wordpress.com/2011/05/02/tiger-1-bb-airsoft-rc-tank-v2/ with the previous version of the tank that also has the code running on the Arduino board.

      As you can see from the description, the Arduino does the low level stuff (decoding the PPM signals from the remote, controlling the motors and the firing mechanism and finally talking to the NXT through I2C) and the NXT the high level AI logic (very basic 🙂 ).

      Hope this helps,

  8. a1b2c3 says:

    Hi Dan, hope you’re well.

    I was reading through your article on unboxing and programming the TI Chronos watch, and it was interesting. I too have been programming mine, and I was hoping for a word on advice on the timing section of the code.

    For my project I need to have two stopwatches on the screen concurrently, both running at different times.
    In your Hello World code you wanted one of your functions to execute once per second, so you put it into a timer function called TIMER0_A0_VECTOR. I can see how I could change the speed that that would execute at, so i was wondering how I could adapt one of the other functions in timer.c to execute at a different speed for the other stopwatch.

    Any help at all would be really useful, as I’m not a programming pro :p

    Thanks in advance!

    • trandi says:


      I’m glad you found my post useful, however it was a while ago and don’t remember many details, I would have to go and immerse myself into the code again…
      Besides I’ve never really liked programming that watch, as the whole TI tool chain is way too complicated compared to Arduinos or other similar boards..

      Sorry I couldn’t be of more help…

  9. what is your email address?

  10. Hi Dan,

    I was wondering if you would be interesting in working on collaborative project for a UAV controller for quad/tri copters?

    Here is a link to my current work on my quad copter:

    • trandi says:

      Of course this sounds quite interesting !
      I don’t know how much time I will have, but I’d definitely want to give it a try, especially that I see you’re in London too, so this should make it easier to collaborate…

      Now my question is WHY yet another UAV controller for quads ? Aren’t there enough of them out there already ?

      In any case, I’ve never been able to fly my quadcopter, and I’m convinced that my attempt at programming it from scratch was too optimistic, so yes I’d like to see that finish one day…


  11. dan,
    i need your email so i can talk to you directly, without posting to yor blog, you mind?

  12. Saber says:


    I have a question please. I have a littel problem with playing sound using android.
    In my application I have 3 class A, B and C. the class A extends Activity, and in his constructor will create an instance of the class B. The class B is an extends of theclass C.

    My application is simple. when class B get a specific result, he have to make a sound( no human interact, just it’s calculate a result for example i++ ; when he got i = 10 he make a sound “bip “). But the only way, I succeed in making a sound is when I click on a menu item, from the class A ( using the package android.media.MediaPlayer ). What I want is the class B who be able to use that method. when I put the same code in B, I got this error ” The method create(Context, int) in the type MediaPlayer is not applicable for the arguments ” this is
    the code of the method :

    public void objFound() {


    MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.button);

    catch(Exception ex)
    //logInfo(“Music failed: ” + ex.getMessage());



    What I need, is to find a way to make that sound played directly from
    the class B ( it’s the best for me ) or find a way to call the method in class A
    from the class B.

    Note : I tried to make an instance of the class A in B, that doesn’t
    work ( when I send the application to my mobile phone ” Huawei U8180
    android 2.2.2 ” its crashed).
    I tried also to make my method as a static method in class A.
    But their is a problem with the ” MediaPlayer.create(this,
    R.raw.button); ” it can’t be static.

    Thanks for your help in advance.

    • trandi says:


      This is really an Android specific question, nothing to do with physical computing, electronics or even with the IOIO board… I think you’re best bet for an answer would be on the Android forums…

      I’ll try however to quickly answer it, as it seems a reasonably simple issue.

      Your MediaPlayer constructor needs an Activity as the 1st parameter ( MediaPlayer.create(this, R.raw.button); ). So this is why you get the “The method create(Context, int) in the type MediaPlayer is not applicable for the arguments” if you simply move that call in class B, which is NOT an Activity from what I understand.

      There are several solutions to this, one of which would be to pass the instance of A to the B contructor (you say A creates B), store it as let’s say Activity _parent, and then inside B, when Calling MediaPlayer.create(_parent, ….) rather than “this”.

      Hope this helps, Dan

      • Saber says:


        Thank you a lot for your help. In fact, the solution is to send the class A Context’s to class B ( using the constructor of class B ). then I will used with the method directly

        Context cont;
        B (Context contexte ){

        cont = contexte ;


        public void objFound() {


        MediaPlayer mediaPlayer = MediaPlayer.create(cont, R.raw.button);

        catch(Exception ex)
        //logInfo(“Music failed: ” + ex.getMessage());



        Thanks you again my friend 🙂


  13. Saber says:


    I’m very interested in robotic field too. Actually I’m working on a robot using an android phone. My question is about the IOIO. Did IOIO work with Huawei U8180 ( android 2.2.2 ) ( URL http://huaweidevice.co.in/Products/UpcomingProducts/Huawei-Gaga-U8180.php ) ???

    Thanks in advance.

    • trandi says:

      I’d be happy to see more details about the exact robot you’re working on…

      As for the specific phone you’re asking about, I have no idea …

      You should maybe check this thread on the IOIO board group.


      • Saber says:


        Thank you a lot. When I will finish my personal page on the net I will send you the URL so you will be able to see more details 😉 have a nice day .


  14. Kristjan G says:

    Hi,,,, I was hoping you might be able to help me… Im trying to figure out what diode sits i the R700 receiver right next to the battery intake…. i burnt my out, and i was hoping to be able to figure out what diode it is since i have access to electrical components and would be able to fix it myself..

    Thanks in advance,


    • trandi says:

      226A sourface mount diode
      There’s also this code below: R06XM, which I don’t know what stands for…

      hope this helps,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: