로봇 모델링 및 시뮬레이션 (2) —— 로봇 URDF 모델 시뮬레이션

로봇 모델링 및 시뮬레이션 (2) —— 로봇 URDF 모델 시뮬레이션

개요

ROS에서 로봇 모델은 일반적으로 RobotName_description 함수 패키지 아래에 배치됩니다.

1. 로봇 설명 기능 패키지 생성

catkin_create_pkg mbot_description urdf xacro

로봇 모델 및 설명 파일은 일반적으로 로봇 이름이 _description 인 ROS에 있으며 urdf 함수 패키지, 분석 모델 및 xacro (urdf 최적화에 사용됨) 종속성에 의존해야합니다.
RobotName_description 함수 패키지 아래에 urdf, meshes, launch 및 config의 4 개 폴더를 포함하여 다양한 기능을 가진 여러 폴더를 만듭니다.

  • urdf : 로봇 모델의 URDF 또는 xacro 파일 저장
  • 메시 : URDF, 로봇 모양 텍스처에서 참조 된 모델 렌더링 파일을 배치하고, 모양을 현실과 더 비슷하게 만들고, 3D 디자인 소프트웨어를 통해 내보내고이 폴더에 배치합니다.
  • 시작 : 관련 시작 파일 저장
  • config : 기능 패키지의 구성 파일 인 rviz의 구성 파일을 저장합니다.

둘째, URDF 모델 생성

URDF 모델에서 일반적으로 사용되는 태그와 구문을 이해 한 후 다음 기본 구문을 사용하여 로봇 섀시 모델을 만듭니다.
이 로봇 섀시 모델에는 7 개의 링크와 6 개의 관절이 있습니다. 7 개의 링크에는 로봇베이스 플레이트 1 개, 모터 2 개, 구동 휠 2 개, 범용 휠 2 개가 포함됩니다 .6 개의 조인트는베이스 플레이트에 구동 휠, 범용 휠 및 모터를 설치하고 해당 연결 방법을 설정합니다.

<?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>
    <!-- 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 : 각 조인트의 상태를 공개 (고정형 제외), 조인트는 UI 인터페이스를 통해 제어 가능
  • robot_state_publisher : 로봇의 링크와 관절 간의 관계를 TF 형태의 3 차원 자세 정보 공개로 구성합니다.
    단말기를 열고 실행 파일을 실행합니다. 모든 것이 정상이면 열린 상태에서 로봇 모델을 볼 수 있습니다. rviz.

다섯, URDF 모델 개선

1. 물리적 및 충돌 속성 추가
2. xacro를 사용하여 URDF 최적화
(1) 상수 정의 사용
(2) 수학 공식 호출
(3) 매크로 정의 사용
3. Xacro 파일 참조
4. 최적화 된 모델 표시
(1) xacro 파일을 URDF로 변환 파일
(2) xacro 파일 파서 직접 호출

여섯, 센서 모델 추가

1. 카메라 추가
2. Kinect
추가 3. 라이더 추가

7. ArbotiX 및 rviz 기반 에뮬레이터

1. ArbotiX 설치
2. ArbotiX 컨트롤러 구성
<1> 시작 파일 생성
<2> 구성 파일 생성
3. 시뮬레이션 환경 실행

추천

출처blog.csdn.net/weixin_45661757/article/details/113250487