Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Differential: Refactor #24318

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft

Differential: Refactor #24318

wants to merge 2 commits into from

Conversation

chfriedrich98
Copy link
Contributor

@chfriedrich98 chfriedrich98 commented Feb 11, 2025

Solved Problem

This PR continues the restructure of the rover modules from #24285 to the following architecture:
rover_code_architecture

This PR focuses on restructuring the differential rover module (mecanum will be updated in a subsequent PR).

This PR also introduces offboard support for differential rovers through the trajectorySetpoint.msg. (Works on #23663)
The Differential module supports position, velocity, yaw and yaw speed setpoints.

Test coverage

@chfriedrich98 chfriedrich98 added the Rover 🚙 Rovers and other UGV label Feb 11, 2025
@chfriedrich98 chfriedrich98 self-assigned this Feb 11, 2025
Copy link

github-actions bot commented Feb 11, 2025

🔎 FLASH Analysis

px4_fmu-v5x [Total VM Diff: -504 byte (-0.02 %)]
    FILE SIZE        VM SIZE    
--------------  -------------- 
-0.1% -2.58Ki  [ = ]       0    .debug_abbrev
   +11%     +56  [ = ]       0    ../../src/lib/version/version.c
  [DEL]    -900  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]    -900  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]    -900  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
-0.1%    -104  [ = ]       0    .debug_aranges
  -5.0%      -8  [ = ]       0    ../../src/lib/version/version.c
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
-0.0%    -144  [ = ]       0    .debug_frame
-0.1% -41.2Ki  [ = ]       0    .debug_info
  -0.2%     -21  [ = ]       0    ../../platforms/common/uORB/Subscription.cpp
  -0.2%     -21  [ = ]       0    ../../platforms/common/uORB/SubscriptionInterval.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORB.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORBDeviceMaster.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORBDeviceNode.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORBManager.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/nuttx/src/px4/common/gpio/mcp23009/mcp23009.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/adc/ads1115/ads1115_main.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/adc/board_adc/ADC.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/barometer/bmp388/bmp388.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/barometer/ms5611/ms5611.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/camera_capture/camera_capture.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/camera_trigger/camera_trigger.cpp
  -0.0%     -21  [ = ]       0    ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/differential_pressure/ms4525do/MS4525DO.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/differential_pressure/ms5525dso/MS5525DSO.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/differential_pressure/sdp3x/SDP3X.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/distance_sensor/cm8jl65/CM8JL65.cpp
  -0.0%     -21  [ = ]       0    ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/distance_sensor/lightware_laser_serial/lightware_laser_serial.cpp
 -100.2% -40.8Ki  [ = ]       0    [479 Others]
-0.1% -4.18Ki  [ = ]       0    .debug_line
  -0.5%      -8  [ = ]       0    ../../platforms/common/uORB/Subscription.cpp
  -0.4%     -16  [ = ]       0    ../../platforms/common/uORB/uORBManager.cpp
  -1.3%     -25  [ = ]       0    ../../src/lib/version/version.c
  -1.0%     -65  [ = ]       0    ../../src/modules/logger/logged_topics.cpp
  -0.0%      -8  [ = ]       0    ../../src/modules/logger/logger.cpp
  -0.0%      -6  [ = ]       0    ../../src/modules/uxrce_dds_client/uxrce_dds_client.cpp
  [DEL] -1.33Ki  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL] -1.31Ki  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL] -1.31Ki  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
  -1.8%    -104  [ = ]       0    msg/topics_sources/uORBTopics.cpp
