拜读维拉科技关于机器人相关信息的综合整理,涵盖企业排名、产品类型及资本市场动态:一、中国十大机器人公司(综合类)‌优必选UBTECH)‌聚焦人工智能与人形机器人研发,产品覆盖教育、娱乐及服务领域,技术处于行业前沿‌。基于RV1126开发板实现安全帽检测方案机器人‌中科院旗下企业,工业机器人全品类覆盖,是国产智能工厂解决方案的核心供应商‌。埃斯顿自动化‌国产工业机器人龙头,实现控制器、伺服系统、本体一体化自研,加速替代外资品牌‌。遨博机器人(AUBO)协作机器人领域领先者,主打轻量化设计,适用于3C装配、教育等柔性场景‌。埃夫特智能‌国产工业机器人上市第一股,与意大利COMAU深度合作,产品稳定性突出‌。二、细分领域机器人产品‌智能陪伴机器人‌Gowild公子小白‌:情感社交机器人,主打家庭陪伴功能‌。CANBOT爱乐优‌:专注0-12岁儿童心智发育型亲子机器人‌。仿真人机器人目前市场以服务型机器人为主,如家庭保姆机器人(售价10万-16万区间)‌,但高仿真人形机器人仍处研发阶段。水下机器人‌工业级产品多用于深海探测、管道巡检,消费级产品尚未普及。基于RV1126开发板实现安全帽检测方案资本市场动态‌机器人概念股龙头‌双林股份‌:特斯拉Optimus关节模组核心供应商,订单排至2026年‌。中大力德‌:国产减速器龙头,谐波减速器市占率30%‌。金力永磁‌:稀土永磁材料供应商,受益于机器人电机需求增长‌。行业趋势‌2025年人形机器人赛道融资活跃,但面临商业化落地争议,头部企业加速并购整合‌。四、其他相关机器人视频资源‌:可通过专业科技平台或企业官网(如优必选、新松)获取技术演示与应用案例。价格区间‌:服务型机器人(如保姆机器人)普遍在10万-16万元,男性机器人13万售价属高端定制产品‌。

安全帽检测:在图像中找出人头/安全帽。

方案设计逻辑流程图,方案代码分为分为两个业务流程,主体代码负责抓取、合成图像,代码负责安全帽检测功能。

基于RV1126开发板实现安全帽检测方案  第1张
(图片来源网络,侵删)

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-E编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

基于RV1126开发板实现安全帽检测方案  第2张
(图片来源网络,侵删)

cd ~/develop_environment ./run.sh

在EASY-EAI编译环境下创建存放源码仓库的管理目录:

cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit

通过git工具,在管理目录内克隆远程仓库

git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-C-Soluon.git

注:

* 此处可能会因网络原因造成卡顿,请耐心等待。

* 如果实在要在gitHub网页上下载,也要把整个仓库下载下来,不能单独下载本实例对应的目录。

进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Toolkit-C-Solution/solu-helmetDetect/ ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持b连接。

注:

* 若build.sh脚本不带任何参数,则仅会拷贝solution编译出来的可执行文件。

* 若build.sh脚本带有cpres参数,则会把Release/目录下的所有资源都拷贝到开发板上。

* 若build.sh脚本带有clear参数,则会把build/目录和Release/目录删除。

本方案用到模型:helmet_detect.model

直接把模型下载到本地Windows主机,复制

进入PC端Ubuntu创建存放model目录:

cd /opt mkdir model

然后把模型从本地Windows主机粘贴到PC端Ubuntu中:

使用下方命令再次回到开发实例目录

cd /opt/EASY-EAI-Toolkit-C-Solution/solu-helmetDetect/

然后,将EASY-EAI编译环境的编译结果部署到板卡中(有两种方法)。

方法一:通过执行以下命令手动部署【推荐】

cp Release/solu-* /mnt/userdata/Solu

方法二:在编译时加上编译参数自动部署

./build.sh cpres

最后,将准备好的模型部署到板卡中(注意:模型要放到编译结果的同一目录中),执行命令如下所示。

cp /opt/model/helmet_detect.model /mnt/userdata/Solu

通过按键Ctrl+Shift+T创建一个新窗口,执行adb shell命令,进入板卡运行环境。

adb shell

进入板卡后,定位到例程部署的位置,如下所示:

cd /userdata/Solu

运行例程命令如下所示:

./solu-helmetDetect

运行打印:

如果从摄像头画面中检测到有人头/安全帽,后台会打印出被检测到的人头/安全帽的数量:

并且会在图像上框出每一个人头/安全帽。如下图所示。

首先进入板卡环境,执行以下命令,在板卡上创建一个给本例程使用的应用目录:myapp

cd /userdata/apps/ mkdir myapp

然后回到开发环境中,通过使用“2.4方案部署”类似的操作方法,把本例程所需要的全部文件,包含:编译结果,配置文件,模型等。部署到刚刚新建的myapp目录中。

最后在板卡上创建一个run.sh脚本来管控用户所有需要的应用即可,《入门指南/应用程序开机自启动》会详细描述run.sh脚本该如何编写。

