前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >Jetson Nano心得分享:对机电设备的控制

Jetson Nano心得分享:对机电设备的控制

作者头像
GPUS Lady
发布于 2023-07-08 07:36:59
发布于 2023-07-08 07:36:59
1.2K00
代码可运行
举报
文章被收录于专栏:GPUS开发者GPUS开发者
运行总次数:0
代码可运行

边缘应用中,机电控制是一项非常重要的能力。当我们的智能设备在远端环境中,根据所识别的状况变化去执行应对措施,更大程度度地降低对人为操作的依赖,这些都是能产生更大经济效益的应用,包括无人驾驶车、自动机械手臂等等。

实际工业应用场景中的控制元件是非常多样化的,不过在实验室或小规模应用时,“脉冲宽度调制(PWM)模拟控制方式”是比较常用的方法,其执行原理在网上有非常丰富的专业知识,这里不多做赘述,只提供基本的控制方法与代码。

为了配合Jetson Nano完成最基本的机电控制实验,我们需要额外采购一片PCA9685控制板与一组简单的云舵机平台,二者合计大约30元人民币,如果想要实现“摄像头跟踪目标”功能,就需要再添购一个100多元的CSI摄像头(IMX-219规格),这些部件都能轻易在网上购买,并且组装难度不高,请读者自行处理。

Jetson Nano开发套件提供一组与树莓派兼容的40针扩充接口,如上图左黄色框标出的位置。透过I2C总线进行连接是最便捷的方式,Jetson Nano提供两组I2C总线,为了让整个接线最简单,这里使用针脚3(SDA)与针脚5(SCL)这组控制总线,搭配针脚1(3V3)、针脚2(5V)与针脚6(GND)的供电针脚,用“双母头杜邦线”为Jetson Nao与PCA9685按照下图进行连接,最后在PCA9685的16个组控上任选两个,分别插上不同舵机接线组,这样就完成整个实验设备的组合步骤。

以下有三个注意重点,请读者务必遵守,否则会有设备损坏的风险:

  1. 必须在Jetson Nano关机状态下进行接线;
  2. PCA9685的VCC是为了给控制板正常运行的电源,必须接上3V3的供电;V+则是提供给舵机进行运转的电源,得提供5V供电。二者不能弄混淆,否则除了会烧毁控制板之外,还可能损坏Jetson Nano。
  3. 每个舵机都会提供一组“3线”接头,使用“黄/红/黑”三种颜色杜邦线进行打包,要接上PCA9685控制板上,也得与上面所标示的颜色一致,如果接反了也可能造成设备损毁。
  4. 连接Jetson Nano与PCA9685控制板的杜邦线,最好根据“颜色管理”的基本原则,如果5根线全部使用一个颜色,就很容易弄错。推荐根据以下的颜色原则:
  • GND(底线):使用黑色或白色;
  • V+(5V):最高电压,使用深红色或红色;
  • VCC(3V3):控制板电源,使用橙色;
  • SDA与SDC:选择两个与上面三组容易识别的颜色即可,例如蓝色、黄色等

完成上述接线后,启动Jetson Nano时也会看到PCA9685控制板上的亮着电源灯(如下图),现在就能开始进行下一阶段的工作。

现在我们用远程控制Jetson Nano的方式,先检测一下目前设备连接的状态。由于,这个步骤需要使用i2c-tools工具,因此先执行以下指令进行安装:

代码语言:javascript
代码运行次数:0
复制
$ sudo apt install -y i2c-tools

Jetson Nano提供I2C_1(序号为0)与I2C_2(序号为1)两组总线,前面的接线是使用I2C_2这组,因此查询总线上所连接的设备有哪些时,需要使用以下指令:

代码语言:javascript
代码运行次数:0
复制
$ i2cdetect  -y  -r  1

执行后会看到如下图的状态,在“0x40”与“0x70”两个地址出现数字,表示检测到相关的设备。可以到hhttps://i2cdevices.org/addresses 看看这两组16进位数字代表什么设备?发现PCA9685控制芯片涵盖了从0x40到0x7f共64个地址,现在显示的状态表示已经检测到我们连线的控制板。

为了要能正常使用i2c总线,还需要执行以下的权限配置:

代码语言:javascript
代码运行次数:0
复制
$  sudo  usermod  -aG  i2c  $USER
$  sudo  groundadd  -f  -r  gpio
$  sudo  usermod  -aG  gpio  $USER

然后请执行以下指令安装所需要的Python库:

代码语言:javascript
代码运行次数:0
复制
$  sudo apt install -y python3-pip 
$  sudo pip3 install -U pip
$  sudo -H pip3 install adafruit-circuitpython-servokit

