Loading 3D model… large boards can take a moment.
Autonomous ground rover platform for forest monitoring with a split-compute architecture:
Core field goals:
The rover is designed as a practical surveillance robot for wooded environments where GNSS quality, visibility, and terrain can change quickly. The architecture separates deterministic control from high-level AI workloads:
This repository now contains a completed infrastructure baseline plus executed Phase 1, 2, 3, and 4 software foundations.
hardware/rev-a and opened main for ROS-first software development,Implemented firmware and ROS bridge foundations:
forest_rover_msgs):
MotorCommand.msg,MotorFeedback.msg,EnvironmentalData.msg,EmergencyStop.srv.stm32_firmware_driver):
Implemented autonomy stack baseline:
autonomy_manager package with:
odom -> base_link TF broadcaster,robot_localization sensor fusion.Implemented perception and safety-detection stack:
yolo_detector_node:
/perception/detections and inference FPS telemetry.color_tracker_node:
/perception/ball_centroid, tracking confidence, and debug image.smoke_detection_node:
/gas_sensor/reading and /alerts/smoke_detected,autonomy_manager integration:
Implemented system-integration and observability baseline:
complete.launch.xml.data_logger_node with SQLite mission persistence for telemetry, detections, odometry, and events.Implemented long-range telemetry and ground station monitoring:
telemetry_gateway_node: rover-side 10-second heartbeat transmission aggregating odometry, detections, battery, smoke alerts, gas sensor, and autonomy state.base_station_receiver_node: ground station node with SQLite logging, alert monitoring, and rover location publishing.RFM95W LoRa firmware driver (C): 868 MHz SPI-based radio control with CRC-16 CCITT validation, buffer overflow protection, and Friis path loss distance estimation.TelemetryHeartbeat (15 fields), LoRaStatus (11 fields).flowchart LR
subgraph EdgeCompute[RPi CM4 - ROS 2]
BRIDGE[stm32_firmware_bridge]
ODOM[odometry_publisher]
EKF[robot_localization EKF]
AUTONOMY[autonomy_manager]
PERCEPTION[YOLOv8 + color tracker]
end
subgraph Realtime[STM32F407 - FreeRTOS]
UART[UART/COBS Protocol]
MOTOR[PID Motor Control @100Hz]
SENSOR[Sensor Acquisition Task]
SAFETY[Watchdog + E-Stop]
end
BRIDGE <-->|UART1 115200| UART
UART --> MOTOR
UART --> SENSOR
UART --> SAFETY
BRIDGE --> ODOM
ODOM --> EKF
AUTONOMY --> BRIDGE
PERCEPTION --> AUTONOMY
ros2_workspace/
src/
forest_rover_msgs/ # custom ROS interfaces (includes Phase 5: TelemetryHeartbeat, LoRaStatus)
forest_rover_description/ # URDF + bringup launch orchestration (includes phase5_telemetry.launch.py)
forest_rover_hardware/ # robot_state_publisher for URDF
forest_rover_core/ # core node libraries
forest_rover_autonomy/ # metapackage helper
forest_rover_perception/ # metapackage helper
forest_rover_utils/ # shared utilities
stm32_firmware_driver/ # STM32 bridge node (includes RFM95W LoRa driver)
autonomy_manager/ # phase-2 odom and control nodes
yolo_detector_node/ # phase-3 animal detector
color_tracker_node/ # phase-3 red ball tracker
smoke_detection_node/ # phase-3 smoke alert logic
data_logger_node/ # phase-4 mission logger + analysis
telemetry_gateway_node/ # phase-5 rover heartbeat transmission
base_station_receiver_node/ # phase-5 ground station logging
firmware/
STM32_FirmwareProject/
Core/Inc/ # firmware headers
Core/Src/ # firmware implementation
stm32/Drivers/RFM95W/
rfm95w_lora_driver.h # phase-5 LoRa radio driver header
rfm95w_lora_driver.c # phase-5 LoRa radio driver implementation
docker/ # arm64 dev environment
docs/ # architecture and planning docs
cd ros2_workspace
colcon build --symlink-install
source install/setup.bash
ros2 launch forest_rover_description phase5_telemetry.launch.py
ros2 launch forest_rover_description complete.launch.py
ros2 topic echo /environmental/data
ros2 topic echo /raw_motor_feedback
ros2 topic echo /odometry/raw
ros2 topic echo /perception/detections
ros2 topic echo /alerts/smoke_detected
ros2 service call /emergency_stop forest_rover_msgs/srv/EmergencyStop "{stop: true, reason: 'test'}"
python3 install/data_logger_node/lib/data_logger_node/analyze_mission.py mission_logs/mission_events.db
cd firmware/STM32_FirmwareProject
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Expected outputs:
forest-rover-firmware.elfforest-rover-firmware.hexforest-rover-firmware.binMIT License. See LICENSE.
No comments yet. Be the first to ask about this board.