Opinions on my Command pattern design - is it extensible?
I think you've added an unnecessary layer of abstraction here.

To me, populateCommandList looks completely unnecessary.  You are converting a list of commands in one format (character string) into another format (an array of Command objects).  Then, presumably, executeCommands just executes all of those command objects in order.  This wastes time and memory by creating a bunch of unnecessary objects.

Why not just have executeCommands take the string directly, and execute the appropriate command for each character that it encounters?

In other words, I would have something like this in executeCommands:

   for(int i=0; i&lt;cmds.length(); i++){
       char cmd = cmds.charAt(i);
         switch(cmd){
            case 'F': 
                robot.move(FORWARD,1);
                break;
            case 'R': 
                robot.turn(RIGHT);
                break;
            case 'L': 
                robot.turn(LEFT);
                break;
        }
   }


Either way looks equally extensible to me.  Either way you will have a switch statement somewhere that defines what commands are possible, and that is what you have to change in order to add a new command.