跳转到内容

HAL硬件抽象层模块

本页面包含了HAL(Hardware Abstraction Layer)硬件抽象层相关的话题和服务的相关文档协议,以提供系统的硬件控制和传感器数据。

本模块位于 orin 开发板上,http 后端监听的端口为 56422。

HAL模块包含以下子系统:

  • sensors: 传感器数据采集(相机、IMU、激光雷达等)
  • bms: 电池管理系统
  • fault: 故障检测与报告
  • hand: 手部控制
  • jaka: Jaka机械臂控制
  • joint: 关节控制
  • light: 灯光控制
  • neck: 颈部控制
  • pose: 位姿估计
  • power: 电源管理
  • state: 系统状态
  • temp: 温度监控

各个传感器数据的分辨率和帧率如下:

传感器类型位置数据流分辨率帧率
鱼眼相机 (Senyun ISX031C-H190XA)胸部左 (chest_left)彩色图像 (color)640x48030 FPS
鱼眼相机 (Senyun ISX031C-H190XA)胸部右 (chest_right)彩色图像 (color)640x48030 FPS
RGB-D 相机 (Realsense D415)头部前 (head_front)彩色图像 (color)1280x72015 FPS
RGB-D 相机 (Realsense D415)头部前 (head_front)深度图像 (depth)1280x72015 FPS
RGB-D 相机 (Orbbec)腰部前 (waist_front)彩色图像 (color)640x48010 FPS
RGB-D 相机 (Orbbec)腰部前 (waist_front)深度图像 (depth)640x40010 FPS
激光雷达 (Mid360)颈部 (neck)点云数据 (pcd_option)-10 FPS
IMU (YISENSE YI 320)腰部中心 (waist_center)IMU 数据 (imu_option)-1000FPS
话题名话题描述订阅 or 发布消息类型备注通信后端
/aima/hal/sensors/camera/chest_left/color胸部左鱼眼相机rgb图像发布sensor_msgs::msg::Imageros2
/aima/hal/sensors/camera/chest_right/color胸部右鱼眼相机rgb图像发布sensor_msgs::msg::Imageros2
/aima/hal/rgbd_camera/head_front/color头部相机rgb图像发布sensor_msgs::msg::Imageros2
/aima/hal/rgbd_camera/head_front/depth头部相机depth图像发布sensor_msgs::msg::Imageros2
/aima/hal/rgbd_camera/chassis_front/color腰部相机rgb图像发布sensor_msgs::msg::Imageros2
/aima/hal/rgbd_camera/chassis_front/depth腰部相机depth图像发布sensor_msgs::msg::Imageros2
/aima/hal/lidar/top/pointcloud脖颈部雷达点云发布sensor_msgs::msg::PointCloud2ros2
/body_drive/imu/dataimu发布sensor_msgs::msg::Imuros2
/body_drive/arm_joint_state关节状态信息发布joint_msg_interface::msg::JointStateiceoryx
/body_drive/arm_joint_command关节控制命令订阅joint_msg_interface::msg::JointCommandiceoryx
/body_drive/arm_pose_state机器人位姿信息发布joint_msg_interface::msg::PoseStatesros2
/body_drive/neck_joint_state颈部状态信息发布joint_msg_interface::msg::JointStateiceoryx
/body_drive/neck_joint_command颈部控制命令订阅joint_msg_interface::msg::JointCommandiceoryx
/body_drive/waist_joint_state俯仰电机状态发布发布joint_msg_interface::msg::JointStateiceoryx
/body_drive/waist_joint_command俯仰电机控制指令订阅joint_msg_interface::msg::JointCommandiceoryx
/body_drive/lift_joint_state升降电机状态发布发布joint_msg_interface::msg::JointStateiceoryx
/body_drive/lift_joint_command升降电机控制指令订阅joint_msg_interface::msg::JointCommandiceoryx
/body_drive/wheel_joint_state轮毂和转向电机状态发布发布joint_msg_interface::msg::JointStateros2
/body_drive/wheel_joint_command轮毂和转向电机控制指令订阅joint_msg_interface::msg::JointCommandros2
/body_drive/claw_joint_state夹爪状态发布发布aimdk::protocol::HandStateChanneliceoryx
/body_drive/claw_joint_command夹爪控制指令订阅aimdk::protocol::HandCommandChanneliceoryx
/hal_state/emergency急停信号发布发布 aimdk::protocol::EmergencyStateChannelsm,mqtt
/rc/data遥控状态发布发布 aimdk::protocol::RemoteControlChannelsm,ros2
aima/rgb_lightrgb灯状态发布发布 aimdk::protocol::RgbLightStateChannelmqtt
/aima/fill_light补光灯状态发布发布 aimdk::protocol::FillLightStateChannelmqtt
/aima/light_strip灯带状态发布发布 aimdk::protocol::LightStripStateChannelmqtt
/aima/bms/dataBMS数据发布发布 aimdk::protocol::BmsStateChannelmqtt
接口名接口描述请求消息类型答复消息类型备注通信后端
pb:/aimdk.protocol.CamerasIntrinsicService/GetCamerasIntrinsic获取相机的内参aimdk::protocol::GetCamerasIntrinsicRequestaimdk::protocol::GetCamerasIntrinsicResponse请注意,获取相机内参时,在 P1 机型上 鱼眼相机交互相机 由 camera 模块单独管理,http 端口号需要改为 59324;
机型可通过 cat /etc/bsp_version 文件来判断,该文件存在则为 P1 机型,否则为 T3 机型。
http
pb:/aimdk.protocol.HalRgbLightService/GetRgbLightState获取RGB灯状态aimdk::protocol::CommonRequestaimdk::protocol::RgbLightStateRsphttp
pb:/aimdk.protocol.HalRgbLightService/SetRgbLightCommand控制RGB灯aimdk::protocol::RgbLightCommandReqaimdk::protocol::CommonResponsehttp
pb:/aimdk.protocol.HalLightStripService/GetLightStripState获取灯带状态aimdk::protocol::CommonRequestaimdk::protocol::LightStripStateRsphttp
pb:/aimdk.protocol.HalRgbLightService/SetLightStripCommand控制灯带aimdk::protocol::LightStripCommandReqaimdk::protocol::CommonResponsehttp
pb:/aimdk.protocol.HalFillLightService/GetFillLightState获取补光灯状态aimdk::protocol::CommonRequestaimdk::protocol::FillLightStateRsphttp
pb:/aimdk.protocol.HalRgbLightService/SetFillLightCommand控制补光灯aimdk::protocol::FillLightCommandReqaimdk::protocol::CommonResponsehttp
pb:/aimdk.protocol.HalBmsService/GetBmsState获取BMS数据aimdk::protocol::CommonRequestaimdk::protocol::BmsStateRsphttp
pb:/aimdk.protocol.HalBmsService/SetBmsMosfeCommand电池包MOSFE控制aimdk::protocol::BmsMosfeCommandReqaimdk::protocol::CommonResponsehttp
pb:/aimdk.protocol.HalBmsService/GetPowerState获取当前Power状态信息aimdk::protocol::CommonRequestaimdk::protocol::PowerStateRsphttp
pb:/aimdk.protocol.HalHandService/GetHandState获取夹爪状态aimdk::protocol::CommonRequestaimdk::protocol::HandStateResponsehttp
pb:/aimdk.protocol.HalHandService/SetHandCommand夹爪控制aimdk::protocol::HandCommandRequestaimdk::protocol::CommonResponsehttp
pb:/aimdk.protocol.HalPowerService/ResetPower重置电源aimdk::protocol::PowerResetReqaimdk::protocol::CommonResponsehttp

