Main Content

PointCloud2

点群メッセージへのアクセス

説明

PointCloud2 オブジェクトは、ROS での sensor_msgs/PointCloud2 メッセージ タイプの実装です。このオブジェクトには、メッセージおよび点群データに関するメタ情報が含まれています。実際のデータにアクセスするには、readXYZ を使用して点座標を取得し、readRGB を使用してカラー情報 (使用可能な場合) を取得します。

作成

説明

ptcloud = rosmessage('sensor_msgs/PointCloud2') は、空の PointCloud2 オブジェクトを作成します。点群データを指定するには、ptcloud.Data プロパティを使用します。rossubscriber を使用して、ROS ネットワークから点群データのメッセージを取得することもできます。

プロパティ

すべて展開する

このプロパティは読み取り専用です。

点群行列の形状を保持します。false または true として指定します。プロパティが true のとき、readXYZ および readRGB からの出力データは、ベクトルではなく行列として返されます。

このプロパティは読み取り専用です。

ROS メッセージのメッセージ タイプ。文字ベクトルとして返されます。

データ型: char

このプロパティは読み取り専用です。

ROS ヘッダー メッセージ。Header オブジェクトとして返されます。このヘッダー メッセージには、MessageType、シーケンス (Seq)、タイムスタンプ (Stamp)、および FrameId が含まれます。

点群の高さ (ピクセル単位)。整数として指定します。

点群の幅 (ピクセル単位)。整数として指定します。

イメージ バイト シーケンス。true または false として指定します。

  • true — ビッグ エンディアン シーケンス。最小アドレス内の最上位バイトを格納します。

  • false — リトル エンディアン シーケンス。最小アドレス内の最下位バイトを格納します。

点の長さ (バイト単位)。整数として指定します。

行の全長 (バイト単位)。整数として指定します。行の長さは、PointStep プロパティに Width プロパティを掛けた値と等しくなります。

点群データ。uint8 配列として指定します。データにアクセスするには、オブジェクト関数を使用します。

オブジェクト関数

readAllFieldNamesGet all available field names from ROS point cloud
readFieldRead point cloud data based on field name
readRGBExtract RGB values from point cloud data
readXYZ点群データからの XYZ 座標の抽出
scatter3散布図での点群の表示
showdetailsDisplay all ROS message contents

すべて折りたたむ

点群メッセージ内のデータにアクセスして可視化します。

サンプルの ROS メッセージを作成して点群イメージを検査します。ptcloud はサンプルの ROS PointCloud2 メッセージ オブジェクトです。

exampleHelperROSLoadMessages
ptcloud
ptcloud = 
  ROS PointCloud2 message with properties:

    PreserveStructureOnRead: 0
                MessageType: 'sensor_msgs/PointCloud2'
                     Header: [1x1 Header]
                     Fields: [4x1 PointField]
                     Height: 480
                      Width: 640
                IsBigendian: 0
                  PointStep: 32
                    RowStep: 20480
                       Data: [9830400x1 uint8]
                    IsDense: 0

  Use showdetails to show the contents of the message

readXYZ および readRGB を使用して、点群から RGB 情報と xyz 座標を取得します。

xyz = readXYZ(ptcloud);
rgb = readRGB(ptcloud);

scatter3 を使用して、Figure 内に点群を表示します。

scatter3(ptcloud)

ROS Toolbox™ の点群メッセージを、Computer Vision System Toolbox™ の pointCloud オブジェクトに変換します。

サンプル メッセージを読み込みます。

exampleHelperROSLoadMessages

ptcloud メッセージを pointCloud オブジェクトに変換します。

pcobj = pointCloud(readXYZ(ptcloud),'Color',uint8(255*readRGB(ptcloud)))
pcobj = 
  pointCloud with properties:

     Location: [307200x3 single]
        Count: 307200
      XLimits: [-1.8147 1.1945]
      YLimits: [-1.3714 0.8812]
      ZLimits: [1.4190 3.3410]
        Color: [307200x3 uint8]
       Normal: []
    Intensity: []

R2019b で導入