ALICE M1 ROS2 Interface
ALICE M1에서 사용 가능한 ROS2 interface입니다.
ROS2 전용 지원
본 인터페이스는 ROS2(humble, jazzy) 환경에서만 지원됩니다. ROS1/타 프레임워크에서는 동작을 보장하지 않습니다.
커스텀 메세지의 인터페이스가 필요하신 경우 Support의 지원 및 연락처 메뉴를 통해서 요청하시면 됩니다.
Topics
- Command Topic
- Motion Topic
- Framework Topic
- VR Topic
- Wheel Topic
- Hand Topic
- Sensor Topic
Command
상체 자세 제어, 양팔 trajectory 제어 명령과 결과 확인에 사용되는 토픽 입니다.
/aeirobot/alice_mobile/command
- 메시지 타입:
aeirobot_msgs/msg/Command - 로봇 상체의 motion, position, 양팔의 trajectory 제어 명령입니다.
/aeirobot/alice_mobile/trajectory_done
- 메시지 타입:
std_msgs/msg/Bool - trajectory 동작이 완료되면
true가 반환됩니다.
process_duration_ms
- wholebody 노드의 주기 정보를 제공합니다.
Motion
팔의 endpoint 기반 trajectory 제어 명령과 결과 확인에 사용되는 토픽 입니다.
/aeirobot/alice_mobile/arm_ik_target
- 메시지 타입:
std_msgs/msg/Float32MultiArray - 팔 trajectory 제어에 사용할 endpoint 목표값, 동작 시간을 설정합니다.
data[i] | 내용 |
|---|---|
data[0] | 목표 위치까지 움직일 시간 (sec) |
data[1] | left hand X (m) |
data[2] | left hand Y (m) |
data[3] | left hand Z (m) |
data[4] | left hand Roll (deg) |
data[5] | left hand Pitch (deg) |
data[6] | left hand Yaw (deg) |
data[7] | right hand X (m) |
data[8] | right hand Y (m) |
data[9] | right hand Z (m) |
data[10] | right hand Roll (deg) |
data[11] | right hand Pitch (deg) |
data[12] | right hand Yaw (deg) |
/aeirobot/alice_mobile/arm_ik_target_done
- 메시지 타입:
std_msgs/msg/Bool - endpoint 제어 완료 후, 로봇 엔드 이펙터의 목표 위치와 실제 위치 오차가 기준값 이하일 경우
true, 초과할 경우false가 반환됩니다.
/debug/aeirobot/alice_mobile/arm_ik_results
- 메시지 타입:
std_msgs/msg/Float32MultiArray - 팔 trajectory 제어에서 각 관절의 IK 계산 결과값을 제공합니다.
VR
VR 텔레오퍼레이션 환경에서 로봇과 VR 시스템 간 데이터를 송수신하고 저장하기 위한 토픽 입니다.
텔레오퍼레이션 입력
/aeirobot/teleop/human_pose
- 메시지 타입:
tf2_msgs/msg/TFMessage - HMD에서 인식한 작업자의 상체 pose 정보입니다.
/aeirobot/teleop/left_hand
- 메시지 타입:
std_msgs/msg/Float32MultiArray - HMD에서 인식한 왼손 손가락 정보입니다.
- 값 범위:
0 ~ 1000
data[i] | 내용 |
|---|---|
data[0] | l_thumb_p |
data[1] | l_thumb_y |
data[2] | l_index_p |
data[3] | l_middle_p |
data[4] | l_ring_p |
data[5] | l_pinky_p |
/aeirobot/teleop/right_hand
- 메시지 타입:
std_msgs/msg/Float32MultiArray - HMD에서 인식한 오른손 손가락 정보입니다.
- 값 범위:
0 ~ 1000
data[i] | 내용 |
|---|---|
data[0] | r_thumb_p |
data[1] | r_thumb_y |
data[2] | r_index_p |
data[3] | r_middle_p |
data[4] | r_ring_p |
data[5] | r_pinky_p |
/aeirobot/teleop/onoff
- 메시지 타입:
std_msgs/msg/Bool - VR 텔레오퍼레이션 기능을
ON / OFF합니다. true: Teleop Onfalse: Teleop Off
텔레오퍼레이션 상태 및 변환 결과
/aeirobot/teleop/status
- 메시지 타입:
std_msgs/msg/Int32 - VR 텔레오퍼레이션 동작 상태를 표시합니다.
| 값 | 상태 |
|---|---|
0 | human_pose 미수신 |
1 | Teleop Off |
2 | Teleop 준비중 |
3 | Teleop On |
/aeirobot/teleop/human_pose_topic_alive
- 메시지 타입:
std_msgs/msg/Bool /aeirobot/teleop/human_pose토픽 수신 상태를 표시합니다.
/aeirobot/teleop/ik_results
- 메시지 타입:
std_msgs/msg/Float32MultiArray - HMD pose를 기반으로 계산한 IK 결과값입니다.
- 단위:
deg
data[i] | 관절 |
|---|---|
data[0] | head_p |
data[1] | head_y |
data[2] | waist_y |
data[3] | waist_upper_pitch |
data[4] | waist_lower_pitch |
data[5] | l_sh_p |
data[6] | l_sh_r |
data[7] | l_sh_y |
data[8] | l_el_p |
data[9] | l_wr_y |
data[10] | l_wr_p |
data[11] | l_wr_r |
data[12] | r_sh_p |
data[13] | r_sh_r |
data[14] | r_sh_y |
data[15] | r_el_p |
data[16] | r_wr_y |
data[17] | r_wr_p |
data[18] | r_wr_r |
/aeirobot/teleop/unity_to_robot
- 메시지 타입:
std_msgs/msg/Float32MultiArray - HMD pose를 로봇 관절 구조와 joint limit에 맞게 변환한 목표 관절 각도입니다.
- 단위:
deg
data[i] | 관절 |
|---|---|
data[0] | head_p |
data[1] | head_y |
data[2] | waist_y |
data[3] | waist_upper_pitch |
data[4] | waist_lower_pitch |
data[5] | l_sh_p |
data[6] | l_sh_r |
data[7] | l_sh_y |
data[8] | l_el_p |
data[9] | l_wr_y |
data[10] | l_wr_p |
data[11] | l_wr_r |
data[12] | r_sh_p |
data[13] | r_sh_r |
data[14] | r_sh_y |
data[15] | r_el_p |
data[16] | r_wr_y |
data[17] | r_wr_p |
data[18] | r_wr_r |
/aeirobot/teleop/filtered_joint_angle
- 메시지 타입:
std_msgs/msg/Float32MultiArray - 필터링 및 up sampling을 거친 로봇 목표 관절 각도입니다.
- 단위:
deg
data[i] | 관절 |
|---|---|
data[0] | head_p |
data[1] | head_y |
data[2] | waist_y |
data[3] | waist_upper_pitch |
data[4] | waist_lower_pitch |
data[5] | l_sh_p |
data[6] | l_sh_r |
data[7] | l_sh_y |
data[8] | l_el_p |
data[9] | l_wr_y |
data[10] | l_wr_p |
data[11] | l_wr_r |
data[12] | r_sh_p |
data[13] | r_sh_r |
data[14] | r_sh_y |
data[15] | r_el_p |
data[16] | r_wr_y |
data[17] | r_wr_p |
data[18] | r_wr_r |
/aeirobot/teleop/endpoints
- 메시지 타입:
std_msgs/msg/Float32MultiArray - VR 텔레오퍼레이션 중 계산된 양팔 endpoint 정보입니다.
data[i] | 내용 |
|---|---|
data[0] | left hand X |
data[1] | left hand Y |
data[2] | left hand Z |
data[3] | left hand Roll |
data[4] | left hand Pitch |
data[5] | left hand Yaw |
data[6] | right hand X |
data[7] | right hand Y |
data[8] | right hand Z |
data[9] | right hand Roll |
data[10] | right hand Pitch |
data[11] | right hand Yaw |
/aeirobot/teleop/error_log
- 메시지 타입:
std_msgs/msg/String - VR 텔레오퍼레이션 중 발생한 에러 로그입니다.
텔레오퍼레이션 제어 옵션
/aeirobot/teleop/set_control_height_joints
- 메시지 타입:
std_msgs/msg/Bool - Teleop 제어 대상에 로봇 높이 조절 관절을 포함할지 설정합니다.
/aeirobot/teleop/set_control_wasit_joints
- 메시지 타입:
std_msgs/msg/Bool - Teleop 제어 대상에 허리 관절을 포함할지 설정합니다.
/aeirobot/teleop/set_control_head_joints
- 메시지 타입:
std_msgs/msg/Bool - Teleop 제어 대상에 머리 관절을 포함할지 설정합니다.
/aeirobot/teleop/set_control_leaftarm_joints
- 메시지 타입:
std_msgs/msg/Bool - Teleop 제어 대상에 왼팔 관절을 포함할지 설정합니다.
/aeirobot/teleop/set_control_rightarm_joints
- 메시지 타입:
std_msgs/msg/Bool - Teleop 제어 대상에 오른팔 관절을 포함할지 설정합니다.
/aeirobot/teleop/control_height_joints_status
- 메시지 타입:
std_msgs/msg/Bool - 높이 조절 관절 Teleop 제어 설정 상태입니다.
/aeirobot/teleop/control_waist_joints_status
- 메시지 타입:
std_msgs/msg/Bool - 허리 관절 Teleop 제어 설정 상태입니다.
/aeirobot/teleop/control_head_joints_status
- 메시지 타입:
std_msgs/msg/Bool - 머리 관절 Teleop 제어 설정 상태입니다.
/aeirobot/teleop/control_leftarm_joints_status
- 메시지 타입:
std_msgs/msg/Bool - 왼팔 관절 Teleop 제어 설정 상태입니다.
/aeirobot/teleop/control_rightarm_joints_status
- 메시지 타입:
std_msgs/msg/Bool - 오른팔 관절 Teleop 제어 설정 상태입니다.
/aeirobot/teleop/get_max_robot_height
- 메시지 타입:
std_msgs/msg/Float32 - VR 텔레오퍼레이션에서 사용하는 로봇 최대 높이 설정값입니다.
/aeirobot/teleop/get_min_robot_height
- 메시지 타입:
std_msgs/msg/Float32 - VR 텔레오퍼레이션에서 사용하는 로봇 최소 높이 설정값입니다.
데이터 수집
/aeirobot/alice/vr/data_path
- 메시지 타입:
std_msgs/msg/String - 학습에 필요한 데이터 저장 폴더 및 파일 이름을 지정합니다.
/aeirobot/alice/vr/data_record
- 메시지 타입:
std_msgs/msg/Bool - 학습에 필요한 데이터 기록을 시작/종료합니다.
Wheel
모바일 베이스 제어 및 odometry 정보 수신에 사용하는 토픽 입니다.
/aeirobot/alice_mobile/odom
- 메시지 타입:
nav_msgs/msg/Odometry - 로봇의 odometry 정보입니다.
/aeirobot/alice_mobile/cmd_vel
- 메시지 타입:
geometry_msgs/msg/TwistStamped - joystick 입력을 통해 모바일 베이스 이동 명령을 mux로 전달합니다.
/mux/cmd_vel
- 메시지 타입:
geometry_msgs/msg/TwistStamped - 입력된 신호 중 우선순위 처리된 최종 모바일 베이스 제어 명령입니다.
Hand
로봇 손 제어와 센서 데이터 확인에 사용하는 토픽 입니다.
/aeirobot_hand/set_angle
- 메시지 타입:
aeirobot_hand_msgs/msg/SetAngle - 손의 관절 목표값을 전달하여 제어할 때 사용합니다.
/touch_force_normal
- 메시지 타입:
std_msgs/msg/Float32MultiArray - 각 손가락이 받는 법선 방향의 힘 값을 제공합니다.
/touch_force_tangential
- 메시지 타입:
std_msgs/msg/Float32MultiArray - 각 손가락이 받는 접선 방향 힘 값을 제공합니다.
/touch_force_direction
- 메시지 타입:
std_msgs/msg/Float32MultiArray - 각 손가락에 작용하는 힘의 방향 값을 제공합니다.
/touch_force_proximity
- 메시지 타입:
std_msgs/msg/Float32MultiArray - 각 손가락이 물체에 접촉하기 전에 감지되는 근접 센서 값을 제공합니다.
/touch_force_status
- 메시지 타입:
std_msgs/msg/Int32MultiArray - 센서 정상 여부를 표시합니다.
0: 정상, 1: 데이터 이상, 2: 센서 통신 이상
Sensor
카메라 영상 스트림을 제공하는 토픽 입니다.
/aeirobot/alice/vr/left_image
- 메시지 타입:
sensor_msgs/msg/CompressedImage - Stereo Camera의 왼쪽 영상입니다.
- 데이터 수집 및 VR 화면 전송에 사용합니다.
/aeirobot/alice/vr/right_image
- 메시지 타입:
sensor_msgs/msg/CompressedImage - Stereo Camera의 오른쪽 영상입니다.
- 데이터 수집 및 VR 화면 전송에 사용합니다.