rock-slam / slam-orogen-uwv_kalman_filters

A collection of filters used in the underwater domain
3 stars 5 forks source link

uwv_kalman_filters::RotatedIMU #8

Open bkocev opened 3 years ago

bkocev commented 3 years ago

Hi everyone,

where is uwv_kalman_filters::RotatedIMU defined? I cannot locate an orogen repository with similar name or so.

Thanks, Bojan.

saarnold commented 3 years ago

Hi Bojan, this was a task to simulate a rotated IMU. You can safely remove this part from your test scripts. But if you like I can also find and push this task to a branch.

bkocev commented 3 years ago

Hi Sascha,

thank you very much for your response. Why did you need to rotate the IMU? In case we decide to push this task to the repo, would it be a big problem to actually push it to the master branch, because I would like to use this branch?

Thanks, Bojan.

bkocev commented 3 years ago

To speed things up, I would recommend that you push that task to the master branch. That should be fine. This would be the simplest solution for me. Then, I can decide whether to remove or not. :)

bkocev commented 3 years ago

One more argument why I think it would be better to push that task are the following two lines:

rotate_imu.connect_to orientation_estimator_min.imu_sensor_samples rotate_imu.connect_to pose_estimation.imu_sensor_samples

i.e., I think you performed the evaluation on the rotated IMU samples. Therefore, it would be great if you could please push the task to the master repo. Thanks :)

bkocev commented 3 years ago

While waiting for you to include the IMU rotation stuff, I temporarily disabled it and now I am getting this problem:

libGL error: MESA-LOADER: failed to retrieve device information libGL error: Version 4 or later of flush extension not found libGL error: failed to load driver: i915 libGL error: failed to open drm device: No such file or directory libGL error: failed to load driver: i965 orocos.rb[WARN]: TaskContextProxy /pose_estimator is already initialized with different options. orocos.rb[WARN]: TaskContextProxy /pose_estimator_min is already initialized with different options. orocos.rb[WARN]: TaskContextProxy /pose_estimator_max is already initialized with different options. orocos.rb[WARN]: killing running task contexts and deployments because of unhandled exception orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:128:in block in setup_task': frame camera, selected on /pose_estimator for camera, does not exist orocos.rb[WARN]: /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:ineach' orocos.rb[WARN]: /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:in each_needed_transformation' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:120:insetup_task' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:61:in block in setup' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:ineach' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:in setup' orocos.rb[WARN]: /opt/rock_workspace/navigation/adcp_pose_estimation_scripts/common_startup.rb:192:inblock in replay_pose_estimator' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:848:in block in run' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:1345:inguard' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:847:in run' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:136:inrun' orocos.rb[WARN]: /opt/rock_workspace/navigation/adcp_pose_estimation_scripts/common_startup.rb:59:in replay_pose_estimator' orocos.rb[WARN]: navigation/adcp_pose_estimation_scripts/random_init_target_pose.rb:33:in

' orocos.rb[WARN]: sending SIGINT to pose_estimator orocos.rb[WARN]: sending SIGINT to pose_estimator_min orocos.rb[WARN]: sending SIGINT to pose_estimator_max orocos.rb[WARN]: sending SIGINT to dvl_evaluation orocos.rb[WARN]: sending SIGINT to force2effort orocos.rb[WARN]: sending SIGINT to speed2force orocos.rb[WARN]: sending SIGINT to orientation_estimator orocos.rb[WARN]: sending SIGINT to orientation_estimator_min

<Thread:0x0000557900a3e2a0@/opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:563 aborting> terminated with exception (report_on_exception is true):

Traceback (most recent call last): 3: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:604:in block in spawn_thread' 2: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:inensure in block in spawn_thread' 1: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:in synchronize' /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:601:inblock (2 levels) in spawn_thread': undefined method -' for nil:NilClass (NoMethodError) Traceback (most recent call last): 13: from navigation/adcp_pose_estimation_scripts/random_init_target_pose.rb:33:in

