feat: 初始化 Go2 导航相关代码与配置
This commit is contained in:
66
go2_autonomous_navigation/scripts/go2_stop_mapping.sh
Normal file
66
go2_autonomous_navigation/scripts/go2_stop_mapping.sh
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
patterns=(
|
||||
'ros2 launch go2_core go2_start.launch.py'
|
||||
'/opt/ros/humble/bin/ros2 launch go2_core go2_start.launch.py'
|
||||
'go2_start.launch.py'
|
||||
'async_slam_toolbox_node'
|
||||
'slam_toolbox'
|
||||
'robot_state_publisher'
|
||||
'robot_localization/ekf_node'
|
||||
'go2_driver/lib/go2_driver/driver'
|
||||
'go2_driver/lib/go2_driver/lowstate_to_imu'
|
||||
'go2_twist_bridge/lib/go2_twist_bridge/twist_bridge'
|
||||
'go2_perception/lib/go2_perception/cloud_accumulation'
|
||||
'go2_perception/lib/go2_perception/pointcloud_to_laserscan_node'
|
||||
'scan_throttle_node'
|
||||
'scan_throttle.py'
|
||||
'/opt/ros/humble/lib/rviz2/rviz2'
|
||||
)
|
||||
|
||||
python3 - "${patterns[@]}" <<'PY'
|
||||
import os
|
||||
import signal
|
||||
import sys
|
||||
import time
|
||||
patterns = sys.argv[1:]
|
||||
me = os.getpid()
|
||||
ppid = os.getppid()
|
||||
rows = []
|
||||
for name in os.listdir('/proc'):
|
||||
if not name.isdigit():
|
||||
continue
|
||||
pid = int(name)
|
||||
if pid in (me, ppid):
|
||||
continue
|
||||
try:
|
||||
raw = open(f'/proc/{pid}/cmdline', 'rb').read()
|
||||
cmd = raw.replace(b'\x00', b' ').decode('utf-8', 'replace')
|
||||
except Exception:
|
||||
continue
|
||||
if cmd and any(pattern in cmd for pattern in patterns):
|
||||
if 'go2_stop_mapping.sh' in cmd:
|
||||
continue
|
||||
rows.append((pid, cmd))
|
||||
if not rows:
|
||||
print('[go2_stop_mapping] no mapping processes found')
|
||||
raise SystemExit(0)
|
||||
for pid, cmd in sorted(rows):
|
||||
print(f'[go2_stop_mapping] TERM pid={pid} {cmd[:220]}')
|
||||
try:
|
||||
os.kill(pid, signal.SIGTERM)
|
||||
except ProcessLookupError:
|
||||
pass
|
||||
time.sleep(1.0)
|
||||
for pid, cmd in sorted(rows):
|
||||
try:
|
||||
os.kill(pid, 0)
|
||||
except ProcessLookupError:
|
||||
continue
|
||||
print(f'[go2_stop_mapping] KILL pid={pid}')
|
||||
try:
|
||||
os.kill(pid, signal.SIGKILL)
|
||||
except ProcessLookupError:
|
||||
pass
|
||||
PY
|
||||
Reference in New Issue
Block a user