본문 바로가기
728x90
반응형

ROS220

[UnrealRobotics: SO-101] (21) PIE 편의성 개선, UI 패널 슬라이드 애니메이션, 로봇 클로즈업 카메라 편의성 개선 및 비주얼 업그레이드 작업을 진행한다. PIE시 마우스 커서 항상 위에 설정RobotVisualizer.cpp 수정include 확인 - 없다면 추가#include "GameFramework/PlayerController.h"#include "Kismet/GameplayStatics.h" BeginPlay() 안 bShowOnScreenDebug 블록 아래에 추가 // Enable a persistent mouse cursor and click/hover events so the robot // meshes can be picked in-viewport (Phase 10 Stage 4b). Without this the // PIE cursor vanishes and MakeClickabl.. 2026. 7. 16.
[UnrealRobotics: SO-101] (20) 관절 한계, 관절 이력 그래프 UI, 로봇 상태 토스트 알림 UI 관절 움직임을 표시하기 위한 UI 작업을 추가로 진행한다. Step1: 관절 한계 테이블, 현재 관절값 캐시, 한계 근접도(%) 계산 JOINT_LIMITS_DEG 한계값을 가져오려면 bridge가 /robot_status로 1회 전송하여 Unreal이 수신하는 방법으로 진행하면 된다.각도 경고 임계값은 아래와 같은 기준으로 표시한다.여유 ≤ 10° → Caution (노랑)여유 ≤ 3° → Danger (빨강) 관절 이력 버퍼는 그래프 X축 기준 10초 @ 30Hz = 300샘플 (관절당) 표시한다. 1. lerobot_worker.py 수정get_joint_limits 분기 추가484번 줄 list_recordings 분기 바로 아래에 삽입 elif cmd == "list_recordings": .. 2026. 7. 16.
[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.
728x90
반응형