畸变类型枚举。

NameNumberDescription
DistortionType_UNDEFINED0未定义
DistortionType_MODIFIED_BROWN_CONRADY1修改的布朗-康拉迪
DistortionType_INVERSE_BROWN_CONRADY2逆布朗-康拉迪
DistortionType_FTHETA3F-θ
DistortionType_BROWN_CONRADY4布朗-康拉迪
DistortionType_KANNALA_BRANDT45卡纳拉-布兰特4
DistortionType_COUNT6计数

流类型枚举。

NameNumberDescription
StreamType_UNDEFINED0未定义
StreamType_DEPTH1深度
StreamType_COLOR2彩色
StreamType_IR3红外

相机内参信息。

FieldTypeDescription
idstring相机ID
namestring相机名称
stream_typeaimdk::protocol::StreamType流类型
widthint32图像宽度,单位:像素
heightint32图像高度,单位:像素
ppxfloat主点X坐标,单位:像素
ppyfloat主点Y坐标,单位:像素
fxfloat焦距X,单位:像素
fyfloat焦距Y,单位:像素
modelaimdk::protocol::DistortionType畸变模型
coeffsfloat[]畸变系数,无单位

aimdk::protocol::GetCamerasIntrinsicRequest

Section titled “aimdk::protocol::GetCamerasIntrinsicRequest”

