Skip to content

Feat--Ardupilot#39

Draft
farshidrayhancv wants to merge 8 commits intomonemati:mainfrom
farshidrayhancv:Feat--Ardupilot
Draft

Feat--Ardupilot#39
farshidrayhancv wants to merge 8 commits intomonemati:mainfrom
farshidrayhancv:Feat--Ardupilot

Conversation

@farshidrayhancv
Copy link
Copy Markdown
Contributor

Summary

  • Add full ArduPilot/ArduCopter SITL support alongside the existing PX4 stack
  • New Dockerfile builds ArduPilot SITL + ardupilot_gazebo plugin + Gazebo Garden with ros-humble-ros-gzgarden bridge
  • Original PX4 setup preserved as Dockerfile.px4 — both stacks are fully supported
  • Iris drone with 3-axis gimbal camera (pitch/yaw/roll), YOLOv8 detection, keyboard flight control, and flight mode switching (1-5
    keys)

What changed

  • Dockerfile: ArduPilot (default) builds ArduCopter SITL, ardupilot_gazebo plugin, and configures the gimbal camera via
    setup_gimbal_ardupilot.py
  • Dockerfile.px4: Renamed from original Dockerfile, unchanged
  • keyboard-mavsdk-test.py: MAVSDK connects on UDP 14550, pymavlink on 14560 for ArduCopter mode switching
    (Loiter/AltHold/Guided/Stabilize/Land)
  • move_car.py: Non-blocking gz service calls with 2s timeout (was 200ms, caused silent failures)
  • worlds/ardupilot_default.sdf: Gazebo world with 250Hz physics (max_step_size=0.004) tuned for real-time performance with the full
    scene
  • ardupilot_sitl.parm: SCHED_LOOP_RATE=125 matched to 250Hz physics rate so pre-arm checks pass cleanly
  • run_ardupilot.sh / run_px4.sh: One-command Docker build+run scripts
  • README.md: Rewritten for dual-stack setup with hardware info, architecture diagrams, and manual installation instructions for both
    stacks

- Updated Dockerfile to set up gimbal joints for camera control.
- Refactored KeyPressModule to handle keyboard inputs for drone control and gimbal adjustments.
- Improved keyboard-mavsdk-test.py to include gimbal control commands.
- Modified px4_ros2_gazebo.yml for streamlined simulation window management.
- Added move_car.py for car model movement in Gazebo.
- Created setup_gimbal.py to modify camera model for gimbal integration.
- Updated uav_camera_det.py to create a resizable window for detected frames.
- Enhanced default.sdf and default_docker.sdf with additional sensor plugins.
- Added How_to_run.md for detailed build and run instructions.
Key changes:
  - New Dockerfile for ArduPilot (SITL + ardupilot_gazebo plugin + ros-humble-ros-gzgarden)
  - Gazebo world with iris_with_gimbal drone (3-axis gimbal + camera)
  - setup_gimbal_ardupilot.py configures camera topic and frame rate
  - keyboard-mavsdk-test.py: MAVSDK on UDP 14550, pymavlink mode switching (1-5 keys)
  - move_car.py: non-blocking gz service calls with 2s timeout
  - Tmuxinator config for 6-pane ArduPilot session
  - SITL params tuned for 250Hz Gazebo physics (SCHED_LOOP_RATE=125)
  - run_ardupilot.sh / run_px4.sh one-command Docker scripts
  - README rewritten for dual-stack setup with Pixhawk hardware info
@farshidrayhancv farshidrayhancv marked this pull request as draft February 11, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants