ROS C ++ сериализация - PullRequest
       10

ROS C ++ сериализация

0 голосов
/ 24 февраля 2020

Я пытаюсь сериализовать сообщение в C ++ в рамках ROS. Мой код даже работает, он просто кажется таким грязным. Есть лучший способ сделать это? Потому что копирование одного буфера в другой, не похоже на очень хорошее решение с точки зрения производительности ...

namespace ser = ros::serialization;  

void callback(const sensor_msgs::LaserScan::ConstPtr & scan)                        
{                                                                                   
    trans = bp->lookupTransform("laser", "map", ros::Time(0));                      

    uint32_t scan_s = ros::serialization::serializationLength(*scan);               
    uint32_t trans_s = ros::serialization::serializationLength(trans);              

    ROS_INFO("Scan has serialization length: %i", scan_s);                          
    ROS_INFO("Trans has serialization length: %i", trans_s);                        

    /* Serialization: */                                                            
    char buffer_[scan_s];                                                           
    boost::shared_array<uint8_t> buffer(new uint8_t[scan_s]);                       

    ser::OStream stream(buffer.get(), scan_s);                                      
    ser::serialize(stream, *scan);                                                  

    for ( int i = 0; i < scan_s; i ++) {                                            
        buffer_[i] = buffer[i];                                                     
    }                                                                               

    ofstream output_file("test.data", ios::app);                                    
    output_file.write(buffer_, scan_s);                                             
    output_file.close();            
}

Кроме того, что говорит этот странный синтаксис buffer(new ...)? Я даже не могу понять, как вызвать delete для этого.

Кроме того, я не уверен, является ли копирование объекта buffer правильным. В чем разница с stream?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...