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);
}
第二个数据具有激光雷达的原始数据,并将会对原始数据进行修改然后发布。