atom 이랑 팔에 힘빼는거(!) 테스트
| from pymycobot.mycobot import MyCobot from pymycobot import PI_PORT, PI_BAUD mc = MyCobot(PI_PORT, PI_BAUD) mc.set_color(0,0,255) mc.get_digital_input(39) # atom 누르지 않고 1 mc.get_digital_input(39) # atom 누르고 0 mc.power_off() # atom off mc.get_digital_input(39) # atom 안 읽힘 mc.get_digital_input(39) mc.power_on() # atom on mc.get_digital_input(39) # atom 누르지 않고 1 mc.get_digital_input(39) # atom 누르고 0 mc.is_power_on() 1 mc.power_off() mc.is_power_on() 0 mc.power_on() mc.power_off() mc.is_all_servo_enable() mc.power_on() mc.is_all_servo_enable() |
power_on 은 atom(LED, 버튼 일체형) 통신 뿐만 아니라
servo 전원 on/off도 같이 엮인다.
| 1.1 power_on() Function: Atom open communication (default open) 1.2 power_off() Function: Atom turn off communication 1.3 is_power_on() Function: judge whether robot arms is powered on or not |
서보(관절별) 잠그고, 푸는 명령
| 2.11 release_servo(servo_id) Function: release a servo 5.4 focus_servo(servo_id) Function: power on designated servo |
gpt 보고 짜달라니 잘 짜준다
| #!/usr/bin/env python3 import curses import time from pymycobot.mycobot import MyCobot from pymycobot import PI_PORT, PI_BAUD # ------------------------------------------------- # myCobot # ------------------------------------------------- mc = MyCobot(PI_PORT, PI_BAUD) SPEED = 40 STEP = 2.0 # mm ROT_STEP = 2.0 # degree released = True mc.power_on() time.sleep(1) coords = mc.get_coords() if coords is None: print("Cannot read robot coordinates.") exit(1) # ------------------------------------------------- def draw_screen(stdscr, angles): stdscr.clear() stdscr.addstr(0, 0, "myCobot 280 Jog Controller") stdscr.addstr(2, 0, "A/D : X -/+") stdscr.addstr(3, 0, "W/S : Y +/-") stdscr.addstr(4, 0, "R/F : Z +/-") stdscr.addstr(5, 0, "Q/E : RX -/+") stdscr.addstr(6, 0, "ESC : Exit") stdscr.addstr(8, 0, f"Servo : {'LOCK' if released else 'RELEASE'}") stdscr.addstr( 10, 0, f"X={coords[0]:7.2f} " f"Y={coords[1]:7.2f} " f"Z={coords[2]:7.2f}" ) stdscr.addstr( 11, 0, f"RX={coords[3]:7.2f} " f"RY={coords[4]:7.2f} " f"RZ={coords[5]:7.2f}" ) if angles is not None: stdscr.addstr(13, 0, "Joint Angles") for i, a in enumerate(angles): stdscr.addstr(14+i, 0, f"J{i+1}: {a:7.2f}") stdscr.refresh() # ------------------------------------------------- def main(stdscr): global coords global released curses.cbreak() curses.noecho() stdscr.nodelay(True) stdscr.keypad(True) angles = mc.get_angles() draw_screen(stdscr, angles) while True: # ------------------------------------------ # Atom Button # ------------------------------------------ button = mc.get_digital_input(39) if button == 0 and released: released = False mc.release_all_servos() draw_screen(stdscr, angles) elif button == 1 and not released: released = True mc.power_on() time.sleep(0.5) # Servo를 손으로 움직였을 수 있으므로 # 이때만 실제 좌표를 다시 읽음 new_coords = mc.get_coords() if new_coords is not None: coords = new_coords angles = mc.get_angles() draw_screen(stdscr, angles) key = stdscr.getch() if key == 27: break moved = False if released: if key == ord('a'): coords[0] -= STEP moved = True elif key == ord('d'): coords[0] += STEP moved = True elif key == ord('w'): coords[1] += STEP moved = True elif key == ord('s'): coords[1] -= STEP moved = True elif key == ord('r'): coords[2] += STEP moved = True elif key == ord('f'): coords[2] -= STEP moved = True elif key == ord('q'): coords[3] -= ROT_STEP moved = True elif key == ord('e'): coords[3] += ROT_STEP moved = True if moved: mc.send_coords(coords, SPEED, 1) draw_screen(stdscr, angles) time.sleep(0.02) # ------------------------------------------------- if __name__ == "__main__": curses.wrapper(main) |
[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/7-ApplicationBasePython/7.2_API.html]
'embeded > robot' 카테고리의 다른 글
| mycobot280 pi / TCP(tool center point) (0) | 2026.06.30 |
|---|---|
| 왼손 오른손 좌표계 (0) | 2026.06.22 |
| mycobot280_pi urdf (0) | 2026.06.22 |
| 블루로봇 밸런스 스테이지 (0) | 2026.06.21 |
| elephant robotics cobot python api (0) | 2026.06.19 |
