【ROS初学者必读】【踩坑总结】SW导出URDF文件到ROS中!吐血整理!新手极容易踩的坑以及ROS初学必备技能

先啰嗦两句

标题上这一路对于新手来说坑是真的多,这两天整ROS整的有点烦了,打算暂时歇一歇换换脑子,结果是可以在ROS中的Gazebo和rviz中正常显示。

还有就是如果在Gazebo和rviz中显示出了问题,基本上都是solidworks的问题,怪不了ROS哈,更别想着在ROS的URDF或者什么乱七八糟的编译文件上找回来,至少对于我来说目前不可能,而且在编译文件上改好还不如重新从solidworks上改一下再重新导入。

下面我就先踩坑为敬,注意阅读所有注意事项的部分,这为你的ROS之路的学习节省了相当多的时间

引用

引用的教程很好值得一看!本文也是以这个教程为基础展开。最好二者结合来看,别踩我踩过的坑。

接下来的图片都是来自这个引用

https://blog.csdn.net/Hu_weichen/article/details/86682796

因为我实在是不愿意自己截屏,所以图片可能会用引用上面的,也确实是一开始看的这位大神的著作一点一点采坑过来的。

solidworks

我们就来画一个最简单的小车就可以了,不需要太复杂,具体参照我引用的部分就可以。

下面直接进入注意事项1

  1. 装配的时候要保证小车是平的,方法就是点击左下角的坐标轴(可能是z轴吧),然后看小车是否在水平面上,如果不在,首先右击零件选择浮动,调整好了之后别忘了再次右击选择固定在原有水平面建立一个新的面呀什么的,然后将小车底盘配合上去。
    在这里插入图片描述
    图片是引用里的

这样保证了在rviz中看到的小车不会倾斜

  1. 在装配图中,要保证整体的原点在小车底盘上(或者在内部随你吧),要知道这可是重心位置,这也就解释了为啥有的导入到gazebo小车是倾斜的的原因。
    注意这里说得原点并不是车体的原点,车体的原点在哪目前来看无伤大雅。
    整个的原点是那个列表最上面的原点。调整方法同第一步,直接用车体底盘的中心点和原点配合好像更容易一些。
  2. 安装插件——什么什么URDF。这里是链接
    安装好之后重启solidworks就可以,什么都不用调整它自己会识别
    在这里插入图片描述
    在这里插入图片描述
    图片来自引用,这么看看识别上没有。
  3. 接下来点击工具选择file,剩下的就看引用部分吧,到finish前没啥说的了。这里再给一个链接吧,也是引用的这个大神的 去吧皮卡丘 唯一一点就是如果完全按照引用的部分一直到最后,最好什么wheel1_link这种名字和joint呀什么的还有最后起名为smartcar都保持一样的,否则也会有别的麻烦,要手动配置。
  4. 当你到达最后一步时,如果没有finish的在右下角会有两个选项,不要只生成URDF,否则也会有问题,具体是啥忘记了,点击最右边的生成URDF和什么玩应就可以了。

ROS

ROS安装就搜一搜吧,网上一堆教程,个人感觉Ubuntu18(ROS版本是medi什么的)的报错少但是用的人比较少,Ubuntu16(ROS版本kinect)的报错相对多一些,但是网上对应的解决方案也多,用的人也多。

据说18是兼容性最好的,本人是用虚拟机都安装了,这个不行去另一个跑一下。

16的安装真的行云流水,不过安装好后补充安装个vmwaretools都会有问题。。。

先来一遍步骤再来注意事项

  1. 创建文件夹catkin_ws
  2. 在文件夹中创建src文件
  3. 在src文件下打开终端,输入catkin_init_workspace
  4. 还是在src文件中的终端输入 catkin_create_pkg std_msgs roscpp rospy
    创建功能包,功能包具体的其他操作就百度一下吧,
  5. 将smartcar中的文件全部考到包中的src文件中
  6. 退出到catkin_ws的src同目录下
  7. 编译工作空间catkin_make
  8. 编译路径source devel/setup.bash
  9. 如果一切顺利,则输入roslaunch smartcar gazebo.launch
  10. 再输入roslaunch smartcar diaplay.launch
  11. 看完这个再看很重要的注意事项

下面是注意事项

  1. 引用中修改了文件,但是可能是因为插件更新换代的缘故,目前已经什么都不需要修改了。
  2. 每日报错三省吾身:workspace了没source了没编译工作空间了没
  3. 当你退出gazebo或者rviz哪怕是roscore时,记得最好不要直接退出所对应的终端,在终端点击 ctrl+c,会省去很多其他的不必要的错误,有时候甚至需要新开终端输入killall gzserverkillall gzclient关的干净彻底
  4. roslaunch好像是不需要roscore,但是最好roslaunch前先roscore一下,反正也不是很麻烦。
  5. 好像是18版本的也就是medic什么的版本的ROS不用每次新开个终端先source devel/setup.bashrosrun或者roslaunch。我现在用的那个16kinect版的每次rosrun roslaunch之前都要source devel/setup.bash一下才行,我记的18好像没这么麻烦,也不知道为啥那么多用16的,可能16兼容其他的会更好吧。

最后啰嗦两句

因为没有实时的去记录那些报过的错,所以目前只能想起来这么多,这些都是刻骨铭心的错。记得最重要的:报错不要着急百度,先三省吾身一下再百度也不迟。另一个重要的:VMware tools,没它的话估计要累死。

关于16kinect版本的tools讲解在我的上一篇,这里直接给出链接 去吧皮卡丘

posted @ 2022-02-09 11:54  铃灵狗  阅读(747)  评论(0编辑  收藏  举报