• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lunarlab-gatech / robotdataprocess / 16376904896

18 Jul 2025 05:43PM UTC coverage: 70.588%. First build
16376904896

push

github

web-flow
(v0.1.0) Refactor to robotdataprocess, Major Data classes with Loading, Manipulation, and Saving. (#3)

* Coverage Functionality with coveralls

* Add Coverage Status Badge

* Remove clean action from github action

* Clarify assumed ROS2 and ROS1 versions

* New Message types and support for list attributes

* Optimizations to increase speed of ros2_to_ros1 conversion

* Fixed bug in downsample where requested downsample ratio wasn't matched perfectly and had undefined behaviour

* Add instructions for running unit tests, coverage, and profiling

* Increase to version 0.0.3

* Add support for rosgraph_msgs/msg/Clock

* Speedup downsample operation

* Initial code for IMU data viewer, not tested

* Major refactor to cleanly partition command line vs. rosbag vs. data functionality

* Remove hardcoded paths from tests

* Test for from_npy() method for ImageData

* Writing various message data types from non-ROS to rosbag

* Loading and Writing data from HERCULES v1.3

* Add missing test file

* Add missing dependency on OpenCV

* Load Odometry data from csv file and save to ROSbag

* Support to write Odometry Data to a nav_msgs/msg/Path message

* Support to convert IMU and Odometry data from NED to ROS frame

* Fix bugs in test cases

* Fixes to broken NED to ROS conversion for Odometry

* Refactor: Move rosbag manipulation to Ros2BagWrapper (#5)

* Refactor: Move rosbag manipulation to Ros2BagWrapper

- Moved hertz_analysis, view_imu_data, and downsample methods from rosbag_manip.py to Ros2BagWrapper.py.
- Renamed rosbag_manip.py to command_line.py.
- Renamed rosbag_manipulation class to CmdLineInterface.
- Updated command_line.py to use the new methods in Ros2BagWrapper.py.
- Updated __main__.py to reflect the file and class rename.

* Refactor name to robotdataprocess

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>

* Stereo rectifiation and save to raw image files, Upgrade to 0.1.0 to a... (continued)

619 of 895 new or added lines in 9 files covered. (69.16%)

816 of 1156 relevant lines covered (70.59%)

0.71 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.0
/src/robotdataprocess/data_types/Data.py
1
from __future__ import annotations
1✔
2

3
from ..conversion_utils import convert_collection_into_decimal_array
1✔
4
from decimal import Decimal
1✔
5
from enum import Enum
1✔
6
import numpy as np
1✔
7
from typeguard import typechecked
1✔
8

9
class CoordinateFrame(Enum):
1✔
10
    ROS = 0 # https://www.ros.org/reps/rep-0103.html - X forward, Y left, Z up := RHS
1✔
11
    NED = 1 # https://en.wikipedia.org/wiki/Local_tangent_plane_coordinates
1✔
12
            # - X forward (north), Y right (East), Z Down := RHS
13

14
class Data:
1✔
15
    """
16
    Generic Data class that provides example methods that should be overwritten by children,
17
    and can run operations between different data types.
18
    """
19

20
    # Define data attributes for all Data classes
21
    frame_id: str
1✔
22
    timestamps: np.ndarray[Decimal]
1✔
23

24
    @typechecked
1✔
25
    def __init__(self, frame_id: str, timestamps: np.ndarray | list, ):
1✔
26
        
27
        # Copy initial values into attributes
28
        self.frame_id = frame_id
1✔
29
        self.timestamps = convert_collection_into_decimal_array(timestamps)
1✔
30

31
        # Check to ensure that all timestamps are sequential
32
        for i in range(len(self.timestamps) - 1):
1✔
33
            if self.timestamps[i] >= self.timestamps[i+1]:
1✔
34
                raise ValueError("Timestamps do not come in sequential order!")
1✔
35
            
36
    def len(self):
1✔
37
        """ Returns the number of items in this data class """
38
        return len(self.timestamps)
1✔
39
    
40
    def get_ros_msg_type():
1✔
41
        """ Will return the msgtype needed to add a connetion to a rosbag writer. """
NEW
42
        raise NotImplementedError("This method needs to be overwritten by the child Data class!")
×
43
    
44
    def get_ros_msg(i: int):
1✔
45
        """ Will return a ROS message object ready to be written into a ROS2 Humble bag. """
NEW
46
        raise NotImplementedError("This method needs to be overwritten by the child Data class!")
×
47

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc