乐山网站制作设计公司,wordpress个人中心打不开,廊坊手机模板建站,seo的工具有哪些2.1 准备URDF package 首先我们要准备一个机械臂的urdf#xff0c;如果你已有URDF#xff0c;可以使用自己的urdf模型。若手头没有现成的URDF#xff0c;可以从此处下载一个库卡LWR简化模型URDF#xff0c;这是一个固定底座7自由度的机械臂。 从该连接处依次进入examples/s…2.1 准备URDF package 首先我们要准备一个机械臂的urdf如果你已有URDF可以使用自己的urdf模型。若手头没有现成的URDF可以从此处下载一个库卡LWR简化模型URDF这是一个固定底座7自由度的机械臂。 从该连接处依次进入examples/sovlers/ik_solver_demo/resources下载里面的lwr_simplified.urdf。复制代码 1 2 3 4 cd path_to_catkin_ws/src catkin_create_pkg lwr_description cd lwr_description mkdir urdf 将下载好的lwr_simplified.urdf放入urdf文件夹中这样一个urdf package便创建好了。
2.2 MoveIt!配置助手 (MoveIt! Setup Assistant)2.2.1 打开MoveIt! Setup Assistant复制代码 1 roslaunch moveit_setup_assistant setup_assistant.launch MoveIt! Setup Assistant 是一个图形界面可以让我们不用写代码看代码直接用鼠标点击就可以配置机器人的运动规划所需要的信息。点击Create New MoveIt Configuration Package来创建新的配置包选择刚刚下载的urdf然后点击Load Files 载入文件。
2.2.2 创建碰撞免检矩阵(ACM) 点击Setup Assisant的左边第二项Self-Collisions在这里我们将创建碰撞免检矩阵(Avoid Collision Matrix, ACM)。再次强调怎么创建很简单点击一下Regenerate Default Collision Matrix就可以了问题是为什么ACM是做什么的 我们知道碰撞检测是非常复杂的运算过程。对于多关节机械臂或者类人机器人来说机械结构复杂肢体多碰撞检测需要涉及很多的空间几何计算。但是对于刚体机器人来说有些肢体之间是不可能发生碰撞的比如原本就相邻的肢体比如类人机器人的脚和头。这里生成的ACM就是告诉我们这个URDF所描述的机器人哪些肢体之间是不会发生碰撞的。那么在之后的碰撞检测算法中我们就可以略过对这些肢体之间的检测以提高检测效率。2.2.3 创建虚拟关节 (Virtual Joints) 在Setup Assistant 第三项Virtual Joints里面我们要创建所谓的虚拟关节。这个虚拟关节可以理解为一个连接机器人和世界的关节。 一般来说Virtual Joint Name我们命名为‘world_joint’而Child Link指的是我们要把‘世界’和机器人的那个部位连接那么很显然我们选择基座base。‘Parent Frame Name’是世界坐标的名字在ROS中一般叫world_frame。关节类型 Joint Type, 很显然这里我们选择固定Fixed. 代表机器人相对于世界是固定的。而另外两种, Planar指的是平面移动底座(xy平面角度)用于移动机器人比如PR2 还有一种Floating, 指的是浮动基座(xyz positionorientation)比如类人机器人。 2.2.4 创建规划群 (Planning Groups) 创建Planning Group是MoveIt的核心之一。首先点击Add Group, 我们会看到一个界面如下图 那么这些都是什么呢 Group Name: 不用多说名字。。。我们就叫Arm。Kinematic Solver: 运动学求解工具这个就是负责求解正向运动学(Forward Kinematics)和逆运动学(IK, 见1.3节)的。 一般我们选用KDL The Kinematics and Dynamics Library。这是一个运动学与动力学的库可以很好的解决6自由度以上的单链机械结构的正逆运动学问题。当然你也可以用其他IK Solver, 比如SRV或者IK_FAST甚至你可以自己开发新的Solver然后插入进来如果有空我以后会发帖讲解如何创建新的运动学求解库并插入到MoveIt。Kin. Search Resolution: 关节空间的采样密度Kin. Search TImeout: 求解时间Kin. Solver Attempts: 求解失败尝试次数一般来说这三项使用默认值就可以。你也可以根据具体需要做出适当调整。 接下来我们要正式创建这个组群有很多不同的方法Add Joints, Add Links, Add Kin. Chain, Add Subgroups。我们这里选择Add Kin. Chain这样我们可以清楚的看到整个机器人的机械机构 在正中方我们可以看到这个机械臂的结构一个link接着一个link。下方我们可以看到有Base Link和Tip Link我们选择lwr_arm_0_link作为Base选择lwr_arm_7_link作为Tip. 然后点击Save这样一个规划组群就创建好了。同样的我们可以再创建一个手的组群(Hand)这一次我们用Add Links然后选择lwr_arm_7_link。 2.2.5 创建机器人预设位姿 (Robot Poses) 在Setup Assistant 第五项, ‘Robot Poses’我们创建预设的机器人位姿。点击‘Add Pose’我们为机械臂创建一个向上直立的位姿UpRight选择Planning Group为Arm。可以看到很多滚动条全设为0就是垂直向上的位姿。然后点击保存。当然你可以根据需要设置其他不同位姿。 2.2.6 配置终端控制器(End Effectors) 终端控制器就是机械臂的手以后用来在工作环境中直接控制的部位。我们添加一个叫做HandEff的终端控制器End Effector Group选择之前创建好的HandParent_Link选择机械臂的最后一个肢体lwr_arm_7_link。Parent Group选择Arm。 2.2.7 配置被动关节(Passive Joints) 所谓被动关节就是指现实中不配置电机的关节也就是不会出现在机器人的Joint State Msg里以避免MoveIt与JointState出现匹配错误。这里我们的LWR机械臂并没有此类被动关节所以可以直接跳过。 2.2.8 生成配置文件(Configuration Files) 最后一步在Configuration Package Save Path里面选择一个保存地址一般我们把他放在path_to_catkin_ws/src/lwr_moveit_config然后点击Generate Package这样一个完整的MoveIt Configuration Package就创建好了先不要急着运行我们先来看看都生成了哪些东西还有一些重要的配置参数都是在哪定义的。