Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Dhruv2012/Autonomous-Farm-Robot/llms.txt
Use this file to discover all available pages before exploring further.
agribot_description is the primary robot modeling package. It contains the URDF/Xacro description of AGRIBOT’s chassis and sensors, Gazebo world files for the farm simulation, STL mesh files, and all launch files to spawn the robot and open visualization tools. Every other package in the workspace depends on the robot description defined here — it is the single source of truth for the physical model, sensor placement, and Gazebo plugin configuration.
Package Contents
URDF/Xacro Structure
The robot description is split across several Xacro files to keep each concern isolated and maintainable. At build time,xacro processes the top-level file and resolves all includes into a single URDF loaded onto the ROS parameter server.
The include chain is:
agribot_sensors.urdf.xacro(top-level) — includesagribot_body.urdf.xacroand declares all Gazebo simulation plugins. This is the file passed toxacroin every launch file.agribot_body.urdf.xacro— defines the chassis (base_link), four wheel links and joints, IMU link, GPS link, magnetometer link, and the camera link with itslibgazebo_ros_camera.soplugin.agribot_parts.urdf.xacro— defines theagribot_partXacro macro used to instantiate each wheel with the correct geometry, inertia, and joint.agribot_materials.urdf.xacro— declares named URDF materials (Black, Gray, DarkGray, White, Yellow, WoodBrown, Red) that are referenced throughout the body description.
agribot_sensors.urdf.xacro are:
| Plugin | Library | Purpose |
|---|---|---|
gazebo_ros_control | libgazebo_ros_control.so | ROS control bridge (exposes hardware interface) |
skid_steer_drive_controller | libgazebo_ros_skid_steer_drive.so | 4-wheel skid-steer kinematics |
imu | libhector_gazebo_ros_imu.so | IMU simulation with configurable Gaussian noise |
gps_controller | libhector_gazebo_ros_gps.so | GPS simulation with drift and noise |
magnetometer | libhector_gazebo_ros_magnetic.so | Magnetometer simulation |
Gazebo Plugin Configuration
The skid-steer drive plugin bridges/agribot/cmd_vel Twist commands to individual wheel joint torques. The configuration below is extracted directly from agribot_sensors.urdf.xacro:
21.1613108102°N, 72.7869817026°E). Simulated drift of 5.0 m in each axis and Gaussian noise of 0.1 approximate real-world GPS uncertainty. The IMU plugin publishes at 200 Hz to /agribot/imu with near-zero noise values suitable for orientation estimation.
Launch Files Reference
Four launch files cover the main usage scenarios from URDF inspection to full farm simulation.agribot_description.launch
agribot_description.launch
Loads
agribot_body.urdf.xacro as robot_description on the parameter server, starts joint_state_publisher (with optional GUI slider), and starts robot_state_publisher to broadcast TF transforms. Does not launch Gazebo — useful for inspecting the URDF model in RViz without simulation overhead.agribot_gazebo_simulation.launch
agribot_gazebo_simulation.launch
Launches an empty Gazebo world, adds a static TF between
base_link and base_footprint, spawns the AGRIBOT model from the raw Xacro file using spawn_model, and publishes a /calibrated flag via rostopic pub. Intended for rapid model testing before the full farm world is loaded.my_world.launch
my_world.launch
The primary full-stack launch file. Loads
Farm.world in Gazebo, processes the Xacro description and uploads it to the parameter server, remaps joint states from /agribot/joint_states to /joint_states, publishes a static odom → map TF, includes agribot_control.launch to spawn PID controllers, and launches the gps_converter and sensor_data navigation nodes in separate xterm windows.agribot_rviz_display.launch
agribot_rviz_display.launch
Opens RViz with the pre-configured
.rviz file at rviz/agribot_urdf.rviz. Starts joint_state_publisher and robot_state_publisher so all TF frames and the robot model render correctly.The
my_world.launch file is the recommended entry point for a complete simulation session. It launches Gazebo, spawns all controllers, and starts the navigation nodes in a single command. See the Simulation Guide for the recommended step-by-step startup sequence.