How can I design a light-weight, on-board battery & charging system for a self-charging robot?
My father used to repair the Swisslog Transcar system at a local hospital, and I've helped him a couple of times. They solved the problem exactly how you described. The robot parked itself over a charging station, the central control computer sent a signal to the charger to elevate the 2 metal contacts under the car, and the charger was turned on. When the charging was done, it turned off, and the robot went on to do its job. They used two car batteries (maybe truck, I don't remember), so 2x12V or 2x24V lead acid types (it's an older system). I think the charger circuit checked the current and battery voltage.

I don't know any finished module for this application (only for 1 cell Li-ion), but Li-ion batteries aren't very difficult to charge either. Use constant current source for your series of cells, and use a shunt per cell that doesn't allow your cell to go over a certain voltage. (My father built something like that from a handful of old parts, like LM317 and TL431 and resistors, not exactly rocket science, but you can build a more sophisticated one) For safety you could use a thermometer to detect any anomaly early and shut it down. Also to protect the battery and prevent your robot to get stuck somewhere, check the voltage regularly from software (dropping under a certain charge hurts it)!