Skip to content

Control Node

Robot controller node

Obtaining End-Effector Control Information

Topic

/wbc/motion_control_status

Message Type

genie_msgs::msg::MotionControlStatus.msg

std_msgs/Header header  # frame id defaults to base_link, timestamp is the send time

# Feedback of end-effector pose status
string[] frame_names   # Defined by the motion control parameter configuration
geometry_msgs/Pose[] frame_poses

# Feedback of self-collision status
# [collision_pair_1, collision_pair_2] form the frame names of a collision pair
string[] collision_pairs_1
string[] collision_pairs_2

# Motion control mode
uint8 MODE_STOP=0
uint8 MODE_SERVO=1
uint8 MODE_PLANNING=2
uint8 mode

# Motion control error code for real-time control
# 0: no error 
uint8 error_code
string error_msg

geometry_msgs/Twist[] frame_twists
geometry_msgs/Wrench[] frame_wrenchs

Obtaining Joint Angles

Topic

/hal/joint_state

Message Type

genie_msgs::msg::JointState

# The state of each joint (revolute or prismatic) is defined by:
#  * the control mode (csp 0, cst 1)
#  * the position of the joint (rad or m),
#  * the velocity of the joint (rad/s or m/s),
#  * the effort that is applied in the joint (Nm or N),
#  * the position of the motor (rad or m),
#  * the velocity of the motor (rad/s or m/s),
#  * the current of the motor (A),
#  * the error_code of the joint.      
#
# TODO: Error code description or joint error code page

std_msgs/Header header

string[] name
uint32[] mode
float64[] position
float64[] velocity
float64[] effort
float64[] motor_position
float64[] motor_velocity
float64[] motor_current
uint32[] error_code

Controlling the Robot via Joint Angles

Topic

/MotionControlService/JointPosition/request

Message Type

genie_msg::msg::CommonResponse.msg

# frame id is unused, timestamp is the send time
std_msgs/Header header
float64 lifetime

string[] joint_names
float64[] joint_positions
float64[] joint_velocities

string uuid
string details

Joint Angle Control Command Feedback

Topic

/MotionControlService/JointPosition/response

Message Type

genie_msg::msg::CommonResponse.msg

# frame id is unused, timestamp is the send time
std_msgs/Header header

uint8 data

string uuid
string detail

Launching the ROS2 Forwarding Node

Hybrid Deployment

source ~/.cache/agibot/app/gdk/scripts/ros_env.sh gdk_controller
ros2 launch gdk_controller controller.launch.py