启智模块机器人 | 四轮底盘灰度传感器循迹实验

来源: 云巴巴 2020-03-30 10:02:01

启智模块机器人是一款侧重机器人底层硬件教学的模块化套件,采用免螺丝的独特装配方式,缩短装配手工时间,学习的重点集中于结构设计、程序编写和功能实现上。在有限的实验课时里快速体验和学习各种机器人构型的优缺点和控制特性,为将来深入学习机器人学打好坚实基础。
 

一、循迹实验主体拼装


1、底盘拼接图

底盘拼接图

启智模块机器人套件标配了4个伺服电机模块,由于伺服电机模块采用RS485总线通讯, 所以每个伺服电机模块均有一个独立的ID号。伺服电机模块的供电和通讯功能集成在一个航插接口,使用时通过通讯线缆连接控制器 的RS485接口即可。控制器的两个RS485接口也是并联关系,插接任意接口都可以。
2、传感器的搭建
● 根据视频搭建完机器人底盘以后,将两枚灰度检测传感器通过延长柱安装在底盘的前下方。其中左前侧的传感器连接到启智控制器的Adc1接口,右前侧的传感器连接启智控制器的Adc2接口,如下图所示。

● 机械结构组装完毕后,下面进行电气连接。将启智控制器和电池模块连接,并将四个电机模块用航插线串联起来,连接到启智控制的RS485航插接口上。电气连接示意图如下图所示:

电气连接示意图

二、实验原理


黑线循迹功能的实现思路是:在机器人的前方底盘下安装两枚灰度检测传感器,在机器人行进过程中不停读取灰度检测传感器的光通量数值。光通量这个数值在检测到高亮度的表面(如白纸)时数值升高,检测到低亮度的表面(如黑色线)数值降低。所以我们设定一个阈值,比传感器检测黑色线的光通量稍高即可。机器人行进过程中,当左侧的传感器返回光通量值低于阈值时,可认为黑线将会从机器人左侧偏出,机器人左转,及时追回黑线;当右侧的传感器返回光通量值低于阈值时,可认为黑线将会从机器人左侧偏出,机器人右转,及时追回黑线;当所有传感器的返回值都高于阈值时,可认为黑线还在左右两个传感器之间,机器人保持直行。

启智模块机器人套件中,有一种能安装在机器人底盘下方的灰度传感器延长柱,灰度传感器需要这个延长柱将其尽可能的靠向地面。在这个实验里,为了简单好入门,暂时只使用两枚灰度传感器,分别安装在机器人底盘前方的左前和右前侧,与机器人中线可以隔开一个安装位。两个灰度传感器隔开一定距离,可以让循线的容错度更大一些。左前侧的灰度传感器连接到Adc1,右前侧的灰度传感器连接到Adc2,实验中会在程序里从这两个接口读取传感器数值。

启智模块机器人套件

实验代码中将会用到启智控制器的部分库函数:

● 换算灰度检测传感器的光通量值

int Sensor_Lux(u8 Channel)

Channel —— 接入了灰度检测传感器的Adc端口通道;

返回值:从该端口获取的AD转换原始数据换算成的光通量值,单位为10mLux。

● 设置电机速度

void Motor_SetSpeed(u8 MotorID, float MotorSpeed)

MotorID —— 电机ID号,范围1~4;

MotorSpeed —— 设置的转速值,精度0.1,单位为“转/分”。

这条函数调用后,控制器只是把速度值发给电机模块,而电机模块并未立刻执行,需要等待调用Motors_Action()后才执行新的速度值。

返回值:空。

● 电机执行设置的速度

void Motors_Action(void)

命令所有电机模块执行新的速度值。

返回值:空。
 

三、启智模块机器人灰度循迹代码


1. 法建立一个新的工程,工程名为“15_LineTracking”

2. 打开USER目录下的main.c文件,编写如下代码:
#include "Wp_Sys.h"

 

int Lux[2];

int i=0;

float R4wd = 0.165;

float Rw = 0.029;

float Pi = 3.1415926;

 

void FourWD(float Vx, float Wz)

{

float w1,w2,w3,w4,wt;

w1 = -((Vx/Rw)/(2*Pi))*60;

w2 = -1*w1;

w3 = w2;

w4 = w1;

wt = ((Wz*R4wd/Rw)/(2*Pi))*60*1.2222;

w1 += wt;

w2 += wt;

w3 += wt;

w4 += wt;

Motor_SetSpeed(1, w1);

Motor_SetSpeed(2, w2);

Motor_SetSpeed(3, w3);

Motor_SetSpeed(4, w4);

Motors_Action();

}

 

int main(void)

{

WPB_Init();

while(1)

{

for(i=0;i<2;i++)

{

Lux[i] = Sensor_Lux(i+1);

OLED_Int(0,i,Lux[i],5);

}

if(Lux[0]<1500)

{

FourWD(0.1, 2*Pi/20);

}

else if(Lux[1]<1500)

{

FourWD(0.1, -2*Pi/20);

}

else

{

FourWD(0.1, 0);

}

DelayMs(10);

}

}
(1) 代码开头先include系统函数头文件“Wp_Sys.h”。

