学习ROS之机器人系统设计

1.机器人的定义与组成

1.1机器人的组成

2.机器人系统构建

2.1执行机构的实现

2.2驱动系统的实现

2.3内部传感器系统的实现

2.4控制系统的实现

2.5外部传感系统的实现

2.5.1连接摄像头

扫描二维码关注公众号,回复: 13534610 查看本文章

不过需要RGB-D摄像头,才可以正常运行

3.URDF机器人建模

让机器人模型在rviz中可视化

先建立一个简单的模型

创建一个机器人建模的功能包

catkin_create_pkg mbot_description urdf xacro

在功能包里面建立四个文件夹,分别如下:

把mbot.rviz,mbot_urdf.rviz这两个文件放入config文件夹中
把display_mbot_base_urdf.launch文件放入launch文件夹中
在urdf文件夹中创建文件mbot_base.urdf文件,输入以下的代码

<?xml version="1.0" ?>
<robot name="mbot">

    <link name="base_link">
        <visual>	
            <origin xyz=" 1 0 0" rpy="0 0 0" />
            <geometry> 
                <cylinder length="0.20" radius="0.20"/>
            </geometry>	
            <material name="yellow">
                <color rgba="1 0.4 0 1"/>
            </material>
        </visual>
    </link>



</robot>

<!---->

然后在终端中使用

roslaunch mbot_description display_mbot_base_urdf.launch

一个车体模型
打开以下两个方框内容,可以通过更改相应的参数,进而得到

增加link产生一个左轮,并且跟小车连接起来,创建一个左侧车轮

<?xml version="1.0" ?>
<robot name="mbot">

    <link name="base_link">
        <visual>	
            <origin xyz=" 0 0 0" rpy="0 0 0" />
            <geometry> 
                <cylinder length="0.20" radius="0.20"/>
            </geometry>	
            <material name="yellow">
                <color rgba="1 0.4 0 1"/>
            </material>
        </visual>
    </link>

    <joint name="left_wheel_joint" type="continuous">
        <origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="left_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <link name="left_wheel_link">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0" />
            <geometry>
                <cylinder radius="0.06" length = "0.025"/>
            </geometry>
            <material name="white">
                <color rgba="1 1 1 0.9"/>
            </material>
        </visual>
    </link>

</robot>

<!---->

产生了一个滑动条,可控制车轮的正负方向旋转

创建右侧车轮

    <joint name="right_wheel_joint" type="continuous">
        <origin xyz="0 -0.19 -0.05" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="right_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <link name="right_wheel_link">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0" />
            <geometry>
                <cylinder radius="0.06" length = "0.025"/>
            </geometry>
            <material name="white">
                <color rgba="1 1 1 0.9"/>
            </material>
        </visual>
    </link>

使用球体创建前后支撑轮

    <joint name="front_caster_joint" type="continuous">
        <origin xyz="0.18 0 -0.095" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="front_caster_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <link name="front_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015" />
            </geometry>
            <material name="black">
                <color rgba="0 0 0 0.95"/>
            </material>
        </visual>
    </link>
    <joint name="back_caster_joint" type="continuous">
        <origin xyz="-0.18 0 -0.095" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="back_caster_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <link name="back_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015" />
            </geometry>
            <material name="black">
                <color rgba="0 0 0 0.95"/>
            </material>
        </visual>
    </link>

为了看得清,创建前轮的样子,我在截图的时候放大了半径,对了,这次创建的是一个球体

以下是取消参数RobotModel和show Names的效果图

创建传感器--摄像头
把对应的urdf文件和launch文件放入对应的文件夹中,在把meshes里面的三个文件放入其中
运行终端程序

检查URDF模型整体结构

cd catkin_ws/src/mbot_description/urdf/
urdf_to_graphiz mbot_with_kinect.urdf 

得到两个文件

猜你喜欢

转载自blog.csdn.net/CJ_035/article/details/97138514