Learn practical skills, build real-world projects, and advance your career

Read telemetry data from rosbag

!pip3 install rosbag --extra-index-url https://rospypi.github.io/simple/
Looking in indexes: https://pypi.org/simple, https://rospypi.github.io/simple/ Requirement already satisfied: rosbag in /usr/local/lib/python3.7/dist-packages (1.15.11) Requirement already satisfied: gnupg in /usr/local/lib/python3.7/dist-packages (from rosbag) (2.3.1) Requirement already satisfied: genmsg in /usr/local/lib/python3.7/dist-packages (from rosbag) (0.5.12) Requirement already satisfied: pycryptodomex in /usr/local/lib/python3.7/dist-packages (from rosbag) (3.12.0) Requirement already satisfied: pycryptodome in /usr/local/lib/python3.7/dist-packages (from rosbag) (3.12.0) Requirement already satisfied: roslib in /usr/local/lib/python3.7/dist-packages (from rosbag) (1.14.7.post0) Requirement already satisfied: rospkg in /usr/local/lib/python3.7/dist-packages (from rosbag) (1.3.0) Requirement already satisfied: genpy<2000 in /usr/local/lib/python3.7/dist-packages (from rosbag) (0.6.14) Requirement already satisfied: rospy in /usr/local/lib/python3.7/dist-packages (from rosbag) (1.15.11) Requirement already satisfied: psutil>=1.2.1 in /usr/local/lib/python3.7/dist-packages (from gnupg->rosbag) (5.4.8) Requirement already satisfied: catkin in /usr/local/lib/python3.7/dist-packages (from roslib->rosbag) (0.7.18) Requirement already satisfied: distro in /usr/local/lib/python3.7/dist-packages (from rospkg->rosbag) (1.6.0) Requirement already satisfied: catkin-pkg in /usr/local/lib/python3.7/dist-packages (from rospkg->rosbag) (0.4.24) Requirement already satisfied: PyYAML in /usr/local/lib/python3.7/dist-packages (from rospkg->rosbag) (3.13) Requirement already satisfied: python-dateutil in /usr/local/lib/python3.7/dist-packages (from catkin-pkg->rospkg->rosbag) (2.8.2) Requirement already satisfied: docutils in /usr/local/lib/python3.7/dist-packages (from catkin-pkg->rospkg->rosbag) (0.17.1) Requirement already satisfied: pyparsing in /usr/local/lib/python3.7/dist-packages (from catkin-pkg->rospkg->rosbag) (3.0.6) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil->catkin-pkg->rospkg->rosbag) (1.15.0) Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from rospy->rosbag) (1.19.5) Requirement already satisfied: roscpp in /usr/local/lib/python3.7/dist-packages (from rospy->rosbag) (1.15.11) Requirement already satisfied: rosgraph-msgs in /usr/local/lib/python3.7/dist-packages (from rospy->rosbag) (1.11.3.post2) Requirement already satisfied: rosgraph in /usr/local/lib/python3.7/dist-packages (from rospy->rosbag) (1.15.11) Requirement already satisfied: std-msgs in /usr/local/lib/python3.7/dist-packages (from rospy->rosbag) (0.5.13.post0)
from google.colab import drive
drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
import rosbag
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime as dt
import matplotlib.animation as animation
from matplotlib import rc
import PIL
from PIL import Image
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.
def build_telemetry(path_to_bag):

  b_laps = rosbag.Bag(path_to_bag)
  acc_x, acc_y, acc_z, speed, steer, throttle, brake, gear, time = [], [], [], [], [], [], [], [], []

  for topic, msg, t in b_laps.read_messages(topics='/carla/ego_vehicle/vehicle_status'):
    time.append(t)
    acc_x.append(msg.acceleration.linear.x)
    acc_y.append(msg.acceleration.linear.y)
    acc_z.append(msg.acceleration.linear.z)
    speed.append(msg.velocity)
    steer.append(msg.control.steer)
    throttle.append(msg.control.throttle)
    brake.append(msg.control.brake)
    gear.append(msg.control.gear)

  acc = np.linalg.norm(np.vstack((acc_x, acc_y, acc_z)).T, axis=1)
  telemetry_dict = {'time': time, 'speed': speed, 'acceleration': acc, 'steering angle': steer, 'throttle': throttle, 'brake': brake, 'gear': gear}
  telemetry = pd.DataFrame(telemetry_dict)

  return telemetry