AidLux · 10月10日 · 四川

智能机器人 | 创新方案打破“内卷”困局

人工智能技术的飞速进步正引领机器人行业经历一场革命。人工智能与机器人的深度融合,推动机器人从简单的自动化工具转变为拥有感知智能和自主决策能力的具身智能体。多模态大模型的引入更是极大增强了机器人的自主学习和适应复杂环境的能力,使其在多样化的应用场景中表现更加卓越。

在市场对效率和成本效益的双重驱动下,基于硬件繁复叠加的传统机器人开发模式逐步被企业摒弃,更符合高效率和高性价比期待的集成化解决方案慢慢进入了机器人厂商的视线。

搭载阿加犀融合架构操作系统平台AidLux的高通开发板,不仅能够满足智能机器人的Android人机交互需求,还能高效集成AI视觉分析、端侧大模型部署、运动控制以及ROS等关键机器人技术模块,使得机器人项目的开发和部署更加高效、便捷,同时也更加用户友好。
fe6ccdc843fbebc4276bebe534b1b010.png
融合系统架构

在2024高通边缘智能创新应用大赛中,我们特别设立智能机器人赛道,并提供了两款基于高通平台的高性能开发板以及一系列专业技术培训,使更多开发者能够亲身体验到阿加犀技术与高通硬件相结合所带来的强大优势,从而加速智能机器人项目的落地和实施。

以机械臂仿真实训为例,培训课程通过阿加犀AidLux和边缘智能工具链进行了开发部署演示,最终在基于高通平台的物联网开发板上快速构建了一个机械臂定位抓取系统,不仅能够精准识别和定位物体,还能实现语音控制机械臂执行抓取任务。

机器人开发环境配置

01 安装ROS/ROS2

8189df910b17f2cbb4a358c547b7cd65.png
在AidLux应用中心下载

02 安装Xfce4,显示渲染图形

2e757ae8f80b8dd58e4c621f3e8685c7.png
Xwayland: 在HDMI显示或者adb拷屏显示下可用,网页版不可用

7ccfffdfd8bfd240fcba055f02aafa2a.png
VNC: 需要在投屏的设备上(比如PC)下载VNC软件如RealVNC,在软件中输入列出的“IP地址:端口号”

03 安装Gazebo仿真工具

官方参考教程

安装:sudo apt install gazebo11
6de0df7aa47b7eaa9ddd48536ec7d24e.png
运行:gazebo创建虚拟的仿真环境

04 安装RViz可视化开发工具

官方参考教程

运行方式:ROS1需要在一个终端运行roscore,然后另一个终端运行rviz;ROS2可以直接在终端运行rviz2。
11fff9263572c96642f1d011850722c5.png
可视化ROS数据(调试机器人传感器信息、状态和环境模型)

05 安装MoveIt

官方参考教程

安装方式:

sudo apt install ros-noetic-moveit (根据版本不同修改版本号)

运行方式:MoveIt拥有与RViz集成的多个插件,可以直接在Rviz中运行,也可以与MoveIt提供的API接口与真实机器人结合,实现对机械臂的控制。

roslaunch moveit_setup_assistant setup_assistant.launch (setup assistant 用于导入机械臂模型与相关文件配置)

ededd3d346368f1f8b57c6100687f368.png
2f4f84822bd04afceefa361cd9c33b6b.png
用于机器人运动规划、控制和仿真的一体化软件框架

ROS开发流程

01 创建工作空间

创建一个工作空间目录,例如 ~/catkin_ws。然后进入工作空间,并使用 catkin_make 初始化,这一步类似于为机器人开发项目创建一个专属的工作区域,确保所有文件都在一个有组织的地方。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

02 创建功能包

进入src目录,创建一个新的功能包,这一步就像在项目中创建一个子模块,每个模块负责实现特定的功能,例如控制机器人运动、处理传感器数据等。

cd ~/catkin_ws/src
catkin_create_pkg turtlesim_circle roscpp rospy std_msgs geometry_msgs

03 编写节点代码

在 my_robot_pkg/src 目录下新建你的节点代码文件,如 my_node.cpp(C++) 或 my_node.py(Python),这一步类似于编写某个功能下的各个组件,每个节点(组件)执行特定任务,例如读取分析传感器数据、控制电机等。

04 编译工作空间

将源代码转换为机器可执行的二进制文件。对于C++代码需要编译,但Python代码不需要编译。CMakeLists.txt 是一个用于CMake构建系统的配置文件。CMake是一种跨平台的编译工具,帮助开发者自动化生成构建文件,例如Makefile或项目文件。CMakeLists.txt文件定义了如何构建你的项目,包括源文件、依赖库和目标等。一般是自动生成,可根据需求自行修改。

cd ~/catkin_ws
catkin_make

05 配置环境

编译成功后,执行:

source ~/catkin_ws/devel/setup.bash

这会将工作空间添加到ROS环境中。

06 运行节点

使用 rosrun 或 roslaunch 运行节点

rosrun turtlesim_circle turtle_circle
roslaunch turtlesim_circle turtle_circle.launch

其中rosrun命令用于运行某个特定包中的单个ROS节点。roslaunch命令用于启动一组ROS节点,并可以通过launch文件(.launch)配置节点参数、节点依赖关系、启动顺序等,相比rosrun更灵活。

使用MoveIt开发机械臂

01 运行 MoveIt Setup Assistant 并创建新的MoveIt配置包

roslaunch moveit_setup_assistant setup_assistant.launch

5dbc87b47ff81fa33dfe89c8961aeaf3.png
7f814ae58c6f61071916c072b8f1af30.png

