Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPS Nav, Camera, and Overall Code Fixes From Testing Session 2 #248

Merged
merged 28 commits into from
Apr 18, 2024

Conversation

ClayJay3
Copy link
Collaborator

@ClayJay3 ClayJay3 commented Apr 18, 2024

Main Changes

  • TagDetector struct changes to make it impossible to improperly set tag corner vector pointers.
  • Added a new key to trigger a clean exit of autonomy with a core dump. (CNTL + \)
  • Updated to new version of RoveComm.
  • Added new data attributes to GPS accuracy data packet. We now have GPS fix type and a boolean flag for differential GPS.
  • Completely reworked GPS fusion ingestion for ZEDCam class. Should help with speed and no longer breaks encapsulation.
  • Added a new folder bind in the data/zed folder for storing camera calibrations so we don't have to rely on an internet connection when connecting new cameras for the first time.

GPS Fusion Changes

  • GPS Fusion is now easily toggleable in constants.
  • GPS Fusion when enabled will use the GPSCoordinate.isDifferential flag to automatically switch between fusion and realigning ZED pose while in idle state.

ZEDCam Changes

  • The ZEDSDK only supports the use of floats for storing the pose X, Y, Z of the camera. In our case we use relative positional tracking (VIO) to track our global position by setting the camera pose to our current UTM position. This is too inaccurate because UTM values can become too big to store the large integer part of the number (4200000) and also a decimal value (.345). To fix this we now handle the pose ourselves with a new ZEDCam::Pose struct. This struct stores doubles and combines the normal sl::Pose from the camera with an offset and stores everything as doubles.

Threading Changes

  • AutonomyThread.hpp now uses a condition variable to block the Start() method until the thread state becomes eRunning. This makes it so that there are no possible race conditions when Autonomy_Software is starting. Whereas before, the start behavior was undefined.

Other Changes

  • The default GPS location is now Rolla instead of 0, 0.
  • Cleaned up #includes

Known Issues

There's a fucking segfault somewhere, but I can't catch it with the debugger and I'm not even sure if it's my code.

@ClayJay3 ClayJay3 added bug Unexpected behaviors or issues that cause the software to malfunction or produce incorrect results. enhancement Requests for new features or improvements to existing features. cleanup Code refactoring or cleanup tasks to remove deprecated features, improve clarity, or ensure code qua cameras Tasks or issues specifically related to camera components, feeds, or image processing. labels Apr 18, 2024
@ClayJay3 ClayJay3 added the state-machine Issues related to the implementation, design, or modification of state machines in the system. label Apr 18, 2024
@ClayJay3 ClayJay3 added this to the URC 2024 - Sprint 4 milestone Apr 18, 2024
@ClayJay3 ClayJay3 self-assigned this Apr 18, 2024
@ClayJay3 ClayJay3 requested a review from a team as a code owner April 18, 2024 19:56
Copy link
Collaborator Author

@ClayJay3 ClayJay3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self Reviewed

@ClayJay3 ClayJay3 merged commit 4525936 into development Apr 18, 2024
7 checks passed
@ClayJay3 ClayJay3 deleted the testing/session-2 branch April 18, 2024 20:18
MRDT-Software pushed a commit that referenced this pull request May 14, 2024
GPS Nav, Camera, and Overall Code Fixes From Testing Session 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Unexpected behaviors or issues that cause the software to malfunction or produce incorrect results. cameras Tasks or issues specifically related to camera components, feeds, or image processing. cleanup Code refactoring or cleanup tasks to remove deprecated features, improve clarity, or ensure code qua enhancement Requests for new features or improvements to existing features. state-machine Issues related to the implementation, design, or modification of state machines in the system.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants