VISION_POSITION_ESTIMATE not appearing in QGroundControl

Not yet, I have problem with interference between WiFi and 2.4GHz Radio Control, I have to try with mavteleop and a joystick so I have only one radio tx rx at 2.4GHz: WiFi. I would like to have the option to manually control the quadcopter if something go wrong.

In the ArucoMarker.msg there is global_camera_pose that is the pose estimation of the camera, I modified the source to publish this as a new topic named /mavros/vision_pose/pose.

I obtained the camera matrix and the projection matrix using this tutorial camera_calibration/Tutorials/MonocularCalibration - ROS Wiki

I’am using Ubuntu 16.04 with ROS Kinetic installed with apt-get, I didn’t recompile anything.

Now it is from many posts that we speak only about Vision Position Estimation with ArduCopter 3.6 and Aruco marker, maybe we should move this posts to a new thread under ArduCopter 3.6 with a more appropriate title, but I don’t know how to do this, maybe @rmackay9 could recommend how to do this, if he considers it necessary.

1 Like

Thanks for your response @anbello . Actually I am working with ArduCopter 3.7 .

Actually I don’t think this is the issue. Can you please, if you have some time, take a look at the issue I have posted in aruco_mapping to reproduce the problem I am having? Here is the link to the issue: https://github.com/SmartRoboticSystems/aruco_mapping/issues/10

Are you sure you are using the right kind of aruco marker? There are many kind, many dictionaries. You can try with the same marker that works for me:
https://drive.google.com/file/d/1p7gU_zgIfA8ifgzcM7HEWd6R88RJYxyX/view?usp=sharing

1 Like

Thanks a lot! that works :slight_smile: But do you know where can I set the dictionary type? And also, what dictionary you are using?

1 Like

You are welcome, I don’t know how to set dictionary type, I used this marker generator with original aruco dictionary and it works.

1 Like

Okay! I kind of modified the code to set the dictionary type. I used the aruco modules offered by opencv. But I must admit that the quality of pose estimation is not that great and has a lot of jitter. Especially when you increase the number of markers.

@anbello shouldn’t AHRS_EKF_TYPE be 1? because 2 means EKF 3 and you told me not to use it. Besides this, shouldn’t AHRS_GPS_USE be disabled?

AHRS_EKF_TYPE = 2 means EKF2, look here.
I think that If you set GPS_TYPE = 0 then it is not important which value you set AHRS_GPS_USE. In any case you can test it.

1 Like

Thanks! You are correct it. If I set GPS_TEST = 0 then it doesn’t matter.

Btw, are you now able to hover above the Aruco marker?

Btw, are you able to hover above the aruco marker now?

In this weeek end I had some time to do som test and now I have the quad hovering above the Arduco marker, it is not very stable, I have to optimize both Arducopter parameters and the pose estimation from the markers. Anyway I have the quadcopter in Loiter mode over the marker quite stable.

2 Likes

Is the pose obtained from aruco marker noisy? Because for me it looks really noisy and if I do some filtering then it adds more delay to the pose estimation.

@anbello What is the frequency of the topic /mavros/vision_position/pose that is coming out of your aruco_mapping package? For me it is about 10 Hz, isn’t it too low?

I got near 30Hz for /mavros/vision_position/pose topic the same as for /camera/image_raw that is the same as the framerate for video stream from the raspberry on the quadcopter. Anyway the frequency of the /mavros/local_position/pose topic is 5Hz so maybe 10Hz for /mavros/local_position/pose could be enough.

I don’t understand why I am getting 10 Hz even though my input image is 30 Hz. The noise in X-Y axis is too high, so when I am giving a set point to track, say (0, 0, 1), the Z axis is being tracked pretty well but the noise in X-Y axis is making the drone do strange actions and eventually move out of the area from which the markers will be visible.

@anbello, How is the image transmission over wifi? Does it lose any packets/images or is it continuous ?

And when you are hovering over the markers do you send any /mavros/setpoint_position/local? or you just switch to the loiter mode and it holds the position?