galilee
这个作者很懒,什么都没留下…
展开
-
树莓派C++开发机器人智能小车(26)机器人小车追踪目标
视频演示:https://edu.51cto.com/sd/4920a能够追踪到毛绒玩具的位置后,剩下的是我们使用x和y坐标值作为输入,指挥机器人小车跟随它。要跟着目标,还要确保机器人小车与目标之间在合适的距离上,这样不会碰撞红牛或者拿着红牛的人。为此也要把超声波传感器安装在机器人上。这个项目里,我已经把超声波传感器trigger引脚连接到了wiringPi引脚12,echo引脚连接到wiringPi引脚13,其间还有分压电路。目标追踪机器人程序基本上是避障程序和追踪程序的结合。程序为ObjectFol原创 2022-03-13 17:03:51 · 1853 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(24)目标追踪机器人原理
我们能够查看树莓派摄像头视频原始数据并阈值化图像和后,结合两者创建目标追踪机器人程序。我们放置一个红色毛绒玩具在摄像头前面,通过在玩具中心创建点(使用moments)方式追踪球。移动玩具上下左右,坐标点会随之变换,后面我们使用这些点作为输入,让机器人跟随球目标跟随目标之前,机器人应该首先能够使用树莓派摄像头追踪到它。写程序之前,我们看看如何追踪目标。我们以下图为例讲解目标跟踪原理。第一步我们把摄像头分辨率调整为640x480:调整宽和高后,把摄像头屏幕水平等分3个部分:X轴坐标值从0到.原创 2022-03-06 17:03:51 · 3181 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(23)物体探测程序
下面是探测物体程序文件ObjectDetection.cpp内容,编写这个程序同时,还要把识别物体对象图像拷贝到与程序同一个文件夹,比如本例图像文件名是ball.jpg:#include <iostream>#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv原创 2022-02-20 13:44:59 · 1921 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(22)采集物体RGB像素值
现在写一个程序从一个图像检测一个带颜色的物体,这个物体可以是任何一种物体,但要确保有单一颜色(推荐红,绿,蓝),而不是多种颜色。如图所示,可以是红色毛绒玩具,可以是一个球。拍摄时确保物体上没有因光线而形成的白色补丁,否则当阈值化时会有导致问题。一旦你拍摄好满意的图片,发送到电脑上。比如我们以毛绒玩具红牛为例,检测它的不同点找出RGB像素值,按下面步骤:1.打开“画图”,打开已保存红牛的图片;2.使用颜色提取工具吸管,点击红牛的任意位置获取颜色样本;画图的工具栏【颜色1】会显示点击的颜色样本。原创 2022-02-16 22:59:40 · 1762 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(21)OpenCV调用树莓派摄像头
安装v4l2驱动器OpeCV库默认识别插在RPiUSB口的USB摄像头,但不能直接探测RPi摄像头。为了识别RPi摄像头,我们需要在模块文件加载v412驱动。输入下面命令打开这个文件:sudo nano /etc/modules要加载v412驱动,在下面文件里添加bcm2853-v412按下Ctrl+O后回车保存文件,按Ctrl+X退出文件,然后重启RPi。一旦重启,RPi摄像头会被OpenCV库识别OpenCV摄像头原始数据程序我们现在写一个简单C++程序浏览来自Pi摄像头的摄原创 2022-02-13 20:51:08 · 2486 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(20)OpenCV重要函数
前面我们已经安装并初试了OpenCV,在把OpenCV应用到我们的机器人小车之前,需要理解OpenCV一些主要函数。由于OpenCV博大精深,我们仅学习课程所需要的函数。1. imread():imread()函数用于从摄像头或本地读取图片或视频。在imread()函数里,必须提供图片位置。如果图片和程序文件在同一文件夹,仅需要提供图片文件名。如果程序和图片存放在不同文件夹,就需要完整路径的图片文件名给imread函数。imread()函数读取的图片数据存放在矩阵变量里。如图片和.cpp文件在同一文件夹原创 2022-02-11 13:04:10 · 1080 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(19)OpenCV的安装和测试
OpenCV(Open Source Computer Vision Library)技术是人工智能发展的一个方向,它是源代码开放的计算机视觉库,处理图像和视频的功能十分丰富,它为机器人安装了智慧的眼睛原创 2022-02-07 23:25:16 · 2206 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(18)拍摄图片和视频
一、拍照打开命令窗口输入下面命令:raspistill -o image1.jpg这个命令使用raspistill拍摄静止照片,保存为image1.jpg。由于命令行窗口指向pi目录,这个图片保存在pi文件夹。打开pi文件夹会看到image1.jpg。用RPi摄像头获取的图像的分辨率3280x2464像素。打开照片文件image1可以看到刚才拍摄的图像:如果要水平翻转图像,命令行加上-hf,如果想竖直翻转,加上-vf。输入命令:raspistill -hf -vf -o im原创 2022-02-05 12:39:09 · 1487 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(17)配置安装摄像头
现在我们给树莓派安装摄像头,给机器人安装眼睛。如果是USB摄像头可以直接使用,如果是树莓派摄像头,需要开启配置摄像头选项,配置步骤如下:打开命令行窗口输入:sudo raspi-config 后便打开了树莓派配置 2.在配置窗口选择Interface Option 后回车打开新的窗口: 3.选择Camera选项然后回车: 4 .在弹窗选择Yes然后回车开启Camera选项 5.选择OK然后回车 配置好后,开始连接树...原创 2022-01-31 13:48:49 · 2566 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(16)使用界面控制机器人小车
我们练习了控制LED, 现在我们看看如何使用QT5控制小车。这个项目的clicked() 方法、pressed()方法、released()方法用于操作小车,为此我们有下面可操作选项:如果我们仅使用clicked()方法创建项目,需要创建5个按钮:向前、向后、左转、右转、停止。每次停止机器人需要按下停止按钮。 如果我们仅使用pressed()和released()方法,需要创建4个按钮:向前、向后、左转、右转。我们不需要停止按钮,因为一直按下按钮,小车运动;释放按钮小车停止。 我们也可以使用clic原创 2022-01-28 16:10:36 · 985 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(15)嵌入式QT界面按钮事件
开始建造机器人智能小车之前,选择好的小车底盘是最重要的活动之一。机器人底盘就像人类的骨骼。我们的骨骼由骨头组成,为我们的器官提供支撑。同样的,好的底盘会提供为电子组件提供合适的支持并保持一体。我们可以直接从网上购买,挑选的时候注意:(1)有的智能小车是单个底盘,有的底盘由两块板子组成(上板和下板),这样可以放置更多的电子组件但价格不一样; (2)选择的机器人底盘仅支持2个DC电机的就足够了,如上图所示。支持4个DC电机的机器人底盘也可以,但你需要额外的电机驱动器驱动4个轮子。(3)选择...原创 2022-01-27 13:18:37 · 1127 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(15)QT的安装和配置
机器人能够向不同方向移动后,可以沿着一个方形路径追踪。为此,机器人按这样移动:向前->右转->向前->右转->向前->右转->向前->停止。原创 2022-01-25 19:11:15 · 752 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(14)ncurse控制小车程序
树莓派C++开发机器人智能小车(14)ncurse控制小车程序原创 2022-01-24 21:10:50 · 536 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(13)ncurses控制LED和蜂鸣器
使用ncurses控制LED和蜂鸣器编译测试了第一个ncurses程序后,现在写程序控制诸如LED和蜂鸣器这样的硬件,使用键盘作为输入控制。我们需要两个LED和一个蜂鸣器,连线如图:第一个LED的正极引脚连接到wiringPi引脚15,负极连接到物理引脚6(地线)第二个LED的正极引脚连接到wiringPi引脚4,负极连接到物理引脚14(地线)、蜂鸣器一个引脚连接到wiringPi引脚27,另一个引脚连接到物理引脚34(地线)程序文件名为LEDBuzzer.cpp:#includ原创 2021-12-10 22:58:19 · 509 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(12)ncurses初步
用计算机控制机器人是奇妙的事情,计算机称为远程控制者,机器人根据键盘提供的命令移动。我们学习两种使用计算机远程控制机器人的技术:键盘和鼠标。游戏玩家都知道,有些游戏如射击、格斗类使用键盘操作的,有些游戏用鼠标操作的,各有特点。我们先学习使用键盘操作,这需要安装ncurses库。new curses(ncurses)是一个程序库,它让开发者创建基于文本的用户界面。Ncurses库一个关键功能是用它获取来自键盘的输入,在输出端控制硬件。我们要使用ncurses库编写程序检测键盘,控制机器人。例如,如果按下向上箭原创 2021-12-08 21:30:52 · 466 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(11)超声波传感器连线和编程
edu.51cto.com/sd/4920aHC-SR04传感器引脚由4个:VCC,GND,发射,echo, RPi和超声波传感器这样连接:连接传感器VCC引脚到引脚4 连接传感器GND引脚到引脚9 连接传感器Trig引脚到wiringPi引脚12传感器echo引脚经过分压器后连接到wiringPi引脚13。分压器电路的两个电阻分别是1KΩ和2KΩ。分压器电路用于把输入的5V信号降低到3.3V,避免烧坏主板,它是从echo引脚到RPi如下图:用于把输入电压转为3.3V的公式:.原创 2021-10-31 17:34:21 · 779 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(10)避障--超声波传感器
超声波传感器用于测量与障碍物或目标之间距离。一个超声波传感器由发送器和接收器组成,发送器发出超声波脉冲(也称为超声波声音),当碰到附近障碍物反弹回来被接收器接收(回声)。传感器根据发送和接收时间间隔确定与目标的距离。我们用于项目的超声波传感器称为HC-SR04 超声波传感器,是应用最广泛之一的超声波传感器。它可以测量距离范围0-180cm,分辨率大约0.3cm.它的频率大约40KHz。HC-SR04传感器有4个引脚:VCC引脚地线引脚触发引脚回声引脚触发引脚连接到发...原创 2021-10-30 22:24:39 · 4422 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(9)小车各种运动编程
后退让机器人后退,仅需交换HIGH和LOW信号,反之亦然:digitalWrite(0,LOW); //PIN O & 2 will move the Left MotordigitalWrite(2,HIGH);digitalWrite(3,LOW); //PIN 3 & 4 will move the Right MotordigitalWrite(4,HIGH);delay(3000);前两行代码让左侧电机后退,接着两行让右侧电机后退。最后一行指示机器人会移原创 2021-10-27 19:46:11 · 795 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(8)小车前进编程
现在我们已经理解了H-桥电路,现在写一个程序Forward.cpp驱动机器人前进:#include <stdio.h>#include <wiringPi.h>int main(void){wiringPiSetup();pinMode(0,OUTPUT);pinMode(2,OUTPUT);pinMode(3,OUTPUT);pinMode(4,OUTPUT);for(int i=0; i<1;i++){digitalWrite原创 2021-10-23 17:46:32 · 792 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(7)电机驱动器连线
L298N电机驱动器包括4个输入引脚,4个输出槽(每个电机两个槽),2个电源槽。Raspberry pi连接到电机驱动器的输入引脚。DC电机两个导线连接到电机驱动器输出槽,电池盒连接到电源槽。L298N电机驱动器的4个输入引脚标记为IN1、IN2、IN3、IN4。输出槽标记为OUT1、OUT2、OUT3、OUT4。下图显示树莓派、电机驱动器、电机的连接图。如上图所示,wiringPi引脚号码0、2、3、4连接到电机驱动器的输入引脚:wiringPi No.0连接到IN1wiri...原创 2021-10-22 22:32:03 · 688 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(6)电机驱动器工作原理H-桥
L298N电机驱动器电路同时控制2个电机,它是由双H-桥电路组成,这意味着它由2个电路组成,每个对应一个电机。我们学习一个H-桥原理,如下图所示。 H-桥电路由4个开关S1,S2,,组成,这些开关根据我们提供给L298N电路的输入信号而打开或关闭。智能小车有2个电机,就有4个可能的输入组合提供给L298N IC:HIGH HIGH (1, 1)HIGH LOW (1, 0)LOW HIGH (0, 1)LOW LOW (0, 0)我们将提供HIGH(1...原创 2021-10-21 21:54:46 · 444 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(5)智能小车底盘及电机
开始建造机器人智能小车之前,选择好的小车底盘是最重要的活动之一。机器人底盘就像人类的骨骼。我们的骨骼由骨头组成,为我们的器官提供支撑。同样的,好的底盘会提供为电子组件提供合适的支持并保持一体。我们可以直接从网上购买,挑选的时候注意:(1)有的智能小车是单个底盘,有的底盘由两块板子组成(上板和下板),这样可以放置更多的电子组件但价格不一样;(2)选择的机器人底盘仅支持2个DC电机的就足够了,如上图所示。支持4个DC电机的机器人底盘也可以,但你需要额外的电机驱动器驱动4个轮子。(3)选.原创 2021-10-20 22:03:34 · 1774 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(4)开发环境的安装与测试
设置完成Raspberry Pi后,现在到了连接不同电子元件、使用C++语言编程的时候了。为了能用上C++,本章首先下载安装用于C++开发的wiringPi库,然后测试一个C++程序,需要1个LED,颜色不限,2个母-母导线。安装wiringPiwiringPi是用C写的插针式GPIO访问库,容易配置。安装完成后,树莓派GPIO针脚编号和wiringPi针脚编号不同,但一一对应。现在下载安装wiringPi:(1)点击任务栏图标打开命令行窗口(2)安装wiringPi库之前...原创 2021-10-16 18:30:11 · 625 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(3)远程登录树莓派
我们要使用raspberry pi创建可移动的机器人,如果显示器、键盘鼠标都直接连接Pi,会限制它的移动。为了不带外设,我们要经由Wi-Fi无线连接到计算机。在网络环境下,从计算机远程登录树莓派的目的是为了在树莓派上编写代码,不需要专门给树莓派配备显示器、键盘、鼠标。有两种登录方式:网线和WiFi。 首先我们下载下列两款软件并安装到我们开发用的计算机上:(1)PuTTY用PuTTY连接树莓派到Wi-Fi网络,找到Wi-Fi网络分配的IP地址,下载地址:https://www.c...原创 2021-10-14 21:51:55 · 2590 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(2)安装操作系统到树莓派
安装操作系统到树莓派上,需要一个16G的SD卡,32G更好;还要一个读卡器。视频演示:https://edu.51cto.com/sd/4920a1 在计算机上安装balenaEtcher balenaEtcher作用是先格式化SD卡,然后写入树莓派操作系统映像。最后这个SD卡插到树莓派上的SD卡插槽就可以加电启动树莓派了,过程很简单。我们首先要获得 balenaEtcher软件,打开浏览器导航到https://www.balena.io/etcher/,从如图1所示下拉列表选...原创 2021-10-13 21:42:19 · 422 阅读 · 0 评论 -
树莓派C++开发机器人智能小车(1)概述
1 概述 都说C++入门难,今天我们就来聊聊它到底难在哪儿? 语言本身是一方面,因为语法特性、规则比较多,学起来不是那么轻松。缺乏系统的开发经验是另一方面。很多人都是已经通过看书、自学掌握了一定的语言基础,接下来是如何从语法层面过渡到实战、如何快速高效地从不同的项目获取开发经验,大部分人可能卡在这一步了。C++是一种中级语言,比高级语言更加接近硬件。如果企业招聘C++语言,一般是招聘编写系统软件或嵌入式开发,这是都要和硬件打交道。学习的目的就是为了应用,企业找人也会着重考察应用层面的一些...原创 2021-10-12 21:58:19 · 2201 阅读 · 0 评论