ROS1机器人激光雷达测距的C++代码
时间: 2023-09-15 19:22:25 浏览: 212
以下是使用ROS1中的激光雷达进行测距的C++代码示例:
```cpp
#include <ros/ros.h>
#include <sensor_msgs/LaserScan.h>
void laserCallback(const sensor_msgs::LaserScan::ConstPtr& scan)
{
// 获取激光雷达数据
std::vector<float> ranges = scan->ranges;
float min_range = scan->range_max;
// 遍历激光雷达数据,找到最小距离
for (int i = 0; i < ranges.size(); i++)
{
if (ranges[i] < min_range)
{
min_range = ranges[i];
}
}
// 输出最小距离
ROS_INFO("Minimum range: %f", min_range);
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "laser_range");
ros::NodeHandle nh;
// 订阅激光雷达数据
ros::Subscriber laser_sub = nh.subscribe<sensor_msgs::LaserScan>("/scan", 1, laserCallback);
ros::spin();
return 0;
}
```
在这个例子中,我们首先定义了一个回调函数`laserCallback`,用于处理接收到的激光雷达数据。在回调函数中,我们获取激光雷达数据,并遍历数据以找到最小距离。最后,我们输出最小距离。
在`main`函数中,我们初始化ROS节点并订阅激光雷达数据。然后,我们调用`ros::spin()`使节点一直运行,并等待接收到激光雷达数据。
阅读全文