现在就可以在Jetson Nano上,透过PCA9685控制板来控制云台的两个舵机。下面是最简单的控制代码,假设控制水平转动与垂直转动的舵机,分别接到控制板的0号组与1号组上,下面代码就能测试云台的最基本转动状态:

代码语言:javascript
代码运行次数:0
复制
from adafruit_servokit import ServoKit
myCameraKit=ServoKit(channels=16)
import time 

for i in range(0,180,5) :              # 正向旋转:从0度到180度
	myCameraKit.servo[0].angle=i    # 水平转向,请根据实际连线调整编号
	myCameraKit.servo[1].angle=i    # 垂直转向,请根据实际连线调整编号
	time.sleep(.1)

for i in range(180,0,-5) :             # 反向旋转:从180度到0度
	myCameraKit.servo[0].angle=i    # 水平转向,请根据实际连线调整编号
	myCameraKit.servo[1].angle=i    # 垂直转向,请根据实际连线调整编号
	time.sleep(.1)

代码正常运行的话,就会看到云台从左上角缓步移动到右下角,然后再缓步回到起点位置。这段代码十分简单,只要改变舵机的“angle”值,就能调整云台的位置。

这里有几个需要注意的地方:

  1. 在组装舵机之间,最好先进行个别归零校正工作,但因每种舵机的参数不尽相同,需要请供舵机应商提供指导。
  2. 舵机位置是根据绝对值而非相对值,不能使用“现在角度±多少度”的处理方式,而是提供“目标角度”的数值;
  3. 角度值限制在0~180之间的整数与小数,超过范围就不执行;
  4. 有时因组装件本身的影响,会限制某个方向的最大旋转角度,使用者最好做个记录,尽量避免工作时提供的角度值大于限制,否则容易造成舵机的损坏。例如笔者所搭建的垂直舵机,最大的角度为150度,超过这个数值就会造成舵机卡跳现象,如果长期处于这种状态就会烧毁,必须予以限制。
  5. 当PCA9685接收到Jetson Nano传输的角度值,会立即让舵机转到指定值的位置,过程十分迅速,因此上面代码中引入“time.sleep(.1)”来提供延迟,能够让我们更清晰看到云台转动过程,实际操作时也可以取消这个延迟。

现在就应该能掌握Jetson Nano控制机电设备的基础能力,接下来先关闭Jetson Nano电源,然后将IMX 219规格的CSI摄像头安装到云台上,并将软排线接到Jetson Nano的CSI插槽上(如下图)。

下面提供一段最简单启动CSI摄像头的代码:

代码语言:javascript
代码运行次数:0
复制
import cv2

cap = cv2.VideoCapture(                # 调用libargus库指令,并给定摄像头编号
	"nvarguscamerasrc ! "    
	"video/x-raw(memory:NVMM), "  	# 数据直接存入显存
	"width=1920, height=1080, format=NV12, framerate=30/1 ! "  # 尺寸/格式、帧率
	"nvvidconv flip-method=0 ! "                             # 图像旋转模式
	"video/x-raw, width=1280, height=720, format=BGRx ! "       # 显示图像尺寸、格式         
	"videoconvert ! video/x-raw, format=BGR ! appsink"          # 显示图
	)   

while True:
    _, frame = cap.read()                # 读取摄像头帧
    cv2.imshow("CSI Camera", frame)      # 显示帧
    key = cv2.waitKey(1) & 0xFF
    if key == 27:
        break
cap.release()
cv2.destroyAllWindows()

一种比较简单的做法,执行这个CSI摄像头的显示代码,然后再开一个终端去执行前面的云台控制代码,这时候就能看到摄像头里显示的内容,会随着舵机的转动而改变。

