Implementing PX4 avoidance in mission mode using the voxl and QGC
-
There is not a way for libvoxl_io to work inside of the Docker. It seems you have succesfully separated VIO from voxl-vision-px4, but you'll still need to use the MAVLink routing inside of voxl-vision-px4 which accepts MAVLink over UDP. Here's a diagram below to try and draw it out. You won't be able to use the ROS serial node directly in the docker. You'll need to pass the MAVLink over UDP, or run the ROS serial node in the Yocto layer and have it use libvoxl_io.

FWIW, the MPA architecture with the voxl-mpa-qvio-server will help separate VIO from vox-vision-px4, but that's still a month away from being stable.
-
Thank you for your help, the UDP connection seems to be working for the most part! The connection is initiated and the ROS connections seem to be connected but it seems like the pointcloud isn't being updated fast enough. I checked the pointcloud topic made by the snap_dfs manager and that was being updated at around 2Hz at most and the avoidance algorithm requires the pointcloud to updated at least 10Hz. I also opened up the pointcloud in rviz and saw that the pointcloud was updating at that rate. Is this normal behavior or is something else going on here? I apologize that I keep encountering roadblocks but I do think I am close to getting this!
-
Check out the bottom of this readme where it recommends different parameters to increase frame rate. https://github.com/ATLFlight/dfs-ros-example
Basically, in any computer vision task it's a tradeoff of frame rate and resolution
-
And FWIW, you don't need high resolution for obstacle avoidance. Just need to see things not to run in to!
-
@scottesicdrone curious to see if you were you able to get things working?
-
@Chad-Sweet
I had a look the link you shared: snap_vio
But I think it is not working correctly with the voxl module I have.
Currently, I am runningROS noeticon the voxl module, and try to run the VIO with downward camer.
By using snap_camera_ros (I edited it a little bit to use the downward camera), I can see the downward camera is correctly set up forsnap_vio. Also, I can seesnap_imuis working correctly, so I can see the output ofimu(angular_velocityandlinear_acceleration).But I cannot see any output of
/downward/vio/odometry.Could you please help me to run
snap_viowith the voxl module?
What should I check first? -
The running file is similar with this.
<!-- camera nodelet --> <!-- VIO nodelet --> <!-- fisheye camera info spoofer --> <!-- imu nodelet --> <!-- cpa nodelet --> -
@Chad-Sweet
Update.I have output
/downward/vio/odometrywith some error messages[ INFO] [1648150781.892213161]: [VISLAM] Got uav1/imu to uav1/dfc transform; Initializing VISLAM [ INFO] [1648150781.892816862]: [VISLAM] (from tf) tbc: x: 0.2 y: 0 z: -0.025 [ INFO] [1648150781.893485304]: [VISLAM] (from tf) ombc: X: 0 Y: 2.356 Z: 0 MachineVision is licensed as community user LNX_8074 supported? 1 LNX_8096 supported? 1 LNX_IA64 supported? 1 WINDOWS supported? 0 AR ERROR: arFileOpen(): Failed to open file: /data/.ros/vislam/Configuration.SF.xml FASTCV: fcvAvailableHardware Linux mempool cur block size 307200, new block size 307200 AR ERROR: arFileOpen(): Failed to open file: /data/.ros/na Error: TF_NAN_INPUT: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of a nan value in the transform (0.000000 0.000000 0.000000) (-nan -nan -nan nan) at line 244 in ~/geometry2/tf2/src/buffer_core.cpp Error: TF_DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of an invalid quaternion in the transform (-nan -nan -nan nan) at line 257 in ~/geometry2/tf2/src/buffer_core.cpp [ERROR] [1648150782.073463584]: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of a nan value in the transform (0.000000 0.000000 0.000000) (-nan -nan -nan nan) [ERROR] [1648150782.077556213]: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of an invalid quaternion in the transform (-nan -nan -nan nan) [ERROR] [1648150782.094956631]: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of a nan value in the transform (0.000000 0.000000 0.000000) (-nan -nan -nan nan) [ERROR] [1648150782.095484499]: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of an invalid quaternion in the transform (-nan -nan -nan nan) Error: TF_NAN_INPUT: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of a nan value in the transform (0.000000 0.000000 0.000000) (-nan -nan -nan nan) at line 244 in ~/tf2/src/buffer_core.cpp Error: TF_DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id "grav" from authority "unknown_publisher" because of an invalid quaternion in the transform (-nan -nan -nan nan) at line 257 in ~/geometry2/tf2/src/buffer_core.cppand repeated error message of
[ERROR] [1648150919.088496536]: [VISLAM] ERROR CODE = 2048, Stamp: 1648150919.022946523I am wondering how urdf should be set. Should there be any rotations of IMU or camera in urdf file?
urdf file I used has some rotations in y-axis for IMU and cameras. -
@Chad-Sweet
I am using customized urdf forsnap_viowhich has different numbers (positions and orientations) of sdf_pro.urdf.Is there any urdf file for VOXL?
-
@Chad-Sweet , No matter the tf setting in the urdf file is, the ros topic outputs are shown in the followings
rostopic echo mavros/imu/data(inbase_linkframe):xis backward,yis right,zis downrostopic echo downward/imu(inimuframe):xis right,yis backward,zis down
-
@modalab Hello, can you help me to resolve this problem?