先上一张图,ROS下的urdf模型可以引入基于SolidWorks的STL和dae文件,所谓的网格文件mesh。对于一个底盘和只有3个轮子的小车模型来说,使用URDF就够了。对于模型复杂点的,像我这样不喜欢代码量多的来说,就喜欢SolidWorks了。 1、模型简介 先说一下,上图模型的组成,大约有8部分组成(后轮在下面,没有显示出来)。这是一个实验小叉车的模型,前面两个轮子是从动轮,属于后驱动后转向的三轮车。名字叫做tech。 2、3维图工具SolidWorks介绍 小编安装的是SolidWorks2017 64位的,读者可以自行百度如何安装SolidWorks,最好是2017版本的。接下来就是安装SolidWorks里使用的SolidWorks to URDF Exporter插件。网址http://wiki.ros.org/action/fullsearch/SW_urdf_exporter?action=fullsearch&context=180&value=linkto%3A%22sw_urdf_exporter%22。百度关键词“SolidWorks urdf”也可以找到相关的资料。下载之后,双击安装就行了,会自己识别插件。 如果使用装配体(就是零件组装装个机器人)生成整个urdf包的话也可以,刚学习的时候使用的是这种方法。就是自己的电脑配置不高,只有第一次能够正确生成,第二次就卡死了。这种方法,urdf,launch还有CMakeList都自动生成了。我的2017版本的在工具->File->Export as URDF。我现在使用的是先建立零件图,生成STL文件。再在ROS下新建包,然后在URDF里边调用STL文件。 3、建立SolidWorks零件图 以叉车底座为例,选取基准面,在基准面画草图,再在特征里边进行一些拉伸或者切除操作。这个也可以进行一些简单的百度教程。就不用润色了,没有作用。这里要特别注意画图区域左下角的3个带颜色的坐标轴,也是符合右手或者笛卡尔坐标系的。下一步就是另存为STL文件,别忘记了配置STL的选项,不更改原图的坐标系。其实修改了的话,可以自己在ROS下修改,自己可以尝试一下。下面再对所有的零件图另存为STL。选择SolidWorks的原因是可以建立一些复杂的模型。 4、建立URDF包。 仿照ROS的初级教程,建立URDF的包。接下来这个包会包括urdf,launch以及节点。在src目录下建立包,多了一个urdf的支持。 jin@ubuntu:~/catkin_ws/src$ catkin_create_pkg tech_description std_msgs rospy roscpp urdf Created file tech_description/package.xml Created file tech_description/CMakeLists.txt Created folder tech_description/include/tech_description Created folder tech_description/src Successfully created files in /home/jin/catkin_ws/src/tech_description. Please adjust the values in package.xml. 这里生成关于机器人模型的源码文件夹、编译文件和配置文件等信息。 建立urdf和launch的文件夹,分别存放建立模型的.urdf和启动文件.launch和画图生成的三维模型信息.STL文件。 jin@ubuntu:~/catkin_ws/src/tech_description$ mkdir urdf launch meshes jin@ubuntu:~/catkin_ws/src/tech_description$ ls CMakeLists.txt include launch meshes package.xml src urdf 把windows下画好的STL文件复制到meshes文件夹里边。 建立tech.urdf 这里先画了一个底座和一台电脑,电脑的屏幕是可以折叠的,使用的是revolute,必须添加约束才可以正确运行,没有约束会报错的。可以使用中间的控件控制电脑的折叠角度。 先建立一个launch文件,简单的启动一下,看看效果。urdf_tutorial里边的一些文件也是可以参照的。当然,还得复制urdf_tutorial里边的urdf.rviz文件。就是配置一下urdf模型在rviz里边显示的参数。 但是这样还不算完成,因为后面运行的时候有时候会报错,有时候进行base_link到odom转换的时候零件的位置和方向转换错误。因为我们是复制的人家的urdf.rviz,使用的别人的link名称,我们有自己的link名称,但是没有在rviz里边声明,那么我们在urdf.rviz声明一下。添加如下类型的代码。 在rviz里边选择添加RobotModel,选择Fixed Frame的类型为base_link。当然,为了方便我已经在刚才的urdf.rviz里边修改了这些参数。 按照第二步,把link一个个的添加上去就可以了,再通过joint将两个link连接起来。因为我画图的时候,每个零件图都是有长宽高各种参数的,需要读者在制作自己的模型的时候,可以灵活的改变自己的模型参数。 urdf的最终版本 这个是最终版本的URDF,这里可以使用窗口中的滑块对各个零件进行运动控制,其中,前轮、后轮可以旋转(continuous),笔记本电脑和后轮转向机构使用的是有约束的转动关节(revolute),升高架和叉子使用的是平移(prismatic)。下一步需要通过命令使模型运动起来,再下一步通过cpp程序对各个模块或者零件进行运动控制。 5、查看link的关系 jin@ubuntu:~/catkin_ws/src/tech_description/urdf$ urdf_to_graphiz tech.urdf jin@ubuntu:~/catkin_ws/src/tech_description/urdf$ urdf_to_graphiz tech.urdf |