2019年9月25日
ROS 下使用3D激光雷达 velodyne vlp-16
系统版本:Ubuntu 16.04 32位
ROS版本: kinetic
前提条件:ROS开发环境安装
1. 安装驱动(注意版本)
sudo apt-get install ros-kinetic-velodyne
2. 建立ROS工程
mkdir -p catkin_velodyne/src cd catkin_velodyne/src git clone https://github.com/ros-drivers/velodyne.git cd .. catkin_make source devel/setup.bash
3. 把Velodyne XML文件转成ROS节点的YAML文件
转换后生成VLP-16.yaml,不是我针对谁,CSDN上要积分的都是垃圾
rosrun velodyne_pointcloud gen_calibration.py path/to/VLP-16.xml
4. 加载(注意yaml使用全路径)
roslaunch velodyne_pointcloud VLP16_points.launch calibration:=path/to/VLP-16.yaml
5. 实时显示点云图,图形界面下执行
rosrun rviz rviz -f velodyne 或 rosrun rviz rviz #之后在手动设置Fixed Frame= velodyne
然后在rviz中点Add by topic,增加PointCloud2,这样就可以实时显示获取的3D点云图
问题1:使用主机windows10、虚拟机vmware安装ubuntu,激光雷达和windows主机在一个局域网,一顿操作猛如虎,虚拟机就是收不到激光数据。
解决1:原因不明,Ubuntu使用单独的工控机,直接跟雷达怼在一个交换机就可以了。
问题2:QXcbConnection: XCB error: 148 错误
解决2:ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误 解决方法
我的解决2:rviz能跑起来了(还是老外干货多,百毒再一次让我失望)
参考: Ubuntu 安装远程桌面 B. X11vnc 无头环境方案
6.录制和回放
#录制 rosbag record -O/velodyne_points #显示信息 rosbag info #回放 rosbag play
问题:/use_sim_time set to true and no clock published. Still waiting for valid time…
原因:这是由于 ROS tf 的发布时间晚于 topic 的时间,Rviz 在做 msg 的 tf 变换时,默认把过时的 msg 丢掉。为了解决这一问题,可以让系统以 msg 对应的 simulated time 运行,而不是实际的 wall-clock time.
解决:
#录制前 rosparam set /use_sim_time false #播放时 rosparam set /use_sim_time true