Roboflex Hiwonder bus servo library
Project description
roboflex_hiwonder_bus_servo
Native Roboflex support for the Hiwonder controller-board bus-servo protocol used by ArmPi-FPV style robots.
This module intentionally targets the validated subset of the hardware:
- grouped timed position writes
- live reads for present position, voltage, temperature, and torque-enabled state
- one-off reads/writes for ID, offset, and safety limits
- an optional read/write loop with configurable dynamic polling cadence
Unlike Dynamixel, this hardware does not expose a rich register map or efficient combined sync-read/sync-write transactions. Writes are grouped; reads are largely request/response per-servo.
Build
Build the C++ library only:
cmake -S . -B build -DBUILD_ROBOFLEX_PYTHON_EXT=OFF
cmake --build build -j
Build the C++ library and Python wrapper:
cmake -S . -B build
cmake --build build -j
Build and install the Python package with the extension via setup.py:
python3 setup.py build
python3 setup.py install
Or with pip:
python3 -m pip install .
Notes:
- The top-level CMake build always builds the core C++ library.
- The Python wrapper is built by the
python/subdirectory. - This package prefers the sibling local
../roboflexcheckout when present.
Usage
Basic Python usage:
import roboflex.hiwonder_bus_servo as rhs
controller = rhs.HiwonderBusServoController("/dev/rrc", 1000000)
# Move two servos together over 100 ms.
controller.write_positions_ms(100, {
1: 300,
2: 700,
})
# Read back a few dynamic values.
position = controller.read_position(1)
voltage_mv = controller.read_voltage_mv(1)
temperature_c = controller.read_temperature_c(1)
print(position, voltage_mv, temperature_c)
Python helper-loop usage:
import roboflex.hiwonder_bus_servo as rhs
controller = rhs.HiwonderBusServoController("/dev/rrc", 1000000)
config = rhs.DynamicReadConfig()
config.servo_ids = [1, 2]
config.set_every_n_loops(rhs.DynamicReadField.Position, 1)
config.set_every_n_loops(rhs.DynamicReadField.VoltageMV, 20)
config.loop_sleep_ms = 20
def loop(state, command):
command.duration_ms = 100
command.should_write = True
command.positions = {1: 350, 2: 650}
print(state)
return True
controller.run_readwrite_loop(config, loop)
Basic C++ usage:
#include <iostream>
#include "roboflex_hiwonder_bus_servo/hiwonder_bus_servo_controller.h"
using namespace roboflex::hiwonderbusservo;
int main() {
auto controller = std::make_shared<HiwonderBusServoController>("/dev/rrc", 1000000);
controller->write_positions_ms(100, {
{1, 300},
{2, 700},
});
auto position = controller->read_position(1);
auto voltage_mv = controller->read_voltage_mv(1);
if (position.has_value()) {
std::cout << "position: " << *position << std::endl;
}
if (voltage_mv.has_value()) {
std::cout << "voltage_mv: " << *voltage_mv << std::endl;
}
return 0;
}
The main pattern is:
- Use
write_positions_ms(...)for fast grouped timed moves. - Use
read_position(...),read_voltage_mv(...),read_temperature_c(...), andread_torque_enabled(...)for live reads. - Use the helper loop only when you want continuous writing plus configurable polling in one place.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file roboflex_hiwonder_bus_servo-0.1.0.tar.gz.
File metadata
- Download URL: roboflex_hiwonder_bus_servo-0.1.0.tar.gz
- Upload date:
- Size: 18.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15c5c59f227b7d28ba5faa75656a6b3d3d9311bd4f58a1b3daa42de5c96fad0b
|
|
| MD5 |
b26e0cad0dfe0085057937581a10671f
|
|
| BLAKE2b-256 |
25ae413e61202812e04bc05880b02724a96cb8fa00ff0a69683ef2ab8008d462
|
File details
Details for the file roboflex_hiwonder_bus_servo-0.1.0-cp311-cp311-macosx_15_0_arm64.whl.
File metadata
- Download URL: roboflex_hiwonder_bus_servo-0.1.0-cp311-cp311-macosx_15_0_arm64.whl
- Upload date:
- Size: 344.3 kB
- Tags: CPython 3.11, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cabc8e19d7b21b0bf0c86dffed647e39bcaf0d34aac6acfae43ecf472411f5e9
|
|
| MD5 |
3670c188ab45db28bb22f6eeb0c33f2f
|
|
| BLAKE2b-256 |
45b5ac714c46295ef786a51dbed0ebf01189be3a9b57cdfe2669a386c5433c25
|