大家好,我是一名“黑科技”发烧友,最近听闻北醒新推出一款固态激光雷达CE30-A,赶紧入手了一台尝尝鲜,基于移动小车底盘和北醒提供的SDK,简单做了几个小功能,先来看看效果: 可以看到视频里雷达的整体效果还是不错的,现在和各位大神和新手朋友分享一下我的开发过程吧,首先是一些基础的准备: 1、 系统要求: Ubuntu14.04,安装ROS Indigo系统。 2、 ROS系统在ubuntu下安装: 3、编译CE30 ROS官方驱动包: (2). 将官方驱动ce30_ros文件夹解压后复制到工作空间下的src文件夹下。 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 各位大神见笑了,还请高手指点,新手朋友有问题的话欢迎交流讨论!
|