|
@@ -1,10 +1,9 @@
|
|
|
-package svc
|
|
|
+package service
|
|
|
|
|
|
import (
|
|
|
+ "cicv-data-closedloop/aarch64/pji/common/config"
|
|
|
"cicv-data-closedloop/common/config/c_log"
|
|
|
"cicv-data-closedloop/common/util"
|
|
|
- "cicv-data-closedloop/pji/common/cfg"
|
|
|
- "cicv-data-closedloop/pji/common/cutil"
|
|
|
"github.com/bluenviron/goroslib/v2"
|
|
|
"os"
|
|
|
"os/exec"
|
|
@@ -20,7 +19,7 @@ func BagRecord(nodeName string) {
|
|
|
canRecord := false
|
|
|
for !canRecord {
|
|
|
time.Sleep(time.Duration(2) * time.Second)
|
|
|
- canRecord = isCanRecord(cfg.RosNode)
|
|
|
+ canRecord = isCanRecord(config.RosNode)
|
|
|
}
|
|
|
c_log.GlobalLogger.Info("rosnode 启动完成,正在启动 rosbag record 命令。")
|
|
|
|
|
@@ -28,7 +27,7 @@ func BagRecord(nodeName string) {
|
|
|
command = append(command, "record")
|
|
|
command = append(command, "--split")
|
|
|
command = append(command, "--duration=1")
|
|
|
- for _, host := range cfg.CloudConfig.Hosts {
|
|
|
+ for _, host := range config.CloudConfig.Hosts {
|
|
|
if host.Name == nodeName {
|
|
|
for _, topic := range host.Topics {
|
|
|
command = append(command, topic)
|
|
@@ -39,18 +38,18 @@ func BagRecord(nodeName string) {
|
|
|
// 2 ------- 调用 rosbag 打包命令,该命令自动阻塞 -------
|
|
|
// 不在此处压缩,因为 rosbag filter 时会报错。在上传到oss之前压缩即可。
|
|
|
// 包名格式:2023-11-15-17-35-20_0.bag
|
|
|
- _ = cutil.CreateParentDir(cfg.CloudConfig.BagDataDir)
|
|
|
+ _ = util.CreateParentDir(config.CloudConfig.BagDataDir)
|
|
|
var recordProcessPid int
|
|
|
var recordSubProcessPid int
|
|
|
var cmd *exec.Cmd
|
|
|
parent:
|
|
|
for {
|
|
|
- cmd, err = util.ExecuteWithDirAsync(cfg.CloudConfig.BagDataDir, "/opt/ros/melodic/bin/rosbag", command...)
|
|
|
+ cmd, err = util.ExecuteWithDirAsync(config.CloudConfig.BagDataDir, "/opt/ros/melodic/bin/rosbag", command...)
|
|
|
if err != nil {
|
|
|
c_log.GlobalLogger.Error("执行record命令", command, "出错:", err)
|
|
|
continue
|
|
|
}
|
|
|
- //cmd, output, err := util.ExecuteWithDirSync(cfg.CloudConfig.BagDataDir, "/opt/ros/melodic/bin/rosbag", command...)
|
|
|
+ //cmd, output, err := util.ExecuteWithDirSync(config.CloudConfig.BagDataDir, "/opt/ros/melodic/bin/rosbag", command...)
|
|
|
//if err != nil {
|
|
|
// c_log.GlobalLogger.Error("执行record命令", command, "出错:【output】=", output, "【err】=", err)
|
|
|
// continue
|
|
@@ -122,7 +121,7 @@ func isCanRecord(n *goroslib.Node) bool {
|
|
|
// 创建一个示例的map
|
|
|
myMap := nodes
|
|
|
// 创建一个切片,包含要检查的元素
|
|
|
- mySlice := cfg.CloudConfig.Ros.Nodes
|
|
|
+ mySlice := config.CloudConfig.Ros.Nodes
|
|
|
|
|
|
// 判断map的键是否包含切片中的所有元素
|
|
|
for _, element := range mySlice {
|