The FixPosition Simulator is a ROS 2-based tool designed to emulate real-world positioning and odometry data for testing and development purposes. It publishes simulated data on various topics, enabling developers to test navigation, localization, and other robotics applications without the need for physical hardware.
To integrate the FixPosition Simulator with your robot, add the following <xacro:fixposition_full_setup> tag to your robot's URDF or Xacro file:
<xacro:fixposition_full_setup
parent="Bridge"
xyz="-0.0028148 -0.11697 0.21171"
rpy="1.5708 0 1.5708"
poi_frame_xyz="10.0 0.05 0.3"
poi_frame_rpy="0 0 0"
fusion_rate="30.0"/>- parent: Name of the parent link in the URDF to which the simulator's sensor is attached (e.g.,
"Bridge"). - xyz: Position of the sensor relative to the parent link (e.g.,
"-0.0028148 -0.11697 0.21171"). - rpy: Orientation of the sensor in Roll, Pitch, Yaw angles (e.g.,
"1.5708 0 1.5708"). - poi_frame_xyz: Position of the POI frame relative to the sensor (e.g.,
"10.0 0.05 0.3"). - poi_frame_rpy: Orientation of the POI frame in Roll, Pitch, Yaw angles (e.g.,
"0 0 0"). - fusion_rate: Fusion rate in Hz (e.g.,
"30.0").
Example Integration:
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="my_robot">
<!-- Include FixPosition Simulator Macros -->
<xacro:include filename="$(find fixposition_sensor_pkg)/urdf/fixposition_main.xacro"/>
<!-- FixPosition Simulator Setup -->
<xacro:fixposition_full_setup
parent="base_link"
xyz="0.1 0.0 0.2"
rpy="0 0 0"
poi_frame_xyz="5.0 0.0 0.0"
poi_frame_rpy="0 0 0"
fusion_rate="30.0"/>
</robot>- Clone the repository:
git clone https://github.com/yourusername/fixposition_simulator.git
- Build the package:
cd fixposition_simulator colcon build - Source the workspace:
source install/setup.bash
The ROS interface, tree frame, and data generated by the simulator are similar to the real sensor (excluding NMEA topics). For more details, refer to the official FixPosition ROS Driver documentation.
The /fixposition/reset_poish service allows users to reset the POI (Point of Interest) frame in the FixPosition Simulator. This service accepts a std_srvs/Empty message, which clears any existing transformations or offsets applied to the POI frame and resets it to its initial state.
Use Case:
- Useful during simulation when you need to reinitialize or realign the POI frame without restarting the entire simulator node.
Service Type: std_srvs/Empty
Example:
ros2 service call /fixposition/reset_poish std_srvs/srv/EmptyExpected Behavior:
- The POI frame is reset to its original configuration as defined in the URDF/Xacro file.
- The simulator mimics normal sensor operations and is not intended for testing scenarios in GPS-degraded or denied environments.