• ROS之激光雷达

    激光雷达已经成为机器人标配了,ROS作为通用机器人系统也支持激光雷达数据。激光雷达产生的数据类型是sensor_msgs/LaserScansensor_msgs/PointCloud,或者是新的sensor_msgs/PointCloud2。对于我手头的这台Turtlebot3而言,LDS设备的数据类型是sensor_msgs/LaserScan。ROS中的传感器数据非常多,但是这些数据流常常需要同步,所以ROS定义了一个通用的数据头,各种数据都会带上这个header

    ROS header的数据结构

    类型Header包括多个字段。字段seq对应一个标识符,随着消息被发布,它会自动增加。字段stamp存储与数据相关联的时间信息。以激光扫描为例,stamp可能对应每次扫描开始的时间。字段frame_id存储与数据相关联的tf帧【查看更多】

  • PCI配置空间访问的细节

    本文出自:【InTheWorld的博客】

        前段时间在看DM9000驱动的时候,瞄了一眼DM9000的datasheet。以前确实没有留意这种形式的接口设计。简单来说就是,DM9000只占用主机的8字节的地址空间。前四字节用作地址端口,后四字节用作数据端口。进行写操作时,将目标地址写入到地址端口,源数据写入数据端口。读操作则与写操作类似。PCI设备中有三种地址空间,分别是内存空间、IO空间和配置空间。PCI总线很重要的一个特点就是配置空间。配置空间是内存空间和IO空间分配的基础。个人觉得,由于PCI设备可以直接通过映射后的地址进行访问。与这种透明机制相比,配置空间的访问反而是最难理解的了。

            要弄清楚PCI的细节,最直接的办法就是看PCI总线协议文档了。了解过PCI配置的人大概都知道两个非常重要的寄存器, config_address(0xCF8),config_data(0xCFC【查看更多】