xacro+rviz 基础

作者: DIO哒 | 来源:发表于2018-09-09 19:14 被阅读687次

这篇文章备忘的主要内容
1.一个xacro文件的example
2.在rviz里显示这个模型


最终完成的情况

0.准备工作
先在工作空间中建一个包,名字随便取,主要依赖urdf包
建好之后在其中创建meshes(用来存放3d模型文件,stl,dae等),launch(用来存放launch文件和rviz配置文件)等文件夹


弄好之后大概这样

之后照常catkin_make以及rospack profile

1.完整的xacro文件+解析
mnm.xacro

<?xml version="1.0"?>
<robot name="mnm" xmlns:xacro="http://www.ros.org/wiki/xacro">
    <link name="base_link">
        <visual>
            <origin rpy="0 0 0" xyz="0 0 0" />
            <geometry>
                <box size="1 1 1"/>
            </geometry>
        </visual>
    </link>
    <joint name="base_link_to_link_01" type="revolute">
        <axis xyz="0 0 1" />
        <limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0.5"/>
        <!-- let me explain these two lines above(12 and 13)
        <axis xyz="0 0 1" />
        <limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0.5"/>
        because it's a revolute joint,so the axis means it can routate around z axis,
        and the 3.14 means 180 degree
        -->
        <origin rpy="0 0 0" xyz="0 0 0.5"/>
        <!-- and why the  xyz ="0 0 0.5" 
        because the base_link 's origin is "0 0 0",and the height is 1,so the top of it is 0.5
        -->
        <parent link="base_link" />
        <child link="link_01"/>
    </joint>
    <link name="link_01">
        <visual>
            <origin rpy="0 0 0" xyz="0 0 0.2" />
            <geometry>
                <cylinder radius="0.35" length="0.4" />
            </geometry>
        </visual>
    </link>

</robot>

解释:
ROS里我们想为机器人建模需要一个urdf文件。
xacro文件是用来简化urdf文件的,如果没有xacro,就会有很多不必要的重复性劳动,但是这个简单的xacro看上去和一个urdf也没什么区别。
如上图所见,这段urdf的意思是两个link,分别是作为底座的长方体base_link和上面的圆柱体link_01。
具体的解释在roswiki里搜索关键词“urdf/XML”,可以找到每个tag的具体细节。
http://wiki.ros.org/urdf/XML

2编写launch文件,启动rviz来显示这个模型

<launch>
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find urdf_my_test)/urdf/mnm.xacro'"/>

    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher"/>
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_my_test)/launch/config.rviz" />
    <!-- <node name="rviz" pkg="rviz" type="rviz"/> --><!--一开始先不用args,等到设置好rviz之后另存为配置文件到launch文件夹里再用args,这样就不用每次都设置那么多了>
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
        <param name="use_gui" value="true"/>
    </node>
</launch>

等rviz启动完毕之后先将FixedFrame改为base_link


image.png

再点击下方Add按钮,添加一个RobotModel


image.png

可以看到之前在launch文件里传入的参数Robot Description已经在robotmodel里了


param name="robot_description"

而joint_state_publisher可以用来转动上面那个圆柱体的link


joint_state_publisher
添加好之后可以将配置文件另存为到launch文件夹里,以后再运行的时候在launch文件里的rviz节点下增加一个args(配置文件config.rviz的路径)就可以不用再设置一遍了。

相关文章

  • xacro+rviz 基础

    这篇文章备忘的主要内容1.一个xacro文件的example2.在rviz里显示这个模型 0.准备工作先在工作空间...

  • 机械设备安装技术

    设备基础种类及应用 垫层基础允许产生沉降:大型储罐 浅基础扩展基础联合基础:轧机独立基础 深基础桩基础:适用于需要...

  • 基础,基础,基础

    如果有人现在问我,JAVA该怎么学,我会告诉他不要急于求成,少看视频,多练,多思考。但说到这里有人可能会反...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 零基础学画画从入门到放弃

    零基础应该怎么学画画?零基础那就从基础开始学啊!基础是什么?造型基础和色彩基础。 造型基础就是用点线面组成起码能让...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • 基础基础还是基础

    这次去面试,还是被基础给打趴下了。 对于PHP7的新特性没有了解。 对于TP的新特性没有了解。 再一个就是独立完成...

  • 零基础学UI设计需要美术基础吗?

    零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需...

  • 基础基础!

    人生中第一个自主设计的实验方案终于得到认可^O^在设计方案过程中认识到基础知识以及细心的重要性,还有半个学期可以努...

网友评论

    本文标题:xacro+rviz 基础

    本文链接:https://www.haomeiwen.com/subject/gwcdgftx.html