How to change the topic_name string to PROGMEM?
My take on this is that you cannot save more memory on topic-name nor msg parameters. Their memory usage is already optimized. 

The const keyword in the constructor declaration Publisher( const char * topic_name, Msg * msg, ... just tells the compiler that the parameter won't be changed throughout their life cycle. But their values will be defined at run-time during object creation when you issue something like this:

Publisher pb = new Publisher("topic", "message", ...);


So, they cannot be put into flash memory if they are not there already. But if the strings you pass on to the constructor are already in flash, then you're already saving those bits of RAM.



Finally, I just wanted to warn you not to modify 3rd party lib code extensively without comprehensive testing, like you are trying to do. You'll start to get strange behavior in your code. The slightest and simplest of changes may have unforeseen consequences.