Not using the Arduino library but the ASCII protocol directly.
And yes, it responds with 0 or 1 for boolean variables.
Example: r axis0.motor.is_calibrated\n
or r axis0.encoder.is_ready\n
returns 1
Looking at the code I would check what odrive.readString() returns. Can’t see a reason why “1”.toFloat() should not return 1 and a cast from float to bool should be a float==0.0 but…
I rather suspect the read operation times out. Can you guarantee you get any data, e.g. readFloat() after sending the battery voltage command?