Coder Social home page Coder Social logo

mil_common's People

Contributors

brooksturtle avatar chanyang avatar dssoto avatar fnivek avatar forrestv avatar grymestone avatar jaxnb avatar jnez71 avatar joshsandersufgit avatar jpanikulam avatar kev-the-dev avatar lucasba avatar marcgabe15 avatar matthewbot avatar mattlangford avatar pemami4911 avatar rleyva avatar rustybamboo avatar sentree avatar tessbianchi avatar thedpws avatar uf-sub8 avatar zachgoins avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mil_common's Issues

Passive Sonar Refactors

Refactors for the passive sonar system. Some of these will be pushed upstream to Sylphase's passive sonar system:

  • Move some of the processing from pre-ROS to post-ROS, so more raw data can be collected in bag files
  • Fix bugs related to interrupts. Sigint does not correctly terminate the upstream program
  • Implement visualizations in more ROS-ified ways (RQT, Image published, etc)
  • Make constants configurable, tuneable
  • Collect bags with raw data to experiment with improving the system

File migration list (sweet, sweet, great, great merge)

Please list all files you want migrated from sub8 or navigator to the software-common repo. List the full path of where the file is from, and where it should go in the new repo. If the file is going to be a merge of sub8 and navigator files, say so.

For now we are just worrying about getting the files in the repo. We will go through and refactor later, but feel free to leave notes on what needs to be done.

Passive SONAR instruction

The Wiki is missing a write up on how to use the passive SONAR. Readme of passive SONAR has legacy command of: "rosrun mil_passive_sonar sonar.launch."

Rebuild Docker Image

New dependencies have been added in the install script, so the Docker image has to rebuilt to provide accurate build info

MISSIONS: GUI improvements

Metaticket for various improvements to mission gui:

  • improve timing of feedback
  • sort missions alphabetically
  • save/load chained mission config

PCODAR: volume/simple geometry classification

  • Add option to PCODAR to classify objects based on their volume, height, or other simple features
  • Ideally, the classification system would be modular (an interface different methods can fufil)

Write unified computer vision interface

Write tooling/library/messages for nodes detecting objects in the 2D frame of a camera, or 3D poses for systems using PnP / stereo.

This system will be similar to the vision proxies system on NaviGator.

Ideas:

  • A single message shared by vision nodes for reporting what was seen, frame, confidence, additional attributes, etc
  • A base python "server" class for subscribing to a camera, finding objects, and reporting them via this message
  • A python "client" class for missions / visualization tools which connect to vision servers and keeps track of objects / can wait until something is seen. Should provide a TxRos implementation for use with mil_missions
  • A gazebo plugin to report ground truth objects seen in camera
  • An implementation for the "client" which uses tensorflow

Write tool to recover camera pose using LIDAR

Originally proposed by Tess:

On NaviGator, we have a pretty accurate transform from our GPS/INS to the LIDAR because it is rigidly mounted with simple geometry (the CAD model tells us). However, the camera transforms were measured and likely have significant error. It is mathematically possible to recover the pose of the camera in the LIDAR frame by identifying the same features in a LIDAR pointcloud and an image frame. This would improve our transforms.

PCODAR: errode old objects and points

  • If objects are currently within field of view, but have not been seen (new points associated) recently (configurable time), remove the object. This is useful, for example, when a kayak moves by the boat and then leaves.
  • If an object is currently seen (in view and new points associated), remove older points associated with that object. This will allow the object to "move" over time if it drifts without "smearing"

Blueview driver probs

Just some reminders for me:

  • fails when using device, not file (because checks ping count)
  • param min range profile threshold is not used
  • DNS doesn't work maybe?

GNC: write common library for 3D thruster mapping

Write a generic interface for thruster mapping in 3D (body wrench to individual thrust efforts). Some ideal features

  • Option to parse URDF file to find thrusters (joints identified for a prefix THRUSTER_)
  • Inheritance based for other minimization functions (minimize energy, faster processing, etc)
  • Function to disable/enable on the fly (when thrusters are broken, etc)

ONLINE BAGGER: integrate with the bag utility

To make the online bagger more useful on test days, it should integrate with the bag command we made in two ways:

  1. Online bagger should read the same environment variables the bag utility does to decide which topics to buffer. Perhaps instead of adding all of the bagging topics, it would add all the topics in a certain reserved variable, like bag_online, so the bag utility configuration can specify which to bag ex: bag_online="$bag_frontcam $bag_gnc"
  2. Add an option to the online bagger service to dump a list of topics (space separated). This will allow the bag utility to add a new flag for dumping the past n seconds with the specified topics.

