目录
1、转夹爪stl为urdf模型,得到夹爪包命名为GripperURDF
3、将夹爪urdf包和机械臂urdf包合并得到新的含爪机械臂的urdf模型
4、moveit setup assistance修改原有配置包gluon_moveit_config
选择edit existing moveit configuration package,选择原先机械臂的配置包gluon_moveit_config,再load files则可看到如下图
self-collisions中,需要点击generate重新生成碰撞矩阵,否则在后续运动规划中很容易有路径但规划不出来
planning groups里,可以添加一个夹爪的关节组Gripper,原有的组可以不变。
其他列都不动就可,最后生成新的配置文件时,把列出来文件的不管黑的橙的红的都勾上,点击generate生成即可完成修改。
5、在生成的gluon_moveit_config中找到demo.launch 加入操控真实机械臂运动的节点
原标题:将夹爪stl模型加入机械臂urdf模型中,并在Moveit Setup Assistance中修改更新原有的配置文件
一、前清提要
新购入了夹爪,要将夹爪模型加入原来的机械臂中,修改功能包可以防止碰撞等等。
现有条件:
夹爪stl模型
机械臂urdf模型
由原先机械臂urdf模型得到的gluon(或其他机械臂名字)_moveit_config功能包
需求:
将夹爪stl模型转换成urdf模型
与原先的机械臂urdf模型合并得到新的含爪机械臂的urdf模型
并在moveit setup assistance中修改现有配置文件,得到新的功能包。
ps:由于原先的功能包中具有连接真实机械臂的节点,需要在新的功能包中补充内容以实现操作真实机械臂的功能。
二、操作过程
1、转夹爪stl为urdf模型,得到夹爪包命名为GripperURDF
利用soildworks中的stl转urdf插件,转夹爪stl为urdf模型,得到夹爪包命名为GripperURDF
<暂时省略,csdn里其他博主的介绍有很多>
2、将夹爪包移到工作空间下,查看其是否完整,符合要求
生成的夹爪包目录与内容如下:
重要的就是meshes目录底下的base_link0.stl以及urdf目录底下的GripperURDF.urdf,若要将其合并到机械臂模型,则需要转移这两个文件。
至于launch底下的display.launch与gazebo.launch是作展示使用的,可以通过roslaunch运行在rviz或者gazebo查看导出的urdf包是否完整。
以display.launch为例
- 将夹爪包移到catkin_ws下catkin_make一下
- 输入命令roslaunch GripperURDF display.launch 可看到界面
- 点击左下方add 找到RobotModel 即可在rviz里查看夹爪模型
确认生成的模型无误,继续下一步
3、将夹爪urdf包和机械臂urdf包合并得到新的含爪机械臂的urdf模型
夹爪urdf包上述已知为GripperURDF,机械臂包名为gluon_2l6_4l3,目录如下。
(mesher目录下的base_link0.stl是后面加进去的)
ps:我们需要知道urdf的书写规则是 link-joint-link,了解一些书写规范。
以我的机械臂最后一个关节grasp_frame_joint在urdf的描述为例
<joint name="grasp_frame_joint" type="fixed"> <origin rpy="-1.57 -1.57 0" xyz="0 0 0.09" /> <parent link="6_Link" /> <child link="grasp_frame" /> <axis xyz="0 0 0" /> </joint>
关节grasp_frame_joint的母坐标为6_link,子坐标是grasp_frame,而grasp_frame也是原机械臂包最后一个坐标系
而我们的夹爪基坐标在夹爪包的命名为base_link0,所以我们需要命名一个连接grasp_frame与base_link0的关节点,在这里起名为arm_hand_joint
- 添加连接机械臂最后一个坐标grasp_frame与夹爪基坐标base_link0的关节点arm_hand_joint,添加内容如下
<joint name="arm_hand_joint" type="revolute">
<origin xyz="-0.01 0 0" rpy="0 0 0" />
<parent link="grasp_frame" />
<child link="base_link0" />
<axis xyz="-1 0 0" />
<limit lower="-2.79" upper="2.79" effort="30" velocity="3.14" />
</joint>
origin xyz rpy的大小,则要根据你设置的两个坐标系间的关系自己对照调节。可以通过机械臂包里的display.launch 查看调整(xyz ,分别对应tf中红绿蓝,rpy,对应沿着xyz旋转角度)
- 加入夹爪包中的GripperURDF.urdf中base_link0的内容至机械臂gluon_2l6_4l3.urdf文件中,可放在上一步骤的关节点arm_hand_joint之后,注意书写规范
<link
name="base_link0">
<inertial>
<origin xyz="0.040745 0.0045076 -0.0046969" rpy="0 0 0" />
<mass value="0.080435" />
<inertia
ixx="1.3945E-05"
ixy="-3.2513E-08"
ixz="-7.1325E-09"
iyy="1.3972E-05"
iyz="4.6346E-10"
izz="1.7599E-05" />
</inertial>
<visual>
<origin
xyz="0.05 0.056 -0.013"
rpy="0 1.57 0" />
<geometry>
<mesh
filename="package://gluon_2l6_4l3/meshes/base_link0.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://gluon_2l6_4l3/meshes/base_link0.STL" />
</geometry>
</collision>
</link>
- 修改baselink0中指定meshes的路径 filename="package://gluon_2l6_4l3/meshes/base_link0.STL,并把夹爪包中的base_link0.STL移动到对应的路径下。
最后通过display.launch 即可观察到,修改好的含爪机械臂模型
4、moveit setup assistance修改原有配置包gluon_moveit_config
原有gluon_moveit_config包目录如下
-
修改.setup_assistant 的内容
点击目录下的.setup_assistant 将文件内容中urdf下属的package与relative_path改为你对应的新机械臂包的名字与相对路径(我的功能包名字后来有修改,变成的gluon,按理照着来填的就是gluon_2l6_4l3)
-
在终端运行moveit_setup_assistant
运行命令 roslaunch moveit_setup_assistant setup_assistant.launch即可看到熟悉的页面
-
选择edit existing moveit configuration package,选择原先机械臂的配置包gluon_moveit_config,再load files则可看到如下图
-
self-collisions中,需要点击generate重新生成碰撞矩阵,否则在后续运动规划中很容易有路径但规划不出来
-
planning groups里,可以添加一个夹爪的关节组Gripper,原有的组可以不变。
-
其他列都不动就可,最后生成新的配置文件时,把列出来文件的不管黑的橙的红的都勾上,点击generate生成即可完成修改。
5、在生成的gluon_moveit_config中找到demo.launch 加入操控真实机械臂运动的节点
在得到新的含爪机械臂配置包 gluon_moveit_config之后,demo.launch只是针对虚拟机械臂操控的,可以在rviz里进行仿真
但是若原先有操控真实机械臂的节点,加入再运行demo.launch即可同时实现操控机械臂的真实运动和仿真,博主加入的为
<!-- Real robot connected -->
<include file="$(find gluon_control)/launch/gluon_control.launch">
</include>
自此,整个流程结束。