-0.0%    -602  [ = ]       0    .debug_loc
  +0.5%     +15  [ = ]       0    ../../src/drivers/camera_capture/camera_capture.cpp
  -0.2%     -15  [ = ]       0    ../../src/drivers/camera_trigger/camera_trigger.cpp
  -0.2%     -15  [ = ]       0    ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
  -0.2%     -15  [ = ]       0    ../../src/drivers/telemetry/bst/bst.cpp
  -0.4%     -15  [ = ]       0    ../../src/drivers/telemetry/frsky_telemetry/sPort_data.cpp
  -0.0%     -17  [ = ]       0    ../../src/drivers/uavcan/uavcan_main.cpp
  +0.0%     +15  [ = ]       0    ../../src/drivers/uavcan/uavcan_servers.cpp
  -0.1%     -15  [ = ]       0    ../../src/lib/avoidance/ObstacleAvoidance.cpp
  -0.1%     -15  [ = ]       0    ../../src/lib/collision_prevention/CollisionPrevention.cpp
  +0.2%     +15  [ = ]       0    ../../src/lib/rtl/rtl_time_estimator.cpp
  +0.0%     +15  [ = ]       0    ../../src/modules/commander/Commander.cpp
  +0.6%     +15  [ = ]       0    ../../src/modules/commander/HealthAndArmingChecks/checks/baroCheck.cpp
  +0.2%     +15  [ = ]       0    ../../src/modules/commander/HealthAndArmingChecks/checks/batteryCheck.cpp
  +0.3%     +15  [ = ]       0    ../../src/modules/commander/HomePosition.cpp
  -0.6%     -48  [ = ]       0    ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
  +0.2%     +15  [ = ]       0    ../../src/modules/flight_mode_manager/FlightModeManager.cpp
  +0.0%     +15  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp
  +0.0%      +3  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/AutoFollowTarget/FlightTaskAutoFollowTarget.cpp
  +0.3%     +15  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.cpp
  +0.3%     +28  [ = ]       0    ../../src/modules/flight_mode_manager/tasks/Transition/FlightTaskTransition.cpp
 -100.0%    -628  [ = ]       0    [18 Others]
-0.0%     -67  [ = ]       0    .debug_ranges
  -2.6%      -8  [ = ]       0    ../../src/lib/version/version.c
  -0.1%      -8  [ = ]       0    ../../src/modules/logger/logger.cpp
  [DEL]     -16  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -16  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -16  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
  -4.5%      -3  [ = ]       0    task/task_cancelpt.c
-0.0%    -511  [ = ]       0    .debug_str
  -0.3%    -158  [ = ]       0    
  -0.5%     -89  [ = ]       0    ../../src/drivers/adc/ads1115/ads1115_main.cpp
  [DEL]    -101  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]    -173  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]    -191  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
   +11%      +9  [ = ]       0    msg/topics_sources/rover_mecanum_guidance_status.cpp
   +89%    +106  [ = ]       0    msg/topics_sources/rover_mecanum_setpoint.cpp
   +68%    +104  [ = ]       0    msg/topics_sources/rover_mecanum_status.cpp
  -7.7%     -18  [ = ]       0    msg/topics_sources/uORBTopics.cpp
-0.0%    -208  [ = ]       0    .strtab
  -8.1%     -32  [ = ]       0    ../../src/lib/version/version.c
  -0.1%     -69  [ = ]       0    [section .strtab]
  [DEL]     -41  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -34  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
-0.0%    -192  [ = ]       0    .symtab
  -7.0%     -64  [ = ]       0    ../../src/lib/version/version.c
  +0.3%     +16  [ = ]       0    ../../src/modules/fw_pos_control/FixedwingPositionControl.cpp
  [DEL]     -48  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -48  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -48  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
+4.5%    +504  [ = ]       0    [Unmapped]
-0.0%    -504  -0.0%    -504    .text
  +0.2%      +4  +0.2%      +4    ../../platforms/common/uORB/uORBDeviceMaster.cpp
  +0.3%      +4  +0.3%      +4    ../../src/modules/logger/util.cpp
  +0.1%      +4  +0.1%      +4    ../../src/modules/mag_bias_estimator/MagBiasEstimator.cpp
  -2.6%      -4  -2.6%      -4    ../../platforms/common/uORB/Subscription.cpp
  -0.0%      -4  -0.0%      -4    ../../src/modules/logger/logger.cpp
  -3.4%      -4  -3.4%      -4    stdlib/lib_srand.c
  -0.6%      -8  -0.6%      -8    ../../platforms/common/uORB/uORBManager.cpp
  [DEL]     -16  [DEL]     -16    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -16  [DEL]     -16    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -16  [DEL]     -16    msg/topics_sources/rover_differential_status.cpp
  -1.3%     -16  -1.3%     -16    msg/topics_sources/uORBTopics.cpp
  -1.0%     -52  -1.0%     -52    ../../src/modules/logger/logged_topics.cpp
  -0.1%    -380  -0.1%    -380    [section .text]
-0.1% -49.7Ki  -0.0%    -504    TOTAL

