ROS:机器人系统设计(连接摄像头、Kinect、激光雷达、URDF建模)

目录

一.连接摄像头

二.连接Kinect  

 三.连接激光雷达

四.URDF机器人建模

1.link

2.joint

3.robot

4.创建机器人建模的功能包

 5.launch文件

6.建模简单机器人

7.建模摄像头

 8.建模kinect

9.激光雷达建模


一.连接摄像头

sudo apt-get install ros-noetic-usb-cam
roslaunch usb_cam usb_cam-test.launch
rqt_image_view

 

二.连接Kinect  

sudo apt-get install ros-kinetic-freenect-*
git clone https://github.com/avin2/SensorKinect.git
cd SensorKinect/Bin
tar xvf SensorKinect093-Bin-Linux-x86-v5.1.2.1.tar.bz2
sudo ./install.sh

注:如果使用zsh编译器,通配符*会无法识别。

需要在.zshrc文件中添加

setopt nonomatch #让zsh支持*通配符

 三.连接激光雷达

sudo apt-get install ros-noetic-rplidar-ros
rosrun rplidar_ros rplidarNode

四.URDF机器人建模

URDF:Unified Robot Description Format,统一机器人描述格式。

1.link

描述机器人某个刚体部分的外观和物理属性。

尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)。

 <visual>:描述机器人link部分的外观参数。
<inertial>:描述link的惯性参数。
<collision>:描述link的碰撞参数。
<link name="link name">
    <inertial>......</inertial>
    <visual>......</visual>
    <collision>......</collision>
</link>

2.joint

描述机器人关节的运动学和动力学属性。

包括关节运动的位置和速度限制。

根据关节运动形式,可将其分为6种形式。

<calibration>:关节的参考位置,用来校准关节的绝对位置。
<dynamics>:描述关节的物理属性,例如阻尼值、物理静摩擦力等,经常在动力学仿真用。
<limit>:描述运动的一些极限值,包括关节运动的上下限位置、速度限制、力矩限制。
<mimic>:描述关节与已有关节的关系。
<safety_controller>:描述安全控制参数。
<joint name="name of the joint" type="joint type">
    <parent link="parent_link"/>
    <child link="child_link"/>
    <calibration.../>
    <dynamics damping.../>
    <limit effort.../>
</joint>

3.robot

一个完整的机器人模型,有一系列<link>和<joint>组成。

<robot name="name of the robot">
    <link>......</link>
    <link>......</link>
    <joint>......</joint>
    <joint>......</joint>
</robot>

4.创建机器人建模的功能包

catkin_create_pkg mrob_description urdf xacro

urdf:存放机器人模型的URDF或xacro文件

meshes:存放URDF中引用的模型渲染文件

launch:保存相关启动文件

config:保存rviz的配置文件

 5.launch文件

joint_state_publisher_gui:发布每个joint(除fixed类型)的状态,而且可以通过UI界面对joint进行控制。

robot_state_publisher:将机器人各个links、joints之间的关系,通过TF的形式,整理成三维姿态信息发布。

<launch>
	<param name="robot_description" textfile="$(find mbot_description)/urdf/mbot_base.urdf" />
	<!-- 设置GUI参数,显示关节控制插件 -->
	<param name="use_gui" value="true"/>
	<!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
	<!--打开joint_state_publish_gui-->
	<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
	<!-- 运行robot_state_publisher节点,发布tf  -->
	<!--打开joint_state_publish_gui-->
	<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
	<!-- 运行rviz可视化界面 -->
	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>

6.建模简单机器人

首先在config下放置需要的rviz文件。

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

    <link name="base_link">
        <visual>
            <origin xyz=" 0 0 0" rpy="0 0 0" /><!--描述link坐标角度 -->
            <geometry>
                <cylinder length="0.16" radius="0.20"/><!-- cylinder 圆柱体、length高、radius半径-->
            </geometry>
            <material name="yellow">
                <color rgba="1 0.4 0 1"/><!--a代表透明度,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>
    <!--右轮子-->
<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>

</robot>

7.建模摄像头

<!--摄像头-->
    <link name="camera_link">
        <visual>
            <origin xyz=" 0 0 0 " rpy="0 0 0" />
            <geometry>
                <box size="0.03 0.04 0.04" /><!--摄像头形状,以及长宽高-->
            </geometry>
            <material name="black">
                <color rgba="0 0 0 0.95"/>
            </material>
        </visual>
    </link>

    <joint name="camera_joint" type="fixed">
        <origin xyz="0.17 0 0.10" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="camera_link"/>
    </joint>

 8.建模kinect

在meshes文件中添加kinect渲染文件

链接:https://pan.baidu.com/s/1x2EZuAqY4eLMQ3l_ZmxvJA
提取码:e98j

<!--rgb深度相机-->
    <link name="kinect_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 1.5708"/>
            <geometry>
                <!--添加meshes纹理文件-->
                <mesh filename="package://mbot_description/meshes/kinect.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>

9.激光雷达建模

<!--激光雷达-->
    <link name="laser_link">
		<visual>
			<origin xyz=" 0 0 0 " rpy="0 0 0" />
			<geometry>
				<cylinder length="0.05" radius="0.05"/>
			</geometry>
			<material name="black"/>
		</visual>
    </link>

    <joint name="laser_joint" type="fixed">
        <origin xyz="0 0 0.105" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="laser_link"/>
    </joint>

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值