TASKS: better feedback on task internal error

Had a weird issue at navigator test day where a task had a dictionary error, and the task server simply responded with aborted and the key as the error, confusing me. It should return a more descriptive error, ideally with a stacktrace

Make online bagger an action server (hear me out)

I think it would be more appropriate for the triggering of bag writes from online bagger to be through the ROS action API than the ROS service API.

Why?

  • writing large (many gigabyte) bags to disk can take several seconds, which will cause clients (such as alarm callbacks, missions, etc) to freeze for this time
  • actions allow a feedback, which will notify the user from the client side which topics are buffered, how many messages, etc instead of having to look through online bagger logs
  • actions have built in preempt functionality, so new bag actions can be canceled or superseed current ones
  • would make future functionality, like storing new messages even as a bug takes place easier to implement

Integrate Sylphase Sonar

Add software into mil_common to interface with the sylphase passive sonar board and perform higher level signal processing to obtain a heading to a ping or position estimation.

Some notes:

Create TO-DO list

We should create a list of things to add / migrate to software-common

ROBOTEQ: change PWM frequency

Commit a new .mbs and .hex file (with higher version number) to our fork of robot_eq driver, which sets the PWM frequency optimally for pinger

Post-Integration Documentation and Fixes

A few things that need to be done post-great integration:

  • Merge SONAR OS (Sujugator must be updated to use it too)
  • Generic-ify perception/mil_vision/object_classification/lidar_to_image.py (currently uses navigator specific things)
  • Remove sub8 dependency from perception/mil_vision/ros_tools/easy_thresh.py (uses sub8_vision_tools.visual_threshold_tools which is not in mil_common)
  • Document everything (especially mil_vision_lib), get rid of redundant / repeated code in libraries

Migrate to tf2_ros

All of the common tools should use tf2_ros, not tf.

The mission and perception code should also be migrated to tf2_ros.

@uf-mil/developers any takers?

PCODAR: ogrid is misalligned with object points

The occupancy grid produced from known objects seems to be consistently off in position from the lidar points it should be filled from. This is likely an off-by-one error with filling the occupancy grid matrix.

PCODAR: improve filtering

Spurious (non-existing) objects are added from waves on NaviGator. #129 will help, but try new filtering methods too.

Here are some ideas:

  • Use radius fitler instead of statistical outlier. I'm worried that the persistent pointcloud will throw off the standard deviation (identical points drive it way down)
  • Add z pass through filter (will be a problem for the smallest buoys)

Fix PC Colorizer broken in opencv-3.3.1

We had to temporarily disable building a couple programs in mil_vision in #95 because of a change in some OpenCV data type. There is probably an equivalent. So uncomment the lines commented in this PR, see what the build errors are, and fix it.

Develop LabelMe ros interface / tools

As discussed in the last two meetings, we are developing a branch of LabelMe to label logged data with object polygons for testing and training. We discussed producing bag files from these labels, containing images and the labeling data. We also discussed having a python class which will play these special bags and, provided with a verification predicate, assess the efficacy of a vision algorithm. I will be PRing the message files we agreed for storing this data.

@tessbianchi can you write the tooling needed to produce these bag files from the labeling data? Note: the bag should contain all the images of the original bag, not just the labeled images.

Fix segfault crash in easy_thresh.py

There's a really nice python tool called easy_thresh we ported from Subjugator. It seems to be broken on ros kinetic / 16.04. It still runs fine on my 14.04/Indigo system. After selecting a region to threshold, the 3D plot of the colors in this region opens briefly, then crashes, with a segmentation fault being reported in the terminal that opened it and no other errors. I tried my hand at fixing it, but it uses several libraries I have no experience with. Does anyone know who originally wrote this?

Add Point of Interest Node

Add a node to replace the "fake objects" from navigator_lidar_oa. This node will allow humans/programs to place named markers in the global frame marking points of interest. This allows us to program in "priors" on where various challenges are, so the autonomy can explore these regions.

Some features to include:

  • Service to spawn POI and set its position
  • Service/Topic to get POI
  • Rviz interactive markers for moving POI
  • Save POIs to a file and load them back at a future time

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.