1. La idea es que su nodo consulte el nivel de batería periódicamente ejecutando algún programa u otro método (por ejemplo: https://www.linuxjournal.com/content/how-check-battery-status-using-linux-command-line). Luego de parsear la salida construirá un tópico del tipo adecuado (como el que mencionan) y lo publicará.
2. Pueden hacerlo como les parezca mejor.
3 y 4. Gazebo y rviz muestran cosas distintas. Gazebo muestra el mundo simulado. En cierto sentido es equivalente a mirar el robot real cuando trabajan con uno. Rviz muestra los tópicos, o sea que es lo que el robot anuncia y recibe en ros. No es más que un visualizador gráfico de lo que podrían ver con comandos "ros topic echo ...", etc. Por ejemplo, cuando ven al robot moverse en gazebo están viendo lo que el simulador calculó a partir de las masas, geometrías, torques, etc.; cuando ven al robot moverse en rviz están viendo lo que dice el tópico /odom.
2. Pueden hacerlo como les parezca mejor.
3 y 4. Gazebo y rviz muestran cosas distintas. Gazebo muestra el mundo simulado. En cierto sentido es equivalente a mirar el robot real cuando trabajan con uno. Rviz muestra los tópicos, o sea que es lo que el robot anuncia y recibe en ros. No es más que un visualizador gráfico de lo que podrían ver con comandos "ros topic echo ...", etc. Por ejemplo, cuando ven al robot moverse en gazebo están viendo lo que el simulador calculó a partir de las masas, geometrías, torques, etc.; cuando ven al robot moverse en rviz están viendo lo que dice el tópico /odom.