Compare commits

...

2 Commits

Author SHA1 Message Date
äHuang77 c4e86b5e66 update 2026-05-06 02:38:06 +00:00
äHuang77 c859acaeb6 update 2026-05-06 02:34:33 +00:00
5 changed files with 9 additions and 169 deletions

107
.env
View File

@ -1,107 +0,0 @@
{
"generated_at_utc": "2026-05-05T06:33:27.816915+00:00",
"note": "ECS task env snapshot. Sensitive values are masked.",
"interesting_env": {
"USER_ID": "019dbda3-deaf-7181-8184-de07c1393757",
"SPACE_ID": "4a89cdfd58bb42bc83971d9d11290228",
"LAUNCH_TYPE": "EC2",
"SPACE_DIR": "/home/user/data/4a89cdfd58bb42bc83971d9d11290228",
"SPACE_DIR_V2": "/data/4a89cdfd58bb42bc83971d9d11290228",
"DATA_PATH": "/home/user/data",
"DATA_PATH_V2": "/data",
"INIT_WORKSPACE": "/workspace",
"INIT_SCRIPT": "sed -i \"/# pms-vendor-pythonpath/d;/export PYTHONPATH=\\\"/opt\\/vendor\\/python/d\" /home/${USER:-devuser}/.bashrc 2>/dev/null || true\nmkdir -p ${CONDA_PREFIX:-/opt/miniconda/envs/pms-py312}/etc/conda/activate.d 2>/dev/null\ncat > ${CONDA_PREFIX:-/opt/miniconda/envs/pms-py312}/etc/conda/activate.d/pms-vendor-pythonpath.sh << 'PYEOF'\nexport PYTHONPATH=\"/opt/vendor/python:/opt/vendor/mjlab/src:/opt/vendor/mujoco_warp:/opt/vendor/demos/humanoid_skateboarding/src:$PYTHONPATH\"\nPYEOF\nchmod +x ${CONDA_PREFIX:-/opt/miniconda/envs/pms-py312}/etc/conda/activate.d/pms-vendor-pythonpath.sh 2>/dev/null || true\n\n/workspace/autorun.sh",
"ENABLE_VNC": "true",
"ENABLE_CODE_SERVER": "true",
"ENABLE_FILEBROWSER": "false",
"ENABLE_TERMINAL": "true",
"ENABLE_ROSBRIDGE": "true",
"ENABLE_FOXGLOVE": "false",
"ENABLE_GZWEB": "true",
"VNC_NO_PASSWORD": "***MASKED***",
"CODE_NO_PASSWORD": "***MASKED***",
"FILEBROWSER_BASEURL": "/file",
"GZWEB_APP_DIR": "/opt/gzweb",
"GZWEB_PORT": "8000",
"ROS_DISTRO": "humble",
"ROS_DOMAIN_ID": "42",
"WORKSPACE": "/workspace",
"HOME": "/home/devuser",
"USER": "devuser"
},
"all_env": {
"AWS_EXECUTION_ENV": "AWS_ECS_EC2",
"CODE_NO_PASSWORD": "***MASKED***",
"CUDA_VERSION": "12.8",
"DATA_PATH": "/home/user/data",
"DATA_PATH_V2": "/data",
"DEBIAN_FRONTEND": "noninteractive",
"DISPLAY": ":1",
"DISPLAY_BACKEND": "xorg",
"ECS_AGENT_URI": "http://169.254.170.2/api/cd8e26a5-d912-491e-8b83-c41a71d92362",
"ECS_CONTAINER_METADATA_URI": "http://169.254.170.2/v3/cd8e26a5-d912-491e-8b83-c41a71d92362",
"ECS_CONTAINER_METADATA_URI_V4": "http://169.254.170.2/v4/cd8e26a5-d912-491e-8b83-c41a71d92362",
"ENABLE_CODE_SERVER": "true",
"ENABLE_FILEBROWSER": "false",
"ENABLE_FOXGLOVE": "false",
"ENABLE_GZWEB": "true",
"ENABLE_NGINX_PROXY": "true",
"ENABLE_ROSBRIDGE": "true",
"ENABLE_SSH": "true",
"ENABLE_TERMINAL": "true",
"ENABLE_VNC": "true",
"FILEBROWSER_BASEURL": "/file",
"GPU_COUNT": "0",
"GZWEB_APP_DIR": "/opt/gzweb",
"GZWEB_PORT": "8000",
"GZWEB_VITE_PORT": "8000",
"GZ_SIM_CACHE_PATH": "/opt/gzsim/cache",
"GZ_SIM_RESOURCE_PATH": "/usr/share/gz/gz-sim7/models:/opt/gzsim/models",
"HOME": "/home/devuser",
"HOSTNAME": "ip-172-31-58-71.cn-northwest-1.compute.internal",
"INIT_SCRIPT": "sed -i \"/# pms-vendor-pythonpath/d;/export PYTHONPATH=\\\"/opt\\/vendor\\/python/d\" /home/${USER:-devuser}/.bashrc 2>/dev/null || true\nmkdir -p ${CONDA_PREFIX:-/opt/miniconda/envs/pms-py312}/etc/conda/activate.d 2>/dev/null\ncat > ${CONDA_PREFIX:-/opt/miniconda/envs/pms-py312}/etc/conda/activate.d/pms-vendor-pythonpath.sh << 'PYEOF'\nexport PYTHONPATH=\"/opt/vendor/python:/opt/vendor/mjlab/src:/opt/vendor/mujoco_warp:/opt/vendor/demos/humanoid_skateboarding/src:$PYTHONPATH\"\nPYEOF\nchmod +x ${CONDA_PREFIX:-/opt/miniconda/envs/pms-py312}/etc/conda/activate.d/pms-vendor-pythonpath.sh 2>/dev/null || true\n\n/workspace/autorun.sh",
"INIT_WORKSPACE": "/workspace",
"LANG": "en_US.UTF-8",
"LAUNCH_TYPE": "EC2",
"LC_ALL": "en_US.UTF-8",
"NODE_HOME": "/opt/node",
"NVIDIA_DRIVER_CAPABILITIES": "graphics,utility,compute,video",
"PASSWORD": "***MASKED***",
"PATH": "/opt/node/bin:/opt/venv/bin:/opt/foundation/bin:/opt/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"PGID": "1000",
"PMS_INGRESS_SCHEMA": "{\"l7\":{\"routes\":[{\"path\":\"/\",\"strip_prefix\":true,\"container_port\":8080},{\"path\":\"/code\",\"strip_prefix\":true,\"container_port\":8080},{\"path\":\"/file\",\"strip_prefix\":true,\"container_port\":8081},{\"path\":\"/vnc\",\"strip_prefix\":true,\"container_port\":6080},{\"path\":\"/websockify\",\"strip_prefix\":true,\"container_port\":6080},{\"path\":\"/webrtc\",\"strip_prefix\":true,\"container_port\":6080},{\"path\":\"/turn\",\"strip_prefix\":true,\"container_port\":6080},{\"path\":\"/publish/\",\"strip_prefix\":false,\"container_port\":6080},{\"path\":\"/sh\",\"strip_prefix\":true,\"container_port\":9422},{\"path\":\"/term\",\"strip_prefix\":true,\"container_port\":9422},{\"path\":\"/ws\",\"strip_prefix\":true,\"container_port\":9090},{\"path\":\"/foxglove\",\"strip_prefix\":true,\"container_port\":9002},{\"path\":\"/static\",\"strip_prefix\":false,\"container_port\":8000},{\"path\":\"/gzweb\",\"strip_prefix\":true,\"container_port\":8000},{\"path\":\"/viser\",\"strip_prefix\":true,\"container_port\":8082},{\"path\":\"/proxy\",\"strip_prefix\":true,\"container_port\":9876},{\"path\":\"/rerun.sdk_comms.v1alpha1.MessageProxyService/\",\"strip_prefix\":false,\"container_port\":9876}],\"enabled\":true,\"container_port\":8080}}",
"PMS_PORT_MAPPINGS": "[{\"name\":\"code-server\",\"protocol\":\"tcp\",\"container_port\":8080},{\"name\":\"filebrowser\",\"protocol\":\"tcp\",\"container_port\":8081},{\"name\":\"ttyd\",\"protocol\":\"tcp\",\"container_port\":9422},{\"name\":\"novnc\",\"protocol\":\"tcp\",\"container_port\":6080},{\"name\":\"turbovnc\",\"protocol\":\"tcp\",\"container_port\":5901},{\"name\":\"rosbridge\",\"protocol\":\"tcp\",\"container_port\":9090},{\"name\":\"foxglove-bridge\",\"protocol\":\"tcp\",\"container_port\":9002},{\"name\":\"statichtml\",\"protocol\":\"tcp\",\"container_port\":8000},{\"name\":\"viser-viewer\",\"protocol\":\"tcp\",\"container_port\":8082},{\"name\":\"rerun-grpc\",\"protocol\":\"tcp\",\"container_port\":9876},{\"name\":\"ssh\",\"protocol\":\"tcp\",\"container_port\":22}]",
"PREPARE_CLONE_ECR_URI": "833395216036.dkr.ecr.cn-northwest-1.amazonaws.com.cn/pms-foundation",
"PREPARE_CLONE_IMAGE_TAG": "prepare",
"PUID": "1000",
"PWD": "/workspace",
"PYTHON_VERSION": "3.11",
"ROS_DISTRO": "humble",
"ROS_DOMAIN_ID": "42",
"ROS_ROOT": "/opt/ros/humble",
"SELKIES_ENABLE_HTTPS": "false",
"SELKIES_ENCODER": "x264enc",
"SELKIES_PORT": "6080",
"SHLVL": "1",
"SNAPSHOT_PATH": "/workspace/.env",
"SPACE_DIR": "/home/user/data/4a89cdfd58bb42bc83971d9d11290228",
"SPACE_DIR_V2": "/data/4a89cdfd58bb42bc83971d9d11290228",
"SPACE_ID": "4a89cdfd58bb42bc83971d9d11290228",
"SSH_PUBLIC_KEY": "***MASKED***",
"STUN_HOST": "69.230.232.28",
"STUN_PORT": "3478",
"TURN_HOST": "69.230.232.28",
"TURN_PASSWORD": "***MASKED***",
"TURN_PORT": "3478",
"TURN_USERNAME": "admin",
"TZ": "Asia/Shanghai",
"USER": "devuser",
"USER_HOME": "/home/devuser",
"USER_ID": "019dbda3-deaf-7181-8184-de07c1393757",
"VIRTUAL_ENV": "/opt/venv",
"VNC_NO_PASSWORD": "***MASKED***",
"WORKSPACE": "/workspace",
"_": "/opt/venv/bin/python3",
"__GLX_VENDOR_LIBRARY_NAME": "nvidia"
}
}

