ArduPilot / ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source
http://ardupilot.org/
GNU General Public License v3.0
10.46k stars 17.1k forks source link

SITL Improvements #16531

Open auturgy opened 3 years ago

auturgy commented 3 years ago

Umbrella issue to plan a SITL Sprint Platform [ X ] All

Please be specific in requests: which vehicle and sensor models to add/improve to which simulator, etc

khancyr commented 3 years ago
andyp1per commented 3 years ago
tridge commented 3 years ago

I'd like to be able to use a nice 3D backend for visualisation while using the internal physics for a vehicle. Ideally this would be done while allowing for collisions to be calculated in the 3D backend

rmackay9 commented 3 years ago

My requests are similar to Tridge's above. I'd like an easy-to-start and free 3D visualisation that is closely integrated with our existing SITL. Ideally it should be as easy to start as the 2D viewer started with sim_vehicle. No extra scripts to run, no licenses or separate downloads required.

Ideally the 3D environment would provide simulated 3D cameras pointing forward and downwards which give us point clouds and RGB images that we could then pass into scripts (probably python) to convert the data into a form that can be passed into the AP flight code (i.e. mavlink message most likely)

peterbarker commented 3 years ago

Maybe a GSoC project for the 3D environment?

srmainwaring commented 3 years ago

Schema:

Sensors:

The range of sensors supported by PX4-SITL plus:

Sensor / FDM integration

Question about visualisation backend: is the idea that the 3D backend maintains the graphics update and collision space and sends the contacts back to SITL to incorporate in the SITL dynamics engine?

IamPete1 commented 3 years ago

would be nice to unlink the built in physics from AP, so you could connect the physics via the JSON backend, this would allow a easy path ride along flight controllers to test features such as standby mode or simulate AP_Periph sensors.

stephendade commented 3 years ago

+1 to consolidating the SITL backends to the JSON backend

khancyr commented 3 years ago

@stephendade we already got a swarm option on sim_vehicle.py. it can still be improved but that outside SITL scope

JustCurious8 commented 3 years ago

@stephendade we already got a swarm option on sim_vehicle.py. it can still be improved but that outside SITL scope

Been trying some stuffs related to synchronisation of some particular actions between multiple SITL instances using GPS time, that is working well on multiple quadcopters in real time but I am not able to achieve that synchronisation with multiple SITL instances

@IamPete1 suggested using JSON backend to lock step all the instances together, according to him which requires using a external physics backend, but could allow it to use the internal one, but I am not able to figure out implementation for that

srmainwaring commented 3 years ago

@Notorious811 suppose we take SIM_Rover as an example and want to use its physics with the SIM_JSON backend. Both subclass from SIM_Aircraft which contains both FDM code and FCU update code:

Where SIM_JSON is concerned it is (mostly) updating the FCU with the current FDM state from the external physics model, calculating its response in terms of PWM values, then sending them back to the external physics model.

Where SIM_Rover is concerned SIM_Aircraft is both maintaining the bulk of the rigid body dynamics and updating the FCU and getting its response. SIM_Rover adds vehicle specific behaviour over that.

I think the proposal from @IamPete1 and what I was trying to express in my list of requests, is a clean split between the two responsibilities. So the parts of SIM_Aircraft which deal with the physics (rigid body dynamics and sensor simulation) are split from the part the talks to the controller code and get the control outputs.

I see a number of benefits in organising the calculation this way:

It would probably be worth providing an extra interface that didn't require sockets to pass JSON back and forth between the FDM and FCU parts to keep the AP testing infrastructure simple and make it easier to debug.