ARDUPILOT VOXL CAM ORIENTATION ISSUE ?
-
A good document on how to modify the extrinsics can be found here
That being said, for an indoor rover the easiest path is to flip VOXL CAM upside down and keep everything as default
-
-
@Chad-Sweet Hello,
Ok for test the upside down, can you share here the extrinsics to put it upside down?
As you can show on the photos on posts above, I set the extrinsics file to this values below to match the tracking camera positionning, and I achieve better positionning and qvio quality.
Please check my extrinsics below:
{
"name": "seeker_v1_voxlcam",
"extrinsics": [{
"parent": "imu0",
"child": "tracking",
"T_child_wrt_parent": [0.041, 0.014, 0.01],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "imu1",
"child": "tracking",
"T_child_wrt_parent": [-0.0074, 0.021, 0.01],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "imu0",
"T_child_wrt_parent": [0.0496, -0.0152, 0.0161],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "imu1",
"T_child_wrt_parent": [0.0465, 0.0332, -0.013],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "stereo_l",
"T_child_wrt_parent": [0.055, -0.04, 0],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "ground",
"T_child_wrt_parent": [0, 0, 0.045],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "imu1",
"child": "imu0",
"T_child_wrt_parent": [-0.0484, 0.037, 0.002],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "tof",
"T_child_wrt_parent": [0.055, 0, 0],
"RPY_parent_to_child": [0, 90, -90]
}]
}But the issue, is that I always get bad positionning.
please check the ardurover log via the link below:
https://1drv.ms/u/s!AssmjyIs_YcBqz7NvkZmM4Gv7LZt?e=mBVFhSYou can see that we achieve to make U chape trajectory, but at some point, qvio loses the yaw.......
Please check the log.
Please also tell me how to make qvio logs with voxlcam for you post analys what going on.
Also, please tel me what qvio quality number must be achieved when going forward and making turns?
here you have the best logs we achieved.
at the end qvio lose yaw....I really would like to try the upside down voxlcam with tracking camera mounted as factory deliver it.
Please let me know how to achieve this, I think that extrinsics file is not the only conf file to tune for it, and all the items must be reversed?
It would be gracefull from your part to provide consistant support for it by giving the extrisincs and sharing it at all your customers here.
Kind regards.
-
@serge said in ARDUPILOT VOXL CAM ORIENTATION ISSUE ?:
@Chad-Sweet Hello,
Ok for test the upside down, can you share here the extrinsics to put it upside down?
As you can show on the photos on posts above, I set the extrinsics file to this values below to match the tracking camera positionning, and I achieve better positionning and qvio quality.
Please check my extrinsics below:
{
"name": "seeker_v1_voxlcam",
"extrinsics": [{
"parent": "imu0",
"child": "tracking",
"T_child_wrt_parent": [0.041, 0.014, 0.01],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "imu1",
"child": "tracking",
"T_child_wrt_parent": [-0.0074, 0.021, 0.01],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "imu0",
"T_child_wrt_parent": [0.0496, -0.0152, 0.0161],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "imu1",
"T_child_wrt_parent": [0.0465, 0.0332, -0.013],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "stereo_l",
"T_child_wrt_parent": [0.055, -0.04, 0],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "ground",
"T_child_wrt_parent": [0, 0, 0.045],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "imu1",
"child": "imu0",
"T_child_wrt_parent": [-0.0484, 0.037, 0.002],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "tof",
"T_child_wrt_parent": [0.055, 0, 0],
"RPY_parent_to_child": [0, 90, -90]
}]
}But the issue, is that I always get bad positionning.
please check the ardurover log via the link below:
https://1drv.ms/u/s!AssmjyIs_YcBqz7NvkZmM4Gv7LZt?e=mBVFhSYou can see that we achieve to make U chape trajectory, but at some point, qvio loses the yaw.......
Please check the log.
Please also tell me how to make qvio logs with voxlcam for you post analys what going on.
Also, please tel me what qvio quality number must be achieved when going forward and making turns?
here you have the best logs we achieved.
at the end qvio lose yaw....I really would like to try the upside down voxlcam with tracking camera mounted as factory deliver it.
Please let me know how to achieve this, I think that extrinsics file is not the only conf file to tune for it, and all the items must be reversed?
It would be gracefull from your part to provide consistant support for it by giving the extrisincs and sharing it at all your customers here.
Kind regards.
Dear Chad, Please, can you tell me if tracking camera is factory calibrated? Do you advice to calibrate it to enhance the results?
-
@sergio said in ARDUPILOT VOXL CAM ORIENTATION ISSUE ?:
@serge said in ARDUPILOT VOXL CAM ORIENTATION ISSUE ?:
@Chad-Sweet Hello,
Ok for test the upside down, can you share here the extrinsics to put it upside down?
As you can show on the photos on posts above, I set the extrinsics file to this values below to match the tracking camera positionning, and I achieve better positionning and qvio quality.
Please check my extrinsics below:
{
"name": "seeker_v1_voxlcam",
"extrinsics": [{
"parent": "imu0",
"child": "tracking",
"T_child_wrt_parent": [0.041, 0.014, 0.01],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "imu1",
"child": "tracking",
"T_child_wrt_parent": [-0.0074, 0.021, 0.01],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "imu0",
"T_child_wrt_parent": [0.0496, -0.0152, 0.0161],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "imu1",
"T_child_wrt_parent": [0.0465, 0.0332, -0.013],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "stereo_l",
"T_child_wrt_parent": [0.055, -0.04, 0],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "ground",
"T_child_wrt_parent": [0, 0, 0.045],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "imu1",
"child": "imu0",
"T_child_wrt_parent": [-0.0484, 0.037, 0.002],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "tof",
"T_child_wrt_parent": [0.055, 0, 0],
"RPY_parent_to_child": [0, 90, -90]
}]
}But the issue, is that I always get bad positionning.
please check the ardurover log via the link below:
https://1drv.ms/u/s!AssmjyIs_YcBqz7NvkZmM4Gv7LZt?e=mBVFhSYou can see that we achieve to make U chape trajectory, but at some point, qvio loses the yaw.......
Please check the log.
Please also tell me how to make qvio logs with voxlcam for you post analys what going on.
Also, please tel me what qvio quality number must be achieved when going forward and making turns?
here you have the best logs we achieved.
at the end qvio lose yaw....I really would like to try the upside down voxlcam with tracking camera mounted as factory deliver it.
Please let me know how to achieve this, I think that extrinsics file is not the only conf file to tune for it, and all the items must be reversed?
It would be gracefull from your part to provide consistant support for it by giving the extrisincs and sharing it at all your customers here.
Kind regards.
Dear Chad, Please, can you tell me if tracking camera is factory calibrated? Do you advice to calibrate it to enhance the results?
Also Please send me the voxl cam intrinsics for upside down the voxlcam in rover app.
I really need your support to go forward please.
-
All of the cameras are calibrated coming out of the factory. If you need to recalibrate the cameras the instructions to do so can be found here. If you're placing the voxl-cam in a new location on a body you'll just need to change all of the something->body relations in that extrinsics file (the rest will be the same because the other relations are all within the voxl-cam which you're moving as a unit). Do this by picking a location on your platform to serve as the body center and measure the translation and rotation between the voxl-cam and your vehicle.
-
@Alex-Gardner so you confirm that as i just changed the tracking cam position (see upper post):
-
as intrinsic not mention body relation with tracking cam , I dont need to change any other intrinsic than imu1 and imu2 relation to tracking cam, and thats what i do ?
-
you confirm that body intrinsic position on the voxl cam is the center of the voxl cam?
-
-
@sergio said in ARDUPILOT VOXL CAM ORIENTATION ISSUE ?:
@Alex-Gardner so you confirm that as i just changed the tracking cam position (see upper post):
-
as intrinsic not mention body relation with tracking cam , I dont need to change any other intrinsic than imu1 and imu2 relation to tracking cam, and thats what i do ?
-
you confirm that body intrinsic position on the voxl cam is the center of the voxl cam?
If not can you show where is the virtual position of body related to voxlcam?
Also what is ground position in intrinsics?
-
-
If you pointed the VOXL CAM, as originally built, upside down you would not need to change the extrinsics. The extrinsics are between the internal image sensors and IMU.
-
Hi Sergio. I'm handle a number of rover configurations here for the team. Reading thru the posts, let's take a step back to confirm your setup.
a. you are using the cube to output IMU data into voxl-cam.
b. you are using voxl-cam to output odom data [back] to the cube for (e.g. external vision localization)
c. the camera has been moved from the stock position of -45deg from horizon w.r.t. voxl-cam body to 0deg from horizon w.r.t. voxl cam body.
d. the cube is mounted w/IMU in standard orientation (0 deg to horizon/forward, aka imu RPY is 0,0,0)
e. you are not using a modalai flight core (option for voxl-cam purchase)First of make sure your PX4 SENS_BOARD_ROT (or AHRS_ORIENTATION if Ardupilot) is set for a cube setup (I recall should be "No rotation" as well as from your photo). Please reply if that is all correct. If so, then we can move to the next step where I can show you how confirm vio's pose estimation (after that then we'll look at position accuracy).