[Documentation] [TitleIndex] [WordIndex

EOL distros:

Melodic

(./) Released

Interface for using ROS with the Gazebo simulator.

RFID System Gazebo Plugin

RFID System Gazebo Plugin A design of a ROS Gazebo RFID system plugin that enables the simulation of the RFID readers-antennas mounted on robots reading RFID tags in the environment. The plugin is based on a model based on probability of detection which simulates the behavior of the complete RFID system, comprised of readers, antennas, and tags, in the Gazebo simulation platform. It consists of a set of ROS packages that provide the necessary interfaces to simulate the functionality of an RFID antenna and an RFID tag in the Gazebo 3D rigid body simulator for robots. It integrates with ROS using ROS messages, services, and transforms.

These plugins are designed to be able to adapt and be used with any robot simulated in the gazebo by including the models and plugins adequately in the robot SDF/Xacro file.

This page will provide you with the necessary steps to run the plugin on your system.

IMPORTANT: Please install dependencies required for gazebo 9 and iris drone for the simulation to be able to work.

RFID Antenna Sensor Gazebo Plugin

Overview

The first plugin/package (RFID_antenna_plugin): Simulates the behavior of an RFID reader/antenna. The plugin is a ros package that can be simply compiled using catkin_make or catkin build. In real life, RFID antennas perform two very important functions. First, they transmit power to the RFID tags to activate them. Second, they receive data back from the activated tags. A single antenna can activate and receive data from multiple tags simultaneously.

Similarly, in simulation, the antenna/reader diptera_antenna plugin will be able to detect tags using a probability model considering in a simplified manner the effect of the environment on the detection of the tag. The telecommunication parameters that govern the probability of detection are:

Params

NOTE: These parameters could be changed in the SDF/Xacro file while adding the plugin.

https://raw.githubusercontent.com/abdu-bot/AdvanDiptera_VIO/master/rfid-antennas-beamwidth-directivity-1.png

TF

   1 <launch>
   2 
   3         <node pkg="gazebo_to_ros_tf"
   4               name="world_to_ros"
   5               type="world_to_ros.py" output="screen">
   6         </node>
   7         <node pkg="tf"
   8                 type="static_transform_publisher"
   9                 name="map_to_odom_publisher"
  10                 args="0 0 0 0 0 0 map odom_sim 100" />
  11         <node pkg="tf"
  12                 type="static_transform_publisher"
  13                 name="base_link_to_antenna_publisher"
  14                 args="0.12 0 -0.11 0 0 0 base_link_sim antenna_1 100" />

However, if you would like to use more then one RFID antenna/reader attached to the same robot an example would be like this:

   1 <launch>
   2 
   3         <node pkg="gazebo_to_ros_tf"
   4               name="world_to_ros"
   5               type="world_to_ros.py" output="screen">
   6         </node>
   7         <node pkg="tf"
   8                 type="static_transform_publisher"
   9                 name="map1_to_odom_publisher"
  10                 args="0 0 0 0 0 0 map odom_sim 100" />
  11         <node pkg="tf"
  12                 type="static_transform_publisher"
  13                 name="base_link_to_antenna_publisher1"
  14                 args="0.12 0 -0.11 0 0 0 base_link_sim antenna_1 100" />
  15         <node pkg="tf"
  16                 type="static_transform_publisher"
  17                 name="base_link_to_antenna_publisher2"
  18                 args="-0.12 0 -0.11 3.14 0 0 base_link_sim antenna_2 100" />
  19         <node pkg="tf"
  20                 type="static_transform_publisher"
  21                 name="base_link_to_antenna_publisher3"
  22                 args="0 0.12 -0.11 1.57 0 0 base_link_sim antenna_3 100" />
  23         <node pkg="tf"
  24                 type="static_transform_publisher"
  25                 name="base_link_to_antenna_publisher4"
  26                 args="0 -0.12 -0.11 -1.57 0 0 base_link_sim antenna_4 100" />

Shows that 4 antenna frames are connected to the base_link_sim frame which represents the robot frame. An example video of 4 antennas connected to an aerial robot is shown at the end of this page.

assign the relative position/pose of the antenna carefully with the robot, it should be set the same way the antenna model is positioned in the gazebo

Admonitions should be used with care. A page riddled with admonitions will look restless and will be harder to follow than a page where admonitions are used sparingly.

RFID Tag Sensor Gazebo Plugin

Overview

The second plugin (RFID_tag_plugin): Contains the plugin that simulates RFID tags that are usually attached to a product/box called a "fixture" This plugin/package is compiled using catkin_make or catkin build. In real life, RFID Tags are small objects that contain a small antenna. Similarly, in simulation, the plugin does two major tasks. First, it reads a file called map.txt which exists in the plugin folder that contains in each line information of the fixtures (boxes that contain tags) in this order: #fix_name id x y z, which are the fixture name, id, and coordinates according to the world map.

Params

NOTE: These parameters could be changed in the SDF/Xacro file while adding the plugin.

TF

Unlike the antenna plugin, no further adjustments are needed as the plugin will generate a frame for each tag with a relative pose. The below image shows the transform tree of 3 tags:

HOW TO USE?

First Step

Setting up your ROS source folder: Clone the packages gazebo_to_ros_tf gazebo & RFID_antenna_plugin & RFID_tag_plugin to your source folder catkin_ws/src

   1 git clone https://github.com/Abdu-lybot/RFID_Sensor_Plugin_gazebo.git

Second Step

Compile your workspace: From the location of your workspace folder catkin_ws

   1 catkin_make

Third Step

Adding to your bashrc the path of your plugin:

   1 export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:/home/<USER>/catkin_ws/src/RFID_tag_plugin/cmake-build-debug/devel/lib
   2 export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:/home/<USER>/catkin_ws/src/RFID_antenna_plugin/cmake-build-debug/devel/lib

Fourth Step

add the RFID_antenna & RFID_tag plugins to your robot model Xacro/SDF file or any other: For adding the plugins: Adding the Plugin to your model:

   1 !--for the RFID_tags plugin:-->
   2   <gazebo reference="base_link">
   3      <sensor type="rfid" name="rfid_tags">
   4        <plugin name="rfid_tags" filename="libRFID_tag_plugin.so">
   5          <tag_name>rfid_tag</tag_name>
   6          <parent_frame>odom_sim</parent_frame>
   7          <tags_per_fix>5</tags_per_fix>
   8          <fix_sdf_path>/home/<USER>/catkin_ws/src/RFID_antenna_plugin/Models/normal_size_fixture/model.sdf</fix_sdf_path>
   9          <tag_sdf_path>/home/<USER>/catkin_ws/src/RFID_antenna_plugin/Models/RFID_1/model.sdf</tag_sdf_path>
  10        </plugin>
  11      </sensor>
  12   </gazebo>

For the RFID_antenna plugin: Adding the Plugin and the Graphical Antenna Model to Gazebo:

   1 <!--______________Antenna_1 Graphical Model to Xacro file_______________-->
   2   <link name="antenna_1_link">
   3     <visual>
   4       <origin xyz="0 0.00 0" rpy="0 0 0"/>
   5       <geometry>
   6         <mesh filename="package://Models/antenna_1/meshes/antenna1.stl" scale="1 1 1"/>
   7       </geometry>
   8       <material name="light_black"/>
   9     </visual>
  10     <collision>
  11       <origin xyz="0 0.00 0.000" rpy="0 0 0"/>
  12       <geometry>
  13         <box size="0.140 0.140 0.143"/>
  14       </geometry>
  15     </collision>
  16     <inertial>
  17       <origin xyz="0 0 0" rpy="0 0 0"/>
  18       <mass value="0.2573504e-01"/>
  19       <inertia ixx="2.2124416e-03" ixy="-1.2294101e-05" ixz="3.4938785e-05"
  20                iyy="2.1193702e-03" iyz="-5.0120904e-06"
  21                izz="2.0064271e-03" />
  22     </inertial>
  23   </link>
  24 <!--______________Antenna_1 Plugin to Xacro file_______________-->
  25   <gazebo reference="base_link">
  26      <sensor type="rfid" name="rfid_antenna">
  27        <plugin name="rfid_antenna" filename="libRFID_antenna_plugin.so">
  28          <antenna_name>antenna_</antenna_name>
  29          <tag_name>rfid_tag</tag_name>
  30          <detected_tag_name>rfid_tag_</detected_tag_name>
  31          <detected_tag_colour>blue</detected_tag_colour>
  32          <antenna_id>1</antenna_id>
  33          <azimuth_beamwidth>1</azimuth_beamwidth>
  34          <elevation_beamwidth>1</elevation_beamwidth>
  35          <rzero>2</rzero>
  36          <tag_yellow_sdf_path>/home/<USER>/catkin_ws/src/RFID_antenna_plugin/Models/RFID_3/model.sdf</tag_yellow_sdf_path>
  37          <tag_red_sdf_path>/home/<USER>/catkin_ws/src/RFID_antenna_plugin/Models/RFID_2/model.sdf</tag_red_sdf_path>
  38          <tag_blue_sdf_path>/home/<USER>/catkin_ws/src/RFID_antenna_plugin/Models/RFID_5/model.sdf</tag_blue_sdf_path>
  39          <tag_purple_sdf_path>/home/<USER>/catkin_ws/src/RFID_antenna_plugin/Models/RFID_4/model.sdf</tag_purple_sdf_path>
  40        </plugin>
  41      </sensor>
  42   </gazebo>

Published topics-msgs

Finnaly

Run your gazebo simulation, then run the tf tree node:

   1 roslaunch gazebo_to_ros_tf gazebo_to_ros_tf.launch

Video Example

A video of a UAV equipped with 4 RFID antennas in an environment containing 1000 RFID tags, while only having the attached antenna facing the right side of the UAV active. target="UAV equipped with 4 RFID antennas in an environment of 1000 RFID tags"


CategoryCategory


2024-12-14 13:03