array的添加,使用 arry[i]赋值时会出现段错误,需要使用array.push_back添加到数据中,在ros中array数组是以vector方式存储的。

例如:

包含数组的msg定义为:

hbgArray.msg

std_msgs/Header header
hbg_std_msgs/KeyPose[] keyposes

 

包含数组元素的定义为:

KeyPose.msg

double x

double y

doube z

 

以上两个文件定义在包hbg_std_msgs中

 

编译后使用,编写程序时:

int main(int argc, char **argv)

{

  hbg_std_msgs::hbgArray  pArray;

       hbg_std_msgs::KeyPoe  pKey;

 

  for(int i = 0; i< size; i++)

  {

             // 填充pKey;

        .....

            // 添加到array 中

            pArray.push_back(pKey);

       }

 

  // 发布

      XX.publish(pArray);

   

}