MoveIt教程[15]:MoveIt! Setup Assistant

一.Overview
MoveIt Setup Assistant是一个图形用户界面配置任何robot使用MoveIt。它的主要功能是为robot生成一个Semantic Robot Description Format [SRDF]文件。此外,它还生成其它必要的配置文件,以便与MoveIt 管道一起使用。要了解更多关于SRDF的信息,可以浏览URDF/SRDF概览页面。

二.Getting Started
1.首先按照说明安装MoveIt,如果还没有这样做
2.如果还没有这样做,确保对于Kinetic有Franka描述软件包:sudo apt-get install ros-kinetic-franka-description
3.如果已经有panda_moveit_config包,一定要删除,因为本教程将教你如何从头开始创建:

cd ~/ws_moveit/src
rm -rf panda_moveit_config
catkin clean panda_moveit_config

三.Step 1: Start
1.开启MoveIt Setup Assistant:roslaunch moveit_setup_assistant setup_assistant.launch
2.这将打开开始屏幕,有两个选项:Create New MoveIt! Configuration Package或者Edit Existing MoveIt! Configuration Package
3.点击Create New MoveIt! Configuration Package按钮,调出以下画面
4.点击browse按钮和导航到已经安装的panda_arm_hand.urdf.xacro文件,当上面安装Franka包的时候[对于ROS Kinetic,在Ubuntu上,该文件位于/opt/ros/kinetic/share/franka_description/robots/panda_arm_hand.urdf.xacro]。选择该文件,然后点击Load Files。Setup Assistant将会加载文件[这可能需要几秒钟],显示这个屏幕。

四.Step 2: Generate Self-Collision Matrix
默认的Self-Collision Matrix生成器会搜索robot上可以安全地从冲突检查中禁用的links对,从而减少了运动规划处理时间。当这些links总是在碰撞中,从不在碰撞中,在robot默认位置的碰撞中,或者当links在运动链上相互相邻时,这些links就会被禁用。采样密度指定了多少个随机的robot位置来检查自碰撞。较高的密度需要更多的计算时间,而较低的密度有更大的可能性禁用不应该禁用的对。默认值是10,000个冲突检查。冲突检查是并行进行的,以减少处理时间。
1.单击左侧的Self-Collisions窗格选择器,然后单击生成Generate Collision Matrix按钮。Setup Assistant将工作几秒钟,然后在主表中显示其计算结果。

五.Step 3: Add Virtual Joints
虚拟关节主要用于将robot连接到外部世界。对于Panda,将只定义一个虚拟连接,将Panda的panda_link0连接到世界框架。这个虚拟关节表示robot的基座在平面上的运动。
1.点击Virtual Joints面板选择器,点击Add Virtual Joint
2.设置joint的名字virtual_joint
3.设置child link为panda_link0,和parent frame名字为world
4.设置Joint Type为fixed
5.点击保存按钮,应该会看到这个屏幕

六.Step 4: Add Planning Groups
规划组用于从语义上描述机器人的不同部分,比如定义手臂是什么,或者末端执行器是什么。如下所示:
[1]点击Planning Groups面板选择器
[2]点击Add Group,应看到以下画面
1.Add the arm
[1]首先将增加Panda arm作为一个规划小组

  • 输入Group Name名字为panda_arm
  • 选择kdl_kinematics_plugin/KDLKinematicsPlugin作为运动学求解器进行求解。说明:如果有一个定制的robot,想要一个强大的定制IK求解器,参考Kinematics/IKFast
  • 让Kin.Search Resolution和Kin.Search Timeout保持默认值。

[2]现在,点击Add Joints按钮。会在左手边看到一个关节列表。需要选择所有属于手臂的关节并将它们添加到右手边。这些节点按照它们存储在内部树结构中的顺序排列。这使得选择一个连续的关节链变得很容易

  • 点击virtual_joint,按住键盘上的Shift键,然后点击panda_joint8。现在单击>按钮,将这些节点添加到右侧的选择节点列表中

[3]点击Save按钮保存选择的group
2.Add the gripper
[1]还会为末端执行器添加一个组。请注意,将使用与添加arm不同的过程来完成此操作

  • 点击Add Group按钮
  • 输入Group Name为hand
  • 让Kin.Search Resolution和Kin. Search Timeout保持默认值
  • 点击Add Links按钮
  • 选择panda_hand,panda_leftfinger和panda_rightfinger,和将它们添加到右侧所选链接的列表中
  • 点击Save按钮