View File

@ -7,7 +7,6 @@
- Ubuntu 22.04
- ROS2 Humble
- Gazebo Sim Harmonic
---
### 编译
@ -16,7 +15,7 @@
cd /workspace
colcon build --symlink-install
source /opt/ros/humble/setup.bash
source ~/ros_ws/install/setup.bash
source install/setup.bash
```
### 确认 package 能被 ROS2 找到
@ -24,6 +23,7 @@ source ~/ros_ws/install/setup.bash
```bash
ros2 pkg list | grep explore
```
预计打印结果explore_lite
### 注意事项
@ -33,7 +33,6 @@ ros2 pkg list | grep explore
source /opt/ros/humble/setup.bash
source install/setup.bash
export TURTLEBOT3_MODEL=burger
export NAV2_MAP_PATH=~/ros_ws/src/VLM-semantic-nav2/turtlebot3_simulations/turtlebot3_gazebo/map/office_map.yaml
```
为了方便,也可以写入 `~/.bashrc`
@ -42,26 +41,23 @@ export NAV2_MAP_PATH=~/ros_ws/src/VLM-semantic-nav2/turtlebot3_simulations/turtl
echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
echo 'source ~/ros_ws/install/setup.bash' >> ~/.bashrc
echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc
echo 'export NAV2_MAP_PATH=~/ros_ws/src/VLM-semantic-nav2/turtlebot3_simulations/turtlebot3_gazebo/map/office_map.yaml' >> ~/.bashrc
source ~/.bashrc
```
## 2. 启动仿真, Nav2导航栈 SLAM Toolbox异步建图 rviz2
```bash
ros2 launch turtlebot3_gazebo turtlebot3_office.launch.py \
x_pose:=0.0 y_pose:=0.0 use_sim_time:=true use_rviz:=false headless:=true
ros2 launch nav2_bringup navigation_launch.py use_sim_time:=True headless:=False
./gzsim_run.sh
ros2 launch slam_toolbox online_async_launch.py use_sim_time:=True
ros2 run rviz2 rviz2 -d /opt/ros/humble/share/nav2_bringup/rviz/nav2_default_view.rviz
ros2 launch nav2_bringup navigation_launch.py use_sim_time:=True headless:=False
ros2 run rviz2 rviz2 -d /opt/ros/humble/share/nav2_bringup/rviz/nav2_default_view.rviz --ros-args -p use_sim_time:=true
```
## 3. 启动explore_lite 自主探索节点
## 3. 启动explore_lite 自主探索节点如果机器人在探索时在某一点长时间卡住可以在rviz中使用Nav2 Goal进行单点导航探索。
```bash
ros2 launch explore_lite explore.launch.py
```
@ -73,8 +69,8 @@ ros2 launch explore_lite explore.launch.py
机器人完成环境全区域探索后,新开终端执行地图保存命令,地图将保存至$NAV2_MAP_PATH指定路径
```bash
export NAV2_MAP_PATH=/workspace/src/turtlebot3_simulations/turtlebot3_gazebo/map/office_map.yaml
ros2 run nav2_map_server map_saver_cli -f $NAV2_MAP_PATH
export NAV2_MAP_PATH=/workspace/src/turtlebot3_simulations/turtlebot3_gazebo/map
ros2 run nav2_map_server map_saver_cli -f ${NAV2_MAP_PATH}/office_map
```
## 5. 模型说明

View File

@ -1,49 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
PATTERN='turtlebot3_office.launch.py|websocket.gzlaunch|robot_state_publisher|/ros_gz_bridge/bridge_node|rosapi_node|__node:=rosapi|__node:=rosapi_params|/ros_gz_sim/create'
kill_by_pattern() {
local signal="$1"
local pids
pids="$(pgrep -f "$PATTERN" || true)"
if [[ -z "$pids" ]]; then
echo "[cleanup] no matching processes for SIG${signal}"
return 0
fi
echo "[cleanup] sending SIG${signal} to pids: $(echo "$pids" | tr '\n' ' ')"
# shellcheck disable=SC2086
kill -"${signal}" $pids 2>/dev/null || true
}
kill_port_9002() {
local pids
pids="$(ss -ltnp 2>/dev/null | grep ':9002 ' | sed -E 's/.*pid=([0-9]+).*/\1/' | sort -u || true)"
if [[ -z "$pids" ]]; then
echo "[cleanup] port 9002 is free"
return 0
fi
echo "[cleanup] killing port 9002 listeners: $pids"
# shellcheck disable=SC2086
kill -9 $pids 2>/dev/null || true
}
echo "[cleanup] start"
kill_by_pattern TERM
sleep 2
kill_by_pattern KILL
kill_port_9002
if command -v ros2 >/dev/null 2>&1; then
echo "[cleanup] restarting ros2 daemon to clear cached graph..."
ros2 daemon stop >/dev/null 2>&1 || true
ros2 daemon start >/dev/null 2>&1 || true
echo "[cleanup] remaining ROS2 nodes (--no-daemon):"
ros2 node list --no-daemon || true
echo "[cleanup] remaining ROS2 topics (--no-daemon):"
ros2 topic list --no-daemon || true
fi
echo "[cleanup] done"