(2) 定义五组变量:第一个Lux[2]数组,用来读取两个灰度检测传感器的测量光通量。第二个i作为后面for循环的临时变量。第三个R4wd是机器人旋转时轮子施力点到机器人中心的水平距离,这里为0.165米;第四个Rw为橡胶轮半径,这里为0.029米;第五个Pi为圆周率系数。

(3) 定义一个函数void FourWD(float Vx, float Wz)。第一个参数Vx是机器人直行的速度,第二个参数Wz是机器人旋转的速度。这个函数会根据这两个输入值解算出四个电机应该输出的转速,并驱动四个电机执行这个计算结果。

(4) 在void FourWD()函数里,可以看到代码分为三个部分:第一部分是根据Vx计算四个电机速度w1、w2、w3和w4,计算的公式参照前面推导结果()。需要注意的是按照公式计算出来的数值结果单位为(弧度/秒),而启智机器人的电机模块驱动函数的输入参数是(转/分)。所以代码里能看到对计算结果进行了一个换算,先除以2*Pi,单位变成(转/秒),再乘以60,单位变成(转/分)。第二部分代码是根据Wz计算机器人电机速度,公式参照前面的推导结果。同样的,计算完毕后还需要进行一次换算,把单位从(弧度/秒)换算成(转/分)。换算后的结果,直接累计到前面的电机速度w1、w2、w3和w4里。第三部分代码是执行计算结果,调用函数Motor_SetSpeed()为四个电机设置目标转速,再调用函数Motors_Action()指示电机开始执行目标转速。

(5) 在主体函数main函数中,先调用系统初始化函数“WPB_Init()”。

(6) 构建一个while循环,在这个循环中持续的读取传感器数值并驱动底盘做出反应。第一步是用for循环调用Sensor_Lux()函数读取两个灰度检测传感器的数值并保存在数组Lux[2]中,数值单位为10mLux。调用OLED_Int()函数将两个检测数值显示在控制器的OLED屏幕上,一共两行每行显示一个数值。第二步就是使用if判断两个传感器的测距值是否低于阈值,这里阈值的选取是数值1500,即15000mLux。这个阈值需要通过实验测得,实验方法就是用灰度传感器实验的程序,去测量黑色轨迹线和背景地面的具体数值。通常黑色轨迹线的检测值在1000以下,而浅色背景的检测值应该在2000以上,阈值1500是取其中间值。下面开始黑线循迹的实现逻辑,当左侧灰度传感器的测量值Lux[0](对应Adc1)低于阈值时,说明黑色线即将从左侧偏出,这时调用FourWD(0.1, 2*Pi/20)驱动机器人以0.05圈/分钟的速度向左转,同时保持0.1米/秒的直行速度,这样能让机器人继续回到轨迹线上来。同样的,当右侧灰度传感器测量值Distance[1](对应Adc2)低于阈值时,说明黑色线即将从右侧偏出,这时调用FourWD(0.1, -2*Pi/20)驱动机器人以0.05圈/分钟的速度向右转,同时保持0.1米/秒的直行速度,这样能让机器人继续回到轨迹线上来。最后,如果两侧传感器的测量数值都大于阈值,可认为机器人还在黑线上,调用FourWD(0.1, 0)驱动机器人以0.1米/秒的速度继续直行。while循环的最后,调用DelayMs(10)让循环停顿10毫秒,把这个循环周期控制在0.01秒左右,让程序能够及时响应。

3.  编译这个工程,确认程序没有错误能顺利编译。

4.  将启智控制器通过下载器和电脑连接。打开启智控制器电源,让控制器上电。

5.   在Keil uVision4工具栏里点击“LOAD”下载按钮,将编译好的程序下载到控制器里。当Keil uVision4左下角状态栏里的下载进度进行完成后,控制器会重新启动,屏幕显示开机信息。此时将启智控制器断电,拔掉下载线。

6.  将黑色轨迹线贴在白色或浅色平面上,将机器人放置于黑线的正上方,让黑色轨迹线位于左右两个灰度检测传感器的中间位置。

 

结论

1. 程序运行后,机器人默认是直行状态。

2. 机器人移动过程中,当移动到黑线处于左侧灰度传感器下时,机器人会往左偏转,让黑线重新回到两个灰度传感器中间。当移动到黑线处于右侧灰度传感器下时,机器人会往右偏转,让黑线重新回到两个灰度传感器中间。

3. 这个简单的程序逻辑只能实现一个低速的循迹功能,如果速度提高的话,还需要做哪些优化,可以思考思考。(提示:增加灰度传感器数量能够让机器人对黑线偏离程度有更细腻的判断。)

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

评论列表

为你推荐

WAIC达观数据论坛 | 平安金服余伟:智能客服,不看特效看疗效

