创意之星AI控制器
使用手册
北京博创尚和科技有限公司
需要注意的是,创意之星AI控制器的使用需要有一定的Linux基本的操作基础,如果没有,请先阅读本书赠送的Linux基础指南,另外,本产品属于二次开发产品,开发需要具备一定的Python基础,如果没有,请阅读本书赠送的Python指南,感谢配合!
学习是需要循序渐进的,我们先通过一款简单的四轮小车构型来了解相应的功能,视觉AI案例统一使用四轮小车(橡胶轮)+摄像头+前方两个红外测距传感器的构型来展示,小车左侧轮子的舵机ID为1,3,正转,小车右侧轮子的ID位2,4,反转,前方两个红外测距传感器分别接入AI控制器的0,1的ADC口,GND在上,如果想实现其他构型的AI功能请根据示例程序自行开发。
详见连接AI控制器。
进入到创意之星AI控制器的机载Linux系统内,打开一个终端,打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_moveforward.py测试Python控制创意之星运动:
cd ~/up_cyzx_demo
sudo python3 cyzx_move_forward.py
可以观察到创意之星四轮小车构型前进了一段距离。
运行cyzx_move_backward.py测试Python控制创意之星运动:
cd ~/up_cyzx_demo
sudo python3 cyzx_move_backward.py
可以观察到创意之星四轮小车构型后退了一段距离。
运行cyzx_move_turn_left.py测试Python控制创意之星运动:
cd ~/up_cyzx_demo
sudo python3 cyzx_move_turn_left.py
可以观察到创意之星四轮小车构型向左自旋一定圈数。
运行cyzx_move_turn_right.py测试Python控制创意之星运动:
cd ~/up_cyzx_demo
sudo python3 cyzx_move_turn_right.py
可以观察到创意之星四轮小车构型向右自旋一定圈数。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_camera.py脚本:
cd ~/up_cyzx_demo
python3 cyzx_camera.py
Linux命令行输入,执行上面的脚本,可以启动与AI控制器上摄像头的连接。可以看到界面上展示出了摄像头采集的图像。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_apriltag_detect.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_apriltag_detect.py
Linux命令行输入,执行上面的脚本。
就可以观测到识别出了id为1的apriltag,并且创意之星四轮构型会跟随tag图标运动。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_gesture_detect.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_gesture_detect.py
能够看到手势识别的结果。
其中,如果手势是“握拳”,创意之星四轮构型会后退,而如果是“五指张开”,创意之星四轮构型会前进。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_chessboard.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_chessboard.py
将11x8棋盘格放在创意之星四轮构型前方,它会运行到棋盘格前方,并停下。
识别结果:
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_emotion.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_emotion.py
然后将表情图片放到创意之星四轮构型眼前,识别到了表情:
如果是开心的表情,创意之星四轮构型会前进,如果是生气的表情,创意之星四轮构型则会后退。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_face_detect.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_face_detect.py
然后将人脸图片放到创意之星四轮构型眼前,识别到了人脸,并可以持续跟踪。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_tracker.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_tracker.py
然后将按下空格键,框选目标,按下回车确定框选的目标。可以观察到创意之星持续跟踪目标,并转向跟随的目标。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_yolo_detect.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_yolo_detect.py
可以看到识别的结果:
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_color_qt.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_color_qt.py
可以看到摄像头实时检测画面,识别不同的颜色。这里我们使用HSV颜色空间来识别图像内的物料颜色,为了方便调试,我们在摄像头画面上嵌入了拖动条组件,并且单击画面中的要识别的物料的某个像素点,可以在控制台打印该像素点的HSV值:
根据控制台打印的HSV值,拖动窗口中的按钮,来确定一个范围
一般,我们会设置HMIN为单击像素值结果-5左右,HMAX为单击像素值结果+5左右,而S,V的范围可以适当扩大。
有耐心的慢慢拖拽,直到窗口出找到一个合适的颜色识别结果。
鼠标左键单击‘start move’按键,创意之星四轮构型会跟随者选定的颜色目标移动。
演示视频如下:
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_follow_line_qt.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_follow_line_qt.py
默认识别蓝色线条,需要像颜色识别功能一样,调整线条颜色的HSV值。点击‘start move’可以创意之星四轮构型开启运动巡线。
演示视频如下:
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_pose.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_pose.py
可以看到识别出了人体的姿态。
打开Linux用户文件夹下的up_cyzx_demo/mask文件夹,运行run.py脚本:
cd ~/up_cyzx_demo/mask
sudo python3 run.py
可以看到识别出了是否佩戴口罩。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_adc.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_adc.py
可以看到创意之星四轮构型不断前进,前方红外传感器识别到障碍物则右转,如果离障碍物过近则后退后再右转。
打开Linux用户文件夹下的up_cyzx_demo文件夹,运行cyzx_io.py脚本:
cd ~/up_cyzx_demo
sudo python3 cyzx_io.py
连接两个IO碰撞传感器分别在创意之星AI控制器的0和1通道上,按下1,可以看到创意之星四轮构型不断前进,按下0,可以看到创意之星四轮构型不断后退,全部松开则停止运动。
创意之星AI控制器支持Python二次开发与硬件通讯。
在创意之星AI控制器中,我们也对硬件通讯进行了封装,可以通过一系列Python函数直接控制创意之星。
这里,请同学们参考AI控制器中up_cyzx_demo文件夹中,uprobot_movement文件,里面封装了一系列硬件控制的接口,接口含义如下,也可以在实际demo中进行参考。
接口名称 | 接口描述 | 参数说明 |
---|---|---|
ADC_IO_Open | 初始化ADC模块 | 无 |
ADC_IO_Close | 关闭ADC模块 | 无 |
ADC_Get_Channel(channel) | 获取channel(0-9)的ADC的采样值 | 返回:返回channel通道的ADC的传感器数值。 |
ADC_Get_All_Channle | 获取10个ADC采样值 | 返回:10个通道的ADC采样数值(0~9),其中通道就9内部连接到供电电压采样。 |
ADC_IO_SetIOLevel(index,level) | 设置IO输出口电平 | Index:IO口序号(0~7) Level:输出电平0-低电平 1-高电平。 |
ADC_IO_SetAllIOLevel(value) | 同时设置8个IO输出口电平 | Value:bit7bit0分别对用IO7IO0电平状态。 |
ADC_IO_GetAllInputLevel() | 同时获取8个IO的输入值 | 返回:8个通道的IO采样数值。 |
ADC_IO_GetInputLevel(index) | 获取index(0-9)的IO的采样值 | 返回:返回index通道的IO的传感器数值(0或是1)。 |
ADC_IO_SetAllIOMode(mode) | 设置全部IO的模式 | Mode为模式,0输入,1输出 |
CDS_Open | 初始化CDS舵机模块 | 无 |
CDS_Close | 关闭CDS舵机模块 | 无 |
CDS_SetMode(id,mode) | 设CDS舵机运行模式 | id:设置的舵机ID mode:要设置的舵机模式(设置后舵机可保存,下次上电不需要再次设置) 0-舵机模式 1-电机模式 |
CDS_SetAngle(id,angle,speed) | (舵机模式)设置CDS舵机目标角度 | id:设置的舵机ID angle:目标角度(01023)</p><p>speed:转动过程中舵机速度(01023) |
CDS_SetSpeed(id,speed) | (速度模式)设置CDS舵机目标角度 | id:设置的舵机ID speed:转动过程中舵机速度(0~1023) |
CDS_GetCurPos(id) | 获取舵机当前位置 | id:设置的舵机ID 返回值为当前位置(0~1023) 当返回值为-1时表示读取失败 |
只需要import上面uptech.py文件,即可实现Python使用上述函数直接控制创意之星,请同学们编写Python脚本测试以上函数。并后续实现自己想要的功能。