728x90 반응형 robot14 [UnrealRobotics: SO-101] (19) 언리얼 Record/Replay 조작, 상태 UI 추가 이전 글에 이어서 UI 작업을 한다. 3단계: Record/Replay 조작 UI Step1 : RobotControlWidget.h 추가 (protected 섹션) UFUNCTION() void HandleSyncOnClicked(); UFUNCTION() void HandleSyncOffClicked(); UFUNCTION() void HandleStartRecordClicked(); UFUNCTION() void HandleStopRecordClicked(); UFUNCTION() void HandleStartReplayClicked(); UFUNCTION() void HandleStopReplayClicked(); /** Recompute the control panel (worker stat.. 2026. 7. 13. [UnrealRobotics: SO-101] (18) 언리얼 안전/상태 표시 UI 추가 이번 단계에서는 본격적 언리얼 씬을 위한 UI를 계획하고 작업하는 과정을 기록한다. 1단계: 기반 설정하기 - API 표면 + 위젯 인프라앞선 단계에서 구현했던 E-stop/Sync/Record/Replay 기능을 위젯 버튼에서 호출할 수 있게 BlueprintCallable로 노출하고, 상태(worker 상태, 연결/heartbeat, follower/leader 에러, 관절 각도)를 읽는 BlueprintPure 게터, 그리고 상태가 바뀔 때 위젯에 알리는 BlueprintAssignable 델리게이트를 추가할 것이다.액터의 API를 호출하고 델리게이트에 바인딩하는 베이스 위젯 클래스(UUserWidget)를 새로 작성한다.PIE 시작 시 위젯을 뷰포트에 띄우는 코드를 작성한다. 이게 깔리면 다음 .. 2026. 6. 11. [UnrealRobotics: SO-101] (17) ROS 터미널 자동 스크립트, WPF GUI 버튼 사용하기 터미널 일괄 실행 스크립트 현재 시스템 기동에 터미널 3~8개를 수동으로 열어 각각 명령어를 입력해야 한다. 이걸 PowerShell 스크립트 하나로 자동화합니다. (USB detach/reattach 자동화도 포함)일반 모드(worker + bridge + rosbridge = 3개)MoveIt 모드(+ robot_state_publisher + MoveIt launch + moveit_goal_node + action_server + RViz = 최대 8개) 일반 모드 (Record/Replay) - WSL2 터미널 3개:Worker (conda) - lerobot_worker.py --cmd-joints all --cmd-limit 120Bridge Node (ROS2) - ros2 run ler.. 2026. 6. 10. [UnrealRobotics: SO-101] (16) WebSocket부터 USB까지 4단계 장애 진단과 자동 복구 구현 1단계: 오류/안전 처리 연결 끊김 시 Unreal UI 경고 (RosBridgeSubsystem에 OnDisconnected 델리게이트가 있지만 RobotVisualizer가 바인딩하지 않음. OnRosBridgeDisconnected() 콜백을 추가하고 뷰포트에 빨간 경고 표시 + 재연결 시 복구 메시지)예를 들어 rosbridge가 죽었는데 worker가 replay를 계속 돌리고 있으면 Unreal에서 멈출 방법이 없으니까, worker 쪽에서 "bridge node로부터 일정 시간 heartbeat가 안 오면 자동으로 동작을 멈추는" 안전장치를 넣는 것.플래닝 실패 시 사용자 피드백 (moveit_goal_node.py가 MoveIt 에러를 로그에만 출력하고 /robot_status로 전파하지 .. 2026. 5. 27. [UnrealRobotics: SO-101] (15) Unreal Engine에서 LeRobot Record/Replay 구현 지금까지 구현된 Unreal to Robot 데이터 흐름Unreal (C++, PIE) ↓ rosbridge publish (WebSocket, JSON) ↓ /moveit_goal_named 또는 /moveit_goal_joints rosbridge_server (WSL2) ↓ ROS2 토픽 재발행 moveit_goal_node.py (rclpy) ↓ MoveGroup action goal 조립 ↓ /move_action (action) move_group (MoveIt 2) ↓ Plan (OMPL) + Execute ↓ /arm_controller/follow_joint_trajectory (action) joint_traject.. 2026. 5. 20. [UnrealRobotics: SO-101] (14) Unreal Engine → MoveIt → 실물 로봇: 양방향 디지털 트윈 End-to-End 이제 프로젝트가 거의 막바지로 접어들었다. Unreal에서 명령이 publish 되면 실제 로봇이 움직이는 과정을 완성할 예정이다.전체 과정을 정리하면,Unreal (C++)→ rosbridge publish "/moveit_goal_pose" (PoseStamped)→ 중간 Python 노드 (MoveGroupInterface) → Plan→ Execute → FollowJointTrajectory action server (이미 전에 만듦) → ZMQ→ worker→ 실물 로봇 동작 1단계: 중간 ROS2 Python 노드 작성 Unreal이 rosbridge로 간단한 토픽(예: /moveit_goal_pose)에 목표를 publish → 중간 Python 노드가 MoveIt Python API(.. 2026. 5. 13. 이전 1 2 3 다음 728x90 반응형