100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 机器人建模与仿真(二)——机器人URDF模型仿真

机器人建模与仿真(二)——机器人URDF模型仿真

时间:2021-01-28 17:15:21

相关推荐

机器人建模与仿真(二)——机器人URDF模型仿真

机器人建模与仿真(二)——机器人URDF模型仿真

目录

总述一、创建机器人描述功能包二、创建URDF模型三、URDF模型解析四、在rviz中显示模型五、改进URDF模型六、添加传感器模型七、基于ArbotiX和rviz的仿真器

总述

在ROS中,机器人的模型一般放在RobotName_description功能包下。

一、创建机器人描述功能包

catkin_create_pkg mbot_description urdf xacro

机器人模型、描述文件在ROS里,通常的以 机器人名_description,并且需要依赖urdf功能包,解析模型 和 xacro(优化urdf用的)依赖。

在RobotName_description功能包下创建几个不同作用的文件夹,包含urdf、meshes、launch和config四个文件夹。

urdf:存放机器人模型的URDF或xacro文件meshes:放置URDF中引用的模型渲染文件,机器人外观纹理,让外观和实际更相似,通过三维设计软件导出,放置此文件夹下launch:保存相关启动文件config:保存rviz的配置文件、功能包的配置文件

二、创建URDF模型

在了解了URDF模型中常用的标签和语法,使用这些基本语法创建机器人底盘模型。

这个机器人底盘模型有7个link和6个joint。7个link包括1个机器人底板、2个电机、2个驱动轮和2个万向轮;6个joint负责将驱动轮、万向轮、电机安装到底板上,并设置相应的连接方式。

<?xml version="1.0" ?><robot name="mrobot_chassis">//robot name 标签用于定义所描述机器人的名称<link name="base_link"> <visual> //<origin xyz=" 0.1 0.1 0.1" rpy="0 0 0" /> <geometry><cylinder length="0.005" radius="0.13"/></geometry><material name="yellow"> <color rgba="1 0.4 0 1"/></material></visual></link>//link标签描述了机器人某个刚体部分的外观和物理属性,包括尺寸,颜色,形状惯性和碰撞参数等,visual...../visual 标签描述机器人某个部件的外观参数等。origin 标签描述了所绘制外观geometry的坐标起点,一般对于规则形状的外观坐标起点位于规则形状的重心位置, cylinder 标签描述了这个圆柱体的尺寸,material 标签用于描述外观的颜色等信息<joint name="base_left_motor_joint" type="fixed"> //joint...../joint标签用于描述机器人关节的运动学和动力属性<origin xyz="0.1 0.1 0.1" rpy="0 0 0" /> <parent link="base_link"/><child link="left_motor" /></joint>//上述joint...../joint标签中一般描述origin parent child等参数,origin描述了joint连接点基于parent link="base_link"坐标的偏移量,一般在rviz仿真中左上角Fixed Frame 的map选项设置成base_link,则base_link在rviz中为坐标原点,那么 origin所描述的joint为基于坐标原点的偏移量,parent为jiont的支撑连接部件,child为子部件,joint就为子部件和支撑连接部件的关节<link name="left_motor"><visual><origin xyz="0.2 0.2 0.2" rpy="0 0 0" /><geometry><cylinder radius="0.02" length = "0.08"/></geometry><material name="gray"><color rgba="0.75 0.75 0.75 1"/></material></visual></link>//link name="left_motor"标签为base_left_motor_joint连接件的子部件,其中origin描述了该部件基于base_left_motor_joint关节坐标的偏移点,base_left_motor_joint关节的坐标原点为origin xyz="0.1 0.1 0.1",若left_motor部件的origin xyz="0.2 0.2 0.2"则表示left_motor所描述部件基于base_left_motor_joint关节坐标xyz="0.1 0.1 0.1"的偏移量为xyz="0.2 0.2 0.2"<joint name="left_wheel_joint" type="continuous"><origin xyz="0.5 0.0485 0" rpy="0 0 0"/><parent link="left_motor"/><child link="left_wheel_link"/><axis xyz="0 1 0"/></joint>//连接关节joint name="left_wheel_joint" 为left_motor和left_wheel_link关节点,left_wheel_link为left_motor的子部件,其中left_wheel_joint的基础坐标是基于parent link="left_motor"的关节joint name="base_left_motor_joint" 的基础坐标偏移量而非left_motor的origin偏移量.................</robot>

URDF提供了一些命令行工具,可以帮助我们检查、梳理模型文件,需要在终端中独立安装:

sudo apt-get install liburdfdom-tools

然后使用check_urdf命令对描述机器人文件进行检查:

check_urdf #<机器人描述名称>.urdf

check_urdf命令会解析URDF文件,并且显示解析过程中发现的错误。如果一切正常,在终端中会无报错输出。

还可以使用urdf_to_graphiz命令查看URDF模型的整体结构:

urdf_to_graphiz #<机器人描述名称>.urdf

执行urdf_to_graphiz命令后,会在当前目录下生成一个pdf文件,打开该文件,可以看到模型的整体结构图。

三、URDF模型解析

四、在rviz中显示模型

完成URDF模型的设计后,可以使用rviz将该模型可视化显示出来,检查是否符合设计目标。

编辑launch启动文件

<launch><!-- param是要加载ros的一个参数:robot_description (描述机器人的具体模型)--><param name="robot_description" textfile="$(find mbot_description)/urdf/mbot_base.urdf" /><!-- 设置GUI参数,显示关节控制插件 --><param name="use_gui" value="true"/><!-- 运行joint_state_publisher节点,发布机器人的关节状态 --><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /><!-- 运行robot_state_publisher节点,发布tf --><node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /><!-- 运行rviz可视化界面 --><node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" /></launch>

joint_state_publisher:发布每个joint(除fixed类型)的状态,而且可以通过UI界面对joint进行控制robot_state_publisher:将机器人各个links、joints之间的关系,通过TF的形式,整理成三维姿态信息发布

打开终端运行该launch文件,如果一切正常,可以在打开的rviz中看到机器人模型。

五、改进URDF模型

1、添加物理和碰撞属性

2、使用xacro优化URDF

(1)使用常量定义

(2)调用数学公式

(3)使用宏定义

3、xacro文件引用

4、显示优化后的模型

(1)将xacro文件转换成URDF文件

(2)直接调用xacro文件解析器

六、添加传感器模型

1、添加摄像头

2、添加Kinect

3、添加激光雷达

七、基于ArbotiX和rviz的仿真器

1、安装ArbotiX

2、配置ArbotiX控制器

<1>创建launch文件

<2>创建配置文件

3、运行仿真环境

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。