px4_fmu-v6x [Total VM Diff: -496 byte (-0.03 %)]
    FILE SIZE        VM SIZE    
--------------  -------------- 
-0.1% -2.58Ki  [ = ]       0    .debug_abbrev
   +11%     +56  [ = ]       0    ../../src/lib/version/version.c
  [DEL]    -900  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]    -900  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]    -900  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
-0.1%    -104  [ = ]       0    .debug_aranges
  -5.0%      -8  [ = ]       0    ../../src/lib/version/version.c
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
-0.0%    -144  [ = ]       0    .debug_frame
-0.2% -40.8Ki  [ = ]       0    .debug_info
  -0.2%     -21  [ = ]       0    ../../platforms/common/uORB/Subscription.cpp
  -0.2%     -21  [ = ]       0    ../../platforms/common/uORB/SubscriptionInterval.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORB.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORBDeviceMaster.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORBDeviceNode.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/common/uORB/uORBManager.cpp
  -0.1%     -21  [ = ]       0    ../../platforms/nuttx/src/px4/common/gpio/mcp23009/mcp23009.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/adc/ads1115/ads1115_main.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/adc/board_adc/ADC.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/barometer/bmp388/bmp388.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/barometer/invensense/icp201xx/ICP201XX.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/barometer/ms5611/ms5611.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/camera_capture/camera_capture.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/camera_trigger/camera_trigger.cpp
  -0.0%     -21  [ = ]       0    ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/differential_pressure/ms4525do/MS4525DO.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/differential_pressure/ms5525dso/MS5525DSO.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/differential_pressure/sdp3x/SDP3X.cpp
  -0.1%     -21  [ = ]       0    ../../src/drivers/distance_sensor/cm8jl65/CM8JL65.cpp
  -0.0%     -21  [ = ]       0    ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
 -100.2% -40.4Ki  [ = ]       0    [463 Others]
-0.1% -4.18Ki  [ = ]       0    .debug_line
  -0.5%      -8  [ = ]       0    ../../platforms/common/uORB/Subscription.cpp
  -0.4%     -16  [ = ]       0    ../../platforms/common/uORB/uORBManager.cpp
  -1.3%     -25  [ = ]       0    ../../src/lib/version/version.c
  -1.0%     -65  [ = ]       0    ../../src/modules/logger/logged_topics.cpp
  -0.0%      -8  [ = ]       0    ../../src/modules/logger/logger.cpp
  -0.0%      -6  [ = ]       0    ../../src/modules/uxrce_dds_client/uxrce_dds_client.cpp
  [DEL] -1.33Ki  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL] -1.31Ki  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL] -1.31Ki  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
  -1.8%    -104  [ = ]       0    msg/topics_sources/uORBTopics.cpp
  -0.4%      -5  [ = ]       0    task/task_cancelpt.c
-0.0%    -806  [ = ]       0    .debug_loc
  +0.4%     +15  [ = ]       0    ../../src/drivers/adc/board_adc/ADC.cpp
  -0.2%     -15  [ = ]       0    ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
  +0.2%     +15  [ = ]       0    ../../src/drivers/osd/msp_osd/msp_osd.cpp
  +0.3%     +13  [ = ]       0    ../../src/drivers/rc_input/crsf_telemetry.cpp
  +0.1%     +15  [ = ]       0    ../../src/drivers/uavcan/remoteid.cpp
  -0.0%      -2  [ = ]       0    ../../src/drivers/uavcan/uavcan_main.cpp
  +0.0%     +29  [ = ]       0    ../../src/drivers/uavcan/uavcan_servers.cpp
  -0.3%     -15  [ = ]       0    ../../src/lib/adsb/AdsbConflict.cpp
  -0.2%     -15  [ = ]       0    ../../src/lib/rtl/rtl_time_estimator.cpp
  +0.2%     +13  [ = ]       0    ../../src/lib/weather_vane/WeatherVane.cpp
  +0.1%     +15  [ = ]       0    ../../src/modules/airspeed_selector/airspeed_selector_main.cpp
  +0.4%     +15  [ = ]       0    ../../src/modules/commander/HealthAndArmingChecks/checks/accelerometerCheck.cpp
  +0.6%     +15  [ = ]       0    ../../src/modules/commander/HealthAndArmingChecks/checks/baroCheck.cpp
  +0.0%      +1  [ = ]       0    ../../src/modules/commander/HealthAndArmingChecks/checks/externalChecks.cpp
  -0.3%     -15  [ = ]       0    ../../src/modules/commander/HomePosition.cpp
  -0.3%     -15  [ = ]       0    ../../src/modules/commander/ModeManagement.cpp
  +0.0%     +15  [ = ]       0    ../../src/modules/commander/accelerometer_calibration.cpp
  +0.7%     +15  [ = ]       0    ../../src/modules/commander/baro_calibration.cpp
  +1.0%     +15  [ = ]       0    ../../src/modules/commander/esc_calibration.cpp
  +0.1%     +15  [ = ]       0    ../../src/modules/commander/failure_detector/FailureDetector.cpp
 -100.1%    -935  [ = ]       0    [27 Others]
