ROS-激光雷达访问数据修改

1.1 了解激光雷达如何在ROS中发送数据

$rostopic list  (列出主题)
#/scan是节点正在发布消息的主题,节点使用的数据类型如下所示:
$ rostopic type  /scan
#得到发送激光雷达信息的消息类型:
sensor_msgs/LaserScan
#消息的数据结构:
$ rosmsg show sensor_msgs/LaserScan
#了解更多关于激光雷达工作和数据发送的信息,可以使用rostopic命令来查看实时消息。
$rostopic echo  /scan
#数据可视化,加载正确的配置文件
$ rosrun  rviz  rviz  -d 'rospack  find hokuyo_node'/hokuyo_test.vcg

2.1 访问和修改激光雷达数据

  • 创建一个节点获取激光雷达数据
  • 使用数据
  • 发布信息数据

代码解析:

main函数中,初始化名为example2_laser_scan_publisher的节点

然后创建了之前在文件中已经定义好的类的一个实例。

int  main(int argc,char** argv)
{
ros::init(argc,argv,"example2_laser_scan_publisher");
  //argc,argv官方说argc, argv  是用来解析来自命令行remapping arguments, 而所谓       remapping arguments就是在调用 rosrun package_name node_name param_name:=param_value 中的 param:=param_value.//
  Scan2 scan2;
ros::spin();
//spin函数,一旦进入spin函数,它就不会返回了,相当于它在自己的函数里面死循环了。只要回调函数队列里面有callback函数在,它就会马上去执行callback函数。如果没有的话,它就会阻塞,不会占用CPU。
}

#在构造函数中,创建了两个主题,一个主题将会订阅另一个。
Scan2::Scan2()
{
scan_pub =n.advertise<sensor_msgs::LaserScan>("/scan2",1);
scan_sub=n.subscribe<sensor_msgs::LaserScan>("/scan",1, $Scan2::scanCallBack,this);
}

第二个数据具有激光雷达的原始数据,并将会对原始数据进行修改然后发布。

 

猜你喜欢

转载自blog.csdn.net/wtj318_/article/details/82853856