vla-sft-code-dreamtacvla / scripts /function_util.py
poet70's picture
Upload folder using huggingface_hub (part 2)
01f380e verified
Raw
History Blame Contribute Delete
5.48 kB
import os.path, stat
import datetime
import time
import cv2
import numpy as np
import serial.tools.list_ports as serial_stl
import subprocess
from pathlib import Path
import configparser
def time_print(st):
current_time = time.strftime("%Y-%m-%d %H-%M-%S:", time.localtime())
print(str(current_time) +
str(datetime.datetime.now().strftime("%f")[:-3]) +
str(st))
def free_limit_and_set_one(file_name):
ini_file_path = str(Path(__file__).parent) + "/dobot_config/dobot_settings.ini"
ini_file = configparser.ConfigParser()
ini_file.read(ini_file_path)
computer_passwd = ini_file.get("COMPUTER", "passcode")
comd = f"echo {computer_passwd} | sudo -S chmod 777 {file_name}"
subprocess.run(comd, shell=True)
with open(file_name, "w+") as f:
f.write(str(1))
# scan_port
def scan_port():
ini_file_path = str(Path(__file__).parent) + "/dobot_config/dobot_settings.ini"
ini_file = configparser.ConfigParser()
ini_file.read(ini_file_path)
com_list = []
ports = list(serial_stl.comports())
for i in ports:
if "USB" in i.device:
com_list.append(i.device)
if "ACM" in i.device:
com_list.append(i.device)
for _port in com_list:
computer_passwd = ini_file.get("COMPUTER", "passcode")
comd = f"echo {computer_passwd} | sudo -S chmod 777 {_port}"
subprocess.run(comd, shell=True)
# print(com_list)
return com_list
# make new dir
def mk_dir(path_dir):
if not os.path.isdir(path_dir):
os.makedirs(path_dir, exist_ok=True)
return True
else:
return False
# log maker
def log_write(file_name, data):
log_path = os.path.dirname(__file__)+"/logs/"
mk_dir(log_path)
current_time = time.strftime("%Y-%m-%d %H-%M-%S:", time.localtime())
with open(log_path+"log.txt", 'a') as f:
f.writelines(str(current_time)+str(datetime.datetime.now().strftime("%f")[:-3])
+ " [" + file_name.split("/")[-1] + "] "
+ str(data))
f.writelines("\n")
f.close()
def mismatch_data_write(ppp, data):
str_path = str(ppp)+"/pose.txt"
if not os.path.exists(str_path):
with open(str_path, 'w') as f:
print("ok")
with open(str_path, 'a') as f:
f.writelines(str(data[6])+str(data[13]))
f.writelines("\n")
f.close()
def time_stamp():
s1 = time.strftime("%H %M %S", time.localtime()).split(" ")
s2 = datetime.datetime.now().strftime("%f")[:-3]
sec = ((int(s1[0])*60+int(s1[1]))*60+int(s1[2]))*1000+int(s2)
return sec
def gripper_cacheData_writein(writePath, data):
with open(writePath, 'w') as f:
f.writelines(str(time_stamp())+" " + str(data))
f.writelines("\n")
f.close()
def gripper_cacheData_readPosition(writePath, data, last_read_time):
with open(writePath, 'w') as f:
f.writelines(str(data))
f.writelines("\n")
f.close()
def wait_period(delay_time, start_t) -> None:
delta_time_ = delay_time/1000
start, end = 0, 0 # 声明变量
start = time.time() # servoJ发送结束时间; 精度延时开始计时时间
# print("sss: ", start - start_t)
if (start - start_t) < delta_time_:
t = (delta_time_ - (start-start_t)) # 将输入t的单位转换为秒,-3是时间补偿
# print(t)
while end - start < t: # 循环至时间差值大于或等于设定值时
end = time.time() # 记录结束时间
def save_videos(video, dt, video_path=None):
if isinstance(video, list):
print("you")
cam_names = list(video[0].keys())
cam_names = sorted(cam_names)
h, w, _ = video[0][cam_names[0]].shape
w = w * len(cam_names)
fps = int(1/dt)
out = cv2.VideoWriter(video_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
for ts, image_dict in enumerate(video):
images = []
for cam_name in cam_names:
image = image_dict[cam_name]
image = image[:, :, [0, 1, 2]] # swap B and R channel
# image = image[:, :, [2, 1, 0]] # swap B and R channel
images.append(image)
images = np.concatenate(images, axis=1)
out.write(images)
out.release()
print(f'Saved video to: {video_path}')
elif isinstance(video, dict):
cam_names = list(video.keys())
cam_names = sorted(cam_names)
print(cam_names)
show_canvas = np.zeros((480, 640 * 3, 3), dtype=np.uint8)
h, w, _ = show_canvas.shape
fps = int(1 / dt)
out = cv2.VideoWriter(video_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
for i in range(len(video[cam_names[0]])):
show_canvas[:, :640] = np.asarray(video[cam_names[0]][i], dtype="uint8")
show_canvas[:, 640:640 * 2] = np.asarray(video[cam_names[1]][i], dtype="uint8")
show_canvas[:, 640 * 2:640 * 3] = np.asarray(video[cam_names[2]][i], dtype="uint8")
out.write(show_canvas)
out.release()
print(f'Saved video to: {video_path}')
if __name__ == "__main__":
# left_usb = "/sys/bus/usb-serial/devices"
# free_limit_and_set_one("/sys/bus/usb-serial/devices/ttyUSB2/latency_timer")
scan_port()