跳转到内容

感知模块

感知模块(Perception)负责机器人的环境感知功能,包括目标检测、6D位姿估计、多尺度对象处理和环境对象信息管理等功能。

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

话题名话题描述订阅 or 发布消息类型备注通信后端
/point_cloud_percep/tracked_obstacles跟踪障碍物发布perception_msg_interface::msg::TrackedObstaclesros2
/point_cloud_percep/tracked_pedestrian行人检测-规划发布perception_msg_interface::msg::TrackedObstaclesros2
/nv_cam_lidar_percep/occupancy_3d3D占用栅格地图发布aimdk::protocol::PerceptionOcc3Dros2
/aima/hal/lidar/top/pointcloud激光雷达订阅sensor_msgs::PointCloud2ros2
/aima/hal/rgbd_camera/head_front/color头部RGB相机订阅sensor_msgs::Imageros2
/aima/hal/rgbd_camera/head_front/depth头部深度相机订阅sensor_msgs::Imageros2
/aima/hal/rgbd_camera/chassis_front/color底盘RGB相机订阅sensor_msgs::Imageros2
/aima/hal/rgbd_camera/chassis_front/depth底盘深度相机订阅sensor_msgs::Imageros2
/tfTF变换数据订阅tf2_msgs::TFMessageros2
接口名接口描述请求消息类型答复消息类型备注通信后端
pb:/aimdk.protocol.GraspObjService/UpdateGraspObjects更新抓取作业中的对象信息aimdk::protocol::UpdateGraspObjectsRequestaimdk::protocol::UpdateGraspObjectsResponse为机器人动态添加附加对象http
pb:/aimdk.protocol.Object2dDetectionService/Get2dDection2D目标检测aimdk::protocol::ObjectDetectionRequestaimdk::protocol::ObjectDetectionResponse进行2D目标检测,返回二维边界框http
pb:/aimdk.protocol.Object6dPoseEstimationService/Get6dPose6D位姿估计aimdk::protocol::ObjectPoseEstimationRequestaimdk::protocol::ObjectPoseEstimationResponse进行6D位姿估计,返回二维和三维边界框http

目标类型枚举

NameNumberDescription
TargetType_UNKNOWN0未知类型
TargetType_PLASTIC_BOX1塑料箱
TargetType_METAL_SHELF2金属货架

目标检测请求

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
target_typeaimdk::protocol::TargetType目标类型枚举

目标检测响应

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
box2daimdk::protocol::Box[]二维边界框列表

aimdk::protocol::ObjectPoseEstimationRequest

Section titled “aimdk::protocol::ObjectPoseEstimationRequest”

目标位姿估计请求

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
target_typeaimdk::protocol::TargetType目标类型枚举

aimdk::protocol::ObjectPoseEstimationResponse

Section titled “aimdk::protocol::ObjectPoseEstimationResponse”

目标位姿估计响应

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头
box2daimdk::protocol::Box[]二维边界框列表
bbox6daimdk::protocol::Bbox6d[]三维边界框列表

aimdk::protocol::UpdateGraspObjectsRequest

Section titled “aimdk::protocol::UpdateGraspObjectsRequest”

更新抓取对象信息请求

FieldTypeDescription
headeraimdk::protocol::RequestHeader请求头
grasp_objsaimdk::protocol::GraspObject[]抓取对象列表

aimdk::protocol::UpdateGraspObjectsResponse

Section titled “aimdk::protocol::UpdateGraspObjectsResponse”

更新抓取对象信息响应

FieldTypeDescription
successbool更新结果返回值

抓取对象

FieldTypeDescription
object_idstring物体唯一标识,例如 “box_1”
dimsaimdk::protocol::Vec3物体长宽高
poseaimdk::protocol::SE3Pose物体pose
frame_idstring所属坐标系,例如 “left_arm_link07”

通用响应

FieldTypeDescription
headeraimdk::protocol::ResponseHeader响应头

三维边界框

FieldTypeDescription
centeraimdk::protocol::Point3D中心点坐标
sizeaimdk::protocol::Point3D尺寸大小
rotationaimdk::protocol::Quaternion旋转四元数

perception_msg_interface::msg::TrackedObstacles

Section titled “perception_msg_interface::msg::TrackedObstacles”
FieldTypeDescription
Infotracked_obstacleaimdk::protocol::perception::TrackedObstacleInfo
uint32track_id1
uint32type_id2
is_movingbool3
is_movablebool4
is_in_blindbool5
num_observationuint326
is_no_static_occludedbool7
centerPoint8
center_in_mapPoint9
velocity_in_mapVector310
smoothed_center_in_mapPoint11
center_in_odomPoint12
velocity_in_odomVector313
smoothed_center_in_odomPoint14
polygon_in_mapPolygon15
polygon_in_odomPolygon16
PointStamped prediction_center_in_odomrepeated17
center_in_wcsPoint18
velocity_in_wcsVector319
smoothed_center_in_wcsPoint20
polygonPolygon21
polygon_in_wcsPolygon22
PointStamped prediction_center_in_wcsrepeated23

提供 Http Curl 示例,需要将 127.0.0.1 替换为机器人 orin 开发板的 IP 地址:

Terminal window
curl --location --request POST 'http://127.0.0.1:58001/rpc/aimdk.protocol.Object2dDetectionService/Get2dDection' \
--header 'Content-Type: application/json' \
--data-raw '{"header":{},"target_type":"TargetType_PLASTIC_BOX"}'
Terminal window
curl --location --request POST 'http://127.0.0.1:58001/rpc/aimdk.protocol.Object6dPoseEstimationService/Get6dPose' \
--header 'Content-Type: application/json' \
--data-raw '{"header":{},"target_type":"TargetType_METAL_SHELF"}'
Terminal window
curl --location --request POST 'http://127.0.0.1:58001/rpc/aimdk.protocol.GraspObjService/UpdateGraspObjectsRequest' \
--header 'Content-Type: application/json' \
--data-raw '{"header":{},"objects":[{"id":"obj_001","dims":{"x":1.2, "y":0.8, "z":0.6},"pose":{"position": {"x":1.2, "y":0.8, "z":0.6}, "orientation":{"x":0.15, "y":0.86, "z":0.652, "w":1.234}},"frame_id":"right_arm_01"}]}'