ROS入门(二) Solideworks生成URDF 并导入rviz
URDF文件创建,首先在工作空间 的src下,使用catkin_make packagename urdf创建一个urdf包。
这里我们新建一个urdf文件夹,在urdf中配置一个 .urdf文件。
在ROSwiki的urdf教程里,里面需要有一个xml文件,代码如下:
1 <robot name="test_robot"> 2 <link name="link1" /> 3 <link name="link2" /> 4 <link name="link3" /> 5 <link name="link4" /> 6 7 <joint name="joint1" type="continuous"> 8 <parent link="link1"/> 9 <child link="link2"/> 10 </joint> 11 12 <joint name="joint2" type="continuous"> 13 <parent link="link1"/> 14 <child link="link3"/> 15 </joint> 16 17 <joint name="joint3" type="continuous"> 18 <parent link="link3"/> 19 <child link="link4"/> 20 </joint> 21 </robot>
这里表示一个三个关节,四个零件的结构。如图:
urdf里面可以填写很多不同的属性,例如材料,形状等等,代码如下:
1 <link name="my_link"> 2 <inertial> 3 <origin xyz="0 0 0.5" rpy="0 0 0"/> 4 <mass value="1"/> 5 <inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" /> 6 </inertial> 7 8 <visual> 9 <origin xyz="0 0 0" rpy="0 0 0" /> 10 <geometry> 11 <box size="1 1 1" /> 12 </geometry> 13 <material name="Cyan"> 14 <color rgba="0 1.0 1.0 1.0"/> 15 </material> 16 </visual> 17 18 <collision> 19 <origin xyz="0 0 0" rpy="0 0 0"/> 20 <geometry> 21 <cylinder radius="1" length="0.5"/> 22 </geometry> 23 </collision> 24 </link>
之后,我们需要在同package里配置launch文件夹,在文件夹里创建 .launch文件。
这个文件同为xml文件,需要基本配置为:
<launch> <arg name="model" /> <arg name="gui" default="False" /> <param name="robot_description" textfile="$(find xxxx)/urdf/xxx.urdf" /> <param name="use_gui" value="$(arg gui)"/> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" /> </launch>
这里的robot_discription里 xxx的部分是需要修改的。
find后面跟的xxxx是你的package名字,xxx是你的 .urdf文件的文件名。
最后面的rviz,可以盗用ros的教程中的rviz文件。
修改好了之后,编译一下(在工作空间的根目里,运行catkin_make)。
编译好后,运行(在linux中双击tab键会自动补全文件名称, 如果无法补全,说明文件不存在或者拼写有错误)
roslaunch package xxx.launch gui:=true
这里的package是你自己的包的名称,xxx是你的.launch文件的名字。
运行后,会打开rviz,add你创建的模型,就会显示啦。
首先,我们要在安装Solideworks插件。
下载地址:http://wiki.ros.org/sw_urdf_exporter
安装过程中会自动检测solideworks的安装路径,一直下一步就可以拉。
此前solideworks要关闭。
打开solideworks。添加插件。
选择sw2urdf。
打开零件或装配体,有的人会直接在菜单栏中显示file,有的会在 >工具 中显示file。选择EXPORT AS URDF。
输出成URDF,可以选择URDF配置。
这里的link component就是添加相应的零件图。
在零件图中,界面如下图。
用来配置相关零件质量,碰撞等。
在装配体中的Export to urdf中选择preview, 会有如下窗口。
这里就会配置你的joint。其中joint type可以选择关节类型
定义关节类型,可选项有:
-
revolute - 旋转关节,其极限位置由 upper and lower limits 决定
-
continuous - 旋转关节,无位置限制
-
prismatic - 滑动关节,其极限位置由 upper and lower limits 决定
-
fixed - 虚拟关节,关节不可运动
-
floating - 六自由度关节
-
planar - 平面关节
里面的设置大家可以自己尝试。
确定之后,就会进入下一个配置实体属性的界面,
这里可以设置皮肤,初始位置,材料等特性。 点击Finish,在文件名中添加你的package的想要的名字。
最后保存好相应的文件夹。
这里面的项目名称就是你保存的文件名。把文件夹打开,里面会有自带的Cmakelist,package,launch文件夹,mesh,urdf和texture文件夹。
有一些文件时需要修改的。在launch文件中,display.launch文件部分内容是需要修改的,其中就有urdf的位置一行。
原有代码如下:
<launch> <arg name="model" /> <arg name="gui" default="False" /> <param name="robot_description" textfile="$(find test)/robots/test.urdf" /> <param name="use_gui" value="$(arg gui)" /> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find test)/urdf.rviz" /> </launch>
将
<param name="robot_description" textfile="$(find test)/robots/test.urdf" /> 改为 <param name="robot_description" textfile="$(find test)/urdf/test.urdf" />
还需要修改一下rviz的文件才可以使用rviz打开模型。rviz文件可以改为
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find test)/urdf.rviz" /> 改为 <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" />
修改完毕,保存后,直接在terminal中运行 roslaunch packagename display.launch 就会打开rviz,点击添加 robotmodle 就可以加载模型了。