Releases: Tinker-Twins/F1TENTH-Mocap-Data-Recording-Pipeline
v0.3.2
Summary
- Added ground plane and asset (vehicle) setup instructions
- Added OptiTrack Mo-Cap System Setup, Calibration and ROS Integration Tutorial Video
v0.3.1
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
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/ssteering
Steering angle in radvelocity_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 vehiclesteer
Command refers to steering input to the vehicleDRIVE_LIMIT
Refers to maximum limit on throttle/brake/reverse input to the vehicleSTEER_LIMIT
Refers to maximum limit on steering input to the vehicleDRIVE_STEP_SIZE
Refers to variation in throttle/brake/reverse input to the vehicle upon one press of a keySTEER_STEP_SIZE
Refers to variation in steering input to the vehicle upon one press of a keyDRIVE_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 filerosbag_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
ornoisy
)velocity:
velocity command (decimal point is replaced by underscore symbol)steering:
steering command (decimal point is replaced by underscore symbol)ext:
file extension (bag
ormat
)
Note: All quantities are reported in SI units unless mentioned otherwise.
v0.2.0
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/sang_vel
Angular velocity in rad/slin_noise
Standard deviation of Gaussian noise in linear velocityang_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 vehiclesteer
Command refers to steering input to the vehicleDRIVE_LIMIT
Refers to maximum limit on throttle/brake/reverse input to the vehicleSTEER_LIMIT
Refers to maximum limit on steering input to the vehicleDRIVE_STEP_SIZE
Refers to variation in throttle/brake/reverse input to the vehicle upon one press of a keySTEER_STEP_SIZE
Refers to variation in steering input to the vehicle upon one press of a keyDRIVE_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 filerosbag_name
Name of the recorded bag file
v0.1.0
Initial release.