进阶的技巧可以将两个代码进行组合,并且可以根据摄像头捕捉指定物体,例如一个黄色圆形物,然后计算目标物与屏幕中心点的距离,转换成需要转动的角度,再与现在的角度进行加总后算出新的角度,发送给PCA9685控制板让两个舵机进行位置的调整,这样就能创建“目标跟踪”功能的摄像头云平台应用,主要精力会耗费在角度的计算上面,总的来说难度并不是很大,适合初学者细心琢磨。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
终极DIY打造Jetson拉力赛车全过程(2)——RACECAR转向控制
本文作者为kangalow,由Jetsoner开发者论坛版主xID翻译 本文中的圆括号内的内容均为译者注释,方括号内的内容为原文作者注释 在Jetson RACECAR项目的第一篇文章中终极DIY打造
GPUS Lady
2018/03/30
1.2K0
终极DIY打造Jetson拉力赛车全过程(2)——RACECAR转向控制
树莓派连接驱动板控制舵机
硬件 16路PWM Servo 舵机驱动板模块PCA9685 树莓派 MG90S 9g舵机 连接 GND -> RPi GND SCL -> RPi SCL1 SDA -> RPi SDA1 VCC -> RPi 3.3V V+ -> RPi 5V VCC 引脚只是为芯片供电,如果要连接舵机或者 LED 灯,就使用 V+引脚供电,V+引脚支持 3.3~6V 的电源(芯片的安全电压时 5V)。 建议通过电源接线柱外接电源供电。 大多数的舵机设计电压都是在 5~6V,尤其在多个舵机同时运行时,跟需要有大功率的
一朵灼灼华
2022/08/05
8610
NVIDIA JetBot系列教程(1):系统介绍
在2019年NVIDIA推出Jetson Nano边缘计算设备之后,这套开源的Jetbot智能无人车教学系统也随之而生,为市场提供一套最优性价比的教学系统,不仅结合时下最先进的深度学习智能识别系统,并且使用最精简的硬件元件,让总体搭建成本锁定在1,500人民币以内,相较于市面上动辄5,000元以上的搭建成本,Jetbot就显得十分亲民。
GPUS Lady
2021/11/08
1.8K0
NVIDIA JetBot系列教程(2):软件环境安装
本次Jetbot实验全程都在 Jetson Nano 2GB开发套件上面运行。在组装Jetbot教学系统之前,最好先把Jetbot系安装到JetsonNano 2GB上,这样可以先对每个元件进行独立的测试,确认元件能正确工作之后再进行组装的步骤。
GPUS Lady
2021/11/08
1.5K0
【SG90模拟舵机控制及PCA9685模块的使用】[通俗易懂]
网上不乏对此种舵机的介绍,比如下面这篇文章: 浅谈用单片机控制SG90舵机(原理+编程)
全栈程序员站长
2022/11/03
2.7K0
英伟达Jetson Nano Camera设计
今天拿下来英伟达Jetson系列的相机设计指南,看看咋设计的,后面还有想抄袭的梦想,一起来看看。(PS:鄙人没啥高速总线的设计经验)。
云深无际
2023/02/27
1.1K0
英伟达Jetson Nano Camera设计
用Jetson NANO做个机器狗?
注意是“准备”阶段....Wilk表示:This Project is heavily work in progress and may change every day. It is NOT a working or even finished Project you might want to use.(也就是说,很有可能这个项目可能做着做着就失败了....)
GPUS Lady
2019/07/16
2.4K0
用Jetson NANO做个机器狗?
Jetson Nano 从入门到实战(案例:Opencv配置、人脸检测、二维码检测)
Jetson Nano是一款体积小巧、功能强大的人工智能嵌入式开发板,于2019年3月由英伟达推出。预装Ubuntu 18.04LTS系统,搭载英伟达研发的128核Maxwell GPU,可以快速将AI技术落地并应用于各种智能设备。相比于Jetson之前的几款产品(Jetson TK1、Jetson TX1、Jetson TX2、Jetson Xavier),Jetson Nano售价仅需99美元,大幅减少了人工智能终端的研发成本。因此,一经推出,便受到了广泛的关注。其官网地址为:Jetson Nano Developer Kit for AI and Robotics | NVIDIA
全栈程序员站长
2022/06/24
13.2K0
Jetson Nano 从入门到实战(案例:Opencv配置、人脸检测、二维码检测)
如何给NVIDIA JetsonOrin Nano开发套件安装CSI摄像头
【教程】如何在NVIDIA Jetson Orin NANO上把系統刷到SSD上?
GPUS Lady
2023/05/30
1.5K1
如何给NVIDIA JetsonOrin Nano开发套件安装CSI摄像头
树莓派视觉小车 — 人脸追踪(人脸识别、PID控制舵机运动)[通俗易懂]
Haar特征值反映了图像的灰度变化情况。例如︰脸部的一些特征能由矩形特征简单的描述,眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。
全栈程序员站长
2022/08/25
4.3K0
树莓派视觉小车 — 人脸追踪(人脸识别、PID控制舵机运动)[通俗易懂]
NVIDIA推出微型AI小猛兽:Jetson Orin NANO开发套件
3月21日GTC大会,NVIDIA正式发布了Jetson Orin NANO开发套件。如果说Jetson AGX Orin开发套件价格过于昂贵,让很多开发者、创客、教育工作者望而却步,那么Jetson Orin NANO开发套件就绝对不要错过啦
GPUS Lady
2023/05/29
2K0
NVIDIA推出微型AI小猛兽:Jetson Orin NANO开发套件
Jetson Nano心得分享:学习计算机视觉技术
视觉类与对话类是人工智能技术的两个最重要应用领域,尽管ChatGPT引发对话类人工智能应用风潮,但视觉类的智能应用依旧是边缘应用的重点,为我们识别并收集边缘角落的各种信息。
GPUS Lady
2023/05/30
5350
Jetson Nano心得分享:学习计算机视觉技术
在Jetson NANO上运行Yolov5,通过IMX477 CSI 相机进行目标检测
https://towardsdatascience.com/yolov5-object-detection-on-nvidia-jetson-nano-148cfa21a024
GPUS Lady
2021/09/22
5.3K2
PCA9685–16路 PWM模块舵机驱动板–STM32 IIC接口模块[通俗易懂]
PCA9685是一款基于IIC总线通信的12位精度16通道PWM波输出的芯片,该芯片最初由NXP推出时主要面向LED开关调光,
全栈程序员站长
2022/11/17
2.1K0
PCA9685–16路 PWM模块舵机驱动板–STM32 IIC接口模块[通俗易懂]
天才老爸用Jetson NANO给娃做了一个会说话的泰迪熊
这个天才老爸又出手了! 还记得我们已经报道过他给娃做的两个项目么? 看这个天才老爸如何用Jetson NANO做一个带娃机器人 老爸用Jetson AGX Xavier开发套件给娃插上翱翔的翅膀 这次,他用GPT-3 和计算机视觉,利用Jetson NANO,将儿子 Dexie 的泰迪熊 Ellee 改造成了一个号称“具备人类智慧”的机器人! 它不仅可以识别一个人以进行更个性化的对话,还能从对话中提取无法识别的人的名字,并注册他们的名字和面孔以备将来遇到,自动扩展她的社交网络! 是不是很有意思?让
GPUS Lady
2022/07/18
1.6K0
天才老爸用Jetson NANO给娃做了一个会说话的泰迪熊
使用.Net驱动Jetson Nano的OLED显示屏
最近几年,边缘计算的需求急剧爆发。人工智能、物联网和 5G 的演进给边缘计算带来了无限的可能性。因为工作原因,有幸在2019开始接触了英伟达 Jetson 家族的各种边缘计算设备:Nano,TX2,AGX,NX等,其操作系统使用的是 Ubuntu 18.02。我们可以作为独立的小型服务器使用,试问又有哪一个程序猿会拒绝拥有一台自己的小电脑呢?在其上,特别是拥有GPU的服务器上,我们可以折腾无限的可能。
桑榆肖物
2022/11/18
8940
使用.Net驱动Jetson Nano的OLED显示屏
用树莓派DIY波士顿机器狗,帮你省下50万:教程开源,人人皆可上手
一种是小跑姿态。这种4相步态下,机器狗对角线上的两腿同时移动,能达到更快的移动速度。
磐创AI
2020/08/24
1.1K0
用树莓派DIY波士顿机器狗,帮你省下50万:教程开源,人人皆可上手
NVIDIA Xavier NX模组要出货了,盘点一下支持NX模组的载板
我们已经透露了NVIDIA Xavier NX的最新状况:关于NVIDIA AGX Xavier NX的最新进展
GPUS Lady
2020/05/07
2.6K0
JetRacer (Jetson构建的AI赛车)+安装源码分析
因为执行的脚本都差不多,我给你讲一下是什么意思。先把目录转移到家目录,然后clone对应的库。接着转移到下载的库内,执行python的安装脚本
云深无际
2021/02/23
6000
JetRacer (Jetson构建的AI赛车)+安装源码分析
用Jetson Nano 做一个环境气象站
本项目来自: 原文: https://medium.com/@Smartcow_ai/a-jetson-nano-ambient-weather-station-part-2-d3233104b6ab 项目背景: Nvidia 发布的面向开发人员的 Jetson Nano 2GB套件具有出色的性价比,提供 GPU 加速处理器以及大量 GPIO 引脚和硬件接口,可通过板载 40 引脚接头轻松访问。作者想构建一个基于 Jetson Nano 的环境气象站。在后面的部分中,作者将添加互联网连接和一些人工智能来
GPUS Lady
2022/04/21
9550
用Jetson Nano 做一个环境气象站
推荐阅读
相关推荐
终极DIY打造Jetson拉力赛车全过程(2)——RACECAR转向控制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验