获取相机内参请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头

aimdk::protocol::GetCamerasIntrinsicResponse

Section titled “aimdk::protocol::GetCamerasIntrinsicResponse”

获取相机内参的响应结果。

FieldTypeDescription
infoaimdk::protocol::CameraIntrinsicInfo[]相机内参信息列表

电池状态信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
voltagedouble电池电压,单位:V
currentdouble电流,单位:A
capacitydouble电池容量,单位:Ah
chargedouble电量百分比,单位:%
design_capacitydouble设计容量,单位:Ah
temperaturedouble电池温度,单位:°C
cycle_countuint32充电循环次数
presentbool电池是否存在
power_supply_statusuint32电源状态
power_supply_healthuint32电源健康状态
power_supply_technologyuint32电源技术类型
cell_voltagedouble[]单体电池电压列表,单位:V
cell_temperaturedouble[]单体电池温度列表,单位:°C
locationstring电池位置
serial_numberstring序列号

充电状态信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
is_chargingbool是否正在充电
is_pluggedbool是否插入充电器
charge_powerdouble充电功率,单位:W
time_to_fulluint32充满电时间,单位:秒

BMS状态响应。

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
dataaimdk::protocol::hal::BatteryStatus电池状态数据

电池包MOSFE控制请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
commandint32MOSFE控制命令

电源状态响应。

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
dataaimdk::protocol::hal::PowerStatus电源状态数据

关节状态信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
joint_namesstring[]关节名称列表
positionsfloat[]关节位置,单位:rad
velocitiesfloat[]关节速度,单位:rad/s
effortsfloat[]关节力矩,单位:Nm

关节控制命令。

FieldTypeDescription
headeraimdk::protocol::Header消息头
joint_namesstring[]关节名称列表
target_positionsfloat[]目标位置,单位:rad
target_velocitiesfloat[]目标速度,单位:rad/s
target_effortsfloat[]目标力矩,单位:Nm
control_modeint32控制模式

机器人位姿信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
positionaimdk::protocol::Vec3位置信息,单位:m
orientationaimdk::protocol::Quaternion方向信息(四元数)
frame_idstring坐标系ID

系统状态信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
cpu_usagefloatCPU使用率,单位:%
memory_usagefloat内存使用率,单位:%
disk_usagefloat磁盘使用率,单位:%
uptimeint64系统运行时间,单位:s
system_modeint32系统模式
error_countint32错误计数

温度监控数据。

FieldTypeDescription
headeraimdk::protocol::Header消息头
sensor_namesstring[]温度传感器名称列表
temperaturesfloat[]温度值,单位:°C
max_temperaturefloat最高温度,单位:°C
min_temperaturefloat最低温度,单位:°C
warning_flagsbool[]温度警告标志

电源状态信息。

FieldTypeDescription
input_voltagefloat输入电压,单位:V
output_voltagefloat输出电压,单位:V
power_consumptionfloat功耗,单位:W
efficiencyfloat电源效率,单位:%
is_power_goodbool电源状态是否正常
fault_codeint32故障代码

灯光控制命令。

FieldTypeDescription
light_idsstring[]灯光ID列表
brightnessfloat[]亮度值,范围:0-1
colorsint32[]颜色值(RGB)
modesint32[]灯光模式
enabledbool[]是否启用

