Skip to content

Commit 1f777c3

Browse files
committed
update controller binding
1 parent 5ec8e34 commit 1f777c3

4 files changed

Lines changed: 19 additions & 37 deletions

File tree

python_binding/example_ankle_swing.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,9 @@ def print_robot_status(self, state: unitree_interface.LowState, controller: unit
166166
print(f" Motor {i}: {pos_deg:6.1f}° ({vel_deg:6.1f}°/s)")
167167

168168
# Controller information
169-
print(f"Controller: L_stick=[{controller.left_stick[0]:.2f}, {controller.left_stick[1]:.2f}] "
170-
f"Buttons: A={controller.A} B={controller.B} X={controller.X} Y={controller.Y}")
169+
print(f"Controller: L_stick=[{controller.lx:.2f}, {controller.ly:.2f}] "
170+
f"Buttons: A={controller.keys == 0x0100} B={controller.keys == 0x0200} "
171+
f"X={controller.keys == 0x0400} Y={controller.keys == 0x0800}")
171172

172173
print(f"Mode machine: {state.mode_machine}")
173174

@@ -188,7 +189,7 @@ def control_loop(self):
188189
controller = self.read_controller_input()
189190

190191
# Check for emergency stop via controller
191-
if controller.B: # B button for emergency stop
192+
if controller.keys == 0x0200: # B button for emergency stop
192193
print("Emergency stop requested via B button!")
193194
break
194195

python_binding/unitree_interface.cpp

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -238,21 +238,12 @@ void UnitreeInterface::WirelessControllerHandler(const void *message) {
238238
unitree_go::msg::dds_::WirelessController_ wireless_msg = *(const unitree_go::msg::dds_::WirelessController_ *)message;
239239

240240
PyWirelessController controller_tmp;
241-
controller_tmp.left_stick[0] = wireless_msg.lx();
242-
controller_tmp.left_stick[1] = wireless_msg.ly();
243-
controller_tmp.right_stick[0] = wireless_msg.rx();
244-
controller_tmp.right_stick[1] = wireless_msg.ry();
245241

246-
// Map button states
247-
const uint16_t keys = wireless_msg.keys();
248-
controller_tmp.A = (keys & 0x0100) != 0;
249-
controller_tmp.B = (keys & 0x0200) != 0;
250-
controller_tmp.X = (keys & 0x0400) != 0;
251-
controller_tmp.Y = (keys & 0x0800) != 0;
252-
controller_tmp.R1 = (keys & 0x0001) != 0;
253-
controller_tmp.L1 = (keys & 0x0002) != 0;
254-
controller_tmp.R2 = (keys & 0x0010) != 0;
255-
controller_tmp.L2 = (keys & 0x0020) != 0;
242+
controller_tmp.lx = wireless_msg.lx();
243+
controller_tmp.ly = wireless_msg.ly();
244+
controller_tmp.rx = wireless_msg.rx();
245+
controller_tmp.ry = wireless_msg.ry();
246+
controller_tmp.keys = wireless_msg.keys();
256247

257248
wireless_controller_buffer_.SetData(controller_tmp);
258249
}

python_binding/unitree_interface.hpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,11 @@ struct PyMotorCommand {
117117
};
118118

119119
struct PyWirelessController {
120-
std::array<float, 2> left_stick = {}; // [x, y]
121-
std::array<float, 2> right_stick = {}; // [x, y]
122-
bool A = false;
123-
bool B = false;
124-
bool X = false;
125-
bool Y = false;
126-
bool L1 = false;
127-
bool L2 = false;
128-
bool R1 = false;
129-
bool R2 = false;
120+
float lx;
121+
float ly;
122+
float rx;
123+
float ry;
124+
uint16_t keys;
130125
};
131126

132127
struct PyLowState {

python_binding/unitree_interface_bindings.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,11 @@ PYBIND11_MODULE(unitree_interface, m) {
5252

5353
py::class_<PyWirelessController>(m, "WirelessController")
5454
.def(py::init<>())
55-
.def_readwrite("left_stick", &PyWirelessController::left_stick)
56-
.def_readwrite("right_stick", &PyWirelessController::right_stick)
57-
.def_readwrite("A", &PyWirelessController::A)
58-
.def_readwrite("B", &PyWirelessController::B)
59-
.def_readwrite("X", &PyWirelessController::X)
60-
.def_readwrite("Y", &PyWirelessController::Y)
61-
.def_readwrite("L1", &PyWirelessController::L1)
62-
.def_readwrite("L2", &PyWirelessController::L2)
63-
.def_readwrite("R1", &PyWirelessController::R1)
64-
.def_readwrite("R2", &PyWirelessController::R2);
55+
.def_readwrite("lx", &PyWirelessController::lx)
56+
.def_readwrite("ly", &PyWirelessController::ly)
57+
.def_readwrite("rx", &PyWirelessController::rx)
58+
.def_readwrite("ry", &PyWirelessController::ry)
59+
.def_readwrite("keys", &PyWirelessController::keys);
6560

6661
py::class_<PyLowState>(m, "LowState")
6762
.def(py::init<int>())

0 commit comments

Comments
 (0)