09 October

The International Conference on Robots and Systems

The IEEE/RSJ IROS conference recently took place in Vancouver and it was the biggest, and one of the best, meetings in this series of conferences to ever take place. It was also the 30th anniversary of this series of international meetings.
As usual, there were a couple of days of workshops and meetings, and three main days of technical sessions with close to 1000 original research papers being presented.

With ICRA coming to Montreal in 2019 I am paying particular attention to how other robotics meetings are being organized and what the venues are like. I must say that Vancouver really raised the bar to a frightening level (for future organizers) with a beautiful location, an excellent conference banquet, and a generally well-organized meeting overall.

Of course, learning is a key to much of robotics these days. Learning was one of the top keywords associated with published papers this year. Of the five papers from our lab, all five were about the interaction on learning and robotics (one of the papers was actually at ROSCon which preceded IROS).

Big crowd at Dieter's plenary

Although I could only see a small fraction of the talks myself, I got to see some of what the community thought were the best papers by virtue of being on the awards committee. Robot design make something of a resurgence exemplified by the best paper award going to a paper on the design and analysis of the jumping robot Salto-1P (by Haldane, Yim and Fearing). Human robot interaction continues to be a hot topic, a trend I expect to see continue for many years to come. Maja Matric gave a great plenary on her work in this important domain and urged the attendees to focus more deeply on getting robotics to people with profound needs. Among other favorite talks was the plenary by Dieter Fox and a keynote from Oliver Brock, both exceptionally creative and thoughtful souls, and also exceptional speakers -- also great dinner companions and we went out for the best sushi I've had since Tokyo. This was at Sushi Bar Maumi on Bute St. It only seats a total 11 people in groups no larger than 4, and you get to watch the Sushi being prepared at the bar in traditional Japanese style.

Sushi Maumi
Sushi Maumi
(Click to expand)

By Gregory Dudek at | Leave a comment |    

Still working as of 2016

Streaming radio has been a common use of the Internet for many years. At one point, almost all audio streaming had only limited commercial implications. As the use of advertising has become more important as a source of revenue for radio stations, audio streams on the Internet have become entwined with players, typically flash-based, that serve advertising, collect user data, and provide other services. One side effect of this is that it can may it very difficult to debug the set of network connections being used. If, like me, you run a tight firewall, you need to have a sense of where data is coming from, and going, to allow the ports to be opened and closed.

Thus, I needed to figure out how audio streams were being sent from an audio station I wanted to listen to. The audio stream I wanted was being provided from streamtheworld.com and the actual transactions are handled by a rather complex mess of javascript and flash objects. Hers's how to find the streams using wireshark, a fancy network analysis tool.

There are two steps which I elaborate below:
1) Find the call sign for the station. With luck, you can guess this. This will often (but not always) be related to the station's familiar name. For example, for the station Q107 in Toronto the nationally registered call sign is CILQ and the callsign for streamtheworld.com is CILQFM; sensible. On the other hand, the streamtheworld identifier for CBMT CBC Radio One Montreal is CBC_R1_N_MTL_H.

2) Find the playlist (.pls file) or stream ID.

Call sign identification

Firstly, note that wireshark is a very powerful open-source network analyzer (once known as ethereal). It can be downloaded free for most platforms and runs using the X-windows windowing system (that works on Linux [default], Mac [standard but optional] and [with some effort] Windows).

Turn on packet capture in Wireshark and then using your browser on the same computer load the page with the stream you want.

Enter (i.e. specify) a filter as follows (see the picture):
tcp contains "callsign"
that will be used to "listen in" on the data exchange.
This should return an HTTP GET statement of the probable form:
GET /xmlconfig.php?view=xml&callsign=CILQFM&streamid=86
and an associated full URI of the form:
It's the callsign argument you want (in this case, CILQFM, for example).

Getting the callsign using wireshark
Getting the callsign using Wireshark (click to expand)

Play list via wireshark

