Terminology
工业机械臂平台架构主要包括机械臂本体、电源供应、控制器、传感器和中央处理器(电脑)。我们的教育机械臂展现了工业机械臂的核心组成部分,但采用了更经济实惠的替代方案:
| 系统组成 | 工业机械臂 | MINIMA |
|---|---|---|
| 电源系统 | 三相高压电源(380V/220V)驱动大功率伺服电机 | 6V直流电源驱动舵机 |
| 通讯协议 | CAN总线或EtherCAT等工业级通讯协议 | I2C协议 |
| 控制系统 | 专业的PLC或工控机 | ESP32微控制器 |
| 驱动系统 | 伺服电机、减速器和专业驱动器 | 集成驱动电路的数字舵机 |
| 计算机系统 | 根据时间严格把控优先级的操作系统 | 普通家用电脑 |
机械臂基础术语
关节类型 (Joint Types)
- Revolute (旋转关节) - 允许绕固定轴旋转的关节,类似于门的铰链。这是机械臂中最常见的关节类型,具有一个旋转自由度,运动范围通常在0°到360°之间。
- Prismatic (移动关节) - 允许沿直线方向移动的关节,类似于活塞运动。具有一个平移自由度,常见于龙门式机械臂或伸缩臂中。
- Continuous (连续关节) - 可以无限制地连续旋转的关节,没有角度限制,常用于末端旋转轴或传送带系统。
- Fixed (固定关节) - 没有运动自由度的连接,用于固定连接两个刚体部分,常用于结构性连接或工具安装。
自由度 (Degrees of Freedom, DOF)
自由度是指机械臂在空间中独立运动的方向数量。一个物体在三维空间中最多有6个自由度:3个平移自由度(X、Y、Z轴方向)和3个旋转自由度(绕X、Y、Z轴旋转)。
- 关节自由度 - 机械臂的总关节数,每个独立关节提供一个自由度。例如,Minima机械臂有5个旋转关节,即5个自由度。
- 末端自由度 - 机械臂末端执行器在空间中可以实现的独立运动数量。要完全控制末端的位置和姿态,通常需要6个自由度。
- 冗余自由度 - 当机械臂的关节数超过6个时,额外的自由度可以提供更灵活的路径规划和避障能力。
传动系统
- 减速比 (Gear Ratio) - 电机转速与输出转速之比。较高的减速比可以提供更大的扭矩和更高的精度,但会降低运动速度。例如,减速比为100:1意味着电机旋转100圈,输出轴只旋转1圈。
- 扭矩 (Torque) - 关节产生的旋转力,通常以牛顿·米(N·m)为单位。更大的扭矩允许机械臂举起更重的负载。
- 负载能力 (Payload Capacity) - 机械臂末端可以承载的最大重量,受关节扭矩和机械结构强度的限制。
运动学 (Kinematics)
- 正向运动学 (Forward Kinematics, FK) - 已知各关节的角度,计算机械臂末端执行器在空间中的位置和姿态。这是一个直接的数学计算过程,通常使用DH参数(Denavit-Hartenberg参数)和齐次变换矩阵来实现。
- 逆向运动学 (Inverse Kinematics, IK) - 已知末端执行器期望的位置和姿态,反向计算各关节需要的角度。这是一个更复杂的问题,可能存在多个解、无解或无穷多解的情况。常用算法包括解析解法、几何法和数值迭代法(如Jacobian方法、LM算法等)。
- 工作空间 (Workspace) - 机械臂末端执行器可以到达的所有位置的集合。工作空间分析对于任务规划和安全评估至关重要。
- 奇异点 (Singularity) - 机械臂在某些配置下,会失去一个或多个自由度的位置。在奇异点附近,微小的末端运动可能需要关节的极大速度变化。
轨迹与路径规划
- 路径规划 (Path Planning) - 确定机械臂从起始位置到目标位置的运动路线,考虑避障、关节限位等约束条件。常见算法包括RRT(快速随机树)、PRM(概率路线图)等。
- 轨迹规划 (Trajectory Planning) - 在路径基础上,进一步确定机械臂在每个时刻的位置、速度和加速度,确保运动平滑且在物理限制范围内。
- 路径优化 (Path Optimization) - 对已规划的路径进行优化,目标可能包括:最短路径、最短时间、最小能耗、最平滑运动等。常用方法有CHOMP(协方差哈密顿优化)、TrajOpt等。
- 插补 (Interpolation) - 在两个路径点之间生成平滑的中间点,常见的插补方式包括:
- 线性插补 (Linear) - 末端执行器沿直线移动
- 关节插补 (Joint) - 各关节以固定速度比同步运动
- 圆弧插补 (Circular) - 末端执行器沿圆弧路径移动
- 样条插补 (Spline) - 使用样条曲线生成平滑轨迹
运动控制
- PTP (Point-to-Point) - 点到点运动,机械臂以最快速度从当前位置移动到目标位置,不保证路径形状,通常用于无障碍环境下的快速移动。
- LIN (Linear) - 线性运动,末端执行器沿直线路径移动到目标位置,适用于需要精确路径的应用,如焊接、涂胶等。
- CIRC (Circular) - 圆弧运动,末端执行器沿圆弧路径移动,需要指定中间点或圆心,常用于曲线轨迹跟踪。
- 速度控制 (Velocity Control) - 控制机械臂运动的速度,包括关节速度和末端笛卡尔速度。
- 加速度限制 (Acceleration Limits) - 限制运动的加速度,以保护机械结构和提高运动平滑性。
坐标系统
- 基坐标系 (Base Frame) - 固定在机械臂基座上的参考坐标系,作为整个机械臂的基准。
- 工具坐标系 (Tool Frame, TCP) - 固定在末端工具上的坐标系,TCP(Tool Center Point)是工具的控制点,通常是工具的尖端或中心。
- 工件坐标系 (Workpiece Frame) - 固定在工件上的坐标系,方便编程时以工件为参考。
- 关节空间 (Joint Space) - 以各关节角度为变量描述机械臂状态的空间。
- 笛卡尔空间 (Cartesian Space) - 以末端执行器的位置(X, Y, Z)和姿态(Roll, Pitch, Yaw)描述的空间。
机器人描述格式
- URDF (Unified Robot Description Format) - 统一机器人描述格式,使用XML语法描述机器人的物理结构、关节、连杆和传感器等信息,是ROS系统中的标准格式。
- Xacro - URDF的扩展格式,支持宏定义、参数化和模块化,使机器人描述更加简洁和可维护。
- DH参数 (Denavit-Hartenberg Parameters) - 一种用四个参数描述相邻连杆之间关系的标准方法,包括连杆长度(a)、连杆扭角(α)、关节偏移(d)和关节角(θ)。
控制与通信
- PID控制 - 比例-积分-微分控制器,是最常用的闭环控制算法,用于精确控制关节位置和速度。
- 串口通信 (Serial Communication) - 通过串行端口进行数据传输,常用协议包括RS-232、RS-485等。
- I2C协议 - 一种同步串行通信协议,适用于短距离、低速设备间的通信,Minima使用I2C协议控制舵机。
- CAN总线 - 控制器局域网,工业机械臂常用的实时通信协议,具有高可靠性和抗干扰能力。
- 实时控制 (Real-time Control) - 保证控制指令在规定时间内执行,对机械臂的稳定性和精度至关重要。
了解这些基础术语将帮助您更好地理解机械臂的工作原理和控制方法。本页面后续内容将指导您完成从环境准备到实际操作Minima机械臂的各项流程。
Minima
用户手册
1. 产品参数
- 精度: ±0.1mm
- 工作电压: 6V DC
- 自由度: 5轴
- 主要材料: ABS (FDM)
- 通讯方式: USB串口/支持wifi,蓝牙拓展
- 电机: 高精度金属舵机
- 最大负载: 500g
- 工作范围: 半径约150mm
2. 装配
请安装详细装配图对机械臂进行安装:下载装配图
请根据电路图对内部电路进行确认和维护: 下载电路图
装配视频教程:观看装配视频
3. 注意事项
- 使用前请仔细阅读说明书,确保正确连接所有部件。
- 首次使用时,请使用我们的软件进行校准,并确保所有关节运动正常。
- 请勿超过最大负载限制,以免损坏电机或机械结构。
- 在进行任何维护或调整之前,请务必断开电源。
- 使用过程中如遇到异常情况,请先尝试重启机械臂(包括断电重启和软件内重启)。
- 请将机械臂放置在平稳的表面上使用,避免意外跌落。
- 本产品面向青少年和成人,儿童使用时需有成人监督。
如需更多详细信息或技术支持,请联系我们的客户服务团队。
软件下载
如果您不使用电位器控制器,可以下载我们提供的通用软件来控制 Minima 机械臂。我们为不同操作系统(Windows、macOS、Linux)提供了相应的软件版本。
上位机软件Noman-app
请访问我们的 GitHub Releases 页面下载适合您操作系统的最新版本:
下载 Noman-app(Windows, MacOS, Ubuntu)
下载并安装适合您操作系统的版本后,请参考软件使用说明进行操作。如遇到任何问题,请联系我们的技术支持。
机械臂主控固件
注意:机械臂主控固件已预先安装在您的机械臂中,用户通常无需自行下载或安装。如果您需要重新安装固件或进行手动更新,可以从以下链接下载最新版本的固件:下载 Minima 机械臂固件
我们建议通过软件自动烧录固件。只需在Noman-app中找到"固件"选项,然后按照提示进行操作烧录最新固件。
校准
MINIMA 校准需将关节分别运动至以下姿态(通过Controller滑块),同时在setting的robot settings中,对每个关节的PWM pulse上下范围进行微调。当你发现软件上关节运动到指定位置(比如90°),而实际到达偏多/偏少,这就是错误映射关系!
这是非常重要的步骤,对于舵机来说:只有正确的关节映射,才能让逆运动学解算的笛卡尔坐标点在物理世界精确到达。
ROS
Step 1: 准备您的环境
ROS版本对应固定的Ubuntu版本。本机械臂在Ubuntu 20.04 LTS环境下使用ROS noetic开发,以下说明和教程安装均在ROS noetic下完成。您可以在虚拟机(VirtualBox, Vmware Workstation Pro等)或者物理Ubuntu系统下安装镜像文件。
通常情况下,安装物理的Ubuntu系统是更好的选择,因为在虚拟机中,3D加速和USB设备的支持会受到限制。
注意:您可以在树莓派上安装ROS,但不幸的是,它的性能不足以运行Rviz中的模拟,更不用说Gazebo了。
- 配置ROS环境。请按照这个快速安装指南在对应Ubuntu版本上安装ROS。您需要依照每一步骤在终端下完成安装。
- MoveIt!是ROS中用于移动操作的软件包。检查MoveIt!是否正常工作。运行以下命令:
如果您愿意,可以按照MoveIt基础教程进行操作。roslaunch panda_moveit_config demo.launch rviz_tutorial:=true
然后,您可以直接下载我们预处理完成的ROS workspace,其中包括URDF文件和Moveit!配置包。如果想深入了解ROS机械臂配置过程,可以根据以下两步指南进行手动配置。
Step 2: Unified Robot Description Format (URDF)
我们已经为您准备好了Minima的统一机器人描述格式文件。您可以从我们的GitHub仓库下载这个URDF文件。
我们将简要介绍URDF文件的结构和内容,以帮助您更好地理解它,并在将来编写自己的URDF文件时作为参考。
连接(Links)
连接是机器人的各个部分,如手腕或平台。它们具有以下属性:
- 用于在Rviz和Gazebo中进行视觉表示。使用高质量的网格模型。
- 用于路径规划期间的碰撞检查。建议使用低质量的网格模型,但为了教程的目的,我们使用与视觉相同的模型。
关节(Joints)
URDF中的关节是链接之间的连接,描述了它们之间的相对位置和运动方式。它们具有以下属性:
- 关节的旋转方向(沿x、y或z轴)
- 关节的最小和最大角度(以弧度为单位)。仅适用于"revolute"类型的关节("continuous"类型的关节没有限制,因为它们可以连续旋转)
- 关节相对于原点的位置
- 描述哪两个链接通过该关节连接
使用3D网格模型
如果您使用的是与我相同的机械臂,您需要将机械臂的3D网格模型复制到urdf_tutorial包文件夹中。使用以下命令:
sudo cp <要复制的文件名> /opt/ros/kinetic/share/urdf_tutorial/meshes/
如果您使用自己的网格模型,请确保在将它们导出为二进制STL格式之前,它们在3D建模软件中以原点(xyz 000)为中心。
在Rviz中可视化结果
现在您可以启动Rviz来可视化结果,使用以下命令:
>roslaunch urdf_tutorial display.launch model:=arm.urdf
(从您刚刚创建的URDF文件所在的文件夹中启动)
检查关节和链接,确保它们的旋转和位置完全符合预期。如果一切正常,请继续下一步。
Step 3: 使用MoveIt Setup Assistant创建机器人配置
现在您的URDF文件已经准备好了,是时候将它转换为机器人配置包了。
使用以下命令启动MoveIt Setup Assistant:
>roslaunch moveit_setup_assistant setup_assistant.launch
这个过程在MoveIt官方教程中有非常详细的描述:您可以在这里找到。
创建配置包后:进入您的catkin工作空间文件夹并执行以下命令来构建包:
>catkin make
>source devel/setup.bash
现在您可以使用以下命令启动它:
>roslaunch my_arm_xacro demo.launch rviz_tutorial:=true
其中,您需要将"my_arm_xacro"更改为您的包的名称。
Step 4: 连接控制板至ROS
在我们的案例中,ESP32运行一个带有rosserial的ROS节点将作为机器人控制器。ESP32的代码附加在此步骤中,也可以在GitHub上获取。
在ESP32上运行的ROS节点基本上订阅了在运行MoveIt的计算机上发布的/JointState主题,然后将数组中的关节角度从弧度转换为度,并使用ESP32的PWM功能将它们传递给伺服电机。
这不是工业机器人的标准做法。理想情况下,您应该在/FollowJointState主题上发布运动轨迹,然后在/JointState主题上接收反馈。但在我们的机械臂中,舵机无法提供反馈,所以我们将直接订阅由FakeRobotController节点发布的/JointState主题。我们假设传递给电机的任何角度没有任何误差。
有关rosserial如何工作的更多信息,您可以参考以下教程:
http://wiki.ros.org/rosserial_arduino/Tutorials
将代码上传到ESP32后,您需要使用USB或Wi-Fi将其连接到运行ROS安装的计算机。
使用USB连接至机械臂后,执行以下命令以进行串口通讯:
>roslaunch my_arm_xacro demo.launch rviz_tutorial:=true
>sudo chmod -R 777 /dev/ttyUSB0
>rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0 _baud:=115200
现在,您可以使用RVIZ中的交互式标记将机器人手臂移动到某个姿势,然后按下"Plan"和"Execute",使其实际移动到该位置。
ROS2
本节将指导您在ROS2环境下配置和使用Minima机械臂。我们同样使用Ubuntu 22.04 LTS但是这次安装ROS2 Humble。
根据官方教程,ROS2支持Linux和Windows系统。我们将分别对Linux和Windows系统进行配置。但是,我们仍然建议使用Linux环境。
Linux环境配置
- 配置ROS2环境。请按照这个快速安装指南在对应Ubuntu版本上安装ROS2。您需要依照每一步骤在终端下完成安装。
- MoveIt!是ROS中用于移动操作的软件包。检查MoveIt!是否配置成功。运行以下命令:
如果您愿意,可以按照MoveIt基础教程进行操作。roslaunch panda_moveit_config demo.launch rviz_tutorial:=true - 然后,您可以直接下载我们预处理完成的ROS2 workspace,其中包括URDF文件和MoveIt2配置包。
- 创建配置包后,进入您的工作空间并编译:
cd ~/ros2_ws colcon build source install/setup.bash - 启动MoveIt2配置:
ros2 launch my_robot_moveit_config demo.launch.py - 在ROS2中,我们使用micro-ROS替代了ROS1中的rosserial。ESP32运行micro-ROS客户端,与ROS2节点进行通信。micro-ROS节点订阅
/joint_states话题,将关节角度从弧度转换为度,并通过PWM控制舵机。有关micro-ROS的更多信息,请参考micro-ROS教程。 - 通过USB物理连接机械臂:
ros2 launch my_robot_moveit_config demo.launch.py sudo chmod 666 /dev/ttyUSB0 ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 -b 115200 - 现在您可以在RViz2中使用交互式标记控制机械臂,规划并执行运动。
Windows环境配置
- 配置ROS2环境。在Windows系统下,我们使用Chocolatey包管理器来安装ROS2。
- 打开拥有管理员权限的命令提示符并输入以下命令来通过Chocolatey安装Python:
choco install -y python --version 3.8.3注意:Chocolatey会将Python安装在C:\Python38目录下,后续安装步骤都假定Python安装在该位置。如果您将Python安装在其他位置,必须将其复制或链接到此位置。
- 安装Visual C++运行时库。打开命令提示符并输入以下命令通过Chocolatey安装:
choco install -y vcredist2013 vcredist140 - 安装OpenSSL:
- 从OpenSSL官网下载Win64 OpenSSL v1.1.1t安装包。请注意不要下载Win32或Light版本,也不要下载v3.X.Y版本的安装包。
- OpenSSL官网已经不再支持预编译的1.1.1版本。您可在OpenSSL releases下载源码,或使用Chocolatey包管理器(推荐)安装OpenSSL 1.1.1:
choco install openssl --version=1.1.1.1400 - 打开命令提示符,运行以下命令设置环境变量:
setx /m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg" - 将OpenSSL添加到系统PATH:
- 点击Windows图标,输入"Environment Variables"
- 点击"编辑系统环境变量"
- 在弹出的对话框中点击"环境变量"
- 在下方窗格中选择"Path"变量并点击"编辑"
- 添加以下路径:
C:\Program Files\OpenSSL-Win64\bin\
- 安装Visual Studio 2019:
- 如果您已经安装了Visual Studio 2019的付费版本(Professional或Enterprise),可以跳过此步骤。
- Microsoft提供免费的VS 2019 Community版本。您可以通过官方链接下载安装程序。
- 确保安装Visual C++功能:
- 在安装过程中选择"使用C++的桌面开发"工作流
- 在安装组件列表中取消选择所有C++ CMake工具
- 安装OpenCV:
- 下载预编译的OpenCV 3.4.6版本:
- 从此链接下载OpenCV 3.4.6
- 将下载的文件解压到
C:\opencv目录
- 以管理员权限打开命令提示符,运行以下命令设置环境变量:
setx /m OpenCV_DIR C:\opencv - 将OpenCV添加到系统环境变量PATH。添加以下路径:
C:\opencv\x64\vc16\bin
- 下载预编译的OpenCV 3.4.6版本:
- 安装CMake和其他依赖项:
- 使用Chocolatey安装CMake:
choco install -y cmake - 将CMake添加到系统环境变量PATH。添加以下路径:
C:\Program Files\CMake\bin - 从ROS2 Chocolatey包发布页面下载以下包:
- asio.1.12.1.nupkg
- bullet.3.17.nupkg
- cunit.2.1.3.nupkg
- eigen.3.3.4.nupkg
- tinyxml-usestl.2.6.2.nupkg
- tinyxml2.6.0.0.nupkg
- 以管理员权限打开命令提示符,运行以下命令安装这些包(请将 <PATH\TO\DOWNLOADS> 替换为您下载包的实际路径):
choco install -y -s <PATH\TO\DOWNLOADS> asio cunit eigen tinyxml-usestl tinyxml2 bullet - 升级pip和setuptools:
python -m pip install -U pip setuptools==59.6.0 - 安装ROS2所需的Python依赖:
python -m pip install -U catkin_pkg cryptography empy importlib-metadata jsonschema lark==1.1.1 lxml matplotlib netifaces numpy opencv-python PyQt5 pillow psutil pycairo pydot pyparsing==2.4.7 pyyaml rosdistro
- 使用Chocolatey安装CMake:
- 安装xmllint:
- 从 https://www.zlatkovic.com/projects/libxml/ 下载以下64位二进制文件:
- iconv
- libxml2
- zlib
- 将所有文件解压到
C:\xmllint目录 - 将xmllint添加到系统环境变量PATH,添加以下路径:
C:\xmllint\bin
- 从 https://www.zlatkovic.com/projects/libxml/ 下载以下64位二进制文件:
- 安装Qt:
- 从Qt官网下载Qt 5.12.X离线安装包
- 运行安装程序,在Qt -> Qt 5.12.12目录下选择MSVC 2017 64-bit组件
- 以管理员权限打开命令提示符,设置以下环境变量(假设Qt安装在默认位置C:\Qt):
setx /m Qt5_DIR C:\Qt\Qt5.12.12\5.12.12\msvc2017_64 setx /m QT_QPA_PLATFORM_PLUGIN_PATH C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\platforms注意:根据实际安装的MSVC版本、Qt安装目录和Qt版本,以上路径可能需要调整。
- 安装Graphviz:
- 从Graphviz官网下载Windows安装包
- 运行安装程序,在安装过程中选择将Graphviz添加到系统PATH(可以选择"当前用户"或"所有用户")
注意:Graphviz是运行rqt_graph所必需的依赖项。
- 下载并安装ROS2:
- 访问ROS2发布页面
- 下载最新的Windows安装包(例如:ros2-package-windows-AMD64.zip)
注意:可能会有多个二进制下载选项,文件名可能会有所不同。
- 将下载的zip文件解压到指定目录(例如:C:\dev\ros2_humble)
- 设置ROS2环境:
- 打开命令提示符,运行以下命令来设置ROS2工作空间:
call C:\dev\ros2_iron\local_setup.bat注意:如果命令执行后出现一次"系统找不到指定的路径"的提示是正常现象,只要没有其他错误即可。
若您仍然遇到问题请尝试运行这个脚本修复环境和安装确实的依赖
- 打开命令提示符,运行以下命令来设置ROS2工作空间:
Noman-app
Noman-app是一个轻量级、跨平台的机械臂用户界面。它为路径规划、碰撞避免和自动化提供了易用的解决方案。同时,后端结合了路径规划与自动化功能,如PTP、LIN和CIRC运动,这些功能通常出现在KRL和RoboDK等工业级应用中。
GitHub: https://github.com/NoManRobotics/noman-app
Noman-app包含以下主要功能模块:
- 机器人配置 - 机器人描述和配置管理, 用于添加和配置第三方机械臂
- Controller控制器 - 核心控制模块,提供基础的机械臂控制功能
- ROS接口 - 与ROS系统的集成接口
- 仿真器(Simulator) - 基于PyBullet的3D仿真环境
- Majordomo - LLM助手
- 运动学模块 - 处理机械臂正逆运动学计算,路径规划和工作区域分析
- 专业指令模块 - 撰写并编译专业机械臂指令用于自动化应用
- 固件管理 - 机械臂固件的更新与管理
Robot Profile 配置
Robot Profile是Noman-app的机器人描述和配置管理系统,用于添加和配置第三方机械臂。
配置步骤
- 增加配置 - 点击左上角加号添加配置,需要用户导入机械臂的URDF/Xacro描述文件进行配置。注意,描述文件中的mesh推荐使用STL格式。
- 配置关节组 - 默认Group A为机械臂的main group,并对每个关节进行组分配。增加组以分配诸如末端工具等关节类型。
- 归零位姿 - 点击需要设置的main group后会在右侧显示所有该组关节,拖动滑块以设置机械臂默认的归零关节角度以及关节极限角度。
- 配置末端 - 当一个组不属于需要正逆求解的连续关节,我们将它分配为工具组。一般工具组中的关节类型不为Revolute。同时我们可以设置工具坐标偏移,以正确反映工具的预期到达点位姿。
Controller 控制器
控制器提供基础的功能:MINIMA配置、关节空间角度控制、轨迹录制与重播等。
MINIMA 配置
Controller支持两种控制模式,适用于不同的应用场景:
| 模式 | 描述 | 操作方式 |
|---|---|---|
| Serial Control 模式 | 通过软件界面控制机械臂运动 |
|
| Mini Controller 模式 | 通过外部硬件进行遥操作控制 |
|
记录和重播
Controller提供轨迹录制和重播功能,可用于示教编程和重复性任务。
录制流程
- 开始录制 - 点击Recording按钮开始录制会话
- 调整位置 - 点击Execute按钮,机械臂会运动到当前设定的关节角度(临时位置)
- 记录路点 - 点击Record Once按钮记录当前临时位置
- 注意:在点击Record Once之前,可以多次调整并Execute来确定理想的临时位置
- 延迟设置 - 可以设置每次Record Once之间的延迟时间,控制轨迹执行速度
- 停止录制 - 点击Stop Recording按钮停止录制,系统会自动保存为JSON格式的关节轨迹文件
重播流程
- 设置次数 - 在输入框中设置重播次数
- 开始重播 - 点击Replay Trajectory按钮开始重播录制的关节轨迹
- 暂停/继续 - 运动过程中可以点击Stop按钮临时暂停,再次点击继续运动
注意事项:
- 设置中的上下限校准需要配合控制器关节运动到极限/90°位置进行校准
- 切换控制模式前确保机械臂处于安全位置
- 录制轨迹时注意工作空间限制,避免碰撞
- 重播前请确保机械臂周围环境与录制时一致
第三方控制器
Controller支持第三方机械臂的配置和控制,具有高度的灵活性和适配性。
| 自动适配关节数 | 当使用第三方机械臂配置时,Controller中的关节滑轨会自动调整为与机械臂自由度一致的数量。例如,6轴机械臂会显示6个关节滑块,7轴机械臂会显示7个关节滑块。 |
| 通讯协议对照表 | 右上角提供通讯协议对照表,便于用户快速适配Noman-app的通讯格式。对照表包含关节编号、数据格式、波特率等关键信息,帮助用户正确配置串口通讯参数。 |
ROS接口
ROS接口模块提供了与ROS1和ROS2系统的集成功能,让用户能够通过ROS生态系统来控制和开发Minima机械臂应用。
ROS配置
| 功能 | 描述 | 参数 |
|---|---|---|
| System Check | 检查ROS环境配置 |
|
| Switch Mode | 切换到ROS控制模式 |
|
| URDF配置 | 机械臂模型配置 |
|
| Workspace | 工作空间配置 |
|
| MoveIt配置 | 运动规划配置 |
|
使用说明:
- 首次使用请先运行System Check确保环境正确置
- 切换ROS模式前请确保已完成相应版本的配置
- URDF修改后需要重新运行MoveIt配置
- 建议参考ROS Wiki了解更多使用细节
运动学模块
运动学模块提供了完整的机械臂运动学解算和路径规划功能,以及任务板进行示教编程。
初始化
机械臂进行逆运动学求解时,需要配置以下关键参数:
1. 规划器 (Planner)
- Direct(直接) - 无规划模式。直接从起点到终点,不进行路径避障规划。速度最快,但可能发生碰撞。
- RRT* (Rapidly-exploring Random Tree) - 基于采样的快速随机树路径规划算法。通过随机采样和树扩展来探索配置空间,寻找避免碰撞的路径。RRT*是对RRT的改进版本,具有渐进最优性。
- CHOMP (Covariant Hamiltonian Optimization for Motion Planning) - 协方差哈密顿优化运动规划算法。基于梯度优化方法,通过迭代优化轨迹来满足碰撞约束。CHOMP能够在高维配置空间中生成平滑、无碰撞的轨迹。
2. 求解器 (Solver)
- Levenberg-Marquardt (默认) - 阻尼最小二乘方法,结合了高斯-牛顿法和梯度下降法的优势。适用于非线性优化问题,收敛速度快且稳定性好。
- Damped Least Square - 阻尼最小二乘求解器,通过引入阻尼项来改善雅可比矩阵奇异问题。在处理奇异配置时更稳健。
- TRAC-IK - 基于跟踪的逆运动学求解器,通过前向跟踪和反向搜索相结合,能够高效地找到逆运动学解。
- 用户导入求解器 - 用户可以根据需要导入自定义求解器。导入的求解器需符合特定格式要求,请参照custom solver样例进行配置。
3. 求解器参数
切换不同的求解器会有不同的参数设置选项,常见的参数包括:
- 最大迭代次数 (Max Iterations) - 求解器的最大迭代次数,控制求解时间和精度的平衡。
- Epsilon (学习率) - 控制每次迭代的步长,影响收敛速度和稳定性。
- 残差阈值 (Residual Threshold) - 判断收敛的误差阈值。
- Lambda参数 - 仅在Levenberg-Marquardt算法中使用,用于平衡高斯-牛顿法和梯度下降法。
4. 路径点 (Path Points)
路径点定义了机械臂在从A点到B点时必须经过的途径点数量。当机械臂进行从A到B的逆运动学求解时,系统会:
- 根据设定的路径点数量,自动生成从A到B的中间路径点。
- 通过选定的规划器(如RRT*或CHOMP)进行避障路径规划。
- 使用内置的笛卡尔空间(Cartesian)插值方法,在路径点之间生成平滑的轨迹。
- 确保整个运动过程既满足避障要求,又保证运动的平滑性和精确性。
5. 检查自碰撞
类似于MoveIt Setup Assistant,通过采样在关节可达区域将关节组分为总是、偶尔、从不碰撞,自碰撞组为偶尔碰撞的关节组。该检查在初始化时执行,以便路径规划在考虑环境碰撞的同时避免自碰撞。
注意事项:
- Path Points设置较大会增加计算时间,建议根据实际需求调整
- Direct模式不进行避障,仅适用于无障碍环境
坐标系 (Coordinate Frames)
- Base 基座坐标系 - 基座坐标系以机械臂零点为原心的坐标系,一般以base link底部为中心。末端的XYZ和RPY位姿相对于这个点进行计算。这是默认的坐标系。
- 工具坐标系 (Tool Frame) - 以末端法兰作为原心的坐标系。当机械臂的末端工具相对于法兰盘设置了XYZ或者RPY偏移,机械臂的运动将相对于法兰盘中心进行相对运动。这使得在更换不同工具时,无需重新调整整个运动轨迹,只需更新工具坐标系参数即可。
Offline Programming 离线编程
离线编程允许用户通过编写运动指令来控制机械臂执行复杂的运动轨迹。系统支持三种基本运动类型,所有运动都基于笛卡尔空间的目标位姿进行规划和执行。
基本语法规则
- 每行一个指令
- 分号
;后添加注释 - 坐标单位:米(m),角度单位:度(°)
- 参数格式:
参数名=<值> - 可选参数用
[ ]表示
PTP - 点到点运动
以最短关节路径,将末端执行器移动到指定的笛卡尔坐标位置。各关节独立运动,路径由关节空间插值决定,末端执行器的笛卡尔路径不一定是直线。
语法:
PTP X=<x> Y=<y> Z=<z> [A=<a>] [B=<b>] [C=<c>];
参数说明:
X, Y, Z- 目标位置的笛卡尔坐标(单位:米)A, B, C- 目标姿态的旋转角度(单位:度),分别对应 Roll、Pitch、Yaw(可选)
运动特点:
- 速度快,效率高,关节空间插值计算简单
- 各关节同时启动和停止,但可能以不同的速度运动
- 不需要频繁的逆运动学求解
- 适合点位操作,如拾取、放置、点位标记等
示例:
PTP X=0.2 Y=0 Z=0.15 A=0 B=0 C=90; ; 移动到指定位置和姿态
PTP X=0.25 Y=0.1 Z=0.2; ; 仅指定位置,保持当前姿态
LIN - 直线运动
末端执行器在笛卡尔空间中沿直线路径从起点移动到终点。系统会连续进行逆运动学求解以保证直线路径,并根据设定的路径点数量进行线性插值。
语法:
LIN X=<x> Y=<y> Z=<z> [A=<a>] [B=<b>] [C=<c>];
参数说明:
X, Y, Z- 目标位置的笛卡尔坐标(单位:米)A, B, C- 目标姿态的旋转角度(单位:度),分别对应 Roll、Pitch、Yaw(可选)
运动特点:
- 末端执行器严格沿直线路径运动
- 系统自动在直线路径上生成中间路径点
- 通过选定的规划器(RRT*、CHOMP或Direct模式)进行避障检查和平滑处理
- 适用于激光切割、焊接、涂胶、装配等需要精确控制末端轨迹的应用
示例:
LIN X=0.25 Y=0.1 Z=0.2 A=0 B=90 C=0; ; 沿直线移动到目标位置
LIN X=0.3 Y=0.15 Z=0.18; ; 直线移动,保持当前姿态
CIRC - 圆弧运动(IJK偏移点模式)
给定圆弧的起点、终点和辅助点,使末端执行器沿圆弧路径运动到目标位置。本系统采用IJK偏移点模式定义圆弧运动。
A:起始点
Aux:辅助点(起始点A + IJK偏移)
B:终点
语法:
CIRC X=<x> Y=<y> Z=<z> I=<i> J=<j> K=<k> [A=<a>] [B=<b>] [C=<c>];
参数说明:
X, Y, Z- 圆弧终点的笛卡尔坐标(单位:米)I, J, K- 从起点到辅助点的偏移量(单位:米),分别对应X、Y、Z方向A, B, C- 终点姿态的旋转角度(单位:度),分别对应 Roll、Pitch、Yaw(可选)
IJK偏移点模式工作原理:
- 起点 (Start Point) - 当前机械臂末端执行器的位置,作为圆弧的起始点
- 辅助点 (Auxiliary Point) - 辅助点位置 = 起点位置 + (I, J, K)偏移量,用于确定圆弧路径
- 终点 (End Point) - 由指令中的 X, Y, Z 坐标指定
- 圆弧生成 - 系统根据起点、辅助点和终点三个参数,计算出唯一确定的圆弧路径
- 路径选择 - 圆弧经过这三个点,形成平滑的圆弧轨迹
运动特点:
- 末端执行器严格按照圆弧路径运动,保持恒定的曲率半径
- 姿态在圆弧运动过程中从起点姿态平滑过渡到终点姿态
- 系统根据设定的路径点数量在圆弧上均匀插值生成中间点
- 适用于圆弧焊接、倒角加工、轮廓跟踪、曲面加工等应用
示例:
; 示例1: 在XY平面上绘制一个圆弧
CIRC X=0.3 Y=0.15 Z=0.15 I=0.05 J=0 K=0 A=0 B=90 C=45;
; 解释:
; - 假设起点为 (0.25, 0.1, 0.15)
; - 辅助点位置 = 起点 + IJK = (0.25+0.05, 0.1+0, 0.15+0) = (0.3, 0.1, 0.15)
; - 终点位置 = (0.3, 0.15, 0.15)
; - 圆弧经过起点、辅助点、终点三个点
; - 终点姿态为 Roll=0°, Pitch=90°, Yaw=45°
; 示例2: 空间圆弧运动
CIRC X=0.2 Y=0.15 Z=0.18 I=0 J=0.025 K=0.015;
注意事项:
- 确保起点、辅助点和终点三点不共线,否则无法形成有效圆弧
- 三点确定唯一圆弧,系统会自动计算圆心和半径
- 如果参数设置不当,系统会报错提示无法生成有效圆弧
编程提示与最佳实践
- 指令组合 - 所有运动指令都可以串联使用,形成复杂的运动轨迹程序
- 路径规划 - LIN 和 CIRC 指令会使用初始化配置中设置的路径点数量和规划器参数
- 仿真验证 - 建议在实际运行前使用仿真功能验证轨迹的正确性和安全性
- 姿态控制 - 如果不需要改变姿态,可以省略 A、B、C 参数
- 单位一致性 - 始终确保使用正确的单位(位置:米,角度:度)
- 注释使用 - 使用分号
;添加注释,提高程序可读性
固件管理
固件管理模块进行远程/本地固件更新。请连接串口,并保持烧录过程中的串口连接稳定。
基本配置
| 配置项 | 参数说明 |
|---|---|
| 开发板选择 |
|
烧录参数
| 开发板 | 参数设置 |
|---|---|
| ESP32参数 |
|
| Arduino参数 |
|
固件更新
| 更新方式 | 说明 |
|---|---|
| 自定义固件 | 上传本地.bin文件进行更新 |
| 远程固件 | 在线更新官方最新固件 |
注意事项:
- 更新前请确认选择了正确的开发板类型
- 烧录过程中请勿断开设备连接
Change Log
-
版本 1.2 (2024-10-21)
- 新增运动学模块,支持机械臂的正向和逆向运动学计算
- UI界面优化
-
版本 1.1 (2023-09-21)
- 新增Anytroller模块, 支持自定义机械臂控制
- 新增固件管理界面
- 优化机械臂控制模式和ROS模式间的切换
-
版本 1.0 (2024-09-10)
- Noman-app软件正式版发布
- 新增ROS集成功能
- 优化了Controller的用户界面
- 修复了一些已知的稳定性问题
-
版本 1.0-beta (2024-09-01)
- Noman-app软件测试板发布
- 包含Controller基本功能