Win
https://blog.csdn.net/i_robots/article/details/109864454
Ubuntu
-
激光雷达用以太网连接电脑; -
设置ipv4: IP地址:192.168.1.x(x可以为1到254除开201以外的所有值,因为201是激光雷达的IP),我设的192.168.1.70 子网掩码:255.255.255.0 -
安装好ros melodic ; -
新建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 -
浏览器输入:192.168.1.201 进入激光雷达面板 -
终端输入:roslaunch velodyne_pointcloud VLP-32C_points.launch -
终端输入:rosrun rviz rviz -f velodyne 进入rviz在线地观察点云(进去后点击Add,加入Topic下PointCloud2)
在线获取点云数据
在topic /velodyne_points 中数据是以PointCloud2组织的,其中data存储这点云二进制流,需要对其解码才有意义。为了获取数据,需要新建一个功能包。用以订阅/velodyne_points 话题,并获取其中的sensor_msgs,对其中的data进行解码即可: 下面这个是ros 订阅者的回调函数(gen是一个生成器,内容可以根据实际需求更改,关键函数为point_cloud2.read_points() ):
from sensor_msgs.msg import PointCloud2
from sensor_msgs import point_cloud2
def callback_pointcloud(data):
assert isinstance(data, PointCloud2)
gen = point_cloud2.read_points(data)
print type(gen)
for p in gen:
print p
ros使用Python3
torch对py3支持更好,ubuntu /usr/bin/env 下其实是有python3的,只需要在ros功能包下scripts中第一行将 python 改为 python3即可。torch安装就直接在终端没有激活conda的情况下pip3 install torch torchvision torchaudio 即可。
ROS创建一个node用于接收velodyne点云并处理,之后新发布一个topic
创建工作空间:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
编译工作空间:
$ cd ~/catkin_ws/
$ catkin_make
设置环境变量:
$ source devel/setup.bash
也可以打开 .bashrc 在末尾添加source bash文件路径,这样每次打开终端都会自动设置环境。 检查环境变量:
$ echo $ROS_PACKAGE_PATH
创建功能包:
$ cd ~/catkin_ws/src
$ catkin_create_pkg test_pkg std_msgs rospy roscpp
编译功能包:
$ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash
src文件夹下添加脚本subscriber.py。
回到工程主目录,运行 rosrun test_pkg subscriber.py ,回到Rviz,订阅subscriber publish的处理后点云的topic,显示即可。
编写launch文件
为了方便之后的启动,将velodyne驱动节点和点云数据处理节点写在一个launch文件中: velodyne.launch文件:
<launch>
<include file="$(find velodyne_pointcloud)/launch/VLP-32C_points.launch"/>
<node pkg = "test_pkg" type = "subscriber.py" name = "subscriber" />
</launch>
注意这里type和name需要同名,之后回到项目根目录catkin_make ,重新打开终端即可roslaunch launch_node velodyne.launch 一键启动。
|