Skip to content

Releases: Tinker-Twins/F1TENTH-Mocap-Data-Recording-Pipeline

v0.3.2

15 Oct 02:20
8d56e4d
Compare
Choose a tag to compare

Summary

v0.3.1

31 Mar 19:28
Compare
Choose a tag to compare

Summary

  • Update repository structure
  • Renamed directories with clearer names
  • Added spline-smoothed uniformly (up and then down) sampled data separated into states and controls for all runs/manuevers

v0.3.0

03 Feb 06:34
00e5d67
Compare
Choose a tag to compare

Summary

  • Calibrated vehicle motion
  • Added vehicle parameters
  • Updated open-loop vehicle control
  • Added calibrated vehicle data
  • Added setup and usage instructions

Details

Calibrated and updated VESC parameters for drive motor and steering servo to comply with real-world metric units for vehicle motion in terms of linear velocity and steering angle (benchmarked against measuring tape as well as OptiTrack Mocap system). Following are the updated parameters:

Drive motor erpm (electrical rpm) = speed_to_erpm_gain * speed (meters / second) + speed_to_erpm_offset

speed_to_erpm_gain: 7300
speed_to_erpm_offset: 250

Steer servo value (0 to 1) = steering_angle_to_servo_gain * steering angle (radians) + steering_angle_to_servo_offset

steering_angle_to_servo_gain: -0.6
steering_angle_to_servo_offset: 0.435

Updated autodrive package to facilitate open-loop vehicle control with/without Gaussian noise (sampled from normal distribution).

Modified open loop controller script in autodrive package (and corresponding launch file in racecar package of f1tenth) to support skid-pad, fishhook & slalom tests while accepting command line arguments for:

  • velocity Linear velocity in m/s
  • steering Steering angle in rad
  • velocity_noise Standard deviation of Gaussian noise in linear velocity (usually 0.1)
  • steering_noise Standard deviation of Gaussian noise in angular velocity (usually 0.1)

Updated teleop.py script from autodrive package with limits & step sizes for vehicle actuation.

  • drive Command referes to throttle/brake/reverse input to the vehicle
  • steer Command refers to steering input to the vehicle
  • DRIVE_LIMIT Refers to maximum limit on throttle/brake/reverse input to the vehicle
  • STEER_LIMIT Refers to maximum limit on steering input to the vehicle
  • DRIVE_STEP_SIZE Refers to variation in throttle/brake/reverse input to the vehicle upon one press of a key
  • STEER_STEP_SIZE Refers to variation in steering input to the vehicle upon one press of a key
  • DRIVE_LIMIT = 2.5 (or 1.5 for slow, easy - more "controllable" experience - represented in m/s)
  • STEER_LIMIT = 0.52 (0.52 rad is physical steering limit of vehicle, reduce to constrain the vehicle)
  • DRIVE_STEP_SIZE = 0.5 (increase/decrease to get coarser/finer throttle/brake/reverse variation)
  • STEER_STEP_SIZE = 0.52 (or 0.26 for multi-step steering variation, reduce for finer control resolution)

Added topic throttling functionality (through mocap_data_recording.launch file option) for synchronously recording vehicle states (via motion-capture system) and control inputs (via open/closed loop control or teleoperation) while accepting command line arguments for:

  • rosbag_dir Path to the directory to save the recorded bag file
  • rosbag_name Name of the recorded bag file

Multiple experiments were conducted to calibrate the vehicle and it was verified with a multitude of runs using the OptiTrack motion capture system as ground truth benchmark. Datasets were collected for open-loop vehicle control (skidpad, fishhook and slalom maneuvers) as well as random teleoperation sequences using the calibrated vehicle. It is to be noted that the control inputs applied to the vehicle included linear velocity (m/s) and steering angle (rad), which is a common practice followed across various vehicle dynamics experiments for Ackermann-steered vehicles.

Datasets were collected by throttling the topics at 60 Hz (for open-loop control) and 10 Hz (for teleoperation) frequency to ensure synchronized recording of state-input pairs. The coordinate frames of “world” and “vehicle” were aligned (for initial configuration of X=0, Y=0, ψ=0) as shown above (R=X, G=Y, B=Z). This way, skidpad test starts with ψ ≈ 0°, while slalom and fishhook tests start with ψ ≈ 180°.

The datasets were collected in 2 batches:

  • Clean: Open loop control inputs applied to vehicle directly
  • Noisy: Open loop control inputs applied to vehicle with added Gaussian noise sampled at each time instant (µ = 0, σv = 0.1, σδ = 0.1)

File naming convention used is quite straightforward, but here are the details just-in-case:

<batch>_v_<velocity>_d_<steering>.<ext>

  • batch: type of dataset (clean or noisy)
  • velocity: velocity command (decimal point is replaced by underscore symbol)
  • steering: steering command (decimal point is replaced by underscore symbol)
  • ext: file extension (bag or mat)

Note: All quantities are reported in SI units unless mentioned otherwise.

v0.2.0

09 Jan 03:47
Compare
Choose a tag to compare

Updated autodrive package to facilitate open-loop vehicle control with/without Gaussian noise (sampled from normal distribution).

Modified open loop controller script in autodrive package (and corresponding launch file in racecar package of f1tenth) to support skid-pad, fishhook & slalom tests while accepting command line arguments for:

  • lin_vel Linear velocity in m/s
  • ang_vel Angular velocity in rad/s
  • lin_noise Standard deviation of Gaussian noise in linear velocity
  • ang_noise Standard deviation of Gaussian noise in angular velocity

Updated teleop.py script from autodrive package with limits & step sizes for vehicle actuation.

  • drive Command referes to throttle/brake/reverse input to the vehicle
  • steer Command refers to steering input to the vehicle
  • DRIVE_LIMIT Refers to maximum limit on throttle/brake/reverse input to the vehicle
  • STEER_LIMIT Refers to maximum limit on steering input to the vehicle
  • DRIVE_STEP_SIZE Refers to variation in throttle/brake/reverse input to the vehicle upon one press of a key
  • STEER_STEP_SIZE Refers to variation in steering input to the vehicle upon one press of a key
  • DRIVE_LIMIT = 5 (or 3 for slow, easy - more "controllable" experience)
  • STEER_LIMIT = 0.52 (0.52 rad is physical steering limit of vehicle, reduce to constrain the vehicle)
  • DRIVE_STEP_SIZE = 1 (increase/decrease to get coarser/finer throttle/brake/reverse variation)
  • STEER_STEP_SIZE = 0.52 (or 0.13 for multi-step steering variation)

Added topic throttling functionality (through mocap_data_recording.launch file option) for synchronously recording vehicle states (via motion-capture system) and control inputs (via open/closed loop control or teleoperation) while accepting command line arguments for:

  • rosbag_dir Path to the directory to save the recorded bag file
  • rosbag_name Name of the recorded bag file

v0.1.0

02 Dec 17:58
c02bee6
Compare
Choose a tag to compare

Initial release.