mavros icon indicating copy to clipboard operation
mavros copied to clipboard

Getting local pose in multi-UAV simulation

Open Hs293Go opened this issue 2 years ago • 2 comments

I'm running multi-UAV simulation via roslaunch px4 multi_uav_mavros_sitl.launch. I'm used to using /local_position/pose to provide feedback for a tracking controller. However, at simulation start, the local position readouts from each of /uav[012]/mavros/local_position are close to [0; 0; 0] as shown below. This runs contrary to the expected positions of each uav specified in multi_uav_mavros_sitl.launch, i.e. [0,0,0] for uav0, [1,0,0] for uav1, [0,1,0] for uav2

Data from /uav0/mavros/local_position

## don't care about header
  position: 
    x: -0.014205143787
    y: 0.00331291183829
    z: 0.00626456504688
## don't care about orientation

Data from /uav1/mavros/local_position

## don't care about header
  position: 
    x: 0.0107134236023
    y: -0.00930605269969
    z: 0.0248154960573
## don't care about orientation

Data from /uav2/mavros/local_position

## don't care about header
  position: 
    x: 0.0190009418875
    y: -0.00686375750229
    z: -0.132964879274
## don't care about orientation

I am aware that local_position is computed with respected to some global frame (named map ??). What I assume now is that each UAV's local_position/pose is calculated w.r.t. its own global frame, whose origin is set to its own position at simulation start. The issue now is whether it is possible to calculate every UAV's local position in the same, global, frame. I have attempted to use /mavros/cmd/set_home, to no effect.

Writing a frame transformation function to resolve every UAV's pose in the same frame appears to be feasible, but I still hope that mavros provides this functionality so i don't need to code myself :)

Hs293Go avatar Mar 08 '22 21:03 Hs293Go