2023-12-27 21:18:53 +08:00

52 lines
1.9 KiB
C++

#include <pybind11/pybind11.h>
#include "unitreeMotor/unitreeMotor.h"
#include "serialPort/SerialPort.h"
namespace py = pybind11;
PYBIND11_MODULE(unitree_actuator_sdk, m){
m.doc() = "unitree_actuator_sdk python wrapper";
py::enum_<MotorType>(m, "MotorType")
.value("A1", MotorType::A1, "A1 Motor")
.value("B1", MotorType::B1, "B1 Motor")
.value("GO_M8010_6", MotorType::GO_M8010_6, "GO_M8010_6 Motor");
py::enum_<MotorMode>(m, "MotorMode")
.value("BRAKE", MotorMode::BRAKE, "BRAKE mode")
.value("FOC", MotorMode::FOC, "FOC")
.value("CALIBRATE", MotorMode::CALIBRATE, "CALIBRATE mode");
py::class_<MotorCmd>(m, "MotorCmd")
.def(pybind11::init<>())
.def_readwrite("motorType", &MotorCmd::motorType)
.def_readwrite("hex_len", &MotorCmd::hex_len)
.def_readwrite("id", &MotorCmd::id)
.def_readwrite("mode", &MotorCmd::mode)
.def_readwrite("tau", &MotorCmd::tau)
.def_readwrite("dq", &MotorCmd::dq)
.def_readwrite("q", &MotorCmd::q)
.def_readwrite("kp", &MotorCmd::kp)
.def_readwrite("kd", &MotorCmd::kd);
py::class_<MotorData>(m, "MotorData")
.def(pybind11::init<>())
.def_readwrite("motorType", &MotorData::motorType)
.def_readwrite("hex_len", &MotorData::hex_len)
.def_readwrite("motor_id", &MotorData::motor_id)
.def_readwrite("mode", &MotorData::mode)
.def_readwrite("temp", &MotorData::temp)
.def_readwrite("merror", &MotorData::merror)
.def_readwrite("tau", &MotorData::tau)
.def_readwrite("dq", &MotorData::dq)
.def_readwrite("q", &MotorData::q)
.def_readwrite("correct", &MotorData::correct);
py::class_<SerialPort>(m, "SerialPort")
.def(py::init<const std::string &>())
.def("test", &SerialPort::test)
.def("sendRecv", py::overload_cast<MotorCmd*, MotorData*>(&SerialPort::sendRecv));
m.def("queryMotorMode", &queryMotorMode, "Query Motor Mode");
m.def("queryGearRatio", &queryGearRatio, "Query Motor Gear Ratio");
}