At this point, you can just go to
to get the playlist, which can be used to see what's really happening.
Note the use of the CILQFM call sign in the URL.

... ...
There's more. Read the whole story on "How to find an audio stream from streamtheworld.com"
By Gregory Dudek at | Read (8) or Leave a comment |    
21 August

Watching the eclipse was a real pleasure, as a social event. The level of engagement was a wonder. What a refreshing component of the news cycle.

Partial eclipse with sunspots, from my telescope

By Gregory Dudek at | Leave a comment |    
02 August

The risk that robots (including soft-bots and other AI-based technology) will take over many people's jobs has been getting a lot of play recently. A notably interesting read is Our Automated Future: How long will it be before you lose your job to a robot? in the New Yorker. The fact that jobs change, and in fact are rendered obsolete, by advances in technology is not new: it's been happening for over a century. What's different is that this rate of job displacement is accelerating.

The even bigger issue is that the advent of intelligent robotics seems to foreshadow a much broader-based displacement of jobs and the need to work at all! In a recent survey, most robotics/AI/ML experts think that machines will be better than humans at just about EVERYTHING by 2060. Of course, the idea that people may need to work little, or not at all, was forecast by Keynes almost a century ago. So far, we also find more to want, more to need and more to strive for beyond the bare essentials. The desire to do more, buy more and compete with your neighbour, constantly redefining what is "essential", just keeps people slaving away ... so far. Does this trend ever end?

In the next couple of decades it's pretty certain that the need to work will diminish or vanish for the majority of people to the extent that it is required to subsist. This, of course, assumes that some social mechanism for distributing resources (food, money, goodies) will be put in place. How society chooses to deal with the distribution of wealth is not a matter of robotics or AI, but human compassion, greed, and social norms.

Robots will be driving us around, buying our groceries and preparing our food. Robot will be cleaning the house and doing the dishes. Will they also keep us busy inventing chores for us?

What is especially new is how this "liberation" will impact our day-to-day lives. Will be all sit around watching reading books all day, will we invent new leisure-based jobs and become tennis instructions, competitors or pro esports players and watchers, or will we descend into some new virtual existence? Some of the biggest risks associated with robotics and AI is no that robotics will kill people, but that we will have so much freedom that we will have to reinvent and redefine what we really wan to do with our time and our lives.

By Gregory Dudek at | Leave a comment |    
26 July

Fifth anniversary of the NSERC Canadian Field Robotics Network

There is little doubt that we are on the brink of an enormous transformation to a society where robotics technologies are omnipresent. This process is one that is unstoppable, unprecedented and which promises immense opportunities.

Robotics technologies have already become quite familiar, including the iconic "classical robots" like the automated vacuum cleaners or flying drone vehicles, but also indisputably robotic devices like automated teller machines and washing machines, all of which sense their immediate environment, make computations, and transform their computations into tangible physical form.

"So, what is a robot anyhow", you might ask? Robotics in its broadest form can be defined as the discipline concerned with both the development and modeling of systems that (1) make measurements of the real world, (2) perform computations, and then (3) act upon the real world in some substantial way. By this definition, more and more of the objects in our everyday world are becoming robots, and this is happening rapidly. This includes, of course, cell phones, cars, security systems, and many of the appliances in our homes. The microwave oven in my own home, for example, measures the weight and humidity of food we put into it, computes the appropriate cooking time and power levels needed, and then acts upon the food to cook it. As almost every object within our lives becomes computationally enabled, myriad new challenges, opportunities and advantages in everyday life are starting to emerge.

The constructs of computer science (such as computer operating systems) are already the most complex things mankind has ever built. Devices that cross the boundary between software and hardware -- that is robotic devices -- push this limit such further. Thus, as the science of robotics, including the associated disciplines of artificial intelligence and machine learning advance, we are finding new challenges not only in terms or what want to achieve, but also in terms of how to understand and manage the systems we build, and how to best exploit them.

