Vizualize Sensor readings with RVIZ

Hello,

I have create code for three utrasone sensors on my robot. When I do a rostopic echo /RightSonarDistance the correct values are displayed on the terminal. So that seems to work.

No I have created axacro robot model which loads correctly into RViz but it should show the sensor output. Unfortunately I can get it work correctly.

This is how my xacro file looks like, at the bottom is the sensor definition:

<?xml version="1.0"?>
<robot xmlns:xacro="http://ros.org/wiki/xacro" name="r2g2">

  <!-- Define the material for visualization -->
  <material name="gray">
    <color rgba="0.5 0.5 0.5 1"/>
  </material>

  <!-- Define the wheel radius and separation distance -->
  <xacro:property name="base_width" value="0.17"/>
  <xacro:property name="base_len" value="0.27"/>
  <xacro:property name="wheel_radius" value="0.035"/>
  <xacro:property name="base_wheel_gap" value="0.007"/>
  <xacro:property name="wheel_separation" value="0.17"/>
  <xacro:property name="wheel_joint_offset" value="0.045"/>

  

  <!--Base Footprint-->
  <link name="base_footprint">
    <visual>
        <origin xyz="0 0 0" rpy="0 0 0" />
        <geometry>
            <box size="0.001 0.001 0.001" />
        </geometry>
    </visual>
  </link>

  <!-- Base Link -->
  <link name="base_link">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="${base_len} ${base_width} 0.01"/>
      </geometry>
      <material name="gray"/>
    </visual>
  </link>

    <!--base_link to base_footprint Joint-->
  <joint name="base_link_joint" type="fixed">
    <origin xyz="0 0 0" rpy="0 0 0" />
    <parent link="base_footprint"/>
    <child link="base_link" />
  </joint>
  
    <!-- Left Wheel and Link-->
  <link name="left_wheel_link">
    <visual>
      <origin xyz="0 0 0" rpy="${pi/2} 0 0" />
        <geometry>
          <cylinder radius="${wheel_radius}" length="0.009"/>
        </geometry>
        <material name="gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="${pi/2} 0 0"/>
        <geometry>
          <cylinder radius="${wheel_radius}" length="0.009"/>
        </geometry>
    </collision>   

  </link>

  <joint name="left_wheel_joint" type="continuous">
      <axis xyz="0 1 0" rpy="0 0 0" />
      <parent link="base_link"/>
      <child link="left_wheel_link"/>
      <origin xyz="${wheel_joint_offset} ${((base_width/2)+base_wheel_gap)*1} -0.005" rpy="0 0 0"/>
  </joint>

    <!-- Right Wheel and Link-->
  <link name="right_wheel_link">
    <visual>
      <origin xyz="0 0 0" rpy="${pi/2} 0 0" />
        <geometry>
          <cylinder radius="${wheel_radius}" length="0.009"/>
        </geometry>
        <material name="gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="${pi/2} 0 0"/>
        <geometry>
          <cylinder radius="${wheel_radius}" length="0.009"/>
        </geometry>
    </collision>   
  </link>

  <joint name="right_wheel_joint" type="continuous">
      <axis xyz="0 1 0" rpy="0 0 0" />
      <parent link="base_link"/>
      <child link="right_wheel_link"/>
      <origin xyz="${wheel_joint_offset} ${((base_width/2)+base_wheel_gap)*-1} -0.005" rpy="0 0 0"/>
  </joint>

    <!-- Right Ultrasone sensor-->
  <joint name="right_ultrasone_joint" type="fixed">
      <axis xyz="0 1 0" rpy="0 0 0" />
      <parent link="base_link"/>
      <child link="right_ultrasone_link"/>
      <origin xyz="${(base_len/2)} ${(base_width/2)*-1} -0.01" rpy="0 0 0.523598"/>
  </joint>

  <link name="right_ultrasone_link">
    <visual>
      <origin xyz="0 0 0" rpy="${pi/2} 0 0" />
        <geometry>
          <cylinder radius="0.005" length="0.015"/>
        </geometry>
        <material name="gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="${pi/2} 0 0"/>
        <geometry>
          <cylinder radius="0.005" length="0.015"/>
        </geometry>
    </collision> 
  </link>

</robot>

Here a screenshot of the output of RViz


RViz tells me that right_sonar frame does not exist. But I dont know how to fix this could anybody point me out what I am doing wrong?

in your URDF you have a link called “right_ultrasone_link” so you’ll have a frame called “right_ultrasone_link”. you can check it in RVIZ if you expand TF and see the frames.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.