说在前面
情况介绍:本人今年大四在读,老师给了“轮式机器人定位与导航系统设计”的毕设题目,研究内容主要是激光SLAM和自主导航。因为内容较多,难度较大,本人水平不足等诸多原因,在寒假的时候就开始在网上自学Ubuntu和ROS,主要是看胡春旭大佬的课,话题和服务的编程已经熟悉了一点,以后有时间再写,不求面面俱到,只希望我能顺利毕业吧。
为什么写这一系列博客?主要是为了防止学到后面忘了前面吧,毕竟还要学习的东西还是非常多的,希望能坚持学习坚持更新。
我的软件搭配
本人使用的是Ubuntu20.04和ROS noetic,最新版的系统和ROS确实让我吃了不少苦。
激光雷达介绍
我使用的是杉川的比较便宜的一款产品,具体型号我不太记得了,具体长这样。
实现方法
我主要是参考了这篇博客 ROS Kinetic下使用杉川Delta_2A激光雷达示例,大家也可以直接看他的文章。
创建工作空间
可以使用catkin_init_workspace的命令,我的方法如下。
mkdir -p ~/catkin_lidar/src
cd ~/catkin_lidar
catkin_make
上面命令的意思分别是在home路径下建立catkin_lidar文件夹,在文件夹中添加一个src的文件夹,然后进入catkin_lidar路径下进行编译。
编写源文件
src中包含一个名为delta_lidar的功能包和一个CMakeLists.txt,功能包中有launch文件夹、rviz文件夹、sdk文件夹、src文件夹和CMakeLists.txt和package.xml,分别说一下它们的作用。可以在我的资源主页下载src文件夹,按照上述方法自行编译。
- luanch文件夹中包含了一些.launch文件,用来启动一些节点和加载参数,相对于roscore的启动方式,终端数少更加简洁。
- rviz文件夹中有一个.rviz文件,用来配置rviz启动时的一些插件和配置的参数。例如Fixed Frame、点云数据的话题名称等等。
- sdk中包含的是一些头文件(这个我不太清楚,详细知识请查资料)。
- src文件夹中包含的是cpp格式的源文件,client.cpp和node.cpp,用于发布/scan的话题。
- CMakeLists.txt规定了一些编译和创建可执行程序的规则。
- pakage.xml包含了版本号,程序作者的邮箱和依赖的包如std_msgs、roscpp等
添加环境变量
写完程序之后,在终端下进入catkin_lidar路径编译,然后需要用如下命令添加环境变量。
catkin_make
source devel/setup.bash
这种方法只能对此终端生效,更常见的方法如下。
原作者使用的命令是echo"source/catkin_lidar/devel/setup.bash">>~/.bashrc
,但是我使用这个命令会报错bash: echosource/catkin_lidar/devel/setup.bash: 没有那个文件或目录
。
后来只能手动添加环境变量,打开home目录下的.bashrc(注意:是.bashrc,不是bashrc),在最后一行添加source /home/your_name/catkin_lidar/devel/setup.bash
,其中your_name需要替换成对应的计算机名。
然后使用source ~/.bashrc
添加环境变量。可以在终端输入echo $ROS_PACKAGE_PATH
查看环境变量,有catkin_lidar路径就没有问题。
连接雷达端口
在终端中输入sudo chmod 777 /dev/ttyUSB0
连接雷达端口。
运行rviz
直接运行launch文件即可,命令:roslaunch delta_lidar view_delta_lidar
。
结果
这样就能在rviz中看到激光雷达的点云数据了,第一次跑起来激光雷达太高兴了,记录一下,理工男的快乐就是这么简单吧。