interactive_movement.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import asyncio
  2. from robot_control.src.robot.movement import RobotMovement
  3. from robot_control.src.api.grbl_handler import GRBLHandler
  4. from robot_control.src.utils.config import GRBLConfig, MovementConfig
  5. """
  6. Interactive movement script for the robot.
  7. - Homes only once at startup.
  8. - Lets you enter X, Y, Z positions in a loop.
  9. - No restart or re-homing between moves.
  10. - Type 'exit' to quit.
  11. """
  12. grbl_config = GRBLConfig(port="/dev/ttyUSB0", baudrate=115200)
  13. test_config = MovementConfig(
  14. speed=1000,
  15. safe_height=10
  16. )
  17. grbl_handler = GRBLHandler(
  18. grbl_config.port,
  19. grbl_config.baudrate
  20. )
  21. movement = RobotMovement(test_config, grbl_handler)
  22. async def main():
  23. await grbl_handler.connect()
  24. print("Robot ready. Enter X Y Z coordinates (or 'exit' to quit):")
  25. while True:
  26. user_input = input("Target position (X Y Z): ").strip()
  27. if user_input.lower() in ("exit", "quit"): # Allow exit
  28. print("Exiting...")
  29. break
  30. try:
  31. x, y, z = map(float, user_input.split())
  32. except Exception:
  33. print("Invalid input. Please enter three numbers separated by spaces, or 'exit'.")
  34. continue
  35. print(f"Moving to ({x}, {y}, {z})...")
  36. await movement.move_to_position(x, y, z)
  37. print("Move complete. Enter next position or 'exit'.")
  38. if __name__ == "__main__":
  39. try:
  40. asyncio.run(main())
  41. except KeyboardInterrupt:
  42. print("\nExiting...")