使用MoveIt Setup Assistant进行配置

来源:互联网 发布:淘宝药店七乐康 假 编辑:程序博客网 时间:2024/05/18 12:30

首先在终端运行以下代码,打开moveit配置助手:

roslaunch moveit_setup_assistant setup_assistant.launch

点击create new moveit configuration package来创建新的配置包,选择你要配置的urdf文件,然后点击load files载入文件。
依照setup assistant左边的顺序,依次进行如下配置:
1.Self-Collisions
在这里我们将创建碰撞免检矩阵ACM,点击一下Regenerate Default Collision Matrix就可以了。对于刚体机器人来说,有些肢体之间是不可能发生碰撞的,比如原本就相邻的肢体,比如类人机器人的脚和头。这里生成的ACM就是告诉我们,这个URDF所描述的机器人,哪些肢体之间是不会发生碰撞的,那么在之后的碰撞检测算法中,我们就可以略过对这些肢体之间的检测,以提高检测效率。

2.Virtual Joints
在这里我们要创建所谓的虚拟关节,这个虚拟关节可以理解为一个连接机器人和世界的关节。一般来说,Virtual Joint Name我们命名为‘world_joint’,而’Child Link’指的是我们要把‘世界’和机器人的那个部位连接,那么很显然我们选择基座’base’。‘Parent Frame Name’,是世界坐标的名字,在ROS中一般叫’world_frame’。关节类型 Joint Type, 很显然这里我们选择固定Fixed. 代表机器人相对于世界是固定的。而另外两种, Planar指的是平面移动底座(xy平面+角度),用于移动机器人比如PR2;还有一种Floating, 指的是浮动基座(xyz position+orientation),比如类人机器人。

3.Planning Groups
规划组用于在语义上描述你的机器人的不同部分,如定义一个手臂是什么,或一个末端执行器。创建planning group是moveit的核心之一。
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: 求解失败尝试次数,一般来说这三项使用默认值就可以。你也可以根据具体需要做出适当调整。

4.Robot Poses
创建预设的机器人位姿

5.End Effectors
终端控制器,就是机械臂的手,以后用来在工作环境中直接控制的部位。

6.Passive Joints
配置被动关节,就是现实中不配电机的关节,也就是不会出现在机器人的Joint State Msg里,以避免Moveit与JointState出现匹配错误。

7.Author Information
本人的信息

8.Configuration Files
选择配置文件要保存的地址,一般放在path_to_catkin_ws/src/robotname_moveit_config,然后点击Generate Package,这样一个完整的Moveit Configuration Package就创建好了。

moveit配置包解析:
打开刚刚创建好的pr2_moveit_config文件夹,我们发现有config和launch两个文件夹。
config文件夹:
1.fake_controllers.yaml:这是虚拟控制器配置文件,方便我们在没有实体机器人,甚至没有任何模拟器(如gazebo)开启的情况下也能运行MoveIt。

2.joint_limits.yaml:这里记录了机器人各个关节的位置速度加速度的极限,这些都会被用于以后的规划中。

3.kinematics.yaml:用于初始化运动学求解库。

4.ompl_planning.yaml:这里是配置OMPL各种算法的各种参数。

5.pr2.srdf:SRDF是moveit的配置文件,配合URDF使用。我们可以看到这是一个xml格式的配置文件,根是robot,并有一个属性值name=’pr2’。下面各个项目应该很明显,就是我们刚刚在Setup Assistant里面所设置的东西,包含了组群,位姿,终端控制器,虚拟关节,以及碰撞免测矩阵ACM的定义。理论上,只要有了srdf和urdf,我们就可以完全定义一个机器人moveit信息。

launch文件夹:
1.demo.launch
demo是运行的总结点,打开我们可以看到他include了其他的launch文件。其中第14行说,如果有需要,发布静态的tf。比如说,你的机器人基座不在世界坐标的原点,你可以发布一个静态tf来描述机器人在世界坐标中的位置。第17-21行,就是我们发布虚拟机器人状态的地方了,当然,如果你有实体机器人或者有gazebo之类的模拟器,你需要去掉这一部分,有其他相应的节点来发布机器人状态。26-32行运行了另一个moveit重要的节点,move group。

2.move_group.launch
顾名思义,move group的功能是让一个规划组群动起来。怎么动,那就要做运动规划了,在move_group.launch第24-26行定义了运动规划库的使用,我们可以看到,默认的是使用ompl运动规划库。同样的,如果以后有时间,我会发帖详解如何创建新的运动规划库插件并让moveit使用其他的运动规划算法。其他的都是设置一些基本参数,暂时可以略过。

3.planning_context.launch
这里我们可以看到,定义了所使用的urdf和srdf文件,以及运动学求解库。不建议手动更改这些,但是如果你需要使用不同的urdf,srdf,可以在这里更改。

4.setup_assistant.launch
如果你需要更改一些配置,那么可以直接运行

roslaunch pr2_moveit_config setup_assistant.launch

这样就可以基于当前设置做更改,而不是重新设置。

0 0