Generalizing robot application development: operating system and framework abstractions