オブジェクト(msg.data
)が数値か文字列のいずれかになります。それが文字列の場合、私はそれを使用したくない、それは私がしたい番号です。これは何回も各秒を実行しているforループの一部であるので、私は、効率を気にオブジェクトが文字列かどうかをチェックする最も効率的な方法
void scan_cb(const sensor_msgs::LaserScan::ConstPtr& scan)
{
float dist = 0.0f;
std::ostringstream s;
s << scan->ranges[0]; // can be string (always "inf") or a float
if(s.str() != "inf"){
dist += scan->ranges[0];
}
...
、:私はずっといい解決策があると思いますけれども、私は現在、ostringstream
でこの問題を解決しました。
基本的な構造は、特定のトピックに由来するROSメッセージであり、基本的に任意のデータ型を持つことができます。 この場合私はLaserScan messageを使用しますが、range[x]
は"inf"を返すことはできません。
オブジェクトは常に*文字列です。あなたがしたいことは、文字列を解析することです。 – StoryTeller
私は明確にしようとしました、私のオブジェクトは 'msg.data'であり、これはどのタイプであるのか明確ではありません。 – Jonas
* msg.dataは*どのように宣言されていますか? –