-0.0%     -63  [ = ]       0    .debug_ranges
  -2.6%      -8  [ = ]       0    ../../src/lib/version/version.c
  -0.1%      -8  [ = ]       0    ../../src/modules/logger/logger.cpp
  [DEL]     -16  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -16  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -16  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
  +1.5%      +1  [ = ]       0    task/task_cancelpt.c
-0.0%    -511  [ = ]       0    .debug_str
  -0.3%    -158  [ = ]       0    
  -0.5%     -89  [ = ]       0    ../../src/drivers/adc/ads1115/ads1115_main.cpp
  [DEL]    -101  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]    -173  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]    -191  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
   +11%      +9  [ = ]       0    msg/topics_sources/rover_mecanum_guidance_status.cpp
   +89%    +106  [ = ]       0    msg/topics_sources/rover_mecanum_setpoint.cpp
   +68%    +104  [ = ]       0    msg/topics_sources/rover_mecanum_status.cpp
  -7.7%     -18  [ = ]       0    msg/topics_sources/uORBTopics.cpp
-0.0%    -208  [ = ]       0    .strtab
  -8.1%     -32  [ = ]       0    ../../src/lib/version/version.c
  -0.1%     -69  [ = ]       0    [section .strtab]
  [DEL]     -41  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -34  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -32  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
-0.0%    -192  [ = ]       0    .symtab
  -7.0%     -64  [ = ]       0    ../../src/lib/version/version.c
  +0.3%     +16  [ = ]       0    ../../src/modules/fw_pos_control/FixedwingPositionControl.cpp
  [DEL]     -48  [ = ]       0    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -48  [ = ]       0    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -48  [ = ]       0    msg/topics_sources/rover_differential_status.cpp
+0.7%    +496  [ = ]       0    [Unmapped]
-0.0%    -496  -0.0%    -496    .text
  +0.2%      +4  +0.2%      +4    ../../platforms/common/uORB/uORBDeviceMaster.cpp
  +0.3%      +4  +0.3%      +4    ../../src/modules/logger/util.cpp
  +0.1%      +4  +0.1%      +4    ../../src/modules/mag_bias_estimator/MagBiasEstimator.cpp
  +0.2%      +3  +0.2%      +3    ../../src/systemcmds/ver/ver.cpp
  -2.6%      -4  -2.6%      -4    ../../platforms/common/uORB/Subscription.cpp
  -0.0%      -4  -0.0%      -4    ../../src/modules/logger/logger.cpp
  -0.6%      -8  -0.6%      -8    ../../platforms/common/uORB/uORBManager.cpp
  [DEL]     -16  [DEL]     -16    msg/topics_sources/rover_differential_guidance_status.cpp
  [DEL]     -16  [DEL]     -16    msg/topics_sources/rover_differential_setpoint.cpp
  [DEL]     -16  [DEL]     -16    msg/topics_sources/rover_differential_status.cpp
  -1.3%     -16  -1.3%     -16    msg/topics_sources/uORBTopics.cpp
  -1.0%     -52  -1.0%     -52    ../../src/modules/logger/logged_topics.cpp
  -0.1%    -379  -0.1%    -379    [section .text]
-0.1% -49.6Ki  -0.0%    -496    TOTAL

Updated: 2025-02-11T16:46:03

@chfriedrich98 chfriedrich98 force-pushed the pr-differential_refactor branch from 8d04fd8 to 5fe3544 Compare February 11, 2025 13:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Rover 🚙 Rovers and other UGV
Projects
Status: 🏗 In Progress
Development

Successfully merging this pull request may close these issues.

1 participant