RGB灯光状态请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
stateaimdk::protocol::hal::LightControlRGB灯光状态

补光灯状态请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
stateaimdk::protocol::hal::LightControl补光灯状态

灯带状态请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
stateaimdk::protocol::hal::LightControl灯带状态

手部状态信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
leftfloat左手状态
rightfloat右手状态

手部控制命令。

FieldTypeDescription
headeraimdk::protocol::Header消息头
leftfloat左手控制命令
rightfloat右手控制命令

手部状态响应。

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
dataaimdk::protocol::hal::HandState手部状态数据

手部控制命令请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
commandaimdk::protocol::hal::HandCommand手部控制命令

颈部状态信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
joint_namesstring[]颈部关节名称列表
positionsfloat[]关节位置,单位:rad
velocitiesfloat[]关节速度,单位:rad/s
neck_modeint32颈部模式

颈部控制命令。

FieldTypeDescription
headeraimdk::protocol::Header消息头
joint_namesstring[]颈部关节名称列表
target_positionsfloat[]目标位置,单位:rad
target_velocitiesfloat[]目标速度,单位:rad/s
neck_modeint32颈部模式

颈部状态响应。

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
dataaimdk::protocol::hal::NeckState颈部状态数据

颈部控制命令请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
commandaimdk::protocol::hal::NeckCommand颈部控制命令

故障信息。

FieldTypeDescription
fault_codeuint32故障代码
fault_leveluint32故障级别
fault_msgstring故障消息
fault_sourcestring故障来源
timestampaimdk::protocol::Timestamp时间戳

故障状态信息。

FieldTypeDescription
headeraimdk::protocol::Header消息头
faultsaimdk::protocol::hal::FaultInfo[]故障信息列表

拍摄快照请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
camera_idstring相机ID

拍摄快照响应。

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
image_databytes图像数据

电源信息响应。

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
dataaimdk::protocol::hal::PowerStatus电源信息数据

紧急停止请求。

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
stopbool是否紧急停止

紧急状态响应。

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
is_emergency_stoppedbool是否处于紧急停止状态
FieldTypeDescription
headerstd_msgs响应头
jointsState[]关节状态信息
FieldTypeDescription
namestring响应头
sequenceuint32关节状态信息
positionfloat64关节位置,单位:rad
velocityfloat64关节速度,单位:rad/s
effortfloat64关节力矩,单位:Nm
FieldTypeDescription
headerstd_msgs响应头
jointsCommand[]关节状态信息
FieldTypeDescription
namestring响应头
sequenceuint32关节状态信息
positionfloat64关节位置,单位:rad
velocityfloat64关节速度,单位:rad/s
effortfloat64关节力矩,单位:Nm
stiffnessfloat64
dampingfloat64
FieldTypeDescription
namesstring[]响应头
posesPoseState[]姿势
torqsTorqSensorState[]
FieldTypeDescription
xfloat64
yfloat64
zfloat64
rxfloat64
ryfloat64
rzfloat64
FieldTypeDescription
act_torquefloat64
torquefloat64
real_torquefloat64
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::HandState手部状态
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::EmergencyState手部指令
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::EmergencyState
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::McRemoteControlInfo数据
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::RgbLightStateRGB灯光状态数据
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::FillLightState补光灯灯光状态数据
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::LightStripState灯带灯光状态数据
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::BmsStateBMS状态数据
FieldTypeDescription
headeraimdk::protocol::Header消息头
dataaimdk::protocol::hal::RgbLightStateRGB灯光状态数据
FieldTypeDescription
headeraimdk::protocol::Header消息头
cmdaimdk::protocol::hal::RgbLightCommandRGB灯光控制指令
FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
cmdaimdk::protocol::hal::LightStripCommand灯带控制指令
FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
cmdaimdk::protocol::hal::FillLightState灯光状态数据
FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
cmdaimdk::protocol::hal::FillLightCommand灯光控制指令
FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
dataaimdk::protocol::hal::HandState手部状态
FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
dataaimdk::protocol::hal::HandCommand手部控制