The NSERC Canadian Field Robotic Network, with its base at McGill, recently celebrated its fifth anniversary. In the last five years is has funded and graduated some 75 students with advanced degrees (PhD and MSc), funded some 285 person-years of advanced research, and led to the publications of hundreds of scientific papers. This, in turn, has led to new ideas transferred to our partner companies, new employees, and several seed or startup companies at various stages. Most importantly, it has allowed the Canadian robotics research community to grow, link together and build collaborations and synergies within the country.

The competitive pressure is immense today with vast amounts of robotics funding being deployed in the US, Japan Korea, Singapore, the European Union, the United Kingdom and other places. By funding our own national research programs we have allowed some truly amazing internationally recognized talent to develop and flourish. Even better, by exposing our students to the diversity and richness of Canadian talent, we have been able to retain more of them in the country. Going forward, we need to maintain our focus, plan how we deploy our resources and build a cohesive national plan.

By Gregory Dudek at | Leave a comment |    
20 July

I recently had to build a Linux image for an Intel Galileo for a project I was working on. This is based on Yocto and the board support package (BSP) from Intel which includes code for the Galileo board and the quark microprocessor. I had a few problems especially since I wanted to include my own modifications to the Linux kernel.

I was using an Ubuntu 16,04 distribution that included gcc v5. Version 5 of gcc was too new for several modules in the BSP 1.24.0 image that is currently available. I had do install gcc version 4.8.5. There were also problems with locale support which required a patch. Here are the key fixes.

Patch the locale/gen_wctype.c routine using patch code from Oregon State University
The code is also at the bottom this post in case that page goes away.

Install an old gcc (apt-get install gcc-4.8) and then use

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

to install it. Later, select the one you wait using
update-alternatives --config gcc

3) Add support for new modules by adding a layer, and editing conf/bblayers.conf to include the new payer in the build.

4) Configure the kernel:
You might think you could do
bitbake linux-yocto-quark -c menuconfig
but that does not work with the Intel IOT dev kit. Instead, you need to cd to the kernel directory, and do a make menuconfig. This can be done on the hist since all we are doing is creating a config file, not actually generating any code for the Galileo target. Then you need to make sure the config gets use by bitmake, which I managed to do use one or another brutal hack. I recommend:

make oldconfig
cp .config defaultconfig

Then go do your bitbake.

The bitbake cheat sheet and bitbake command list might also be useful.


... ...
There's more. Read the whole story on "Galileo Linux image compilation"
By Gregory Dudek at | Leave a comment |    
18 June

I have been looking at the competitive Esports world recently, that is the world of video game spectatorship where people watch top players display their prowess at various computer-based games. This follows the model of professional non-video sports like tennis, soccer and football, but based on modern games that arguably have a broader appeal in today's world. This has been an ongoing commercial activity for years, but it is only gradually coming to the attention of the general public (i.e. people over the age of 30). Many people are surprised to find that top video game tournaments draw thousands of spectators, both in person as we as on-line and have prize pools that can reach up to into the tens of millions of dollars (for example the Dota 2 International 2016 had a prize pool of over $20,000,000 USD). My first exposure to this world was when I heard one of my graduate students and his girlfriend were traveling to Toronto to watch a World of Warcraft live stadium event with tens of thousands of spectators. Today's hottest games include Dota 2, Counterstrike and Overwatch.

Some big investors and companies are seeking to get into the Esports craze either to promote their games, build their audience, or use it as an advertising medium for other products. The scene includes huge corporate players in the gaming scene like Blizzard Entertainment, traditional media organizations like ESPN or Turner Broadcasting that are dabbling with this new market and numerous smaller companies looking to establish themselves. Some pro Esports teams have also partnered with traditional sports teams like the Detroit Renegades.

Image by Sam Churchill

... ...
There's more. Read the whole story on "Competitive Esports"
By Gregory Dudek at | Leave a comment |    

Earlier entries...