大家好,我是一名“黑科技”发烧友,最近听闻北醒(www.benewake.com)新推出一款固态激光雷达CE30-A,赶紧入手了一台尝尝鲜,基于移动小车底盘和北醒提供的SDK,简单做了几个小功能,先来看看效果:
https://v.qq.com/x/page/x0503dztdtx.html
可以看到视频里雷达的整体效果还是不错的,现在和各位大神和新手朋友分享一下我的开发过程吧,首先是一些基础的准备:
1、 系统要求:
Ubuntu14.04,安装ROS Indigo系统。
2、 ROS系统在ubuntu下安装:
参考http://wiki.ros.org/cn/indigo/Installation/Ubuntu
3、 编译CE30 ROS官方驱动包:
(1). 参照教程http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment 设置工作环境并创建ROS工作空间。
(2). 将官方驱动ce30_ros文件夹解压后复制到工作空间下的src文件夹下。
(3). 参照教程http://wiki.ros.org/cn/ROS/Tutorials/BuildingPackages中的0.0.2使用catkin_make来编译你的工作空间。
4、 编译ce30应用程序。
(1). 将ce30_use文件夹解压后复制到创建的工作空间的src文件夹下。
(2). 参照上述的流程编译ce30_use。
5、 启动应用程序
(1)、将兼容ROS的机器人底盘连接到工控机。
(2)、按Ctrl+alt+T键打开terminal。
(3)、给串口设置权限,在terminal中输入sudo chmod 777 /dev/ttyUSB*。
(4)、如果要使用避障和绕障模式,输入roslaunch ce30_use use.launch。
(5)、避障模式和绕障模式通过use.launch文件中的is_avoid参数切换,如果想使用绕障模式,将is_avoid的value值设置为true,否则设置为false。
为了更直观的表达我的思路,下面画了2个流程图:
1、 指定车宽避障模式程序流程图(见图1)
图1 避障模式程序流程图
2、绕障模式程序流程图(见图2)
图2 机器人绕障模式
3、跟车模式算法流程
(1) 定义PID结构体(其中比例系数P,积分系数I,微分系数D,目标量target,当前误差为iEorro,累计误差为InEorro,微分误差为dEorro,最后误差为lastEorro)。
(2) 初始化程序。
(3) 接收雷达数据为laserData。
(4) 计算当前误差iEorro = target – laserData;
a) 累计误差InEorro = InEorro + iEorro;
b) 微分误差dEorro = iEorro – lastEorro。
(5) 赋值lastEorro = iEorro。
(6) 计算控制量V = P*iEorro + I*InEorro + D*dEorro。
(7) 将控制量发送给底盘执行。
(8) 重复步骤(3)至步骤(7)
以上是我的基本思路和想法,下面贴上代码
Obstacle Avoidance.cpp
Vehicle Follow.cpp
各位大神见笑了,还请高手指点,新手朋友有问题的话欢迎交流讨论!