WAIC达观数据论坛 | 平安金服余伟:智能客服,不看特效看疗效

​​​​​​​在2020年世界人工智能大会云端峰会中,达观数据与浦东青联联合举办了 “智能时代,语你同行”行业论坛,围绕语言智能,在云端与多位行业专家与学者展开了一场精彩线上交流盛宴。

2022-11-21 16:01:13

小心你的工作即将被RPA所取代,保住饭碗要紧!

小心你的工作即将被RPA所取代,保住饭碗要紧!

关掉电脑,走出办公室,向着明天的工作,于今天别无二致,日复一日,年复一年,枯燥无味,但如今发展迅速,这些都不是问题,RPA可以帮助你解决这些烦恼。RPA(机器人流自动化流程)计算,复制,粘贴等这种重复性繁琐操作可以交给它来完成。

2020-03-18 16:52:48

浅谈Rpa有效助力企业员工技能转型

浅谈Rpa有效助力企业员工技能转型

在这个科技化的时代,企业进行科技化转型是大势所趋的,那么应该要怎么进行科技化转型呢,本文就来谈论一下如何利用rpa软件,有效的助力企业员工的技能转型。 当员工刚刚开始了解RPA,他们可能会觉得机器人会影响到他们现有的工作,甚至想到是否因此公司裁员。但是可

2022-11-22 15:33:47

那你知道智能门锁的主要功能都有那些吗

那你知道智能门锁的主要功能都有那些吗

现在,智能门锁更多地进入到我们的生活中了,本文,就主要介绍一下智能门锁的功能。 智能门锁通常使用的基本功能为,可以供多人指纹开门,一家里或者办公室往往不只一两个人。产品质量要稳定,性能好,可以分权限开门,不可能让户主和保姆、清洁工具有一样的开门管理权限,

2022-11-21 13:59:40

你知道机器学习按应用领域分类有哪些吗?

你知道机器学习按应用领域分类有哪些吗?

从机器学习的执行部分任务类型反映来看,大部分的应用研究基本上集中于以下两类:分类和解决问题的能力。 机器学习相应的学习目标是学习用于分类的标准(如分类规则),分类工作任务就是要求进行系统设计依据已知的分类管理知识对输入的未知模式(该模式的描述)作分析,以

2022-11-22 09:51:50

图像识别技术在安防应用中功不可没

图像识别技术在安防应用中功不可没

们正处于技术发展有着决定性的影响的时代,技术变化如此之快,我们几乎无法跟上它的步伐,更别说预测未来。其中有着强大的影响力和吸引力的技术之一就是图像识别了,可谓是发展迅速。 什么图像识别?简言之,使用计算机执行图像处理,分析和理解,来识别不同模式目标和对象

2020-04-21 17:18:44

严选云产品

亿信华辰智慧医疗卫生解决方案 亿信华辰智慧医疗卫生解决方案,理清医疗数据的来龙去脉,可查询的“字典”, 形成全院一致的统—描述,共同定义和维护,形成质量规则定义、检核、整改、度量反馈的闭环机制。数据的交换、传输、以及数据ETL,约定数据的密级、传输、权限等,保障数据的安全使用,以全局视角总览医院数据资产的规模和构成。
售后宝智能客户服务管理平台 售后宝智能客户服务管理平台,便捷服务体验,服务响应翻一倍,进度实时可视,杜绝信息不对称。加快执行效率,持续提升客户满意,服务全程监控,驱动服务质量升级。加强质量管控,打造优质品牌口碑。
新一代智能大数据云平台 Transwarp Data Cloud TDC是星环科技新一代智能大数据云平台,专注提供多租户式云上大数据服务,以及多行业全方位解决方案,满足各种数据处理场景。
腾讯微瓴智慧办公园区解决方案 腾讯微瓴智慧办公园区解决方案,通过“物联网+互联网”的整合和连接,提供“数据驱动,主动服务” 为特征的智能化的智慧办公楼宇解决方案。智慧办公楼宇中的应用场景和企业微信小程序、小程序天然连接;通过企业微信随时随地在手机上进行公告、打卡、审批、汇报、文件盘等操作,轻OA应用将推进无纸化办公。
深信服安全感知管理平台SIP 深信服安全感知管理平台SIP,是一款集“高级威胁检测中心”和“安全运营中心”二合一的平台,以UEBA、AI、威胁情报和安全编排技术为核心,为用户打造 精准检测,简单易用的 “本地安全大脑”,提供可感知、易运营、联动闭环的安全态势感知平台。
蓝墙互联云端地产smart ERP地产项目管理云平台 蓝墙互联云端地产smart ERP地产项目管理云平台,及时预警现金流风险,穿透业务系统追根溯源,支撑经营决策;内置现金流测算规则与协同步骤,各步骤完成时间与成果系统留痕,减少扯皮,提高跨部门协同效率;业务系统实际发生数据自动更新至动态现金流,数据真实且高效。

甄选10000+数字化产品 为您免费使用

申请试用