lift_node.md - dingdongdengdong/astra_ws GitHub Wiki

graph TD
    A[Start] --> B{Initialize ROS 2};
    B --> C[Create lift_node];
    C --> D[Get Logger];
    D --> E[Declare Parameter device];
    E --> F[Declare Parameter joint_names];
    F --> G[Get Parameter Values];
    G --> H{Assert 1 Joint Name};
    H --> I[Instantiate LiftController];
    I --> J[Create JointState Publisher];
    I --> K[Create Error Publisher];
    K --> L[Assign State Callback to LiftController];
    L --> M[Assign Error Callback to LiftController];
    M --> N[Create Joint Command Subscriber];
    N --> O[rclpy.spin node];

    O --> P[State Callback Triggered by LiftController];
    P --> Q[Construct JointState Msg];
    Q --> R[Publish JointState Msg];
    R --> O;

    O --> S[Error Callback Triggered by LiftController];
    S --> T[Construct String Msg with Error Data];
    T --> U[Publish Error Msg];
    U --> O;

    O --> V[Joint Command Callback Triggered by Subscription];
    V --> W{Msg Joint Name Valid?};
    W -- Yes --> X[Extract Position Command];
    X --> Y[Call lift_controller.set_pos];
    Y --> O;
    W -- No --> O;

    O --> Z[Node Shutdown];
    Z --> AA[ROS 2 Shutdown];
    AA --> AB[End];