机械臂实验入门知识
1. 机械臂概述
机械臂的机械机构由一系列刚性构件(连杆)通过链接(关节)联结起来,机械手的特征在于具有用于保证可移动性的臂( arm ),提供灵活性的腕( wrist )和执行机器人所需完成任务的末端执行器( end - effector )。
机械臂的运动能力由关节保证。两个相邻连杆的连接可以通过移动关节( prismatic joint)或旋转关节( revolute joint)实现。在一个开式运动链中,每一个移动关节或转动关节都为机械结构提供一个自由度( degrees of freedom , DOF )。移动关节可以实现两个连杆之间的相对平移,而旋转关节可以实现两个连杆之间的相对转动(旋转关节相较移动关节更为简捷可靠)。而在闭式运动链中,由于闭环带来的约束,自由度要少于关节数。
机械臂的轴数
机械臂的轴数一般指的关节型机械臂的指标,机器人有几个轴关节旧有几个伺服电机来控制协调整体的活动,每个轴都配有伺服电机和减速机机械臂的轴数也表征了机械臂的自由度,但是实际的运行中,机械臂的活动空间不仅由自由度约束,同时也由关节之间的电动器件电气参数约束,其各关节的转动并不是360°无死角的。
2. 机械臂关节之间的约束关系
机械臂的关节之间的约束关系在机械设计中是一系列的配合约束条件,我们可以通过自动化的工具将机械臂的3D模型导出,例如导出为ROS中的urdf文件,其约束也将记录,可以利用ROS的MoveIt!组件进行仿真或者真实的配合规划。
机械臂的部件之间存在多种约束关系,这些关系主要是为了确保机械臂在工作过程中能够正常运动,并满足设计要求。以下是常见的约束关系:
连杆约束:机械臂的每个关节由连杆连接,连杆的长度和连接方式会影响机械臂的运动范围和速度。
关节限位:每个关节的运动范围可能受到限制,以避免机械臂超出安全范围,损坏自身或周围设备。
运动学约束:机械臂的各个部件之间存在运动学约束,这些约束会影响机械臂的运动方式和姿态,例如,某些关节可能无法同时达到某些特定位置或姿态。
工作空间限制:机械臂的工作空间受到约束,不能超出预定范围。这可能受到物理空间限制、安全要求以及任务特性的影响。
负载限制:机械臂承载的负载有一定的限制,超过限制可能导致机械臂失去平衡、运动不稳定或损坏。
碰撞检测:机械臂的部件需要避免相互碰撞,以防止损坏或干扰工作过程。
动力学约束:机械臂的运动速度、加速度和力矩受到动力学约束,需要根据设计要求进行控制。
姿态约束:机械臂的末端工具可能需要保持特定的姿态,例如垂直、水平或特定角度,以适应不同的工作需求。
3. 机械臂仿真实验
利用ROS的MoveIt!组件可以实现快速的机械臂实验落地,使用机械臂的urdf文件做ROS的配置,可以迅速做一些仿真实验,真实的机械臂由机械结构建模导出模型文件后可以在MoveIt!中配置物理参数用于轨迹空间中的轨迹规划。
MoveIt!常用API
MoveGroupCommander 类:这是 MoveIt Python API 中的核心类之一,它允许您对 MoveIt 中的运动组进行操作。您可以创建 MoveGroupCommander 对象并对其调用各种方法来执行运动规划、执行动作等。
from moveit_commander import MoveGroupCommander
# 创建 MoveGroupCommander 对象
group = MoveGroupCommander("arm")
# 进行运动规划
group.set_pose_target(target_pose)
plan = group.plan()
# 执行运动
group.execute(plan)
RobotCommander 类:这是另一个核心类,它允许您获取有关机器人和运动组的信息。您可以使用 RobotCommander 对象来获取机器人的关节限位、工作空间限制等信息。
from moveit_commander import RobotCommander
# 创建 RobotCommander 对象
robot = RobotCommander()
# 获取机器人关节限位
joint_limits = robot.get_joint_limits("arm_joint_1")
PlanningSceneInterface 类:该类允许您对规划场景进行操作,例如添加和删除障碍物、获取当前场景信息等。
from moveit_commander import PlanningSceneInterface
# 创建 PlanningSceneInterface 对象
scene = PlanningSceneInterface()
# 添加障碍物
scene.add_box("obstacle", box_size, pose)
MoveItCommander 模块:此模块提供了许多其他的 MoveIt API,例如通过 MoveIt 启动节点、加载运动组配置文件等。
from moveit_commander import MoveItCommander
# 初始化 MoveIt
MoveItCommander.init()
# 加载运动组配置文件
MoveItCommander.load_yaml_file("my_move_group_config.yaml")
4. Hanbot参数
机械臂尺寸参数如下,电源板采用12V5A供电,通信方式有两种,第一种外接电源版和TTL转USB与主机通信,使用ROS驱动,第二种方式为使用官方的控制板OpenCR,用控制板进行供电和通信控制。
图为在Rviz中联合MoveIt!对目标点的轨迹规划仿真,目前对于实体机械臂的控制能够通过键盘和GUI界面进行。
能够获取所有的CAD零件图以及装配图,如果能够下载或者注册onshape账号,可以进行适应性的参数修改。
能够获取到全部的零件stl文件,包含零件的三维信息,可以用于3D打印。