思岚的激光雷达A2固定角度是0-360°,但是由于结构空间限制往往无法得到360°的数据,如何设置获取任意角度呢?咨询过思岚的技术支持,得到的回答是:“我们已经不支持ROS系统。。”让人有点蛋疼。。,所以咨询了之前的同事卤蛋大神,
在他的帮助下实现这一功能。其实很简单,只有增加几行代码就可以实现。具体如下:
在node.cpp中,有一个void publish_scan的方法,
for(int i=0;i<scan_msg.ranges.size();i++){
if((scan_msg.angle_min+i*scan_msg.angle_increment > angle_min_rad)&&(scan_msg.angle_min+i*scan_msg.angle_increment<angle_max_rad)){
scan_msg.ranges[i]= std::numeric_limits<float>::infinity();
}
}
在main增加:
nh_private.param<double>("limit_angle_max", limit_angle_max , 180); //kuang
nh_private.param<double>("limit_angle_min", limit_angle_min , -180); //kuang
angle_max_rad = DEG2RAD(limit_angle_max); //kuang
angle_min_rad = DEG2RAD(limit_angle_min); //kuang
在launch文件里面增加
<param name="limit_angle_min" type="double" value="-30" />
<param name="limit_angle_max" type="double" value="30" />