Segmentation fault(core dumped)のエラーが出る
解決したいこと
ROSでメッセージのやり取りをしたいのですが,動かしてみると「Segmentation fault」とエラーが出ます.解決方法を教えてほしいです.
該当するソースコード
sensor_msgs/sensor.msg
int16 right_forward
int16 right_side
int16 left_side
int16 left_forward
myros/lightsensor.cpp
#include "ros/ros.h"
#include "std_msgs/Int16.h"
#include "sensor_msg/LightSensorValues.h"
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <cstdlib>
#include <algorithm>
int main (int argc, char **argv)
{
ros::init(argc, argv, "light_sensor");
ros::NodeHandle n;
ros::Publisher value_trans =
n.advertise<sensor_msg::LightSensorValues>("SensorValues",1000);
double freq =1;
n.getParam("light_sensor_freq",freq);
if(freq<0){freq = 1;}
ros::Rate loop_rate(freq);
std::cout<<"freq="<<freq<<std::endl;
std::string devfile("/dev/rtlightsensor0");
std::vector<std::string> data;
std::string str;
std::ifstream light_file(devfile);
if(!light_file.is_open()){
ROS_INFO("Could not open the file");
return 0;
}else{
ROS_INFO("open");}
while(ros::ok())
{
while(getline(light_file, str)){
data.push_back(str);
}
sensor_msg::LightSensorValues lsv;
int d1,d2,d3,d4;
d1 = stoi(data[0]);
d2 = stoi(data[1]);
d3 = stoi(data[2]);
d4 = stoi(data[3]);
lsv.right_forward = d1;
lsv.right_side = d2;
lsv.left_side = d3;
lsv.left_forward = d4;
value_trans.publish(lsv);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
やりたいこと
/dev/rtlightsensor0のファイルを開くことが出来たんですが,ファイルから得られる4つの値をstring型で受け取って,int型に変換したくて関数stoiを使ったのですが.エラーが出ました.rosrunした実行結果を下に載せておきます.
freq=1
[ INFO] [1700457526.161698436]: open
Segmentation fault (core dumped)
0