Hi, I am running into an issue where I am seeing certain vehicles in my Unreal world shake violently when hovering.
I am running:
- The latest ProjectAirSim on
main branch
- Unreal Engine Release 5.7
I have a system in place to run an arbitrary number of Ardupilot SITLs connected to Unreal Engine via ProjectAirSim. My vehicles are loaded into the Unreal World using a slightly modified version of client/python/example_user_scripts_ardupilot_ardupilot_quadrotor.py. The quadrotor .jsonc file is essentially unchanged, and the scene .jsonc file has only been edited to adjust clocking to make Ardupilot happy (for this and also for when I have run Gazebo in the past, I have had to use 1 ms steps, otherwise Ardupilot yells about main loop slow).
"clock": {
"type": "steppable",
"step-ns": 1000000,
"real-time-update-rate": 1000000,
"pause-on-start": false
}
The parameters loaded onto each Ardupilot SITL are
OA_TYPE 3
OA_MARGIN_MAX 5
SERVO9_FUNCTION 120
NTF_LED_TYPES 123847
NTF_LED_LEN 1
SCR_ENABLE 1
# This file is used to optimally fly the Ardupilot quadrotor with the Project AirSim script (ardupilot_quadrotor.py).
# Use it running the following command: python sim_vehicle.py -v ArduCopter -f airsim-copter --add-param-file=<path_to_this_file>
# For more information go to Project AirSim Documentation --> Guides --> Configure AirSim Controller
# For more information about the following parameters see https://ardupilot.org/copter/docs/parameters-Copter-stable-V4.3.4.html
# Roll axis rate controller PID gain
ATC_RAT_RLL_P 0.733
ATC_RAT_RLL_I 0.733
ATC_RAT_RLL_D 0.0056
# Roll axis angle controller P gain
ATC_ANG_RLL_P 36.000
# Acceleration Max for Roll
ATC_ACCEL_R_MAX 374870
# Pitch axis rate controller PID gain
ATC_RAT_PIT_P 0.768
ATC_RAT_PIT_I 0.768
ATC_RAT_PIT_D 0.0050
# Pitch axis angle controller P gain
ATC_ANG_PIT_P 36.00
# Acceleration Max for Pitch
ATC_ACCEL_P_MAX 348730
# Yaw axis rate controller PID gain.
ATC_RAT_YAW_P 2.000
ATC_RAT_YAW_I 0.200
ATC_RAT_YAW_D 0.0000
# Yaw axis angle controller P gain
ATC_ANG_YAW_P 3.429
# Acceleration Max for Yaw
ATC_ACCEL_Y_MAX 2893
And I create my SITLs in a custom server with
{"bash", "-c",
"/ardupilot/Tools/autotest/sim_vehicle.py -v ArduCopter -f airsim-copter "
"--no-mavproxy -I" + std::to_string(rxdMsg.sysid) + " --add-param-file " + activeParamFileInContainer +
" --no-rebuild --sysid " + std::to_string(rxdMsg.sysid)};
On system bootup, I generate SITL heartbearts for N-many drones, starting from sysid 3 and with 1 second delays between each startup. Once all heartbeats are started up, I see ProjectAirSim load all of my vehicles into the world properly. Now say I have loaded 10 vehicles (sysids 3 - 12). If I make sysid 12 takeoff, it looks fine when hovering. If I make sysid 3 takeoff, it vibrates violently while hovering (seemingly more violently based on the number of other vehicles in the world). And if I go down the line making each other sysid takeoff, the vibrations generally just become more and more violent as I approach sysid 3. It also doesn't seem to matter in what order I make them take off. The lower sysids always vibrate the most.
While it does seem that the vibrations are made worse by running my system with more and more vehicles, I also noted that if I only run with 1 vehicle, that vehicle still vibrates fairly badly while hovering, especially compared to sysid 12 in the example above. As a result, I am having a hard time drawing conclusions on why this is happening and what is causing it. Additionally, I never saw this shaking when I was using Gazebo as my physics engine.
Any thoughts would be greatly appreciated.
Hi, I am running into an issue where I am seeing certain vehicles in my Unreal world shake violently when hovering.
I am running:
mainbranchI have a system in place to run an arbitrary number of Ardupilot SITLs connected to Unreal Engine via ProjectAirSim. My vehicles are loaded into the Unreal World using a slightly modified version of
client/python/example_user_scripts_ardupilot_ardupilot_quadrotor.py. The quadrotor.jsoncfile is essentially unchanged, and the scene.jsoncfile has only been edited to adjust clocking to make Ardupilot happy (for this and also for when I have run Gazebo in the past, I have had to use1 mssteps, otherwise Ardupilot yells aboutmain loop slow).The parameters loaded onto each Ardupilot SITL are
And I create my SITLs in a custom server with
{"bash", "-c", "/ardupilot/Tools/autotest/sim_vehicle.py -v ArduCopter -f airsim-copter " "--no-mavproxy -I" + std::to_string(rxdMsg.sysid) + " --add-param-file " + activeParamFileInContainer + " --no-rebuild --sysid " + std::to_string(rxdMsg.sysid)};On system bootup, I generate SITL heartbearts for N-many drones, starting from sysid 3 and with 1 second delays between each startup. Once all heartbeats are started up, I see ProjectAirSim load all of my vehicles into the world properly. Now say I have loaded 10 vehicles (sysids 3 - 12). If I make sysid 12 takeoff, it looks fine when hovering. If I make sysid 3 takeoff, it vibrates violently while hovering (seemingly more violently based on the number of other vehicles in the world). And if I go down the line making each other sysid takeoff, the vibrations generally just become more and more violent as I approach sysid 3. It also doesn't seem to matter in what order I make them take off. The lower sysids always vibrate the most.
While it does seem that the vibrations are made worse by running my system with more and more vehicles, I also noted that if I only run with 1 vehicle, that vehicle still vibrates fairly badly while hovering, especially compared to sysid 12 in the example above. As a result, I am having a hard time drawing conclusions on why this is happening and what is causing it. Additionally, I never saw this shaking when I was using Gazebo as my physics engine.
Any thoughts would be greatly appreciated.