|
import gradio as gr |
|
import time |
|
import random |
|
|
|
def handle_request(selected_command, angle1=0.0, angle2=0.0, angle3=0.0, angle4=0.0, angle5=0.0, angle6=0.0, |
|
coord1=0.0, coord2=0.0, coord3=0.0, coord4=0.0, coord5=0.0, coord6=0.0, |
|
gripper_value=0.0, speed_angles=0.0, speed_coords=0.0, speed_gripper=0.0): |
|
time.sleep(random.randint(1, 5)) |
|
return f"Command: {selected_command}, Params: {locals()}" |
|
|
|
options = [ |
|
"query/angles", "query/coords", "query/camera", "query/gripper", |
|
"control/angles", "control/coords", "control/gripper" |
|
] |
|
|
|
with gr.Blocks() as app: |
|
gr.Markdown("# MyCobot 280pi MQTT Control demo") |
|
gr.Markdown("This is a public demo of the MyCobot 280pi...") |
|
|
|
selected_command = gr.Dropdown(choices=options, label="Select command") |
|
|
|
with gr.Group(visible=False) as query_angles_group: |
|
pass |
|
|
|
with gr.Group(visible=False) as query_coords_group: |
|
pass |
|
|
|
with gr.Group(visible=False) as query_camera_group: |
|
pass |
|
|
|
with gr.Group(visible=False) as query_gripper_group: |
|
pass |
|
|
|
with gr.Group(visible=False) as control_angles_group: |
|
angle1 = gr.Number(value=0.0, label="Angle 1", step=5.0) |
|
angle2 = gr.Number(value=0.0, label="Angle 2", step=5.0) |
|
angle3 = gr.Number(value=0.0, label="Angle 3", step=5.0) |
|
angle4 = gr.Number(value=0.0, label="Angle 4", step=5.0) |
|
angle5 = gr.Number(value=0.0, label="Angle 5", step=5.0) |
|
angle6 = gr.Number(value=0.0, label="Angle 6", step=5.0) |
|
speed_angles = gr.Slider(value=50.0, minimum=0.0, maximum=100.0, step=1.0, label="Speed") |
|
|
|
with gr.Group(visible=False) as control_coords_group: |
|
coord1 = gr.Number(value=0.0, label="X coordinate", step=5.0) |
|
coord2 = gr.Number(value=0.0, label="Y coordinate", step=5.0) |
|
coord3 = gr.Number(value=0.0, label="Z coordinate", step=5.0) |
|
coord4 = gr.Number(value=0.0, label="Rotation X", step=5.0) |
|
coord5 = gr.Number(value=0.0, label="Rotation Y", step=5.0) |
|
coord6 = gr.Number(value=0.0, label="Rotation Z", step=5.0) |
|
speed_coords = gr.Slider(value=50.0, minimum=0.0, maximum=100.0, step=1.0, label="Speed") |
|
|
|
with gr.Group(visible=False) as control_gripper_group: |
|
gripper_value = gr.Slider(minimum=0.0, maximum=100.0, step=1.0, label="Gripper value") |
|
speed_gripper = gr.Slider(value=50.0, minimum=0.0, maximum=100.0, step=1.0, label="Speed") |
|
|
|
def toggle_visibility(command): |
|
return ( |
|
gr.update(visible=command == "query/angles"), |
|
gr.update(visible=command == "query/coords"), |
|
gr.update(visible=command == "query/camera"), |
|
gr.update(visible=command == "query/gripper"), |
|
gr.update(visible=command == "control/angles"), |
|
gr.update(visible=command == "control/coords"), |
|
gr.update(visible=command == "control/gripper") |
|
) |
|
|
|
selected_command.change( |
|
toggle_visibility, |
|
selected_command, |
|
[ |
|
query_angles_group, query_coords_group, query_camera_group, query_gripper_group, |
|
control_angles_group, control_coords_group, control_gripper_group |
|
] |
|
) |
|
|
|
submit_button = gr.Button("Send Command") |
|
output_text = gr.Textbox() |
|
submit_button.click( |
|
handle_request, |
|
inputs=[selected_command, angle1, angle2, angle3, angle4, angle5, angle6, |
|
coord1, coord2, coord3, coord4, coord5, coord6, gripper_value, speed_angles, |
|
speed_coords, speed_gripper], |
|
outputs=output_text |
|
) |
|
|
|
app.launch(server_port=9000) |
|
|