可能的问题1:启动前没有source
我先在一个终端 roscore
然后在另一个终端输入
rosrun moveit_setup_assistant moveit_setup_assistant
进入moveit_setup_assistant界面后选择了一个urdf文件(也可以是xacro文件),然后弹出窗口报错:
URDF/COLLADA file is not a valid robot model
经过搜索发现,roscore后,在启动moveit setup assistant的终端要先在工作空间目录下
catkin_make
source devel/setup.bash
哪怕原来编译过也要先catkin_make哦~ 再
rosrun moveit_setup_assistant moveit_setup_assistant
才可以正常加载urdf文件
可能的问题2: urdf文件里没有模型
我按照上面的方法启动了,可是选取 “myarm.xacro” 后也报了这个错。后来我打开这个xacro文件一看,发现我是这么写的:
<?xml version="1.0"?>
<robot name="arm" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:macro name="my_arm">
<!-- 此处省略我的模型定义的的内容 -->
</xacro:macro>
</robot>
也就是说,我为了在另外一个文件使用这个模型,我把这个模型定义成宏了,而这个文件里只有模型的宏定义而没有引用,相当于这个文件里没有模型。那么只要在末尾引用一下这个模型的宏就可以啦:
<!--上面省略,此处是文件末尾-->
</xacro:macro>
<my_arm />
</robot>
题外话:关于在xacro里定义宏(用<xacro:macro>标签)如果不知道的话,大家上网查查就有哒。(我好犹豫要不要把我xacro的学习笔记放出来哦,因为网上有好多,可是我的非常简短。(⊙o⊙)… 要不有几人点赞或几人评论说要的话我就放吧。。)