' 12: from /opt/rock_workspace/navigation/adcp_pose_estimation_scripts/common_startup.rb:59:in replay_pose_estimator' 11: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:136:inrun' 10: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:847:in run' 9: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:1345:inguard' 8: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:848:in block in run' 7: from /opt/rock_workspace/navigation/adcp_pose_estimation_scripts/common_startup.rb:192:inblock in replay_pose_estimator' 6: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:in setup' 5: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:ineach' 4: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:61:in block in setup' 3: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:120:insetup_task' 2: from /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:in each_needed_transformation' 1: from /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:ineach' /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:128:in `block in setup_task': frame camera, selected on /pose_estimator for camera, does not exist (Transformer::RuntimeSetup::UnknownFrame)

saarnold commented 3 years ago

The adcp_pose_estimation_scripts package is expected to be in slam/adcp_pose_estimation_scripts. This is why it doesn't find the right configurations and transformations.

bkocev commented 3 years ago

I just did:

mv navigation/adcp_pose_estimation_scripts slam/

and reverted my changes in adcp_pose_estimation_scripts/random_init_target_pose.rb and adcp_pose_estimation_scripts/common_startup.rb, i.e., replaced navigation/adcp_pose_estimation_scripts with slam/adcp_pose_estimation_scripts. I had already adapted the filepaths, but nevertheless I changed it to what you expect it to be. However, I still get the following error after running

ruby slam/adcp_pose_estimation_scripts/random_init_target_pose.rb

libGL error: MESA-LOADER: failed to retrieve device information libGL error: Version 4 or later of flush extension not found libGL error: failed to load driver: i915 libGL error: failed to open drm device: No such file or directory libGL error: failed to load driver: i965 orocos.rb[WARN]: TaskContextProxy /pose_estimator is already initialized with different options. orocos.rb[WARN]: TaskContextProxy /pose_estimator_min is already initialized with different options. orocos.rb[WARN]: TaskContextProxy /pose_estimator_max is already initialized with different options. orocos.rb[WARN]: killing running task contexts and deployments because of unhandled exception orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:128:in block in setup_task': frame camera, selected on /pose_estimator for camera, does not exist orocos.rb[WARN]: /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:ineach' orocos.rb[WARN]: /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:in each_needed_transformation' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:120:insetup_task' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:61:in block in setup' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:ineach' orocos.rb[WARN]: /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:in setup' orocos.rb[WARN]: /opt/rock_workspace/slam/adcp_pose_estimation_scripts/common_startup.rb:192:inblock in replay_pose_estimator' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:848:in block in run' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:1345:inguard' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:847:in run' orocos.rb[WARN]: /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:136:inrun' orocos.rb[WARN]: /opt/rock_workspace/slam/adcp_pose_estimation_scripts/common_startup.rb:59:in replay_pose_estimator' orocos.rb[WARN]: slam/adcp_pose_estimation_scripts/random_init_target_pose.rb:33:in

' orocos.rb[WARN]: sending SIGINT to pose_estimator orocos.rb[WARN]: sending SIGINT to pose_estimator_min orocos.rb[WARN]: sending SIGINT to pose_estimator_max orocos.rb[WARN]: sending SIGINT to dvl_evaluation orocos.rb[WARN]: sending SIGINT to force2effort orocos.rb[WARN]: sending SIGINT to speed2force orocos.rb[WARN]: sending SIGINT to orientation_estimator orocos.rb[WARN]: sending SIGINT to orientation_estimator_min

<Thread:0x000055ba6037b430@/opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:563 aborting> terminated with exception (report_on_exception is true):

Traceback (most recent call last): 3: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:604:in block in spawn_thread' 2: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:inensure in block in spawn_thread' 1: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:in synchronize' /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:601:inblock (2 levels) in spawn_thread': undefined method `-' for nil:NilClass (NoMethodError)

<Thread:0x00007f6cb0186478@/opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:563 aborting> terminated with exception (report_on_exception is true):

Traceback (most recent call last): 3: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:604:in block in spawn_thread' 2: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:inensure in block in spawn_thread' 1: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:in synchronize' /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:601:inblock (2 levels) in spawn_thread': undefined method `-' for nil:NilClass (NoMethodError)