七.Step 5: Add Robot Poses
Setup Assistant允许将某些固定的姿势添加到配置中。例如,如果希望将robot的某个位置定义为Home位置,这将很有帮助。
1.选择Robot Poses面板
2.点击Add Pose。为这个pose选择一个名字。robot将处于其Default position,joint值设置为允许joint值范围的中间值。移动各个joint直到满意,然后保存姿势。注意姿势是如何与特定的群体相关联的。可以为每个组保存单独的姿势。
3.重要提示:尝试移动所有的joints。如果在URDF中的joint限制有问题,应该能够立即在这里看到它。

八.Step 6: Label End Effectors
已经添加了Panda的gripper。现在,将这个组指定为一个特殊组:末端执行器[end effectors]。指定这组作为末端执行器允许一些特殊的操作发生在它们内部。
1.点击End Effectors面板
2.点击Add End Effector
3.对于gripper,选择hand作为End Effector Name
4.选择hand作为End Effector Group
5.对于这个end-effector,选择panda_link8作为Parent Link
6.留Parent Group空白

九.Step 7: Add Passive Joints
被动关节选项卡允许指定robot中可能存在的任何被动关节[passive joints]。这些是robot上未启动的joint[比如被动脚轮]。这告诉planners,它们不能[运动学地]规划这些关节,因为它们不能被直接控制。Panda没有被动关节[passive joints],所以跳过这一步。

十.Step 8: 3D Perception
3D Perception选项卡用于设置配置3D传感器sensors_3d.yaml的YAML配置文件的参数。
有关这些参数[点云]的详细信息,请参阅感知管道教程
在sensors_3d.yaml不被需要的情况下,选择None。

十一.Step 9: Gazebo Simulation
如果需要,通过生成一个新的与Gazebo兼容的urdf,模拟选项卡可以帮助用Gazebo模拟robot。
可以使用生成的robot urdf以以下方式在Gazebo中生成robot。
1.使用rosrun启动gazebo空世界

roslaunch gazebo_ros empty_world.launch paused:=true use_sim_time:=false gui:=true throttled:=false recording:=false debug:=true

2.使用rosrun生成机器人

rosrun gazebo_ros spawn_model -file </path_to_new_urdf/file_name.urdf> -urdf -x 0 -y 0 -z 1 -model panda

十二.Step 10: ROS Control
ROS Control是一组包,包括控制器接口、控制器管理器、传输和硬件接口,有关详细信息,请参阅ros_control文档
ROS Control选项卡可用于自动生成模拟控制器来驱动robot的joint。这将允许提供正确的ROS接口MoveIt。
1.点击ROS Control面板选择器
2.点击Add Controller,应该看到以下屏幕
3.首先添加Panda手臂位置控制器
4.输入Controller Name为arm_position_controller
5.选择position_controllers/JointPositionController为控制器类型
6.接下来必须选择这个控制器的joints,可以单独添加joints或将所有的joints添加到一个planning group中
7.现在,点击Add Planning Group Joints
8.选择panda_arm规划组,将该组中的所有joints添加到arm控制器中
9.点击Save保存选择的控制器

十三.Step 11: Add Author Information
Catkin需要作者的信息才能发布:
1.点击Author Information面板
2.输入你的名字、邮箱和地址

十四.Step 12: Generate Configuration Files
差不多了。最后一步生成所有的配置文件,将需要开始使用MoveIt。
1.点击Configuration Files面板。选择将生成的包含新配置文件集的ROS包的位置和名称。点击browse,选择一个好的位置[例如,home目录],点击Create New Folder,命名为panda_moveit_config,点击Choose。panda_moveit_config是在这个wiki的其余文档中使用的位置。这个包不必在ROS包路径中。所有生成的文件将直接进入选择的目录。
2.点击Generate Package按钮。Setup Assistant现在会生成并写入一组launch和config文件到选择的目录。所有生成的文件都将出现在Generated Files/Folders选项卡中,可以单击其中的每一个,查看它们包含的内容的描述。
3.恭喜。现在完成了生成需要的MoveIt的配置文件。

十五.What’s Next
1.MoveIt RViz插件
开始看看如何使用生成的配置文件来使用MoveIt。使用MoveIt RViz插件
2.设置IKFast Inverse Kinematics Solver
一个比默认的KDL solver更快的IK solver,但需要一些额外的步骤来设置:Kinematics/IKFast

十六.Additional Reading
有关本教程中提到的URDF和SRDF组件的详细信息,请参阅URDF和SRDF页面。

参考文献:
[1]MoveIt! Setup Assistant:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/setup_assistant/setup_assistant_tutorial.html

发布了364 篇原创文章 · 获赞 422 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/shengshengwang/article/details/103868820