一、连接激光雷达
在文件夹/livox/src/livox_ros_driver2/下面写open.py文件,具体代码如下:
import subprocess
process2 = subprocess.Popen("source ../../devel/setup.sh",shell=True,stdout=subprocess.PIPE)
process3 = subprocess.Popen("roslaunch livox_ros_driver2 livox_lidar_rviz_HAP.launch",shell=True,stdout=subprocess.PIPE)
然后在该文件夹下打开该文件:
python open.py
二、bag文件保存
在用python保存bag文件前先要用前一章的方法连接livox,并且打开roscore,再在终端创建一个保存bag文件的文件夹,比如我创建的路径是/livox/src/saves/,则在saves文件夹下写一个保存bag文件的py文件,代码实现如下:
import subprocess
#--duration=0.3表示一个bag文件包数据的时间长度是0.3秒,可以根据自己的需要修改这个数据
process2 = subprocess.Popen("rosbag record --duration=0.3 -a", shell=True,stdout=subprocess.PIPE)
注意:以上代码只是存取一个bag文件,要自动的循环存取多个bag文件,则需要while循环。 这里不做循环,后面和bag转换文件的代码一起循环。
三、bag文件转换为pcd文件
在/livox/src/saves/文件夹下写一个bag_pcd.py文件,代码如下:
import subprocess
#***.bag:表示将要转换的为pcd文件的bag文件名称
process2 = subprocess.Popen("rosrun pcl_ros bag_to_pcd ***.bag /livox/lidar pcd", shell=True,stdout=subprocess.PIPE)
四、查看pcd文件
import subprocess
#xxx.pcd:表示将要查看的pcd文件名称
process2 = subprocess.Popen("pcl_viewer xxx.pcd", shell=True,stdout=subprocess.PIPE)
注意:pcd文件的三维坐标转换为相机的二维坐标的手眼标定模型可以参照1.激光雷达与相机的融合标定(附python代码)_YANQ662的博客-CSDN博客,也是python代 码。
五、打开rk3588的相机
1.这里用了终端代码,如果用cv打开相机,需要重新写代码
import subprocess
#/dev/video74:表示相机的路径,该路径需要大家根据自己设备的实际路径修改
process2 = subprocess.Popen("cheese /dev/video61", shell=True,stdout=subprocess.PIPE)
注意:查看相机路径可以参考博文:rk3588 利用opencv打开摄像头(MIPI或USB)-CSDN博客
2.用cv2打开rk3588的相机
# coding:utf-8
import cv2
#/dev/video42:表示摄像头的路径
cap = cv2.VideoCapture("/dev/video42")#"/dev/video42"
index = 1
while (cap.isOpened()):
print(cap.isOpened())
ret, frame = cap.read()
print(ret)
cv2.imshow("src_image", frame)
k = cv2.waitKey(1) & 0xFF
if k == ord('s'):
cv2.imwrite("./" + str(index) + ".jpg", frame)
index += 1
elif k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()