Modelado y simulación de robots (2) —— Simulación de modelos de robots URDF

Modelado y simulación de robots (2) —— Simulación de modelos de robots URDF

Visión de conjunto

En ROS, el modelo de robot generalmente se coloca bajo el paquete de funciones RobotName_description.

1. Cree un paquete de funciones de descripción de robot

catkin_create_pkg mbot_description urdf xacro

El modelo del robot y el archivo de descripción están en ROS, generalmente con el nombre del robot _description, y deben basarse en el paquete de funciones urdf, el modelo analítico y las dependencias xacro (utilizado para optimizar urdf).
Cree varias carpetas con diferentes funciones en el paquete de funciones RobotName_description, incluidas cuatro carpetas: urdf, mallas, lanzamiento y configuración.

  • urdf: almacena el archivo URDF o xacro del modelo de robot
  • mallas: coloque los archivos de representación del modelo a los que se hace referencia en el URDF, la textura de apariencia del robot, haga que la apariencia sea más similar a la realidad, expórtelo a través del software de diseño 3D y colóquelo en esta carpeta
  • lanzamiento: guarda los archivos de inicio relacionados
  • config: guarda el archivo de configuración de rviz, el archivo de configuración del paquete de funciones

En segundo lugar, cree un modelo URDF

Después de comprender las etiquetas y la sintaxis de uso común en el modelo URDF, utilice esta sintaxis básica para crear un modelo de chasis de robot.
Este modelo de chasis de robot tiene 7 enlaces y 6 articulaciones. Los 7 enlaces incluyen 1 placa base de robot, 2 motores, 2 ruedas motrices y 2 ruedas universales; 6 articulaciones son responsables de instalar las ruedas motrices, ruedas universales y motores en la placa base, y establecen los métodos de conexión correspondientes.

<?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 proporciona algunas herramientas de línea de comandos que pueden ayudarnos a verificar y clasificar los archivos del modelo, que deben instalarse de forma independiente en la terminal:

sudo apt-get install liburdfdom-tools

Luego use el comando check_urdf para verificar la descripción del archivo del robot:

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

El comando check_urdf analizará el archivo URDF y mostrará los errores encontrados durante el proceso de análisis. Si todo es normal, no habrá salida de error en el terminal.
También puede usar el comando urdf_to_graphiz para ver la estructura general del modelo URDF:

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

Después de ejecutar el comando urdf_to_graphiz, se generará un archivo pdf en el directorio actual. Abra el archivo y podrá ver el diagrama de estructura general del modelo.

Tres, análisis del modelo URDF

Cuatro, muestra el modelo en rviz

Después de completar el diseño del modelo URDF, puede usar rviz para visualizar el modelo y verificar si cumple con los objetivos del diseño.
Edita el archivo de lanzamiento

<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: publica el estado de cada articulación (excepto el tipo fijo), y la articulación se puede controlar a través de la interfaz de IU
  • robot_state_publisher: organiza la relación entre los enlaces y las articulaciones del robot en un comunicado de información de postura tridimensional en forma de TF.
    Abre el terminal y ejecuta el archivo de inicio. Si todo es normal, puedes ver el modelo del robot en el rviz.

Cinco, mejorar el modelo URDF

1. Agregue atributos físicos y de colisión
2. Use xacro para optimizar URDF
(1) Use definiciones constantes
(2) Llame a fórmulas matemáticas
(3) Use definiciones macro
3. Referencias de archivos Xacro
4. Visualice modelos optimizados
(1) Convierta archivos xacro a URDF file
(2) llamar directamente al analizador de archivos xacro

Seis, agregue el modelo del sensor

1. Agregar cámara
2. Agregar Kinect
3. Agregar lidar

7. Emulador basado en ArbotiX y rviz

1. Instale ArbotiX
2. Configure el controlador ArbotiX
<1> Cree el archivo de inicio
<2> Cree el archivo de configuración
3. Ejecute el entorno de simulación

Supongo que te gusta

Origin blog.csdn.net/weixin_45661757/article/details/113250487
Recomendado
Clasificación