from Go2Py.robot.interface import GO2Real import time import numpy as np from rosbags.rosbag2 import Writer from rosbags.typesys import Stores, get_typestore from rosbags.typesys.stores.ros2_foxy import ( builtin_interfaces__msg__Time as Time, sensor_msgs__msg__Imu as Imu, std_msgs__msg__Header as Header, geometry_msgs__msg__Vector3 as Vector3, geometry_msgs__msg__Quaternion as Quaternion, ) def main(): robot = GO2Real(mode='lowlevel') time.sleep(1) soc = robot.getBatteryState() imu = robot.getIMU() accel = imu['accel'] gyro = imu['gyro'] """Iterate over IMAGES and save to output bag.""" typestore = get_typestore(Stores.ROS2_FOXY) with Writer('imu_noise_identification_dataset') as writer: conn = writer.add_connection('/go2/imu', Imu.__msgtype__) while(soc>10): soc = robot.getBatteryState() imu = robot.getIMU() a = imu['accel'] g = imu['gyro'] accel = Vector3(a[0], a[1], a[2]) gyro = Vector3(g[0], g[1], g[2]) q = Quaternion(0,0,0,1) timestamp = time.time()*10**9 msg = Imu( Header( stamp=Time(sec=int(timestamp // 10**9), nanosec=int(timestamp % 10**9)), frame_id='base_link'), linear_acceleration=accel, angular_velocity= gyro, orientation=q, orientation_covariance=np.zeros(9), linear_acceleration_covariance=np.zeros(9), angular_velocity_covariance=np.zeros(9) ) writer.write(conn, timestamp, typestore.serialize_cdr(msg, msg.__msgtype__)) time.sleep(0.02) print(soc) robot.close() exit() if __name__=='__main__': main()