ROS에 여러 로봇 모델 추가

12320 단어 ROS로보트

xacro 모형


각 link, joint에 네임스페이스 접두어를 붙입니다.
  • xacro 속성 추가: , 그중 $(arg ns)는launch 파일로 전송됩니다. 다음에 어떻게 전송하는지 설명합니다.
  • 각 링크에 네임스페이스 접두사 추가:
  • 각 Joint에 네임스페이스 접두사 추가:
  • launch 파일


    이름이 붙은 모든 로봇 모델에 대해 launch 파일에 다음과 같은 코드를 추가합니다.
    "    ">
        "robot_description"
            command="$(find xacro)/xacro.py
            $(find battlebot)/urdf/$(arg model) ns:="
        />
        "joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
        "robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
        "urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" 
            args="-urdf -model  -param robot_description -z 0.30"/>
    

    각 부분 코드 해석

    "    ">
    ...
    

    그룹에 둘러싸인 노드, 발표된parameters,topics,서비스s는 모두 [/] 접두사를 붙인다.
    "robot_description"
            command="$(find xacro)/xacro.py
            $(find battlebot)/urdf/$(arg model) ns:="
        />

    xacro를 호출합니다.py는 xacro 파일을 분석하고 ns 파라미터를 전송합니다. xacro 파일에서 $(arg ns)를 통해 전송된 파라미터를 얻을 수 있으며 해석된 urdf모델을 [/robot description] 파라미터에 설정합니다.
    "joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
    "robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
    

    [/joint state publisher] [/robot description] 매개 변수(urdf 모형)를 분석하여 모든 비고정 관절을 획득한 다음 관절의 상태를 [/joint states] 화제를 통해 발표합니다.
    [/robot state publisher]는 [/robot description] 매개 변수(urdf모델)를 분석하고 [/joint states]를 구독하여 현재 로봇의 각 좌표계의 현재 좌표를 계산하여 tf에 발표한다.
    "urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" 
            args="-urdf -model  -param robot_description -z 0.30"/>

    python 명령을 호출하여 [/robot description] 매개 변수(urdf모델)를 분석하고gazebo에 []라는 로봇 모델을 추가합니다.가즈보를 사용할 필요가 없으면 삭제할 수 있습니다.

    예.

    
    <launch>
        <arg name="paused" default="false"/>
        <arg name="use_sim_time" default="true"/>
        <arg name="gui" default="true"/>
        <arg name="headless" default="false"/>
        <arg name="debug" default="false"/>
    
        <include file="$(find gazebo_ros)/launch/empty_world.launch">
            <arg name="world_name" value="$(find battlebot)/worlds/robot.world"/>
            <arg name="debug" value="$(arg debug)" />
            <arg name="gui" value="$(arg gui)" />
            <arg name="paused" value="$(arg paused)"/>
            <arg name="use_sim_time" value="$(arg use_sim_time)"/>
            <arg name="headless" value="$(arg headless)"/>
        include>
    
        <group ns="robot1">
            <param name="robot_description"
                command="$(find xacro)/xacro.py
                $(find battlebot)/urdf/battlebot.xacro ns:=robot1"/>
            <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
            <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
            <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
                 args="-urdf -model robot1 -param robot_description -z 1"/>
        group>
    
        <group ns="robot2">
            <param name="robot_description"
                command="$(find xacro)/xacro.py
                $(find battlebot)/urdf/battlebot.xacro ns:=robot2"/>
            <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
            <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
            <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
                 args="-urdf -model robot2 -param robot_description -z 0.30"/>
        group>
    launch>

    왜 사용하지 않는 방식입니까?


    두 가지 방법으로 좌표계 이름에 [/] 접두사를 붙인다. 1.위에서 설명한 바와 같이xacro에 매개 변수를 전달하는 방식입니다.2. 사이에 를 더하는 방식.
    방식2를 사용하지 않는 이유는 rviz가 로보트 모델 유형을 도형화할 때 urdf모델의 명칭에 따라 tf에서 대응하는 좌표계를 찾을 수 있기 때문에 찾을 때 자동으로 명칭 공간을 추가하지 않기 때문에 로보트 모델 표시가 실패할 수 있다.
    방식1은urdf모델의 이름을 직접 바꾸었기 때문에rviz는 정확한 좌표계를 찾을 수 있습니다.

    참고 자료

  • Multiple robots simulation and navigation
  • Pass parameters to xacro in launch file
  • 좋은 웹페이지 즐겨찾기