The Syntro SyntroControl discovery system uses a beaconing mechanism via UDP - an app sends out a request and all SyntroControls on the same LAN respond with their information. Syntrino (Syntro + Arduino) worked fine with just one SyntroControl but it was clearly having trouble with multiple ones. The responses were being concatenated in EthernetUdp::parsePacket due to it reporting back an incorrect size. I fixed it by picking the data length out of the UDP header instead of just returning the total bytes left in the buffer. However, I then discovered that it had been fixed on the Arduino GitHub repo three days ago! Nice to see that even fairly esoteric problems like this are getting fixed. Other than this, Syntrino and the Arduino library have been rock solid.
Arduino EthernetUdp Issue with Multiple Packets
Posted February 18, 2012 by tirokartchiefCategories: Arduino, Software, Syntrino, Syntro
Syntrino = Syntro + Arduino (Even Better With Arduino Eclipse Plugin)
Posted February 16, 2012 by tirokartchiefCategories: Arduino, Software, Syntro
In the middle of developing Syntrino - Syntro for the Arduino - and I was starting to pull my hair out while waiting endlessly for the Arduino IDE to complete a compilation. Then I discovered the Arduino Eclipse plugin and life is so much better now! The screen shot shows it working. There a few annoyances – for some reason it complains about Serial because HardwareSerial is supposedly not supplying a write() function to cover a pure virtual function in Print but whatever! It really is the only way to develop a program of any size. Anyway, rapid progress is being made – the Arduino is already swapping Syntro messages with SyntroControl, publishing its directory of services and doing other Syntro housekeeping functions.
Syntro + Arduino + Ethernet = UbiComp?
Posted February 14, 2012 by tirokartchiefCategories: Software, Syntro, Lightweight Compute Cloud (LCC), Arduino
Just about to start work on integrating an Arduino with Ethernet shield into Syntro. This could be an ideal way of controlling simple robots and yet providing them with significant intelligence with the help of off-board servers in the Syntro cloud. Since the Arduino can be and is being used for so many different types of sensing and control applications, it is an ideal Peripheral Class Processor (PCP) for use with a Syntro Lightweight Compute Cloud. It will be really easy to integrate large numbers of Ethernet connected Arduinos with storage and intelligent processing using this technology – truly ubiquitous computing (UbiComp) technology. I’m hoping that the initial open source release of Syntro will include the code that runs on the Arduino and also a sample Syntro app to show how to use it what it can do.
Too Few Hours in the Day
Posted February 12, 2012 by tirokartchiefCategories: Arduino, BeagleBone, Pansenti, Qt, Random thoughts, Syntro
Not too much happening on the robotics front lately. Now that Pansenti is very actively developing Syntro, robotics has had to take a back seat. However, it’s not been forgotten! Since moving Syntro onto the Qt platform, very rapid progress has been made in terms of multi-platform support (Windows, Linux and Mac OS) while at the same time retaining its ability to integrate small processors like Arduino and BeagleBone smoothly and easily into the Syntro cloud. Once the initial open source release of Syntro has taken place (soon I hope!), it’ll be fun to show how it can be used to accelerate robot development.
Introducing Pansenti
Posted January 24, 2012 by tirokartchiefCategories: Pansenti, Syntro
I am pleased to announce that Pansenti LLC has taken over the development and support of Syntro, the ground-breaking open source Lightweight Compute Cloud. Head over to the Pansenti blog for more. Pansenti is planning an initial release very soon so stay tuned!
Problem Using OpenCV 2.3.1 Capture from Webcam on Windows – Hangs on Exit
Posted January 14, 2012 by tirokartchiefCategories: Software
I’ve had lots of problems exiting programs that use OpenCV’s webcam capture code. The problem is that when the videoDevice object (in cap_dshow.cpp) is destroyed, it tries to pause the stream and fails. It then hangs when it tries to stop the stream. The simple fix is to correctly check the return code from the pause() attempt and skip the stop() if it has failed. The code below is a fixed segment from the videoDevice destructor:
//Check to see if the graph is running, if so stop it.
if( (pControl) )
{
HR = pControl->Pause();
if (HR != S_OK)
{
if(verbose)printf("ERROR - Could not pause pControl\n");
}
else
{
HR = pControl->Stop();
if (FAILED(HR)) if(verbose)printf("ERROR - Could not stop pControl\n");
}
}
//Disconnect filters from capture device
NFS Trick for Embedded Linux System Development
Posted December 27, 2011 by tirokartchiefCategories: BeagleBoard-xM, BeagleBone, Development, Linux, Pandaboard, Software
My friend over at jumpnow gave me this great recipe for using NFS to ease software development on embedded Linux systems – very handy for BeagleBoards, PandaBoards and BeagleBones. Basically it allows the embedded system to mount a directory on the development PC making it trivial to copy data between the two. Details after the jump…
SyntroWebCam on the BeagleBone Now Rocks!
Posted December 21, 2011 by tirokartchiefCategories: BeagleBone, Software, Syntro
Looking at the OpenCV source code, it really doesn’t want to use the native JPEG from the webcam so I slotted in my own uvc camera interface instead which does allow the JPEG mode to be selected. The results are impressive – a full 30fps now at 640 x 480 frame size and only roughly 12% CPU utilization! Not bad at all.
SyntroWebCam Working on the BeagleBone – Finally…
Posted December 21, 2011 by tirokartchiefCategories: BeagleBone, Software, Syntro
I always like to get SyntroWebCam running on new boards just to see what happens. This took about 15 times longer than expected for one reason or another and always due to me doing things wrong. Because I am more used to Ubuntu than Angstrom, I set up Ubuntu 11.10 for it from here. That worked just fine. I wanted to use OpenCV-2.3.1 so I decided to native compile that and SyntroWebCam on the BeagleBone itself for simplicity. The problem was that it would not recognize the existence of the camera!
Syntro Gets a BeagleBone
Posted December 15, 2011 by tirokartchiefCategories: BeagleBone, RCP (Robot Control Processor), Syntro, SyntroRobot
Just ordered my BeagleBone (photo obtained here) as it’ll make a nice addition to the devices supported by the Syntro system. The BeagleBone will look like what the late and lamented RCP (Robot Control Processor) was intended to be – a peripheral interface allowing other SyntroApps to drive robot platforms and interface to pretty much anything. It’ll fit in nicely with the SyntroRobot family of Syntro apps.