02 导入MoveIt示例机械臂配置文件选择配置文件

/opt/ros/noetic/share/franka_description/robots/panda/panda.urdf.xacro

设置文件参数 hand:=true选择 Load Files 加载机械臂文件
7f814ae58c6f61071916c072b8f1af30.png

03 自碰撞检查

通过调整采样密度和碰撞对的最小碰撞率,可以生成碰撞矩阵,显示机器人各部分之间的碰撞情况。绿色表示安全,红色表示碰撞,蓝色表示可以忽略的碰撞对,帮助提高运动规划的效率。
06141e5a8061d6abfcde87472fbf39dd.png

04 定义虚拟关节

为机器人指定其在世界坐标系中的位置或将其置于移动平台上。输入虚拟关节的名称、子链接和父框架,并选择关节类型(例如固定或浮动)来完成设置。
a4a9b3e5a4934e406187d75a8b598191.png
6c2a51c5308005772f952e1e664a9fc0.png

05 定义规划组

定义规划组(Planning Groups),它们是基于关节、链接和运动链的集合,用于规划和碰撞检测。每个规划组代表机器人的一个部分,例如“panda_arm”和“hand”,其中包含相应的关节和链接。定义这些组有助于在运动规划中明确哪些部分需要考虑和控制,从而优化机器人的运动表现。
2bbf81362361fb4bb4a4c54c050bf41c.png
757a73c30fd097905f01f79ab5b32333.png

06 定义机械臂特定的姿态

这些姿态由某个规划组的关节值集合构成。你可以命名姿态并选择相应的规划组,然后通过调整滑块设置每个关节的具体位置。这些姿态可以用于机器人初始化位置和特定任务的预定义位置,从而简化和加快运动规划。
c2774898bc22ef64e981261e518f4285.png
ab9351d12cd3d80bce273c19b3163d30.png

07 定义末端执行器

为机器人定义末端执行器(End Effectors),如抓手或工具。需要输入末端执行器的名称,选择对应的规划组和父链接(通常是机器人的末端部分)。定义末端执行器有助于在运动规划中准确控制和使用机器人的末端工具,从而完成各种任务。
6af400ea726634747226a395526bf5ff.png
6035ef2619f4fbe46be72388aa761192.png

08 定义机器人的被动关节

即不由电机驱动或不需要主动控制的关节。通过将关节从左侧的“Active Joints”列表移动到右侧的“Passive Joints”列表,可以指定哪些关节是被动的。这一步有助于在运动规划中准确识别和处理这些关节,避免不必要的控制计算。
2c78ae82dbb908bd22baf4bd1309ec63.png
8627986e02dd3e4476ac0b27780d218a.png

09 配置控制器

控制器用于操作机器人的物理硬件,实际执行规划的运动轨迹。为新控制器指定名称和类型,然后添加相关的关节或规划组,使其能够控制特定的机器人部分。
8627986e02dd3e4476ac0b27780d218a.png
e7e2b6b59d2c7096679eb7b9b629ca32.png

10 配置3D感知传感器

配置3D感知传感器,使其与MoveIt一起工作。这些传感器可以帮助机器人感知周围环境,从而进行物体识别、避障和导航等任务。可以选择和配置不同类型的3D传感器插件,以便在机器人应用中使用3D感知功能。
a70a0149ab96417c33ca5d70f6e41139.png
1c582455cff0e5d209a459d08ab61e75.png

11 生成配置文件包

这些文件包包含了运行MoveIt所需的所有配置文件,包括机械臂配置文件、控制器配置文件、运动规划配置文件、传感器配置文件、启动文件等等。路径选择自己建立的工作空间中的src文件夹中的功能包文件夹,比如 /home/aidlux/test_ws/src/panda_test 。
1c582455cff0e5d209a459d08ab61e75.png
3e36a9758776ce662f71a2b9a00ea2a6.png

12 编译生成的文件包并配置环境

cd ~/test_ws
catkin_make
source ~/test_ws/devel/setup.bash

13 在Rviz中进行机械臂仿真

roslaunch panda_test demo.launch

4996fd44f825c4954050de3c4b7a9a7d.png

14 编写代码控制机械臂

mkdir ~/test_ws/src/panda_test/scripts
touch move_arm.py

编写一段简单的机械臂随机运动代码:

chmod +x move_arm.py

运行:

roslaunch panda_test demo.launch
python3 move_arm.py

image.png

实机演示效果

531fe671d57f92806ae74f2904a62f08.png
视觉定位抓取

d8b91061f2a6070dc32a9fc8b69a9e8b.png
语音控制执行抓取任务

在高性能SoC和阿加犀底层技术的加持下,更高维度集成化、智能化机器人解决方案逐步落地,该方案不仅满足了机器人在复杂功能性和可靠性方面的高标准要求,同时也在成本控制方面实现了优化,使得机器人制造商能够在激烈的市场竞争中占据有利地位。

随着技术的不断成熟和市场的持续扩张,该方案正在成为推动智能机器人应用无处不在的关键力量,从家庭生活到医疗保健,从服务业到制造业,为人们的日常生活和生产活动带来前所未有的便利和效率!

如果您对智能机器人解决方案感兴趣,并希望了解更多相关信息或寻求合作机会,欢迎联系我们。

2024高通边缘智能创新应用大赛智能机器人赛道技术培训可移步AidLux视频号查看直播回放。
1728527839805.png

推荐阅读
关注数
8
文章数
96
AidLux智能物联网应用开发和部署平台
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息