SBS (Smart Battery System) SMBus over USB?

Hi all, this isn’t yet ROS-related, but I’m trying to integrate a SBS laptop battery into a ROS-based robot I’m building, and it’s been a difficult road. Wondering if anybody here has had any experience with this and could share their perspective.

I’ve had minor amounts of luck with a few approaches

I’m hoping to discover a fairly “out of the box” solution to reliably retrieve data from the SMBus. The built-in state of charge measurement, and other metrics, is really attractive from these smart batteries. However, I don’t have a lot of experience implementing these protocols on microcontrollers, so it’s fairly daunting to try and get it working reliably.

Once the communication is working, I’m looking forward to making a node to talk to the SMBus communication layer and publish BatteryState messages

For the curious I am currently using the following battery and charger from RRC - they’re a bit pricey but seem really nice

1 Like

Well, in case anybody stumbles across this, I’ve come up with a (Linux-only) solution.

https://github.com/emersonknapp/smart_battery_driver

It’s working now to publish sensor_msgs/BatteryState from a Linux i2c device.

I am personally using a CP2112 USB-to-SMBus evaluation board to connect the battery/charger to my main compute, but theoretically most i2c interfaces should do (plus or minus, smbus timing requirements are slightly different so maybe not all).

The plan is to Bloom it to ROS 2 Foxy when that is released. Cheers.

3 Likes