ROS(二)

1、机器人系统的构建

例:连接摄像头

$ sudo apt-get intstall ros-kinetic-usb-cam  //安装摄像头功能包
$ roslaunch usb-cam usb_cam-test.launch//调用摄像头功能包打开摄像头
$ rqt_image_view//打开qt控件窗口

提示:如果出现以下错误:
erorr:Cannot identify ‘/dev/video0’: 2, No such file or directory
在这里插入图片描述
需要先查看:虚拟机->选项->USB
在这里插入图片描述
查看以上红色部分是否勾选,如果没有勾选需要关闭Ubuntu后再进行勾选后启动,
(如果是使用USB接的摄像头可以在虚拟机->可移动设备->(中看到串口号))。

如果你在可移动设备中连接了你的电脑自带摄像头,但还是没有用的话的,你就需要查看一下,你的笔记本电脑摄像头的型号是否能与linux兼容,还需要产询一下,不然你在怎么都打开不的,所以就认命去用usb摄像头吧。
查询地址:http://www.ideasonboard.org/uvc/

关于串口权限问题
解决:
$ sudo gpassed --add USER_NAME dialout (USER_NAME表示你的用户名)

2、URDF机器人建模

(机器人 模型描述格式,xml格式)
主要的两大类:
<link>
描述机器人某个刚体部分的外观与物理结构性;
尺寸(size),
颜色(color),
形状(shape),
惯性矩形(inertial matrix),
碰撞参数(collison properties)等
<visual>
描述机器人link部分的外观参数;
<inertial>
描述link的惯性参数
<collision>
描述link的碰撞属性
代码架构
:link origin是link的位置中心坐标,进行旋转、移动等操作都需要在origin设置。

<joint>
描述机器人关节的运动学与动力学属性;
包括关节运动的位置与速度限制;
根据关节运动形式,可以将其分为六中类型(使用最多的是continuous、revolute)。
注:joint origin同样是坐标
在这里插入图片描述
在这里插入图片描述
子标签包括:
在这里插入图片描述
总体结构:
在这里插入图片描述
创建机器人模型功能包:

catkin_create_pkg mbot_description urdf xacro//最后两个是依赖包

在生成的mbot_description功能包文件中创建一下文件夹
在这里插入图片描述
执行launch文件roslaunch 功能包名 .launch文件

urdf文件(如:mbot_base.urdf)
添加一个圆柱体模型

<?xml version="1.0"?>//解析文件为xml文件格式
<robot name="mobt">

    <link name="base_link">
        <visual>//外观参数
            <origin xyz=" 0 0 0" rpy="1.57 0 0" />//坐标设置xyz,旋转角度设置rpy
            <geometry>//形状
                <cylinder length="0.16" radius="0.20"/>//圆柱体,高(length);半径(radius)
            </geometry>
            <material name="yellow">//材质
                <color rgba="1 0.4 0 0.5"/>//颜色设置rbg,a为透明度(0~1)
            </material>
        </visual>
    </link>

</robot>

如图反应:
在这里插入图片描述
添加joint类(添加左轮,以此类推添加右轮)(以下注释只用于说明,运行时必须删除)

#使用joint必须说明其父类,要明白他只是一个可以活动的关节
 <joint name="left_wheel_joint" type="continuous">#无限旋转类型
        <origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
        <parent link="base_link"/>#说明joint父类,坐标的参考
        <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>

添加传感器模型进入:
添加纹理文件是模型更加逼真,需要建立一个meshes文件夹在功能包下
纹理文件这些可以不用自己编写,可以去ros论坛下载,有很多。

<link name="kinect_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 1.5708"/>
            <geometry>
                <mesh filename="package://mbot_description/meshes/kinect.dae" />//这里对纹理信息进行加载,路径使用从package到纹理文件.dae
            </geometry>
        </visual>
    </link>

    <joint name="laser_joint" type="fixed">
        <origin xyz="0.15 0 0.11" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="kinect_link"/>
    </joint>

在这里插入图片描述
urdf的进化文件——xacro文件(为了简化urdf的代码量)
1、常量定义:类似于C中的define

<xacro:property name= "M_PI" value="3.1415926"/>

常量的使用:

<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>

注:使用定义的时候,都需要使用“${变量(运算)等}”
2、xacro的宏定义(类似于c/c++中的函数定义)

<xacro:macro name="test" params="A B C">
。。。
</xacro:macro>

调用的时候:

<test A="A_value" B="B_value" C="C_vlalue"/>

在这里插入图片描述

文件包含:

<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />

**注:**需要向函数定义的一样,将机器人模型组件写成一个零件文件(就如函数),多个类型的组件形成多个零件描述urdf(xacro文件),额外定义一个xacro用来作为顶层文件,调用这些零件xacro,就像C中的main()的作用。

在launch启动文件中如何启动后xacro文件,则需要在launch文件开头添加:

   <!-- 加载xacro解析器 -->
	<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />
	<arg name="gui" default="true" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LionelMartin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值