optimize gripper code
This commit is contained in:
@@ -117,14 +117,11 @@ class CtrlGuiNode(Node):
|
||||
ui.notify(f'BT action {action_name} accepted', color='positive')
|
||||
|
||||
get_result_future = goal_handle.get_result_async()
|
||||
get_result_future.add_done_callback(self.bt_action_done_callback)
|
||||
|
||||
while not get_result_future.done():
|
||||
await asyncio.sleep(0.1)
|
||||
|
||||
result = get_result_future.result()
|
||||
bt_result = result.result
|
||||
status = result.status
|
||||
self.file_logger.info(f'BT Action Result: {bt_result}, Status: {status}')
|
||||
ui.notify(f'BT Action {action_name} finished', color='info')
|
||||
|
||||
def bt_action_feedback_callback(self, feedback_msg):
|
||||
@@ -133,6 +130,14 @@ class CtrlGuiNode(Node):
|
||||
self.file_logger.info(f'BT Action Feedback: {feedback}')
|
||||
print(f'BT Action Feedback: {feedback}')
|
||||
|
||||
def bt_action_done_callback(self, future):
|
||||
"""Callback for BT action completion."""
|
||||
result = future.result()
|
||||
bt_result = result.result
|
||||
status = result.status
|
||||
self.file_logger.info(f'BT Action Finished - Result: {bt_result}, Status: {status}')
|
||||
print(f'BT Action Finished - Result: {bt_result}, Status: {status}')
|
||||
|
||||
async def call_gripper_action(self, id, loc, speed, torq, mode):
|
||||
import asyncio
|
||||
gm = GripperCmd.Goal()
|
||||
@@ -161,10 +166,10 @@ class CtrlGuiNode(Node):
|
||||
ui.notify(f'Gripper {id} action accepted', color='positive')
|
||||
|
||||
result_future = goal_handle.get_result_async()
|
||||
result_future.add_done_callback(self.gripper_action_done_callback)
|
||||
while not result_future.done():
|
||||
await asyncio.sleep(0.1)
|
||||
|
||||
result = result_future.result()
|
||||
ui.notify(f'Gripper {id} action finished', color='info')
|
||||
|
||||
def gripper_action_feedback_callback(self, feedback_msg):
|
||||
@@ -179,6 +184,12 @@ class CtrlGuiNode(Node):
|
||||
if hasattr(goal_feedback, 'torque'):
|
||||
print(f"Feedback Torque: {goal_feedback.torque}")
|
||||
|
||||
def gripper_action_done_callback(self, future):
|
||||
"""Callback for gripper action completion."""
|
||||
result = future.result()
|
||||
self.file_logger.info('Gripper action finished')
|
||||
print('Gripper action finished')
|
||||
|
||||
def _on_arm_error(self, msg: ArmError) -> None:
|
||||
"""Callback for /arm_errors subscription."""
|
||||
self.last_arm_error[msg.arm_id] = msg
|
||||
@@ -502,19 +513,38 @@ def build_ui(node: CtrlGuiNode) -> None:
|
||||
)).classes('self-end')
|
||||
|
||||
with ui.column():
|
||||
# with ui.row():
|
||||
gripper_width = ui.input('width(0~255)', value=0).style('width: 100px')
|
||||
with ui.row():
|
||||
gripper_width = ui.input('width(0~255)', value=100).style('width: 100px')
|
||||
gripper_torque = ui.input('torque(0~255)', value=50).style('width: 100px')
|
||||
|
||||
with ui.row():
|
||||
gripper_speed = ui.input('speed(0~255)', value=150).style('width: 100px')
|
||||
gripper_mode = ui.select(['位置模式', '力矩模式', "both"], value='位置模式').style('width: 100px')
|
||||
with ui.row():
|
||||
gripper_id = ui.select(['夹爪0', '夹爪1'], value='夹爪0').style('width: 100px')
|
||||
|
||||
async def gripper_control(id) -> None:
|
||||
try:
|
||||
print(f"Gripper {id} Send Action Start..")
|
||||
await node.call_gripper_action(id, int(gripper_width.value), 50, 50, 2)
|
||||
print(f"Gripper {id} Send Action Goal Finish")
|
||||
id_value = 0
|
||||
if id == '夹爪0':
|
||||
id_value = 0
|
||||
else:
|
||||
id_value = 1
|
||||
print(f"Gripper {id_value} Send Action Start..")
|
||||
mode = 0
|
||||
if gripper_mode.value == "both":
|
||||
mode = 2
|
||||
elif gripper_mode.value == "力矩模式":
|
||||
mode = 1
|
||||
|
||||
node.file_logger.info(f"Gripper {id_value}, speed {gripper_speed.value}, torque={gripper_torque.value}, width={gripper_width.value}, mode={mode} Send Action Start..")
|
||||
await node.call_gripper_action(id_value, int(gripper_width.value), int(gripper_torque.value), int(gripper_speed.value), mode)
|
||||
print(f"Gripper {id_value} Send Action Goal Finish")
|
||||
except Exception as e:
|
||||
node.file_logger.error(f'Failed to gripper action send goal: {str(e)}')
|
||||
|
||||
# ui.element().style('height: 40px')
|
||||
ui.button('控制夹爪0', on_click=lambda: show_confirm_dialog(f'确定控制夹爪0? gripper width: {gripper_width.value}', lambda: gripper_control(0))).classes('self-end')
|
||||
ui.button('控制夹爪1', on_click=lambda: show_confirm_dialog(f'确定控制夹爪1? gripper width: {gripper_width.value}', lambda: gripper_control(1))).classes('self-end')
|
||||
ui.button('控制夹爪', on_click=lambda: show_confirm_dialog(f'确定控制夹爪? gripper width: {gripper_width.value}, torque: {gripper_torque.value}, speed: {gripper_speed.value}, mode: {gripper_mode.value}, id: {gripper_id.value}', lambda: gripper_control((gripper_id.value)))).classes('self-end')
|
||||
|
||||
#move wheel
|
||||
with ui.column():
|
||||
|
||||
Reference in New Issue
Block a user