方案主逻辑代码位于:EASY-EAI-Toolkit-C-Solution/solu-helmetDetect/src/main.cpp。代码实现主要通过调用我司的easyeai-a库快速实现安全帽检测功能,代码主体分为主线程和算法分析子线程。

要实现安全帽检测功能,需要使用到easyeai-api库的以下组件,如下所示。

模组信息如下所示。

这些组件通过CMakeLists.txt编译进工程,具体请看后续章节。

项目的整体逻辑框图如下所示。

主线程处理的业务有:

本处附上主要的逻辑功能代码,其他辅助的、校验型的代码先忽略。

组件初始化操作如下,本处调用RGB摄像头。

// 1.打开摄像头 ret = rgbcamera_init(CAMERA_WIDTH, CAMERA_HEIGHT, 90); pbuf = NULL; pbuf = (char *)malloc(IMAGE_SIZE);

创建线程互斥锁以及线程,如下所示。

// 2.创建识别线程,以及图像互斥锁 pthread_mux_init(&img_lock, NULL); pResult = (Result_t *)malloc(sizeof(Result_t)); et(pResult, 0, sizeof(Result_t)); if(0 != CreateNormalThread(detect_thread_entry, pResult, &mTid)){ free(pResult); }

初始化显示屏,如下所示。

// 3.显示初始化 ret = disp_init(SCREEN_WIDTH, SCREEN_HEIGHT);

抓取图像,调用clone操作。

// 4.(取流 + 显示)循环 pthread_mutex_lock(&img_lock); ret = rgbcamera_getframe(pbuf); algorithm_image = Mat(CAMERA_HEIGHT, CAMERA_WIDTH, CV_8UC3, pbuf); image = algorithm_image.clone(); pthread_mutex_unlock(&img_lock);

调用显示图像,将分析的目标位置通过Result标记出来。

for (int i = 0; i < Result.helmet_number; i++) { helmet_detect_result_t *det_result = &(Result.result_group.results[i]); if( det_result->prop < 0.3 ){ continue; } /* printf("%s @ (%d %d %d %d) %f ", det_result->name, det_result->box.left, det_result->box.top, det_result->box.right, det_result->box.bottom, det_result->prop); */ int x1 = det_result->box.left; int y1 = det_result->box.top; int x2 = det_result->box.right; int y2 = det_result->box.bottom; char label_text[50]; memset(label_text, 0 , sizeof(label_text)); sprin(label_text, "%s %0.2f",det_result->name, det_result->prop); plot_one_box(image, x1, x2, y1, y2, label_text, i%10); } disp_commit(image.data, IMAGE_SIZE);

算法分析子线程,主要完成以下操作:

延时监测是否有图像,操作如下所示。

if(algorithm_image.empty()) { usleep(5); continue; }

获取图像操作如下所示。

pthread_mutex_lock(&img_lock); image = algorithm_image.clone(); pthread_mutex_unlock(&img_lock);

调用安全帽检测函数,算法得到的目标结果记录于pResult内,如下所示。

// 算法分析 ret = helmet_detect_run(ctx, image, &pResult->result_group);

Solution git仓库会随着产品迭代更新,不断新增解决方案代码,当前截图只作参考。

Solution工程构成如下所示,由功能组件easyeai-api和各个解决方案构成。

单个“solu-”开头的目录即为一个解决方案案例,代码内调用“EASY EAI-API”来满足某一实际应用场景的需求。

功能组件的描述如下所示,easyeai-api是经过高度封装的易用性组件,便于用户直接调用板卡资源。

每个解决方案就是一个独立的项目,项目内包含部分如下所示,项目使用cmake构建自动编译部署。

具体介绍如下所示。

可拓展的目录是指:开发过程中增加某些功能模块,功能代码。增加模式分为两种:

具体情况如下所示,第三方模块相关的文件由include/3rd_model/xxx.h、libs/3rd_model/xxx.a。自定义的功能模块为src/mySrcCode、src/mySrcCode2。

第一部分为配置部分,配置部分如下所示。(获取当前方案目录、配置工具链、提取方案名称):

配置信息如下所示。

第二部分是引入我司的功能组件库(针对当前方案进行:配置EASY EAI API头文件目录、库文件目录以及配置库链接参数):

配置信息如下所示。

第三部分配置第三方的库(针对当前方案进行:配置第三方头文件目录、库文件目录、配置第三方库链接参数以及配置源码目录):

配置信息如下所示。

例如添加个人库的目录组成方式如下所示。

aux_source_directory的修改方式为:

aux_source_directory(./src ./src/mySrcCode ./src/mySrcCode2 dir_srcs)

aux_source_directory(./src dir_srcs) aux_source_directory(./src/mySrcCode dir_srcs) aux_source_directory(./src/mySrcCode2 dir_srcs)

第四部分配置项目的编译信息,内容如下所示:

配置项如下所示。

第一部分用于提取目录用于编译操作,内容如下所示:(进入build.sh脚本所在目录,并且提取当前目录绝对路径,提取当前目录名称)

第二部分清除操作,清除目录为build、Release,内容如下所示:(执行build.sh脚本时,带入了参数“clear”,则清空编译输出)

第三部分,编译直接调用cmake,内容如下所示:(重新编译,成部署目录,并把资源自动部署进板卡)