VISION_POSITION_ESTIMATE not appearing in QGroundControl

I have look in detail into the ArduCopter code, and it seems that the parameter “VISO_TYPE” is disable for Pixhawk FMU v2 (I have the Pixhawk v1 : https://docs.px4.io/en/flight_controller/pixhawk_series.html#fmu-versions).
I will investigate if I can try with it anyway, but I suppose there is a good reason for disabling this parameter :confused:

Ohh I think these early versions are lacking memory

From what I know VISO_* parameters are necessary only if you use VISION_POSITION_DELTA message.
If you use VISION_POSITION_ESTIMATE message, as in my wiki with Aruco marker, VISO_* parameters are useless.

@anbello From what I understand, I have the same opinion as you. But it’s the only lead that I have with the problem of desired pose.
I will try to find out if it can come from elsewhere

I have tested the GUIDED mode on Gazebo with the variable HAL_MINIMIZE_FEATURES = 1 (which is able too for the FMU V2). Indeed the system doesn’t recognize the VISO parameter, but I still can control it with the /setpoint_position/local command.
So it doesn’t come from the VISO parameter, or the Pixhawk version…
I have no more ideas for now :confused:

I think that you can you try to flash the fmuv3 firmware on your Pixhawk to see if this solve the problem.

1 Like

Thanks a lot, I wasn’t aware of this new ChibiOS !
But when I upload it, I cannot have access then through Mavlink (with Mission Planner). I changed the baudrate, but nothing…
I will keep investigate it !

If you use Windows it could be a driver problems, try to uninstall and reinstall the usb driver that comes with MP (or the entire MP).

Thanks for the tip, I’m using a Linux computer and it’s working well with ChibiOS !
I have now the v3.6.6, with the VISO parameter, which is set. But still, the problem of desired pose remains…
No pain, no gain, right ? :stuck_out_tongue:

Ok, I have found where it does come from. After a long analysis and debug on the ArduCopter code, it seems that in the file “mode_guided.cpp”, the function “pos_control_run()” is called at 100Hz without problem.
But in the first condition of this function :

The variable ap.land_complete is TRUE (and suppose to be false to go through). For testing, I deleted this variable, and now the pose desired is set.
So it is solved !

Hello, Kilo.
I think I have encountered the same problem as you and really want to know about your solutions.
My environment:

  1. ubuntu16.04, ROS Kinetic and ArduPilot 3.6.7.
  2. AHRS_EKF_TYPE 2
    EKF2_ENABLE 1
    EKF3_ENABLE 0
    EK2_GPS_TYPE 3
    GPS_TYPE 0
    COMPASS_USE 0
    VISO_TYPE 0
  3. mode GUIDED

I have checked the apm_pluginlists.yaml and the apm.launch
And I use
sim_vehicle.py —map —console —out udp:127.0.0.1:14551
to sim the copter
use
rosrun macros apm.launch fcu_url:=udp://127.0.0.1:14551@
to launch mavros

The GPS_GLOBAL_ORIGIN & HOME_POSITION was set(checked in QGC)

I echoed the topic /mavros/vision_pose/pose and it did publish
But I could see nothing when I echoed the topic /mavros/local_position/pose, not to mention to get the VISION_ESTIMATE_POSITION in QGC.
I was wondering If you have any ideas.
Need more details, pls let me know.

————————————————————
I suppose the problem should be No 3D Fix
I don’t know if I’m doing those commands in a right order:
I’m pretty sure that I fed the ROS with /mavros/vision_pose/pose before I start the sim_vehicle.py and it’s running all the time. After that, I launched the apm.launch and set the gps_position & home_position. But when I switch to mode GUIDEDand tend to arm, there came with the ERR No 3D fix.
I checked the rqt_graph, it’s strange that mavros didn’t subscribe the vision topic but the tf topic from the SLAM part.

Hello @IrisGreen,
Indeed it seems that you are doing all right.
When you send GPS_GLOBAL_ORIGIN & HOME_POSITION, are you sending a coherent position (like the position of your city) and not just a random pose ?
For my simulation, I run ArduPilot (sim_vehicle & apm.launch) before feeding mavros/vision_pose/pose without any issue. So I don’t think this is a running order problem.

Thanks for your kind reply. But it didn’t work out well.The problem should be something else and I have to take a deeper look. I’ll keep trying anyway. If I had figure it out, I will give a response: )

Hi i am a noob that needs your help . I am working on external position using pozyx. my goal is to feed the drone with external position coming from the pozyx tag through the topic /mavros/mocap/pose . I have the following parameter on my Quad :
AHRS_EKF_TYPE 2
EKF2_ENABLE 1
EKF3_ENABLE 0
GPS_TYPE 0
EK2_GPS_TYPE 3
COMPASS_USE 0
VISO_TYPE 0
BCN_TYPE 1(Meanning pozyx)
BCN_ORIENT_YAW 0
ARMING_CHECK 0
On the Quad there is a RPI 3 model B V1.2 connected to a pozyx tag
I followed the tutuorial to place the 4 anchors of the pozyx following the N pattern to place the anchors .
Pozyx is using ENU and ROS is supposed to convert the data from ENU to NED from what i read.
Although i aligned the North with the x-axis of my mocap system . when i listen to the /mavros/local_position/pose , only the z converge to the external data . x_local and y_local have no correlation from the published data


like we can see on the above picture , the local position are on the left pic and the mocap are on the right .
Of course before listeing to the local_position/pose data,i send the mocap , then i set the gps_global_origin and the home position
How can i do to so that external positions and local position match ?
What do i miss ? , Any help will be welcome

HI @Joel_Fankam I would like to know something about your system to better understand.
Which kind of data do you get from your mocap system?
In which way, from this data, you form a message to send to /mavros/mocap/pose topic?

Anyway it could be a problem of reference frames and transformations between them.
@LuckyBird explains very well the key concept to send the right messages with the right transformation for reference frame in his github repo and in his blog posts:

HI @anbello, I am getting x,y,z , i can also get the quaternion from the pozyx system(ENU). The pozyx tag communicate with 4 others anchors and give me x,y,z coordinates
then i send then i publish them with PoseStamped trough the /mavros/mocap/pose. i dd not change nothing since ROS is supposed to convert data to NED . i will read the tips you gave me and let you know

Please show the ATT_POS_MOCAP message you receive from GCS , if you are using Mission Planner do CTRL-F and select Mavlink Inspector.

From you example above it seems you do not send the quaternions , please make sure that you map the pose topic correctly as described here:
https://dev.px4.io/master/en/ros/external_position_estimation.html#relaying_pose_data_to_px4

@chobitsfan could give you some guidance on this.

that is what i am getting


Do i have to use VISION_POSE_ESTIMATE
I think one of my big problem is with the frame coordinates system .
I manage to get quaternion from the pozyx tag . i get qx=0,5 qy=0,5 qz=0,5 qw=0,5

I dont see the vision signal , like I wrote before,

ArduPilot can process both Quaternions and Euler Angles, but just make sure that Mavros read Pozyx and output the correct signal to MavLink.

I am working with EKF2, and on the link you send me :
https://dev.px4.io/master/en/ros/external_position_estimation.html#relaying_pose_data_to_px4
Only vision pipeline is allowed
that means i have to remap the pose topic i get from the pozyx to the /mavros/vision/pose?
because i was sending pose to /mavros/mocap/pose