<Thread:0x000055ba5f9cdf78@/opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:563 aborting> terminated with exception (report_on_exception is true):

Traceback (most recent call last): 3: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:604:in block in spawn_thread' 2: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:inensure in block in spawn_thread' 1: from /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:594:in synchronize' /opt/rock_workspace/tools/utilrb/lib/utilrb/thread_pool.rb:601:inblock (2 levels) in spawn_thread': undefined method -' for nil:NilClass (NoMethodError) Traceback (most recent call last): 13: from slam/adcp_pose_estimation_scripts/random_init_target_pose.rb:33:in

' 12: from /opt/rock_workspace/slam/adcp_pose_estimation_scripts/common_startup.rb:59:in replay_pose_estimator' 11: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:136:inrun' 10: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:847:in run' 9: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:1345:inguard' 8: from /opt/rock_workspace/tools/orocos.rb/lib/orocos/process.rb:848:in block in run' 7: from /opt/rock_workspace/slam/adcp_pose_estimation_scripts/common_startup.rb:192:inblock in replay_pose_estimator' 6: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:in setup' 5: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:60:ineach' 4: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:61:in block in setup' 3: from /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:120:insetup_task' 2: from /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:in each_needed_transformation' 1: from /opt/rock_workspace/install/share/orogen/plugins/transformer_plugin.rb:490:ineach' /opt/rock_workspace/install/lib/ruby/2.5.0/transformer/runtime.rb:128:in `block in setup_task': frame camera, selected on /pose_estimator for camera, does not exist (Transformer::RuntimeSetup::UnknownFrame)

bkocev commented 3 years ago

I think the problem is that you defined apriltag-related camera frames that are not part of the dataset and now they are missing upon loading the configuration. I tried adding

camera_frame: camera

in the default filter_config in slam/adcp_pose_estimation_scripts/config/uwv_kalman_filters::PoseEstimator.yml

but that did not help.

bkocev commented 3 years ago

I removed all the apriltag/camera related stuff. After that, I was able to run

ruby slam/adcp_pose_estimation_scripts/random_init_target_pose.rb

Three (Qt) windows pop up with titles:

  1. random_init_target_pose.rb
  2. LogControl
  3. TaskInspector

image image image

However, when I try to play the log by pressing the green button in LogControl, I get the following error message:

image

saarnold commented 3 years ago

Yes you are right, there have been some changes to the task API that haven't been updated in the evaluation scripts. I just updated it, let me know if it solves your problems.

bkocev commented 3 years ago

Hi Sascha,

        log_ports['depth_samples'].connect_to pose_estimation.pressure_sensor_samples, :type => :buffer, :size => 1000
        log_ports['depth_samples'].connect_to pose_estimation.altitude_samples, :type => :buffer, :size => 1000

The above change fixed the above "Corrupted logfile" error. Then after incorporating all of your changes into the forked repo local checkout in the rock_workspace of the rock-ros-bridge, I think I was able to run your scripts successfully :). These are some screenshots:

image image image

Visual Studio Code terminal output:

image

Note that I have not deleted uwv_kalman_filters::RotatedIMU.yml, but I think it is safely ignored.

Does the above look like a good sign? :)

Thank you very much for the efforts and overall support. :)

P.S. Now, I need to figure out how to update the forked version of your repo, because I had to fork it in our Mare-IT project because not all members have access you repo. I think in order to configure a pull from a mirror repo, I need a premium gitlab account. I check out what can be done.

Best, Bojan.

saarnold commented 3 years ago

Yes that looks good :+1:

P.S. Now, I need to figure out how to update the forked version of your repo, because I had to fork it in our Mare-IT project because not all members have access you repo. I think in order to configure a pull from a mirror repo, I need a premium gitlab account. I check out what can be done.

You can have multiple remote repositories. That would be the easiest way of working with forks. See git remote add [remote_name] [git_url]

bkocev commented 3 years ago

I will then try adding your repo as a second repo. :)

Btw, is this a meaningful/expected output from "ruby slam/adcp_pose_estimation_scripts/random_init_target_pose.rb" :

image

?