update
|
|
@ -0,0 +1,7 @@
|
|||
build/
|
||||
log/
|
||||
autorun_logs/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.log
|
||||
node_modules/
|
||||
40
README.md
|
|
@ -1,18 +1,34 @@
|
|||
# 开始拉取代码
|
||||
# 仓库 3D 场景
|
||||
|
||||
|
||||
|
||||
## 场景预览
|
||||
|
||||

|
||||
|
||||
|
||||
---
|
||||
```
|
||||
git clone http://git-test.databall.tech:3000/databall-official/9b9c87b18201479ea66eb7e6b554a98e.git
|
||||
|
||||
cd 9b9c87b18201479ea66eb7e6b554a98e
|
||||
## 启动(唯一命令,无需编译)
|
||||
|
||||
# add your files to repo
|
||||
git push
|
||||
卡片内已包含预编译 `install/`,**直接运行即可**,不要 `colcon build`。
|
||||
|
||||
```bash
|
||||
./gzsim_run.sh
|
||||
|
||||
|
||||
| `./gzsim_stop.sh` | 停止仿真 |
|
||||
```
|
||||
---
|
||||
|
||||
**必须等到**终端出现:
|
||||
|
||||
```text
|
||||
[autorun] GzWeb scene OK (... bytes), 9002 stable
|
||||
[autorun] ✓ 全部就绪 — 现在刷新「仿真器」面板
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin http://git-test.databall.tech:3000/databall-official/9b9c87b18201479ea66eb7e6b554a98e.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env bash
|
||||
# 容器 INIT_SCRIPT 入口 — 仅调用唯一启动脚本
|
||||
exec /workspace/gzsim_run.sh
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
# 仓库 3D 场景
|
||||
|
||||
|
||||
|
||||
## 场景预览
|
||||
|
||||

|
||||
|
||||
|
||||
---
|
||||
|
||||
## 启动(唯一命令,无需编译)
|
||||
|
||||
卡片内已包含预编译 `install/`,**直接运行即可**,不要 `colcon build`。
|
||||
|
||||
```bash
|
||||
./gzsim_run.sh
|
||||
|
||||
|
||||
| `./gzsim_stop.sh` | 停止仿真 |
|
||||
```
|
||||
|
||||
**必须等到**终端出现:
|
||||
|
||||
```text
|
||||
[autorun] GzWeb scene OK (... bytes), 9002 stable
|
||||
[autorun] ✓ 全部就绪 — 现在刷新「仿真器」面板
|
||||
```
|
||||
|
||||
打开rviz,显示实时点云数据
|
||||
|
||||
```bash
|
||||
source install/setup.bash
|
||||
ros2 launch bcr_bot rviz.launch.py
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 173 KiB |
|
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env bash
|
||||
# 简要诊断 :9002 / gz-launch(GzWeb 使用 wss://同域/gzbridge/)
|
||||
set -euo pipefail
|
||||
|
||||
echo "========== GzWeb / gzbridge (:9002) =========="
|
||||
echo "[1] port 9002"
|
||||
ss -ltnp 2>/dev/null | grep ':9002 ' || echo " (not listening)"
|
||||
|
||||
echo
|
||||
echo "[2] processes"
|
||||
ps aux | grep -E 'gz sim|gz-launch|gz launch.*websocket|warehouse_gzweb' | grep -v grep || echo " (none)"
|
||||
|
||||
echo
|
||||
echo "GzWeb panel: wss://{your-space}.spaces.databall.tech/gzbridge/"
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env bash
|
||||
# GzWeb 仓库场景 — Gazebo Sim + gz-launch :9002(GzWeb 连 wss://同域/gzbridge/)
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
sleep 3
|
||||
export PATH="/usr/bin:/bin:/opt/ros/humble/bin:${PATH}"
|
||||
export LIBGL_ALWAYS_SOFTWARE=1
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
set +u
|
||||
source /opt/ros/humble/setup.bash
|
||||
[[ -f "${ROOT}/install/setup.bash" ]] && source "${ROOT}/install/setup.bash"
|
||||
set -u
|
||||
|
||||
LOG_DIR="${ROOT}/autorun_logs/autorun_$(date +%Y%m%d_%H%M%S)"
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
pkill -f 'gz launch.*websocket' 2>/dev/null || true
|
||||
pkill -f 'gz-launch.*websocket' 2>/dev/null || true
|
||||
sleep 1
|
||||
|
||||
echo "[autorun] launching warehouse Gazebo Sim ..."
|
||||
ros2 launch bcr_bot gz.launch.py > "${LOG_DIR}/warehouse_gzsim.log" 2>&1 &
|
||||
GZSIM_PID=$!
|
||||
|
||||
sleep 15
|
||||
if ! ps -p "$GZSIM_PID" > /dev/null; then
|
||||
echo "[autorun] Gazebo exited early:"
|
||||
tail -40 "${LOG_DIR}/warehouse_gzsim.log" || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WS_CONFIG="${ROOT}/src/websocket.gzlaunch"
|
||||
[[ -f "$WS_CONFIG" ]] || WS_CONFIG="/usr/share/gz/gz-launch7/configs/websocket.gzlaunch"
|
||||
|
||||
# WebsocketServer is a separate process from ros2 launch — it does NOT inherit
|
||||
# AppendEnvironmentVariable from warehouse_gzweb.launch.py. Without install/src
|
||||
# on GZ_SIM_RESOURCE_PATH, mesh requests get "Access denied" and GzWeb stays empty.
|
||||
export GZ_SIM_RESOURCE_PATH="${ROOT}/install:${ROOT}/src${GZ_SIM_RESOURCE_PATH:+:$GZ_SIM_RESOURCE_PATH}"
|
||||
export IGN_GAZEBO_RESOURCE_PATH="${GZ_SIM_RESOURCE_PATH}"
|
||||
|
||||
echo "[autorun] starting gz-launch websocket on :9002 ..."
|
||||
echo "[autorun] GZ_SIM_RESOURCE_PATH=${GZ_SIM_RESOURCE_PATH}"
|
||||
gz launch "$WS_CONFIG" > "${LOG_DIR}/websocket.log" 2>&1 &
|
||||
WEBSOCKET_PID=$!
|
||||
|
||||
sleep 10
|
||||
if ! ps -p "$WEBSOCKET_PID" > /dev/null; then
|
||||
echo "[autorun] websocket exited:"
|
||||
cat "${LOG_DIR}/websocket.log" || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[autorun] ready. Refresh GzWeb (wss://{host}/gzbridge/). logs: ${LOG_DIR}"
|
||||
wait
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#!/usr/bin/env bash
|
||||
# GzWeb 仓库场景 — Gazebo Sim + gz-launch :9002(GzWeb 连 wss://同域/gzbridge/)
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
sleep 3
|
||||
export PATH="/usr/bin:/bin:/opt/ros/humble/bin:${PATH}"
|
||||
export LIBGL_ALWAYS_SOFTWARE=1
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
set +u
|
||||
source /opt/ros/humble/setup.bash
|
||||
[[ -f "${ROOT}/install/setup.bash" ]] && source "${ROOT}/install/setup.bash"
|
||||
set -u
|
||||
|
||||
# WebsocketServer asset whitelist (mesh under install/ share).
|
||||
export GZ_SIM_RESOURCE_PATH="/workspace/install/bcr_bot/share/bcr_bot:/workspace/install:${GZ_SIM_RESOURCE_PATH:-}"
|
||||
|
||||
LOG_DIR="${ROOT}/autorun_logs/autorun_$(date +%Y%m%d_%H%M%S)"
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
pkill -f 'gz launch.*websocket' 2>/dev/null || true
|
||||
pkill -f 'gz-launch.*websocket' 2>/dev/null || true
|
||||
sleep 1
|
||||
|
||||
echo "[autorun] launching warehouse Gazebo Sim ..."
|
||||
ros2 launch bcr_bot warehouse_gzweb.launch.py > "${LOG_DIR}/warehouse_gzsim.log" 2>&1 &
|
||||
GZSIM_PID=$!
|
||||
|
||||
sleep 15
|
||||
if ! ps -p "$GZSIM_PID" > /dev/null; then
|
||||
echo "[autorun] Gazebo exited early:"
|
||||
tail -40 "${LOG_DIR}/warehouse_gzsim.log" || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WS_CONFIG="${ROOT}/src/websocket.gzlaunch"
|
||||
[[ -f "$WS_CONFIG" ]] || WS_CONFIG="/usr/share/gz/gz-launch7/configs/websocket.gzlaunch"
|
||||
|
||||
echo "[autorun] starting gz-launch websocket on :9002 ..."
|
||||
gz launch "$WS_CONFIG" > "${LOG_DIR}/websocket.log" 2>&1 &
|
||||
WEBSOCKET_PID=$!
|
||||
|
||||
sleep 10
|
||||
if ! ps -p "$WEBSOCKET_PID" > /dev/null; then
|
||||
echo "[autorun] websocket exited:"
|
||||
cat "${LOG_DIR}/websocket.log" || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[autorun] ready. Refresh GzWeb (wss://{host}/gzbridge/). logs: ${LOG_DIR}"
|
||||
wait
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env bash
|
||||
# 停止仓库 GzWeb 仿真(释放 9002 与单实例锁)
|
||||
set -euo pipefail
|
||||
|
||||
echo "[stop] stopping warehouse GzWeb services ..."
|
||||
|
||||
pkill -9 -f 'warehouse_foxglove_guard.sh' 2>/dev/null || true
|
||||
pkill -9 -f 'warehouse_gzsim_keepalive.sh' 2>/dev/null || true
|
||||
pkill -9 -f 'warehouse_gzweb.launch.py' 2>/dev/null || true
|
||||
pkill -9 -f 'gz-launch.*websocket' 2>/dev/null || true
|
||||
pkill -9 -f 'gz launch.*websocket' 2>/dev/null || true
|
||||
pkill -9 -f 'foxglove_bridge' 2>/dev/null || true
|
||||
pkill -9 -f 'gz sim' 2>/dev/null || true
|
||||
pkill -9 -f 'robot_state_publisher' 2>/dev/null || true
|
||||
sleep 1
|
||||
|
||||
pids="$(ss -ltnp 2>/dev/null | grep ':9002 ' | sed -E 's/.*pid=([0-9]+).*/\1/' | sort -u || true)"
|
||||
if [[ -n "${pids}" ]]; then
|
||||
kill -9 ${pids} 2>/dev/null || true
|
||||
fi
|
||||
|
||||
rm -f /tmp/warehouse_gzsim.lock
|
||||
sleep 1
|
||||
|
||||
if ps aux | grep -E 'warehouse_gzweb|warehouse_foxglove|warehouse_gzsim_keepalive|gz-launch|gz sim' | grep -v grep >/dev/null; then
|
||||
echo "[stop] WARN: some processes may remain:"
|
||||
ps aux | grep -E 'warehouse_gzweb|warehouse_foxglove|warehouse_gzsim_keepalive|gz-launch|gz sim' | grep -v grep || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[stop] done. 9002 free, lock removed. Now run: ./gzsim_run.sh"
|
||||
|
|
@ -0,0 +1 @@
|
|||
isolated
|
||||
|
|
@ -0,0 +1,406 @@
|
|||
# Copyright 2016-2019 Dirk Thomas
|
||||
# Licensed under the Apache License, Version 2.0
|
||||
|
||||
import argparse
|
||||
from collections import OrderedDict
|
||||
import os
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
|
||||
FORMAT_STR_COMMENT_LINE = '# {comment}'
|
||||
FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"'
|
||||
FORMAT_STR_USE_ENV_VAR = '$env:{name}'
|
||||
FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"' # noqa: E501
|
||||
FORMAT_STR_REMOVE_LEADING_SEPARATOR = '' # noqa: E501
|
||||
FORMAT_STR_REMOVE_TRAILING_SEPARATOR = '' # noqa: E501
|
||||
|
||||
DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate'
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate'
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists'
|
||||
DSV_TYPE_SET = 'set'
|
||||
DSV_TYPE_SET_IF_UNSET = 'set-if-unset'
|
||||
DSV_TYPE_SOURCE = 'source'
|
||||
|
||||
|
||||
def main(argv=sys.argv[1:]): # noqa: D103
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Output shell commands for the packages in topological '
|
||||
'order')
|
||||
parser.add_argument(
|
||||
'primary_extension',
|
||||
help='The file extension of the primary shell')
|
||||
parser.add_argument(
|
||||
'additional_extension', nargs='?',
|
||||
help='The additional file extension to be considered')
|
||||
parser.add_argument(
|
||||
'--merged-install', action='store_true',
|
||||
help='All install prefixes are merged into a single location')
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
packages = get_packages(Path(__file__).parent, args.merged_install)
|
||||
|
||||
ordered_packages = order_packages(packages)
|
||||
for pkg_name in ordered_packages:
|
||||
if _include_comments():
|
||||
print(
|
||||
FORMAT_STR_COMMENT_LINE.format_map(
|
||||
{'comment': 'Package: ' + pkg_name}))
|
||||
prefix = os.path.abspath(os.path.dirname(__file__))
|
||||
if not args.merged_install:
|
||||
prefix = os.path.join(prefix, pkg_name)
|
||||
for line in get_commands(
|
||||
pkg_name, prefix, args.primary_extension,
|
||||
args.additional_extension
|
||||
):
|
||||
print(line)
|
||||
|
||||
for line in _remove_ending_separators():
|
||||
print(line)
|
||||
|
||||
|
||||
def get_packages(prefix_path, merged_install):
|
||||
"""
|
||||
Find packages based on colcon-specific files created during installation.
|
||||
|
||||
:param Path prefix_path: The install prefix path of all packages
|
||||
:param bool merged_install: The flag if the packages are all installed
|
||||
directly in the prefix or if each package is installed in a subdirectory
|
||||
named after the package
|
||||
:returns: A mapping from the package name to the set of runtime
|
||||
dependencies
|
||||
:rtype: dict
|
||||
"""
|
||||
packages = {}
|
||||
# since importing colcon_core isn't feasible here the following constant
|
||||
# must match colcon_core.location.get_relative_package_index_path()
|
||||
subdirectory = 'share/colcon-core/packages'
|
||||
if merged_install:
|
||||
# return if workspace is empty
|
||||
if not (prefix_path / subdirectory).is_dir():
|
||||
return packages
|
||||
# find all files in the subdirectory
|
||||
for p in (prefix_path / subdirectory).iterdir():
|
||||
if not p.is_file():
|
||||
continue
|
||||
if p.name.startswith('.'):
|
||||
continue
|
||||
add_package_runtime_dependencies(p, packages)
|
||||
else:
|
||||
# for each subdirectory look for the package specific file
|
||||
for p in prefix_path.iterdir():
|
||||
if not p.is_dir():
|
||||
continue
|
||||
if p.name.startswith('.'):
|
||||
continue
|
||||
p = p / subdirectory / p.name
|
||||
if p.is_file():
|
||||
add_package_runtime_dependencies(p, packages)
|
||||
|
||||
# remove unknown dependencies
|
||||
pkg_names = set(packages.keys())
|
||||
for k in packages.keys():
|
||||
packages[k] = {d for d in packages[k] if d in pkg_names}
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
def add_package_runtime_dependencies(path, packages):
|
||||
"""
|
||||
Check the path and if it exists extract the packages runtime dependencies.
|
||||
|
||||
:param Path path: The resource file containing the runtime dependencies
|
||||
:param dict packages: A mapping from package names to the sets of runtime
|
||||
dependencies to add to
|
||||
"""
|
||||
content = path.read_text()
|
||||
dependencies = set(content.split(os.pathsep) if content else [])
|
||||
packages[path.name] = dependencies
|
||||
|
||||
|
||||
def order_packages(packages):
|
||||
"""
|
||||
Order packages topologically.
|
||||
|
||||
:param dict packages: A mapping from package name to the set of runtime
|
||||
dependencies
|
||||
:returns: The package names
|
||||
:rtype: list
|
||||
"""
|
||||
# select packages with no dependencies in alphabetical order
|
||||
to_be_ordered = list(packages.keys())
|
||||
ordered = []
|
||||
while to_be_ordered:
|
||||
pkg_names_without_deps = [
|
||||
name for name in to_be_ordered if not packages[name]]
|
||||
if not pkg_names_without_deps:
|
||||
reduce_cycle_set(packages)
|
||||
raise RuntimeError(
|
||||
'Circular dependency between: ' + ', '.join(sorted(packages)))
|
||||
pkg_names_without_deps.sort()
|
||||
pkg_name = pkg_names_without_deps[0]
|
||||
to_be_ordered.remove(pkg_name)
|
||||
ordered.append(pkg_name)
|
||||
# remove item from dependency lists
|
||||
for k in list(packages.keys()):
|
||||
if pkg_name in packages[k]:
|
||||
packages[k].remove(pkg_name)
|
||||
return ordered
|
||||
|
||||
|
||||
def reduce_cycle_set(packages):
|
||||
"""
|
||||
Reduce the set of packages to the ones part of the circular dependency.
|
||||
|
||||
:param dict packages: A mapping from package name to the set of runtime
|
||||
dependencies which is modified in place
|
||||
"""
|
||||
last_depended = None
|
||||
while len(packages) > 0:
|
||||
# get all remaining dependencies
|
||||
depended = set()
|
||||
for pkg_name, dependencies in packages.items():
|
||||
depended = depended.union(dependencies)
|
||||
# remove all packages which are not dependent on
|
||||
for name in list(packages.keys()):
|
||||
if name not in depended:
|
||||
del packages[name]
|
||||
if last_depended:
|
||||
# if remaining packages haven't changed return them
|
||||
if last_depended == depended:
|
||||
return packages.keys()
|
||||
# otherwise reduce again
|
||||
last_depended = depended
|
||||
|
||||
|
||||
def _include_comments():
|
||||
# skipping comment lines when COLCON_TRACE is not set speeds up the
|
||||
# processing especially on Windows
|
||||
return bool(os.environ.get('COLCON_TRACE'))
|
||||
|
||||
|
||||
def get_commands(pkg_name, prefix, primary_extension, additional_extension):
|
||||
commands = []
|
||||
package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv')
|
||||
if os.path.exists(package_dsv_path):
|
||||
commands += process_dsv_file(
|
||||
package_dsv_path, prefix, primary_extension, additional_extension)
|
||||
return commands
|
||||
|
||||
|
||||
def process_dsv_file(
|
||||
dsv_path, prefix, primary_extension=None, additional_extension=None
|
||||
):
|
||||
commands = []
|
||||
if _include_comments():
|
||||
commands.append(FORMAT_STR_COMMENT_LINE.format_map({
|
||||
'comment': dsv_path}))
|
||||
with open(dsv_path, 'r') as h:
|
||||
content = h.read()
|
||||
lines = content.splitlines()
|
||||
|
||||
basename_map = OrderedDict()
|
||||
for i, line in enumerate(lines):
|
||||
# skip over empty or whitespace-only lines
|
||||
if not line.strip():
|
||||
continue
|
||||
# skip over comments
|
||||
if line.startswith('#'):
|
||||
continue
|
||||
try:
|
||||
type_, remainder = line.split(';', 1)
|
||||
except ValueError:
|
||||
raise RuntimeError(
|
||||
"Line %d in '%s' doesn't contain a semicolon separating the "
|
||||
'type from the arguments' % (i + 1, dsv_path))
|
||||
if type_ != DSV_TYPE_SOURCE:
|
||||
# handle non-source lines
|
||||
try:
|
||||
commands += handle_dsv_types_except_source(
|
||||
type_, remainder, prefix)
|
||||
except RuntimeError as e:
|
||||
raise RuntimeError(
|
||||
"Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e
|
||||
else:
|
||||
# group remaining source lines by basename
|
||||
path_without_ext, ext = os.path.splitext(remainder)
|
||||
if path_without_ext not in basename_map:
|
||||
basename_map[path_without_ext] = set()
|
||||
assert ext.startswith('.')
|
||||
ext = ext[1:]
|
||||
if ext in (primary_extension, additional_extension):
|
||||
basename_map[path_without_ext].add(ext)
|
||||
|
||||
# add the dsv extension to each basename if the file exists
|
||||
for basename, extensions in basename_map.items():
|
||||
if not os.path.isabs(basename):
|
||||
basename = os.path.join(prefix, basename)
|
||||
if os.path.exists(basename + '.dsv'):
|
||||
extensions.add('dsv')
|
||||
|
||||
for basename, extensions in basename_map.items():
|
||||
if not os.path.isabs(basename):
|
||||
basename = os.path.join(prefix, basename)
|
||||
if 'dsv' in extensions:
|
||||
# process dsv files recursively
|
||||
commands += process_dsv_file(
|
||||
basename + '.dsv', prefix, primary_extension=primary_extension,
|
||||
additional_extension=additional_extension)
|
||||
elif primary_extension in extensions and len(extensions) == 1:
|
||||
# source primary-only files
|
||||
commands += [
|
||||
FORMAT_STR_INVOKE_SCRIPT.format_map({
|
||||
'prefix': prefix,
|
||||
'script_path': basename + '.' + primary_extension})]
|
||||
elif additional_extension in extensions:
|
||||
# source non-primary files
|
||||
commands += [
|
||||
FORMAT_STR_INVOKE_SCRIPT.format_map({
|
||||
'prefix': prefix,
|
||||
'script_path': basename + '.' + additional_extension})]
|
||||
|
||||
return commands
|
||||
|
||||
|
||||
def handle_dsv_types_except_source(type_, remainder, prefix):
|
||||
commands = []
|
||||
if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET):
|
||||
try:
|
||||
env_name, value = remainder.split(';', 1)
|
||||
except ValueError:
|
||||
raise RuntimeError(
|
||||
"doesn't contain a semicolon separating the environment name "
|
||||
'from the value')
|
||||
try_prefixed_value = os.path.join(prefix, value) if value else prefix
|
||||
if os.path.exists(try_prefixed_value):
|
||||
value = try_prefixed_value
|
||||
if type_ == DSV_TYPE_SET:
|
||||
commands += _set(env_name, value)
|
||||
elif type_ == DSV_TYPE_SET_IF_UNSET:
|
||||
commands += _set_if_unset(env_name, value)
|
||||
else:
|
||||
assert False
|
||||
elif type_ in (
|
||||
DSV_TYPE_APPEND_NON_DUPLICATE,
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE,
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS
|
||||
):
|
||||
try:
|
||||
env_name_and_values = remainder.split(';')
|
||||
except ValueError:
|
||||
raise RuntimeError(
|
||||
"doesn't contain a semicolon separating the environment name "
|
||||
'from the values')
|
||||
env_name = env_name_and_values[0]
|
||||
values = env_name_and_values[1:]
|
||||
for value in values:
|
||||
if not value:
|
||||
value = prefix
|
||||
elif not os.path.isabs(value):
|
||||
value = os.path.join(prefix, value)
|
||||
if (
|
||||
type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and
|
||||
not os.path.exists(value)
|
||||
):
|
||||
comment = f'skip extending {env_name} with not existing ' \
|
||||
f'path: {value}'
|
||||
if _include_comments():
|
||||
commands.append(FORMAT_STR_COMMENT_LINE.format_map({
|
||||
'comment': comment}))
|
||||
elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE:
|
||||
commands += _append_unique_value(env_name, value)
|
||||
else:
|
||||
commands += _prepend_unique_value(env_name, value)
|
||||
else:
|
||||
raise RuntimeError(
|
||||
'contains an unknown environment hook type: ' + type_)
|
||||
return commands
|
||||
|
||||
|
||||
env_state = {}
|
||||
|
||||
|
||||
def _append_unique_value(name, value):
|
||||
if name not in env_state:
|
||||
if os.environ.get(name):
|
||||
env_state[name] = set(os.environ[name].split(os.pathsep))
|
||||
else:
|
||||
env_state[name] = set()
|
||||
# Append even if the variable has not been set yet, in case a shell script
|
||||
# sets the same variable without the knowledge of this Python script.
|
||||
# Later, _remove_ending_separators() will cleanup any unintentional
|
||||
# leading separator.
|
||||
extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': extend + value})
|
||||
if value not in env_state[name]:
|
||||
env_state[name].add(value)
|
||||
else:
|
||||
if not _include_comments():
|
||||
return []
|
||||
line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
|
||||
return [line]
|
||||
|
||||
|
||||
def _prepend_unique_value(name, value):
|
||||
if name not in env_state:
|
||||
if os.environ.get(name):
|
||||
env_state[name] = set(os.environ[name].split(os.pathsep))
|
||||
else:
|
||||
env_state[name] = set()
|
||||
# Prepend even if the variable has not been set yet, in case a shell script
|
||||
# sets the same variable without the knowledge of this Python script.
|
||||
# Later, _remove_ending_separators() will cleanup any unintentional
|
||||
# trailing separator.
|
||||
extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name})
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': value + extend})
|
||||
if value not in env_state[name]:
|
||||
env_state[name].add(value)
|
||||
else:
|
||||
if not _include_comments():
|
||||
return []
|
||||
line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
|
||||
return [line]
|
||||
|
||||
|
||||
# generate commands for removing prepended underscores
|
||||
def _remove_ending_separators():
|
||||
# do nothing if the shell extension does not implement the logic
|
||||
if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None:
|
||||
return []
|
||||
|
||||
commands = []
|
||||
for name in env_state:
|
||||
# skip variables that already had values before this script started
|
||||
# appending/prepending
|
||||
if name in os.environ:
|
||||
continue
|
||||
commands += [
|
||||
FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}),
|
||||
FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})]
|
||||
return commands
|
||||
|
||||
|
||||
def _set(name, value):
|
||||
env_state[name] = value
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': value})
|
||||
return [line]
|
||||
|
||||
|
||||
def _set_if_unset(name, value):
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': value})
|
||||
if env_state.get(name, os.environ.get(name)):
|
||||
line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
|
||||
return [line]
|
||||
|
||||
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
try:
|
||||
rc = main()
|
||||
except RuntimeError as e:
|
||||
print(str(e), file=sys.stderr)
|
||||
rc = 1
|
||||
sys.exit(rc)
|
||||
|
|
@ -0,0 +1,406 @@
|
|||
# Copyright 2016-2019 Dirk Thomas
|
||||
# Licensed under the Apache License, Version 2.0
|
||||
|
||||
import argparse
|
||||
from collections import OrderedDict
|
||||
import os
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
|
||||
FORMAT_STR_COMMENT_LINE = '# {comment}'
|
||||
FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"'
|
||||
FORMAT_STR_USE_ENV_VAR = '${name}'
|
||||
FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' # noqa: E501
|
||||
FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'export {name}=${{{name}#:}}' # noqa: E501
|
||||
FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'export {name}=${{{name}%:}}' # noqa: E501
|
||||
|
||||
DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate'
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate'
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists'
|
||||
DSV_TYPE_SET = 'set'
|
||||
DSV_TYPE_SET_IF_UNSET = 'set-if-unset'
|
||||
DSV_TYPE_SOURCE = 'source'
|
||||
|
||||
|
||||
def main(argv=sys.argv[1:]): # noqa: D103
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Output shell commands for the packages in topological '
|
||||
'order')
|
||||
parser.add_argument(
|
||||
'primary_extension',
|
||||
help='The file extension of the primary shell')
|
||||
parser.add_argument(
|
||||
'additional_extension', nargs='?',
|
||||
help='The additional file extension to be considered')
|
||||
parser.add_argument(
|
||||
'--merged-install', action='store_true',
|
||||
help='All install prefixes are merged into a single location')
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
packages = get_packages(Path(__file__).parent, args.merged_install)
|
||||
|
||||
ordered_packages = order_packages(packages)
|
||||
for pkg_name in ordered_packages:
|
||||
if _include_comments():
|
||||
print(
|
||||
FORMAT_STR_COMMENT_LINE.format_map(
|
||||
{'comment': 'Package: ' + pkg_name}))
|
||||
prefix = os.path.abspath(os.path.dirname(__file__))
|
||||
if not args.merged_install:
|
||||
prefix = os.path.join(prefix, pkg_name)
|
||||
for line in get_commands(
|
||||
pkg_name, prefix, args.primary_extension,
|
||||
args.additional_extension
|
||||
):
|
||||
print(line)
|
||||
|
||||
for line in _remove_ending_separators():
|
||||
print(line)
|
||||
|
||||
|
||||
def get_packages(prefix_path, merged_install):
|
||||
"""
|
||||
Find packages based on colcon-specific files created during installation.
|
||||
|
||||
:param Path prefix_path: The install prefix path of all packages
|
||||
:param bool merged_install: The flag if the packages are all installed
|
||||
directly in the prefix or if each package is installed in a subdirectory
|
||||
named after the package
|
||||
:returns: A mapping from the package name to the set of runtime
|
||||
dependencies
|
||||
:rtype: dict
|
||||
"""
|
||||
packages = {}
|
||||
# since importing colcon_core isn't feasible here the following constant
|
||||
# must match colcon_core.location.get_relative_package_index_path()
|
||||
subdirectory = 'share/colcon-core/packages'
|
||||
if merged_install:
|
||||
# return if workspace is empty
|
||||
if not (prefix_path / subdirectory).is_dir():
|
||||
return packages
|
||||
# find all files in the subdirectory
|
||||
for p in (prefix_path / subdirectory).iterdir():
|
||||
if not p.is_file():
|
||||
continue
|
||||
if p.name.startswith('.'):
|
||||
continue
|
||||
add_package_runtime_dependencies(p, packages)
|
||||
else:
|
||||
# for each subdirectory look for the package specific file
|
||||
for p in prefix_path.iterdir():
|
||||
if not p.is_dir():
|
||||
continue
|
||||
if p.name.startswith('.'):
|
||||
continue
|
||||
p = p / subdirectory / p.name
|
||||
if p.is_file():
|
||||
add_package_runtime_dependencies(p, packages)
|
||||
|
||||
# remove unknown dependencies
|
||||
pkg_names = set(packages.keys())
|
||||
for k in packages.keys():
|
||||
packages[k] = {d for d in packages[k] if d in pkg_names}
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
def add_package_runtime_dependencies(path, packages):
|
||||
"""
|
||||
Check the path and if it exists extract the packages runtime dependencies.
|
||||
|
||||
:param Path path: The resource file containing the runtime dependencies
|
||||
:param dict packages: A mapping from package names to the sets of runtime
|
||||
dependencies to add to
|
||||
"""
|
||||
content = path.read_text()
|
||||
dependencies = set(content.split(os.pathsep) if content else [])
|
||||
packages[path.name] = dependencies
|
||||
|
||||
|
||||
def order_packages(packages):
|
||||
"""
|
||||
Order packages topologically.
|
||||
|
||||
:param dict packages: A mapping from package name to the set of runtime
|
||||
dependencies
|
||||
:returns: The package names
|
||||
:rtype: list
|
||||
"""
|
||||
# select packages with no dependencies in alphabetical order
|
||||
to_be_ordered = list(packages.keys())
|
||||
ordered = []
|
||||
while to_be_ordered:
|
||||
pkg_names_without_deps = [
|
||||
name for name in to_be_ordered if not packages[name]]
|
||||
if not pkg_names_without_deps:
|
||||
reduce_cycle_set(packages)
|
||||
raise RuntimeError(
|
||||
'Circular dependency between: ' + ', '.join(sorted(packages)))
|
||||
pkg_names_without_deps.sort()
|
||||
pkg_name = pkg_names_without_deps[0]
|
||||
to_be_ordered.remove(pkg_name)
|
||||
ordered.append(pkg_name)
|
||||
# remove item from dependency lists
|
||||
for k in list(packages.keys()):
|
||||
if pkg_name in packages[k]:
|
||||
packages[k].remove(pkg_name)
|
||||
return ordered
|
||||
|
||||
|
||||
def reduce_cycle_set(packages):
|
||||
"""
|
||||
Reduce the set of packages to the ones part of the circular dependency.
|
||||
|
||||
:param dict packages: A mapping from package name to the set of runtime
|
||||
dependencies which is modified in place
|
||||
"""
|
||||
last_depended = None
|
||||
while len(packages) > 0:
|
||||
# get all remaining dependencies
|
||||
depended = set()
|
||||
for pkg_name, dependencies in packages.items():
|
||||
depended = depended.union(dependencies)
|
||||
# remove all packages which are not dependent on
|
||||
for name in list(packages.keys()):
|
||||
if name not in depended:
|
||||
del packages[name]
|
||||
if last_depended:
|
||||
# if remaining packages haven't changed return them
|
||||
if last_depended == depended:
|
||||
return packages.keys()
|
||||
# otherwise reduce again
|
||||
last_depended = depended
|
||||
|
||||
|
||||
def _include_comments():
|
||||
# skipping comment lines when COLCON_TRACE is not set speeds up the
|
||||
# processing especially on Windows
|
||||
return bool(os.environ.get('COLCON_TRACE'))
|
||||
|
||||
|
||||
def get_commands(pkg_name, prefix, primary_extension, additional_extension):
|
||||
commands = []
|
||||
package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv')
|
||||
if os.path.exists(package_dsv_path):
|
||||
commands += process_dsv_file(
|
||||
package_dsv_path, prefix, primary_extension, additional_extension)
|
||||
return commands
|
||||
|
||||
|
||||
def process_dsv_file(
|
||||
dsv_path, prefix, primary_extension=None, additional_extension=None
|
||||
):
|
||||
commands = []
|
||||
if _include_comments():
|
||||
commands.append(FORMAT_STR_COMMENT_LINE.format_map({
|
||||
'comment': dsv_path}))
|
||||
with open(dsv_path, 'r') as h:
|
||||
content = h.read()
|
||||
lines = content.splitlines()
|
||||
|
||||
basename_map = OrderedDict()
|
||||
for i, line in enumerate(lines):
|
||||
# skip over empty or whitespace-only lines
|
||||
if not line.strip():
|
||||
continue
|
||||
# skip over comments
|
||||
if line.startswith('#'):
|
||||
continue
|
||||
try:
|
||||
type_, remainder = line.split(';', 1)
|
||||
except ValueError:
|
||||
raise RuntimeError(
|
||||
"Line %d in '%s' doesn't contain a semicolon separating the "
|
||||
'type from the arguments' % (i + 1, dsv_path))
|
||||
if type_ != DSV_TYPE_SOURCE:
|
||||
# handle non-source lines
|
||||
try:
|
||||
commands += handle_dsv_types_except_source(
|
||||
type_, remainder, prefix)
|
||||
except RuntimeError as e:
|
||||
raise RuntimeError(
|
||||
"Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e
|
||||
else:
|
||||
# group remaining source lines by basename
|
||||
path_without_ext, ext = os.path.splitext(remainder)
|
||||
if path_without_ext not in basename_map:
|
||||
basename_map[path_without_ext] = set()
|
||||
assert ext.startswith('.')
|
||||
ext = ext[1:]
|
||||
if ext in (primary_extension, additional_extension):
|
||||
basename_map[path_without_ext].add(ext)
|
||||
|
||||
# add the dsv extension to each basename if the file exists
|
||||
for basename, extensions in basename_map.items():
|
||||
if not os.path.isabs(basename):
|
||||
basename = os.path.join(prefix, basename)
|
||||
if os.path.exists(basename + '.dsv'):
|
||||
extensions.add('dsv')
|
||||
|
||||
for basename, extensions in basename_map.items():
|
||||
if not os.path.isabs(basename):
|
||||
basename = os.path.join(prefix, basename)
|
||||
if 'dsv' in extensions:
|
||||
# process dsv files recursively
|
||||
commands += process_dsv_file(
|
||||
basename + '.dsv', prefix, primary_extension=primary_extension,
|
||||
additional_extension=additional_extension)
|
||||
elif primary_extension in extensions and len(extensions) == 1:
|
||||
# source primary-only files
|
||||
commands += [
|
||||
FORMAT_STR_INVOKE_SCRIPT.format_map({
|
||||
'prefix': prefix,
|
||||
'script_path': basename + '.' + primary_extension})]
|
||||
elif additional_extension in extensions:
|
||||
# source non-primary files
|
||||
commands += [
|
||||
FORMAT_STR_INVOKE_SCRIPT.format_map({
|
||||
'prefix': prefix,
|
||||
'script_path': basename + '.' + additional_extension})]
|
||||
|
||||
return commands
|
||||
|
||||
|
||||
def handle_dsv_types_except_source(type_, remainder, prefix):
|
||||
commands = []
|
||||
if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET):
|
||||
try:
|
||||
env_name, value = remainder.split(';', 1)
|
||||
except ValueError:
|
||||
raise RuntimeError(
|
||||
"doesn't contain a semicolon separating the environment name "
|
||||
'from the value')
|
||||
try_prefixed_value = os.path.join(prefix, value) if value else prefix
|
||||
if os.path.exists(try_prefixed_value):
|
||||
value = try_prefixed_value
|
||||
if type_ == DSV_TYPE_SET:
|
||||
commands += _set(env_name, value)
|
||||
elif type_ == DSV_TYPE_SET_IF_UNSET:
|
||||
commands += _set_if_unset(env_name, value)
|
||||
else:
|
||||
assert False
|
||||
elif type_ in (
|
||||
DSV_TYPE_APPEND_NON_DUPLICATE,
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE,
|
||||
DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS
|
||||
):
|
||||
try:
|
||||
env_name_and_values = remainder.split(';')
|
||||
except ValueError:
|
||||
raise RuntimeError(
|
||||
"doesn't contain a semicolon separating the environment name "
|
||||
'from the values')
|
||||
env_name = env_name_and_values[0]
|
||||
values = env_name_and_values[1:]
|
||||
for value in values:
|
||||
if not value:
|
||||
value = prefix
|
||||
elif not os.path.isabs(value):
|
||||
value = os.path.join(prefix, value)
|
||||
if (
|
||||
type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and
|
||||
not os.path.exists(value)
|
||||
):
|
||||
comment = f'skip extending {env_name} with not existing ' \
|
||||
f'path: {value}'
|
||||
if _include_comments():
|
||||
commands.append(FORMAT_STR_COMMENT_LINE.format_map({
|
||||
'comment': comment}))
|
||||
elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE:
|
||||
commands += _append_unique_value(env_name, value)
|
||||
else:
|
||||
commands += _prepend_unique_value(env_name, value)
|
||||
else:
|
||||
raise RuntimeError(
|
||||
'contains an unknown environment hook type: ' + type_)
|
||||
return commands
|
||||
|
||||
|
||||
env_state = {}
|
||||
|
||||
|
||||
def _append_unique_value(name, value):
|
||||
if name not in env_state:
|
||||
if os.environ.get(name):
|
||||
env_state[name] = set(os.environ[name].split(os.pathsep))
|
||||
else:
|
||||
env_state[name] = set()
|
||||
# Append even if the variable has not been set yet, in case a shell script
|
||||
# sets the same variable without the knowledge of this Python script.
|
||||
# Later, _remove_ending_separators() will cleanup any unintentional
|
||||
# leading separator.
|
||||
extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': extend + value})
|
||||
if value not in env_state[name]:
|
||||
env_state[name].add(value)
|
||||
else:
|
||||
if not _include_comments():
|
||||
return []
|
||||
line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
|
||||
return [line]
|
||||
|
||||
|
||||
def _prepend_unique_value(name, value):
|
||||
if name not in env_state:
|
||||
if os.environ.get(name):
|
||||
env_state[name] = set(os.environ[name].split(os.pathsep))
|
||||
else:
|
||||
env_state[name] = set()
|
||||
# Prepend even if the variable has not been set yet, in case a shell script
|
||||
# sets the same variable without the knowledge of this Python script.
|
||||
# Later, _remove_ending_separators() will cleanup any unintentional
|
||||
# trailing separator.
|
||||
extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name})
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': value + extend})
|
||||
if value not in env_state[name]:
|
||||
env_state[name].add(value)
|
||||
else:
|
||||
if not _include_comments():
|
||||
return []
|
||||
line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
|
||||
return [line]
|
||||
|
||||
|
||||
# generate commands for removing prepended underscores
|
||||
def _remove_ending_separators():
|
||||
# do nothing if the shell extension does not implement the logic
|
||||
if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None:
|
||||
return []
|
||||
|
||||
commands = []
|
||||
for name in env_state:
|
||||
# skip variables that already had values before this script started
|
||||
# appending/prepending
|
||||
if name in os.environ:
|
||||
continue
|
||||
commands += [
|
||||
FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}),
|
||||
FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})]
|
||||
return commands
|
||||
|
||||
|
||||
def _set(name, value):
|
||||
env_state[name] = value
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': value})
|
||||
return [line]
|
||||
|
||||
|
||||
def _set_if_unset(name, value):
|
||||
line = FORMAT_STR_SET_ENV_VAR.format_map(
|
||||
{'name': name, 'value': value})
|
||||
if env_state.get(name, os.environ.get(name)):
|
||||
line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
|
||||
return [line]
|
||||
|
||||
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
try:
|
||||
rc = main()
|
||||
except RuntimeError as e:
|
||||
print(str(e), file=sys.stderr)
|
||||
rc = 1
|
||||
sys.exit(rc)
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
#! /usr/bin/env python3
|
||||
import rclpy
|
||||
from rclpy.node import Node
|
||||
from rclpy.qos import QoSProfile, ReliabilityPolicy, QoSDurabilityPolicy
|
||||
from geometry_msgs.msg import Twist
|
||||
|
||||
class CmdVelRemapper(Node):
|
||||
def __init__(self):
|
||||
super().__init__('cmd_vel_remapper')
|
||||
|
||||
qos_profile = QoSProfile(
|
||||
reliability=ReliabilityPolicy.RELIABLE,
|
||||
durability=QoSDurabilityPolicy.VOLATILE,
|
||||
depth=10
|
||||
)
|
||||
|
||||
# Create a subscriber for the cmd_vel topic
|
||||
self.subscription = self.create_subscription(
|
||||
Twist,
|
||||
'cmd_vel',
|
||||
self.cmd_vel_callback,
|
||||
qos_profile
|
||||
)
|
||||
self.subscription # Prevent unused variable warning
|
||||
|
||||
# Create a publisher for the bcr_bot/cmd_vel topic
|
||||
self.publisher = self.create_publisher(Twist, 'bcr_bot/cmd_vel', qos_profile)
|
||||
|
||||
def cmd_vel_callback(self, msg):
|
||||
# Republish the received message to bcr_bot/cmd_vel
|
||||
self.publisher.publish(msg)
|
||||
|
||||
def main(args=None):
|
||||
rclpy.init(args=args)
|
||||
|
||||
cmd_vel_remapper = CmdVelRemapper()
|
||||
|
||||
try:
|
||||
rclpy.spin(cmd_vel_remapper)
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
finally:
|
||||
cmd_vel_remapper.destroy_node()
|
||||
rclpy.shutdown()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
ament_index_python;launch;launch_ros;robot_state_publisher;xacro
|
||||
|
|
@ -0,0 +1 @@
|
|||
/workspace/install/bcr_bot:/opt/ros/humble
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# generated from ament/cmake/core/templates/nameConfig-version.cmake.in
|
||||
set(PACKAGE_VERSION "1.0.2")
|
||||
|
||||
set(PACKAGE_VERSION_EXACT False)
|
||||
set(PACKAGE_VERSION_COMPATIBLE False)
|
||||
|
||||
if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}")
|
||||
set(PACKAGE_VERSION_EXACT True)
|
||||
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||
endif()
|
||||
|
||||
if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}")
|
||||
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||
endif()
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
# generated from ament/cmake/core/templates/nameConfig.cmake.in
|
||||
|
||||
# prevent multiple inclusion
|
||||
if(_bcr_bot_CONFIG_INCLUDED)
|
||||
# ensure to keep the found flag the same
|
||||
if(NOT DEFINED bcr_bot_FOUND)
|
||||
# explicitly set it to FALSE, otherwise CMake will set it to TRUE
|
||||
set(bcr_bot_FOUND FALSE)
|
||||
elseif(NOT bcr_bot_FOUND)
|
||||
# use separate condition to avoid uninitialized variable warning
|
||||
set(bcr_bot_FOUND FALSE)
|
||||
endif()
|
||||
return()
|
||||
endif()
|
||||
set(_bcr_bot_CONFIG_INCLUDED TRUE)
|
||||
|
||||
# output package information
|
||||
if(NOT bcr_bot_FIND_QUIETLY)
|
||||
message(STATUS "Found bcr_bot: 1.0.2 (${bcr_bot_DIR})")
|
||||
endif()
|
||||
|
||||
# warn when using a deprecated package
|
||||
if(NOT "" STREQUAL "")
|
||||
set(_msg "Package 'bcr_bot' is deprecated")
|
||||
# append custom deprecation text if available
|
||||
if(NOT "" STREQUAL "TRUE")
|
||||
set(_msg "${_msg} ()")
|
||||
endif()
|
||||
# optionally quiet the deprecation message
|
||||
if(NOT ${bcr_bot_DEPRECATED_QUIET})
|
||||
message(DEPRECATION "${_msg}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# flag package as ament-based to distinguish it after being find_package()-ed
|
||||
set(bcr_bot_FOUND_AMENT_PACKAGE TRUE)
|
||||
|
||||
# include all config extra files
|
||||
set(_extras "")
|
||||
foreach(_extra ${_extras})
|
||||
include("${bcr_bot_DIR}/${_extra}")
|
||||
endforeach()
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
image: bcr_map.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-14.3, -15.5, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
slam_toolbox:
|
||||
ros__parameters:
|
||||
|
||||
# Plugin params
|
||||
solver_plugin: solver_plugins::CeresSolver
|
||||
ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
|
||||
ceres_preconditioner: SCHUR_JACOBI
|
||||
ceres_trust_strategy: LEVENBERG_MARQUARDT
|
||||
ceres_dogleg_type: TRADITIONAL_DOGLEG
|
||||
ceres_loss_function: None
|
||||
|
||||
# ROS Parameters
|
||||
odom_frame: odom
|
||||
map_frame: map
|
||||
base_frame: base_link
|
||||
scan_topic: /bcr_bot/scan
|
||||
use_map_saver: true
|
||||
mode: localization
|
||||
|
||||
# if you'd like to immediately start continuing a map at a given pose
|
||||
# or at the dock, but they are mutually exclusive, if pose is given
|
||||
# will use pose
|
||||
#map_file_name: test_steve
|
||||
# map_start_pose: [0.0, 0.0, 0.0]
|
||||
#map_start_at_dock: true
|
||||
|
||||
debug_logging: false
|
||||
throttle_scans: 1
|
||||
transform_publish_period: 0.02 #if 0 never publishes odometry
|
||||
map_update_interval: 5.0
|
||||
resolution: 0.05
|
||||
min_laser_range: 0.0 #for rastering images
|
||||
max_laser_range: 20.0 #for rastering images
|
||||
minimum_time_interval: 0.5
|
||||
transform_timeout: 0.2
|
||||
tf_buffer_duration: 30.0
|
||||
stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
|
||||
enable_interactive_mode: true
|
||||
|
||||
# General Parameters
|
||||
use_scan_matching: true
|
||||
use_scan_barycenter: true
|
||||
minimum_travel_distance: 0.5
|
||||
minimum_travel_heading: 0.5
|
||||
scan_buffer_size: 10
|
||||
scan_buffer_maximum_scan_distance: 10.0
|
||||
link_match_minimum_response_fine: 0.1
|
||||
link_scan_maximum_distance: 1.5
|
||||
loop_search_maximum_distance: 3.0
|
||||
do_loop_closing: true
|
||||
loop_match_minimum_chain_size: 10
|
||||
loop_match_maximum_variance_coarse: 3.0
|
||||
loop_match_minimum_response_coarse: 0.35
|
||||
loop_match_minimum_response_fine: 0.45
|
||||
|
||||
# Correlation Parameters - Correlation Parameters
|
||||
correlation_search_space_dimension: 0.5
|
||||
correlation_search_space_resolution: 0.01
|
||||
correlation_search_space_smear_deviation: 0.1
|
||||
|
||||
# Correlation Parameters - Loop Closure Parameters
|
||||
loop_search_space_dimension: 8.0
|
||||
loop_search_space_resolution: 0.05
|
||||
loop_search_space_smear_deviation: 0.03
|
||||
|
||||
# Scan Matcher Parameters
|
||||
distance_variance_penalty: 0.5
|
||||
angle_variance_penalty: 1.0
|
||||
|
||||
fine_search_angle_offset: 0.00349
|
||||
coarse_search_angle_offset: 0.349
|
||||
coarse_angle_resolution: 0.0349
|
||||
minimum_angle_penalty: 0.9
|
||||
minimum_distance_penalty: 0.5
|
||||
use_response_expansion: true
|
||||
|
|
@ -0,0 +1,323 @@
|
|||
amcl:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
alpha1: 0.2
|
||||
alpha2: 0.2
|
||||
alpha3: 0.2
|
||||
alpha4: 0.2
|
||||
alpha5: 0.2
|
||||
base_frame_id: "base_link"
|
||||
beam_skip_distance: 0.5
|
||||
beam_skip_error_threshold: 0.9
|
||||
beam_skip_threshold: 0.3
|
||||
do_beamskip: false
|
||||
global_frame_id: "map"
|
||||
lambda_short: 0.1
|
||||
laser_likelihood_max_dist: 2.0
|
||||
laser_max_range: 100.0
|
||||
laser_min_range: -1.0
|
||||
laser_model_type: "likelihood_field"
|
||||
max_beams: 60
|
||||
max_particles: 2000
|
||||
min_particles: 500
|
||||
odom_frame_id: "odom"
|
||||
pf_err: 0.05
|
||||
pf_z: 0.99
|
||||
recovery_alpha_fast: 0.0
|
||||
recovery_alpha_slow: 0.0
|
||||
resample_interval: 1
|
||||
robot_model_type: "nav2_amcl::DifferentialMotionModel"
|
||||
save_pose_rate: 0.5
|
||||
sigma_hit: 0.2
|
||||
tf_broadcast: true
|
||||
transform_tolerance: 1.0
|
||||
update_min_a: 0.2
|
||||
update_min_d: 0.25
|
||||
z_hit: 0.5
|
||||
z_max: 0.05
|
||||
z_rand: 0.5
|
||||
z_short: 0.05
|
||||
scan_topic: /bcr_bot/scan
|
||||
|
||||
|
||||
bt_navigator:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
global_frame: map
|
||||
robot_base_frame: base_link
|
||||
odom_topic: /bcr_bot/odom
|
||||
bt_loop_duration: 10
|
||||
default_server_timeout: 20
|
||||
# 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
|
||||
# nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
|
||||
# nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
|
||||
# They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
|
||||
|
||||
# plugin_lib_names is used to add custom BT plugins to the executor (vector of strings).
|
||||
# Built-in plugins are added automatically
|
||||
# plugin_lib_names: []
|
||||
|
||||
# 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
|
||||
# nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
|
||||
#/home/tiger/new_nav2/src/bcr_bot_nav2/config/tree.xml
|
||||
# They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
|
||||
plugin_lib_names:
|
||||
- nav2_compute_path_to_pose_action_bt_node
|
||||
- nav2_compute_path_through_poses_action_bt_node
|
||||
- nav2_smooth_path_action_bt_node
|
||||
- nav2_follow_path_action_bt_node
|
||||
- nav2_spin_action_bt_node
|
||||
- nav2_wait_action_bt_node
|
||||
- nav2_assisted_teleop_action_bt_node
|
||||
- nav2_back_up_action_bt_node
|
||||
- nav2_drive_on_heading_bt_node
|
||||
- nav2_clear_costmap_service_bt_node
|
||||
- nav2_is_stuck_condition_bt_node
|
||||
- nav2_goal_reached_condition_bt_node
|
||||
- nav2_goal_updated_condition_bt_node
|
||||
- nav2_globally_updated_goal_condition_bt_node
|
||||
- nav2_is_path_valid_condition_bt_node
|
||||
- nav2_initial_pose_received_condition_bt_node
|
||||
- nav2_reinitialize_global_localization_service_bt_node
|
||||
- nav2_rate_controller_bt_node
|
||||
- nav2_distance_controller_bt_node
|
||||
- nav2_speed_controller_bt_node
|
||||
- nav2_truncate_path_action_bt_node
|
||||
- nav2_truncate_path_local_action_bt_node
|
||||
- nav2_goal_updater_node_bt_node
|
||||
- nav2_recovery_node_bt_node
|
||||
- nav2_pipeline_sequence_bt_node
|
||||
- nav2_round_robin_node_bt_node
|
||||
- nav2_transform_available_condition_bt_node
|
||||
- nav2_time_expired_condition_bt_node
|
||||
- nav2_path_expiring_timer_condition
|
||||
- nav2_distance_traveled_condition_bt_node
|
||||
- nav2_single_trigger_bt_node
|
||||
- nav2_goal_updated_controller_bt_node
|
||||
- nav2_is_battery_low_condition_bt_node
|
||||
- nav2_navigate_through_poses_action_bt_node
|
||||
- nav2_navigate_to_pose_action_bt_node
|
||||
- nav2_remove_passed_goals_action_bt_node
|
||||
- nav2_planner_selector_bt_node
|
||||
- nav2_controller_selector_bt_node
|
||||
- nav2_goal_checker_selector_bt_node
|
||||
- nav2_controller_cancel_bt_node
|
||||
- nav2_path_longer_on_approach_bt_node
|
||||
- nav2_wait_cancel_bt_node
|
||||
- nav2_spin_cancel_bt_node
|
||||
- nav2_back_up_cancel_bt_node
|
||||
- nav2_assisted_teleop_cancel_bt_node
|
||||
- nav2_drive_on_heading_cancel_bt_node
|
||||
- nav2_is_battery_charging_condition_bt_node
|
||||
|
||||
|
||||
bt_navigator_navigate_through_poses_rclcpp_node:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
|
||||
bt_navigator_navigate_to_pose_rclcpp_node:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
|
||||
controller_server:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
controller_frequency: 20.0
|
||||
min_x_velocity_threshold: 0.001
|
||||
min_y_velocity_threshold: 0.5
|
||||
min_theta_velocity_threshold: 0.001
|
||||
progress_checker_plugins: ["progress_checker"] # progress_checker_plugin: "progress_checker" For Humble and older
|
||||
goal_checker_plugins: ["goal_checker"]
|
||||
controller_plugins: ["FollowPath"]
|
||||
|
||||
progress_checker:
|
||||
plugin: "nav2_controller::SimpleProgressChecker"
|
||||
required_movement_radius: 0.5
|
||||
movement_time_allowance: 10.0
|
||||
goal_checker:
|
||||
plugin: "nav2_controller::SimpleGoalChecker"
|
||||
xy_goal_tolerance: 0.25
|
||||
yaw_goal_tolerance: 0.25
|
||||
stateful: True
|
||||
FollowPath:
|
||||
plugin: "nav2_rotation_shim_controller::RotationShimController"
|
||||
primary_controller: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
|
||||
angular_dist_threshold: 0.785
|
||||
forward_sampling_distance: 0.5
|
||||
rotate_to_heading_angular_vel: 1.8
|
||||
max_angular_accel: 3.2
|
||||
simulate_ahead_time: 1.0
|
||||
rotate_to_goal_heading: false
|
||||
|
||||
# Primary controller params can be placed here below
|
||||
# ...
|
||||
|
||||
local_costmap:
|
||||
local_costmap:
|
||||
ros__parameters:
|
||||
update_frequency: 5.0
|
||||
publish_frequency: 2.0
|
||||
global_frame: odom
|
||||
robot_base_frame: base_link
|
||||
use_sim_time: True
|
||||
rolling_window: true
|
||||
width: 3
|
||||
height: 3
|
||||
resolution: 0.05
|
||||
robot_radius: 0.22
|
||||
plugins: ["voxel_layer", "inflation_layer"]
|
||||
inflation_layer:
|
||||
plugin: "nav2_costmap_2d::InflationLayer"
|
||||
cost_scaling_factor: 3.0
|
||||
inflation_radius: 0.55
|
||||
voxel_layer:
|
||||
plugin: "nav2_costmap_2d::VoxelLayer"
|
||||
enabled: True
|
||||
publish_voxel_map: True
|
||||
origin_z: 0.0
|
||||
z_resolution: 0.05
|
||||
z_voxels: 16
|
||||
max_obstacle_height: 2.0
|
||||
mark_threshold: 0
|
||||
observation_sources: scan
|
||||
scan:
|
||||
topic: /bcr_bot/scan
|
||||
max_obstacle_height: 2.0
|
||||
clearing: True
|
||||
marking: True
|
||||
data_type: "LaserScan"
|
||||
raytrace_max_range: 3.0
|
||||
raytrace_min_range: 0.0
|
||||
obstacle_max_range: 2.5
|
||||
obstacle_min_range: 0.0
|
||||
static_layer:
|
||||
plugin: "nav2_costmap_2d::StaticLayer"
|
||||
map_subscribe_transient_local: True
|
||||
always_send_full_costmap: True
|
||||
|
||||
global_costmap:
|
||||
global_costmap:
|
||||
ros__parameters:
|
||||
update_frequency: 1.0
|
||||
publish_frequency: 1.0
|
||||
global_frame: map
|
||||
robot_base_frame: base_link
|
||||
use_sim_time: True
|
||||
robot_radius: 0.22
|
||||
resolution: 0.05
|
||||
track_unknown_space: true
|
||||
plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
|
||||
obstacle_layer:
|
||||
plugin: "nav2_costmap_2d::ObstacleLayer"
|
||||
enabled: True
|
||||
observation_sources: scan
|
||||
scan:
|
||||
topic: /bcr_bot/scan
|
||||
max_obstacle_height: 2.0
|
||||
clearing: True
|
||||
marking: True
|
||||
data_type: "LaserScan"
|
||||
raytrace_max_range: 3.0
|
||||
raytrace_min_range: 0.0
|
||||
obstacle_max_range: 2.5
|
||||
obstacle_min_range: 0.0
|
||||
static_layer:
|
||||
plugin: "nav2_costmap_2d::StaticLayer"
|
||||
map_subscribe_transient_local: True
|
||||
inflation_layer:
|
||||
plugin: "nav2_costmap_2d::InflationLayer"
|
||||
cost_scaling_factor: 3.0
|
||||
inflation_radius: 0.55
|
||||
always_send_full_costmap: True
|
||||
|
||||
map_server:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
# Overridden in launch by the "map" launch configuration or provided default value.
|
||||
# To use in yaml, remove the default "map" value in the tb3_simulation_launch.py file & provide full path to map below.
|
||||
yaml_filename: ""
|
||||
|
||||
map_saver:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
save_map_timeout: 5.0
|
||||
free_thresh_default: 0.25
|
||||
occupied_thresh_default: 0.65
|
||||
map_subscribe_transient_local: True
|
||||
|
||||
planner_server:
|
||||
ros__parameters:
|
||||
expected_planner_frequency: 0.0000000000000001
|
||||
use_sim_time: True
|
||||
planner_plugins: ["GridBased"]
|
||||
GridBased:
|
||||
plugin: "nav2_navfn_planner/NavfnPlanner"
|
||||
tolerance: 0.5
|
||||
use_astar: false
|
||||
allow_unknown: true
|
||||
|
||||
smoother_server:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
smoother_plugins: ["simple_smoother"]
|
||||
simple_smoother:
|
||||
plugin: "nav2_smoother::SimpleSmoother"
|
||||
tolerance: 1.0e-10
|
||||
max_its: 1000
|
||||
do_refinement: True
|
||||
|
||||
behavior_server:
|
||||
ros__parameters:
|
||||
costmap_topic: local_costmap/costmap_raw
|
||||
footprint_topic: local_costmap/published_footprint
|
||||
cycle_frequency: 10.0
|
||||
behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
|
||||
spin:
|
||||
plugin: "nav2_behaviors/Spin"
|
||||
backup:
|
||||
plugin: "nav2_behaviors/BackUp"
|
||||
drive_on_heading:
|
||||
plugin: "nav2_behaviors/DriveOnHeading"
|
||||
wait:
|
||||
plugin: "nav2_behaviors/Wait"
|
||||
assisted_teleop:
|
||||
plugin: "nav2_behaviors/AssistedTeleop"
|
||||
global_frame: odom
|
||||
robot_base_frame: base_link
|
||||
transform_tolerance: 0.1
|
||||
use_sim_time: true
|
||||
simulate_ahead_time: 2.0
|
||||
max_rotational_vel: 1.0
|
||||
min_rotational_vel: 0.4
|
||||
rotational_acc_lim: 3.2
|
||||
|
||||
robot_state_publisher:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
|
||||
waypoint_follower:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
loop_rate: 20
|
||||
stop_on_failure: false
|
||||
waypoint_task_executor_plugin: "wait_at_waypoint"
|
||||
wait_at_waypoint:
|
||||
plugin: "nav2_waypoint_follower::WaitAtWaypoint"
|
||||
enabled: True
|
||||
waypoint_pause_duration: 200
|
||||
|
||||
velocity_smoother:
|
||||
ros__parameters:
|
||||
use_sim_time: True
|
||||
smoothing_frequency: 20.0
|
||||
scale_velocities: False
|
||||
feedback: "OPEN_LOOP"
|
||||
max_velocity: [0.26, 0.0, 1.0]
|
||||
min_velocity: [-0.26, 0.0, -1.0]
|
||||
max_accel: [2.5, 0.0, 3.2]
|
||||
max_decel: [-2.5, 0.0, -3.2]
|
||||
odom_topic: "odom"
|
||||
odom_duration: 0.1
|
||||
deadband_velocity: [0.0, 0.0, 0.0]
|
||||
velocity_timeout: 1.0
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
prepend-non-duplicate;AMENT_PREFIX_PATH;
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# copied from
|
||||
# ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh
|
||||
|
||||
ament_prepend_unique_value AMENT_PREFIX_PATH "$AMENT_CURRENT_PREFIX"
|
||||
|
|
@ -0,0 +1 @@
|
|||
prepend-non-duplicate-if-exists;PATH;bin
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# copied from ament_cmake_core/cmake/environment_hooks/environment/path.sh
|
||||
|
||||
if [ -d "$AMENT_CURRENT_PREFIX/bin" ]; then
|
||||
ament_prepend_unique_value PATH "$AMENT_CURRENT_PREFIX/bin"
|
||||
fi
|
||||
|
|
@ -0,0 +1 @@
|
|||
prepend-non-duplicate;CMAKE_PREFIX_PATH;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
|
||||
|
||||
colcon_prepend_unique_value CMAKE_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# generated from colcon_core/shell/template/hook_prepend_value.sh.em
|
||||
|
||||
_colcon_prepend_unique_value CMAKE_PREFIX_PATH "$COLCON_CURRENT_PREFIX"
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from os.path import join
|
||||
import xacro
|
||||
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument
|
||||
from launch.substitutions import LaunchConfiguration, Command
|
||||
from launch.substitutions import PythonExpression
|
||||
|
||||
from launch_ros.actions import Node
|
||||
|
||||
def get_xacro_to_doc(xacro_file_path, mappings):
|
||||
doc = xacro.parse(open(xacro_file_path))
|
||||
xacro.process_doc(doc, mappings=mappings)
|
||||
return doc
|
||||
|
||||
def generate_launch_description():
|
||||
# Get bcr_bot package's share directory path
|
||||
bcr_bot_path = get_package_share_directory('bcr_bot')
|
||||
|
||||
# Retrieve launch configuration arguments
|
||||
position_x = LaunchConfiguration("position_x")
|
||||
position_y = LaunchConfiguration("position_y")
|
||||
orientation_yaw = LaunchConfiguration("orientation_yaw")
|
||||
camera_enabled = LaunchConfiguration("camera_enabled", default=True)
|
||||
stereo_camera_enabled = LaunchConfiguration("stereo_camera_enabled", default=False)
|
||||
two_d_lidar_enabled = LaunchConfiguration("two_d_lidar_enabled", default=True)
|
||||
odometry_source = LaunchConfiguration("odometry_source", default="world")
|
||||
robot_namespace = LaunchConfiguration("robot_namespace", default='bcr_bot')
|
||||
|
||||
# Path to the Xacro file
|
||||
xacro_path = join(bcr_bot_path, 'urdf', 'bcr_bot.xacro')
|
||||
#doc = get_xacro_to_doc(xacro_path, {"wheel_odom_topic": "odom", "sim_gazebo": "true", "two_d_lidar_enabled": "true", "camera_enabled": "true"})
|
||||
|
||||
# Launch the robot_state_publisher node
|
||||
robot_state_publisher = Node(
|
||||
package='robot_state_publisher',
|
||||
executable='robot_state_publisher',
|
||||
name='robot_state_publisher',
|
||||
output='screen',
|
||||
parameters=[
|
||||
{'robot_description': Command( \
|
||||
['xacro ', xacro_path,
|
||||
' camera_enabled:=', camera_enabled,
|
||||
' stereo_camera_enabled:=', stereo_camera_enabled,
|
||||
' two_d_lidar_enabled:=', two_d_lidar_enabled,
|
||||
' sim_gazebo:=', "true",
|
||||
' odometry_source:=', odometry_source,
|
||||
' robot_namespace:=', robot_namespace,
|
||||
])}],
|
||||
remappings=[
|
||||
('/joint_states', PythonExpression(['"', robot_namespace, '/joint_states"'])),
|
||||
]
|
||||
)
|
||||
|
||||
# Launch the spawn_entity node to spawn the robot in Gazebo
|
||||
spawn_entity = Node(
|
||||
package='gazebo_ros',
|
||||
executable='spawn_entity.py',
|
||||
output='screen',
|
||||
arguments=[
|
||||
'-topic', "/robot_description",
|
||||
'-entity', PythonExpression(['"', robot_namespace, '_robot"']), #default enitity name _bcr_bot
|
||||
'-z', "0.28",
|
||||
'-x', position_x,
|
||||
'-y', position_y,
|
||||
'-Y', orientation_yaw
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
|
||||
return LaunchDescription([
|
||||
# Declare launch arguments
|
||||
DeclareLaunchArgument("camera_enabled", default_value = camera_enabled),
|
||||
DeclareLaunchArgument("stereo_camera_enabled", default_value = stereo_camera_enabled),
|
||||
DeclareLaunchArgument("two_d_lidar_enabled", default_value = two_d_lidar_enabled),
|
||||
DeclareLaunchArgument("position_x", default_value="0.0"),
|
||||
DeclareLaunchArgument("position_y", default_value="0.0"),
|
||||
DeclareLaunchArgument("orientation_yaw", default_value="0.0"),
|
||||
DeclareLaunchArgument("odometry_source", default_value = odometry_source),
|
||||
DeclareLaunchArgument("robot_namespace", default_value = robot_namespace),
|
||||
# DeclareLaunchArgument('robot_description', default_value=doc.toxml()),
|
||||
robot_state_publisher,
|
||||
spawn_entity
|
||||
])
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from os.path import join
|
||||
from xacro import parse, process_doc
|
||||
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument
|
||||
from launch.substitutions import LaunchConfiguration, Command
|
||||
|
||||
from launch_ros.actions import Node
|
||||
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
|
||||
def get_xacro_to_doc(xacro_file_path, mappings):
|
||||
doc = parse(open(xacro_file_path))
|
||||
process_doc(doc, mappings=mappings)
|
||||
return doc
|
||||
|
||||
def generate_launch_description():
|
||||
|
||||
bcr_bot_path = get_package_share_directory("bcr_bot")
|
||||
position_x = LaunchConfiguration("position_x")
|
||||
position_y = LaunchConfiguration("position_y")
|
||||
orientation_yaw = LaunchConfiguration("orientation_yaw")
|
||||
camera_enabled = LaunchConfiguration("camera_enabled", default=True)
|
||||
stereo_camera_enabled = LaunchConfiguration("stereo_camera_enabled", default=False)
|
||||
two_d_lidar_enabled = LaunchConfiguration("two_d_lidar_enabled", default=True)
|
||||
odometry_source = LaunchConfiguration("odometry_source")
|
||||
|
||||
# robot_description_content = get_xacro_to_doc(
|
||||
# join(bcr_bot_path, "urdf", "bcr_bot.xacro"),
|
||||
# {"sim_gz": "true",
|
||||
# "two_d_lidar_enabled": "true",
|
||||
# "conveyor_enabled": "false",
|
||||
# "camera_enabled": "true"
|
||||
# }
|
||||
# ).toxml()
|
||||
|
||||
robot_state_publisher = Node(
|
||||
package="robot_state_publisher",
|
||||
executable="robot_state_publisher",
|
||||
name="robot_state_publisher",
|
||||
parameters=[
|
||||
{'robot_description': Command( \
|
||||
['xacro ', join(bcr_bot_path, 'urdf/bcr_bot.xacro'),
|
||||
' camera_enabled:=', camera_enabled,
|
||||
' stereo_camera_enabled:=', stereo_camera_enabled,
|
||||
' two_d_lidar_enabled:=', two_d_lidar_enabled,
|
||||
' odometry_source:=', odometry_source,
|
||||
' sim_gz:=', "true"
|
||||
])}],
|
||||
remappings=[
|
||||
('/joint_states', 'bcr_bot/joint_states'),
|
||||
]
|
||||
)
|
||||
|
||||
gz_spawn_entity = Node(
|
||||
package="ros_gz_sim",
|
||||
executable="create",
|
||||
arguments=[
|
||||
"-topic", "/robot_description",
|
||||
"-name", "bcr_bot",
|
||||
"-allow_renaming", "true",
|
||||
"-z", "0.28",
|
||||
"-x", position_x,
|
||||
"-y", position_y,
|
||||
"-Y", orientation_yaw
|
||||
]
|
||||
)
|
||||
|
||||
gz_ros2_bridge = Node(
|
||||
package="ros_gz_bridge",
|
||||
executable="parameter_bridge",
|
||||
arguments=[
|
||||
"/cmd_vel@geometry_msgs/msg/Twist@gz.msgs.Twist",
|
||||
"/clock@rosgraph_msgs/msg/Clock[gz.msgs.Clock",
|
||||
"/odom@nav_msgs/msg/Odometry[gz.msgs.Odometry",
|
||||
"/tf@tf2_msgs/msg/TFMessage[gz.msgs.Pose_V",
|
||||
"/scan@sensor_msgs/msg/LaserScan[gz.msgs.LaserScan",
|
||||
"/kinect_camera@sensor_msgs/msg/Image[gz.msgs.Image",
|
||||
"/stereo_camera/left/image_raw@sensor_msgs/msg/Image[gz.msgs.Image",
|
||||
"stereo_camera/right/image_raw@sensor_msgs/msg/Image[gz.msgs.Image",
|
||||
"kinect_camera/camera_info@sensor_msgs/msg/CameraInfo[gz.msgs.CameraInfo",
|
||||
"stereo_camera/left/camera_info@sensor_msgs/msg/CameraInfo[gz.msgs.CameraInfo",
|
||||
"stereo_camera/right/camera_info@sensor_msgs/msg/CameraInfo[gz.msgs.CameraInfo",
|
||||
"/kinect_camera/points@sensor_msgs/msg/PointCloud2[gz.msgs.PointCloudPacked",
|
||||
"/imu@sensor_msgs/msg/Imu[gz.msgs.IMU",
|
||||
"/world/default/model/bcr_bot/joint_state@sensor_msgs/msg/JointState[gz.msgs.Model"
|
||||
],
|
||||
remappings=[
|
||||
('/world/default/model/bcr_bot/joint_state', 'bcr_bot/joint_states'),
|
||||
('/odom', 'bcr_bot/odom'),
|
||||
('/scan', 'bcr_bot/scan'),
|
||||
('/kinect_camera', 'bcr_bot/kinect_camera'),
|
||||
('/stereo_camera/left/image_raw', 'bcr_bot/stereo_camera/left/image_raw'),
|
||||
('/stereo_camera/right/image_raw', 'bcr_bot/stereo_camera/right/image_raw'),
|
||||
('/imu', 'bcr_bot/imu'),
|
||||
('/cmd_vel', 'bcr_bot/cmd_vel'),
|
||||
('kinect_camera/camera_info', 'bcr_bot/kinect_camera/camera_info'),
|
||||
('stereo_camera/left/camera_info', 'bcr_bot/stereo_camera/left/camera_info'),
|
||||
('stereo_camera/right/camera_info', 'bcr_bot/stereo_camera/right/camera_info'),
|
||||
('/kinect_camera/points', 'bcr_bot/kinect_camera/points'),
|
||||
]
|
||||
)
|
||||
|
||||
transform_publisher = Node(
|
||||
package="tf2_ros",
|
||||
executable="static_transform_publisher",
|
||||
arguments = ["--x", "0.0",
|
||||
"--y", "0.0",
|
||||
"--z", "0.0",
|
||||
"--yaw", "0.0",
|
||||
"--pitch", "0.0",
|
||||
"--roll", "0.0",
|
||||
"--frame-id", "kinect_camera",
|
||||
"--child-frame-id", "bcr_bot/base_footprint/kinect_camera"]
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
DeclareLaunchArgument("camera_enabled", default_value = camera_enabled),
|
||||
DeclareLaunchArgument("stereo_camera_enabled", default_value = stereo_camera_enabled),
|
||||
DeclareLaunchArgument("two_d_lidar_enabled", default_value = two_d_lidar_enabled),
|
||||
DeclareLaunchArgument("position_x", default_value="0.0"),
|
||||
DeclareLaunchArgument("position_y", default_value="0.0"),
|
||||
DeclareLaunchArgument("orientation_yaw", default_value="0.0"),
|
||||
DeclareLaunchArgument("odometry_source", default_value="world"),
|
||||
robot_state_publisher,
|
||||
gz_spawn_entity, transform_publisher, gz_ros2_bridge
|
||||
])
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from os.path import join
|
||||
from xacro import parse, process_doc
|
||||
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument
|
||||
from launch.substitutions import LaunchConfiguration, Command
|
||||
|
||||
from launch_ros.actions import Node
|
||||
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
|
||||
def get_xacro_to_doc(xacro_file_path, mappings):
|
||||
doc = parse(open(xacro_file_path))
|
||||
process_doc(doc, mappings=mappings)
|
||||
return doc
|
||||
|
||||
def generate_launch_description():
|
||||
|
||||
bcr_bot_path = get_package_share_directory("bcr_bot")
|
||||
position_x = LaunchConfiguration("position_x")
|
||||
position_y = LaunchConfiguration("position_y")
|
||||
orientation_yaw = LaunchConfiguration("orientation_yaw")
|
||||
camera_enabled = LaunchConfiguration("camera_enabled", default=True)
|
||||
stereo_camera_enabled = LaunchConfiguration("stereo_camera_enabled", default=False)
|
||||
two_d_lidar_enabled = LaunchConfiguration("two_d_lidar_enabled", default=True)
|
||||
odometry_source = LaunchConfiguration("odometry_source")
|
||||
|
||||
# robot_description_content = get_xacro_to_doc(
|
||||
# join(bcr_bot_path, "urdf", "bcr_bot.xacro"),
|
||||
# {"sim_gz": "true",
|
||||
# "two_d_lidar_enabled": "true",
|
||||
# "conveyor_enabled": "false",
|
||||
# "camera_enabled": "true"
|
||||
# }
|
||||
# ).toxml()
|
||||
|
||||
robot_state_publisher = Node(
|
||||
package="robot_state_publisher",
|
||||
executable="robot_state_publisher",
|
||||
name="robot_state_publisher",
|
||||
parameters=[
|
||||
{'robot_description': Command( \
|
||||
['xacro ', join(bcr_bot_path, 'urdf/bcr_bot.xacro'),
|
||||
' camera_enabled:=', camera_enabled,
|
||||
' stereo_camera_enabled:=', stereo_camera_enabled,
|
||||
' two_d_lidar_enabled:=', two_d_lidar_enabled,
|
||||
' odometry_source:=', odometry_source,
|
||||
' sim_ign:=', "true"
|
||||
])}],
|
||||
remappings=[
|
||||
('/joint_states', 'bcr_bot/joint_states'),
|
||||
]
|
||||
)
|
||||
|
||||
gz_spawn_entity = Node(
|
||||
package="ros_gz_sim",
|
||||
executable="create",
|
||||
arguments=[
|
||||
"-topic", "/robot_description",
|
||||
"-name", "bcr_bot",
|
||||
"-allow_renaming", "true",
|
||||
"-z", "0.28",
|
||||
"-x", position_x,
|
||||
"-y", position_y,
|
||||
"-Y", orientation_yaw
|
||||
]
|
||||
)
|
||||
|
||||
gz_ros2_bridge = Node(
|
||||
package="ros_gz_bridge",
|
||||
executable="parameter_bridge",
|
||||
arguments=[
|
||||
"/cmd_vel@geometry_msgs/msg/Twist@ignition.msgs.Twist",
|
||||
"/clock@rosgraph_msgs/msg/Clock[ignition.msgs.Clock",
|
||||
"/odom@nav_msgs/msg/Odometry[ignition.msgs.Odometry",
|
||||
"/tf@tf2_msgs/msg/TFMessage[ignition.msgs.Pose_V",
|
||||
"/scan@sensor_msgs/msg/LaserScan[ignition.msgs.LaserScan",
|
||||
"/kinect_camera@sensor_msgs/msg/Image[ignition.msgs.Image",
|
||||
"/stereo_camera/left/image_raw@sensor_msgs/msg/Image[ignition.msgs.Image",
|
||||
"stereo_camera/right/image_raw@sensor_msgs/msg/Image[ignition.msgs.Image",
|
||||
"kinect_camera/camera_info@sensor_msgs/msg/CameraInfo[ignition.msgs.CameraInfo",
|
||||
"stereo_camera/left/camera_info@sensor_msgs/msg/CameraInfo[ignition.msgs.CameraInfo",
|
||||
"stereo_camera/right/camera_info@sensor_msgs/msg/CameraInfo[ignition.msgs.CameraInfo",
|
||||
"/kinect_camera/points@sensor_msgs/msg/PointCloud2[ignition.msgs.PointCloudPacked",
|
||||
"/imu@sensor_msgs/msg/Imu[ignition.msgs.IMU",
|
||||
"/world/default/model/bcr_bot/joint_state@sensor_msgs/msg/JointState[ignition.msgs.Model"
|
||||
],
|
||||
remappings=[
|
||||
('/world/default/model/bcr_bot/joint_state', 'bcr_bot/joint_states'),
|
||||
('/odom', 'bcr_bot/odom'),
|
||||
('/scan', 'bcr_bot/scan'),
|
||||
('/kinect_camera', 'bcr_bot/kinect_camera'),
|
||||
('/stereo_camera/left/image_raw', 'bcr_bot/stereo_camera/left/image_raw'),
|
||||
('/stereo_camera/right/image_raw', 'bcr_bot/stereo_camera/right/image_raw'),
|
||||
('/imu', 'bcr_bot/imu'),
|
||||
('/cmd_vel', 'bcr_bot/cmd_vel'),
|
||||
('kinect_camera/camera_info', 'bcr_bot/kinect_camera/camera_info'),
|
||||
('stereo_camera/left/camera_info', 'bcr_bot/stereo_camera/left/camera_info'),
|
||||
('stereo_camera/right/camera_info', 'bcr_bot/stereo_camera/right/camera_info'),
|
||||
('/kinect_camera/points', 'bcr_bot/kinect_camera/points'),
|
||||
]
|
||||
)
|
||||
|
||||
transform_publisher = Node(
|
||||
package="tf2_ros",
|
||||
executable="static_transform_publisher",
|
||||
arguments = ["--x", "0.0",
|
||||
"--y", "0.0",
|
||||
"--z", "0.0",
|
||||
"--yaw", "0.0",
|
||||
"--pitch", "0.0",
|
||||
"--roll", "0.0",
|
||||
"--frame-id", "kinect_camera",
|
||||
"--child-frame-id", "bcr_bot/base_footprint/kinect_camera"]
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
DeclareLaunchArgument("camera_enabled", default_value = camera_enabled),
|
||||
DeclareLaunchArgument("stereo_camera_enabled", default_value = stereo_camera_enabled),
|
||||
DeclareLaunchArgument("two_d_lidar_enabled", default_value = two_d_lidar_enabled),
|
||||
DeclareLaunchArgument("position_x", default_value="0.0"),
|
||||
DeclareLaunchArgument("position_y", default_value="0.0"),
|
||||
DeclareLaunchArgument("orientation_yaw", default_value="0.0"),
|
||||
DeclareLaunchArgument("odometry_source", default_value="world"),
|
||||
robot_state_publisher,
|
||||
gz_spawn_entity, transform_publisher, gz_ros2_bridge
|
||||
])
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from os.path import join
|
||||
|
||||
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from launch.actions import SetEnvironmentVariable
|
||||
from launch.actions import AppendEnvironmentVariable
|
||||
|
||||
def generate_launch_description():
|
||||
# Get bcr_bot package's share directory path
|
||||
bcr_bot_path = get_package_share_directory('bcr_bot')
|
||||
|
||||
# Retrieve launch configuration arguments
|
||||
use_sim_time = LaunchConfiguration('use_sim_time', default='true')
|
||||
|
||||
|
||||
world_file = LaunchConfiguration("world_file", default = join(bcr_bot_path, 'worlds', 'small_warehouse.sdf'))
|
||||
|
||||
# Include the Gazebo launch file
|
||||
gazebo_share = get_package_share_directory("gazebo_ros")
|
||||
gazebo = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(join(gazebo_share, "launch", "gazebo.launch.py"))
|
||||
)
|
||||
|
||||
# spawing bcr_bot
|
||||
spawn_bcr_bot_node = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(join(bcr_bot_path, "launch", "bcr_bot_gazebo_spawn.launch.py")),
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
# Declare launch arguments
|
||||
|
||||
AppendEnvironmentVariable(
|
||||
name='GAZEBO_MODEL_PATH',
|
||||
value=join(bcr_bot_path, "models")),
|
||||
|
||||
SetEnvironmentVariable(
|
||||
name='GAZEBO_RESOURCE_PATH',
|
||||
value="/usr/share/gazebo-11:" + join(bcr_bot_path, "worlds")),
|
||||
DeclareLaunchArgument('world', default_value = world_file),
|
||||
DeclareLaunchArgument('gui', default_value='true'),
|
||||
DeclareLaunchArgument('verbose', default_value='false'),
|
||||
DeclareLaunchArgument('use_sim_time', default_value = use_sim_time),
|
||||
gazebo,spawn_bcr_bot_node
|
||||
])
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from os.path import join
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
|
||||
from launch.substitutions import LaunchConfiguration,PythonExpression
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch.actions import AppendEnvironmentVariable
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
use_sim_time = LaunchConfiguration("use_sim_time", default=True)
|
||||
|
||||
bcr_bot_path = get_package_share_directory("bcr_bot")
|
||||
world_file = LaunchConfiguration("world_file", default = join(bcr_bot_path, "worlds", "small_warehouse.sdf"))
|
||||
gz_sim_share = get_package_share_directory("ros_gz_sim")
|
||||
|
||||
gz_sim = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(join(gz_sim_share, "launch", "gz_sim.launch.py")),
|
||||
launch_arguments={
|
||||
"gz_args" : PythonExpression(["'", world_file, " -r -s'"])
|
||||
|
||||
}.items()
|
||||
)
|
||||
|
||||
spawn_bcr_bot_node = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(join(bcr_bot_path, "launch", "bcr_bot_gz_spawn.launch.py")),
|
||||
launch_arguments={
|
||||
# Pass any arguments if your spawn.launch.py requires
|
||||
}.items()
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
|
||||
AppendEnvironmentVariable(
|
||||
name='GZ_SIM_RESOURCE_PATH',
|
||||
value=join(bcr_bot_path, "worlds")),
|
||||
|
||||
AppendEnvironmentVariable(
|
||||
name='GZ_SIM_RESOURCE_PATH',
|
||||
value=join(bcr_bot_path, "models")),
|
||||
|
||||
DeclareLaunchArgument("use_sim_time", default_value=use_sim_time),
|
||||
DeclareLaunchArgument("world_file", default_value=world_file),
|
||||
|
||||
gz_sim, spawn_bcr_bot_node
|
||||
])
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from os.path import join
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
|
||||
from launch.substitutions import LaunchConfiguration,PythonExpression
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch.actions import AppendEnvironmentVariable
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
use_sim_time = LaunchConfiguration("use_sim_time", default=True)
|
||||
|
||||
bcr_bot_path = get_package_share_directory("bcr_bot")
|
||||
world_file = LaunchConfiguration("world_file", default = join(bcr_bot_path, "worlds", "small_warehouse.sdf"))
|
||||
gz_sim_share = get_package_share_directory("ros_gz_sim")
|
||||
|
||||
gz_sim = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(join(gz_sim_share, "launch", "gz_sim.launch.py")),
|
||||
launch_arguments={
|
||||
"gz_args" : PythonExpression(["'", world_file, " -r'"])
|
||||
|
||||
}.items()
|
||||
)
|
||||
|
||||
spawn_bcr_bot_node = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(join(bcr_bot_path, "launch", "bcr_bot_ign_spawn.launch.py")),
|
||||
launch_arguments={
|
||||
# Pass any arguments if your spawn.launch.py requires
|
||||
}.items()
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
|
||||
AppendEnvironmentVariable(
|
||||
name='IGN_GAZEBO_RESOURCE_PATH',
|
||||
value=join(bcr_bot_path, "worlds")),
|
||||
|
||||
AppendEnvironmentVariable(
|
||||
name='IGN_GAZEBO_RESOURCE_PATH',
|
||||
value=join(bcr_bot_path, "models")),
|
||||
|
||||
DeclareLaunchArgument("use_sim_time", default_value=use_sim_time),
|
||||
DeclareLaunchArgument("world_file", default_value=world_file),
|
||||
|
||||
gz_sim, spawn_bcr_bot_node
|
||||
])
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import IncludeLaunchDescription, DeclareLaunchArgument
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
from launch_ros.actions import Node
|
||||
|
||||
def generate_launch_description():
|
||||
pkg_slam_toolbox_dir = get_package_share_directory('slam_toolbox')
|
||||
pkg_bcr = get_package_share_directory('bcr_bot')
|
||||
|
||||
# Declare launch arguments
|
||||
use_sim_time = LaunchConfiguration('use_sim_time', default='True')
|
||||
autostart = LaunchConfiguration('autostart', default='True')
|
||||
|
||||
declare_use_sim_time = DeclareLaunchArgument(
|
||||
'use_sim_time',
|
||||
default_value='true',
|
||||
description='Use simulation (Gazebo) clock if true'
|
||||
)
|
||||
|
||||
declare_autostart = DeclareLaunchArgument(
|
||||
'autostart',
|
||||
default_value='true',
|
||||
description='Automatically start the slam_toolbox stack'
|
||||
)
|
||||
|
||||
# Include slam_toolbox launch file
|
||||
slam_toolbox_launch_cmd = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(
|
||||
os.path.join(pkg_slam_toolbox_dir, 'launch', 'online_async_launch.py')
|
||||
),
|
||||
launch_arguments={
|
||||
'use_sim_time': use_sim_time,
|
||||
'slam_params_file': os.path.join(pkg_bcr, 'config', 'mapper_params_online_async.yaml'),
|
||||
}.items()
|
||||
)
|
||||
|
||||
# Launch RViz
|
||||
rviz_launch_cmd = Node(
|
||||
package="rviz2",
|
||||
executable="rviz2",
|
||||
name="rviz2",
|
||||
arguments=[
|
||||
'-d', os.path.join(pkg_bcr, 'rviz', 'map.rviz')
|
||||
]
|
||||
)
|
||||
|
||||
# Static transform publisher
|
||||
static_transform_publisher_node = Node(
|
||||
package='tf2_ros',
|
||||
executable='static_transform_publisher',
|
||||
name='map_to_odom',
|
||||
output='screen',
|
||||
arguments=['0', '0', '0', '0', '0', '0', 'map', 'odom']
|
||||
)
|
||||
|
||||
# Create launch description and add actions
|
||||
ld = LaunchDescription()
|
||||
|
||||
ld.add_action(declare_use_sim_time)
|
||||
ld.add_action(declare_autostart)
|
||||
ld.add_action(slam_toolbox_launch_cmd)
|
||||
ld.add_action(rviz_launch_cmd)
|
||||
ld.add_action(static_transform_publisher_node)
|
||||
|
||||
return ld
|
||||
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import IncludeLaunchDescription
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
from launch_ros.actions import Node
|
||||
|
||||
def generate_launch_description():
|
||||
pkg_nav2_dir = get_package_share_directory('nav2_bringup')
|
||||
pkg_bcr = get_package_share_directory('bcr_bot')
|
||||
|
||||
use_sim_time = LaunchConfiguration('use_sim_time', default='True')
|
||||
autostart = LaunchConfiguration('autostart', default='True')
|
||||
|
||||
nav2_launch_cmd = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(
|
||||
os.path.join(pkg_nav2_dir, 'launch', 'bringup_launch.py')
|
||||
),
|
||||
launch_arguments={
|
||||
'use_sim_time': use_sim_time,
|
||||
'autostart': autostart,
|
||||
'map': os.path.join(pkg_bcr, 'config', 'bcr_map.yaml'),
|
||||
'params_file': os.path.join(pkg_bcr, 'config', 'nav2_params.yaml'),
|
||||
'package_path': pkg_bcr,
|
||||
}.items()
|
||||
)
|
||||
|
||||
rviz_launch_cmd = Node(
|
||||
package="rviz2",
|
||||
executable="rviz2",
|
||||
name="rviz2",
|
||||
arguments=[
|
||||
'-d' + os.path.join(
|
||||
get_package_share_directory('nav2_bringup'),
|
||||
'rviz',
|
||||
'nav2_default_view.rviz'
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
amcl_node = Node(
|
||||
package='nav2_amcl',
|
||||
executable='amcl',
|
||||
name='amcl',
|
||||
output='screen',
|
||||
parameters=[os.path.join(pkg_bcr, 'config', 'amcl_params.yaml')],
|
||||
)
|
||||
|
||||
map_server_node = Node(
|
||||
package='nav2_map_server',
|
||||
executable='map_server',
|
||||
name='map_server',
|
||||
output='screen',
|
||||
parameters=[{'yaml_filename': os.path.join(pkg_bcr, 'config', 'bcr_map.yaml')}],
|
||||
)
|
||||
|
||||
static_transform_publisher_node = Node(
|
||||
package='tf2_ros',
|
||||
executable='static_transform_publisher',
|
||||
name='map_to_odom',
|
||||
output='screen',
|
||||
arguments=['0', '0', '0', '0', '0', '0', 'map', 'odom']
|
||||
)
|
||||
|
||||
remapper_node = Node(
|
||||
package='bcr_bot',
|
||||
executable='remapper.py',
|
||||
name='remapper',
|
||||
output='screen',
|
||||
)
|
||||
|
||||
ld = LaunchDescription()
|
||||
|
||||
ld.add_action(nav2_launch_cmd)
|
||||
ld.add_action(rviz_launch_cmd)
|
||||
ld.add_action(amcl_node)
|
||||
ld.add_action(map_server_node)
|
||||
ld.add_action(static_transform_publisher_node)
|
||||
ld.add_action(remapper_node)
|
||||
|
||||
return ld
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
#!/usr/bin/env python3
|
||||
import os
|
||||
import xacro
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch import LaunchDescription
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
from launch_ros.actions import Node
|
||||
from launch.actions import DeclareLaunchArgument, GroupAction
|
||||
from launch.conditions import IfCondition, UnlessCondition
|
||||
|
||||
def get_xacro_to_doc(xacro_file_path, mappings):
|
||||
doc = xacro.parse(open(xacro_file_path))
|
||||
xacro.process_doc(doc, mappings=mappings)
|
||||
return doc
|
||||
|
||||
def generate_launch_description():
|
||||
# Launch configurations
|
||||
use_sim_time = LaunchConfiguration('use_sim_time', default='false')
|
||||
isaac_sim = LaunchConfiguration('isaac_sim')
|
||||
|
||||
# Process XACRO
|
||||
xacro_path = os.path.join(get_package_share_directory('bcr_bot'), 'urdf', 'bcr_bot.xacro')
|
||||
doc = get_xacro_to_doc(xacro_path, {"wheel_odom_topic": "odom"})
|
||||
|
||||
# Nodes
|
||||
robot_state_publisher = Node(
|
||||
package='robot_state_publisher',
|
||||
executable='robot_state_publisher',
|
||||
name='robot_state_publisher',
|
||||
output='screen',
|
||||
parameters=[{'use_sim_time': use_sim_time}, {'robot_description': doc.toxml()}],
|
||||
condition=UnlessCondition(isaac_sim) # Only start if isaac_sim is false
|
||||
)
|
||||
|
||||
rviz = Node(
|
||||
package='rviz2',
|
||||
executable='rviz2',
|
||||
name='rviz2',
|
||||
output='screen',
|
||||
arguments=['-d', os.path.join(get_package_share_directory('bcr_bot'), 'rviz', 'entire_setup.rviz')]
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
# Declare arguments
|
||||
DeclareLaunchArgument(
|
||||
'use_sim_time',
|
||||
default_value='false',
|
||||
description='Use simulation time if true'
|
||||
),
|
||||
DeclareLaunchArgument(
|
||||
'isaac_sim',
|
||||
default_value='false',
|
||||
description='Set to true when using Isaac Sim'
|
||||
),
|
||||
DeclareLaunchArgument(
|
||||
'robot_description',
|
||||
default_value=doc.toxml(),
|
||||
description='Robot description in URDF/XACRO format'
|
||||
),
|
||||
# Nodes
|
||||
robot_state_publisher,
|
||||
rviz
|
||||
])
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#!/usr/bin/python3
|
||||
"""GzWeb 迷你仓库场景:仅 Gazebo Sim + 机器人,无 RViz / Nav2 / SLAM。"""
|
||||
from os.path import join
|
||||
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import (
|
||||
AppendEnvironmentVariable,
|
||||
DeclareLaunchArgument,
|
||||
IncludeLaunchDescription,
|
||||
TimerAction,
|
||||
)
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from launch.substitutions import LaunchConfiguration, PythonExpression
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
bcr_bot_path = get_package_share_directory('bcr_bot')
|
||||
world_file = LaunchConfiguration(
|
||||
'world_file',
|
||||
default=join(bcr_bot_path, 'worlds', 'small_warehouse.sdf'),
|
||||
)
|
||||
gz_sim_share = get_package_share_directory('ros_gz_sim')
|
||||
|
||||
gz_sim = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(
|
||||
join(gz_sim_share, 'launch', 'gz_sim.launch.py')
|
||||
),
|
||||
launch_arguments={
|
||||
'gz_args': PythonExpression(["'-r -s ", world_file, "'"]),
|
||||
}.items(),
|
||||
)
|
||||
|
||||
spawn = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(
|
||||
join(bcr_bot_path, 'launch', 'warehouse_spawn.launch.py')
|
||||
),
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
AppendEnvironmentVariable(
|
||||
name='GZ_SIM_RESOURCE_PATH', value=join(bcr_bot_path, 'worlds')),
|
||||
AppendEnvironmentVariable(
|
||||
name='GZ_SIM_RESOURCE_PATH', value=join(bcr_bot_path, 'models')),
|
||||
AppendEnvironmentVariable(
|
||||
name='IGN_GAZEBO_RESOURCE_PATH', value=join(bcr_bot_path, 'worlds')),
|
||||
AppendEnvironmentVariable(
|
||||
name='IGN_GAZEBO_RESOURCE_PATH', value=join(bcr_bot_path, 'models')),
|
||||
DeclareLaunchArgument('world_file', default_value=world_file),
|
||||
gz_sim,
|
||||
TimerAction(period=8.0, actions=[spawn]),
|
||||
])
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/python3
|
||||
"""生成 BCR 机器人(GzWeb 可视化,无 ros_gz_bridge / Nav2)。"""
|
||||
from os.path import join
|
||||
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument
|
||||
from launch.substitutions import Command, LaunchConfiguration
|
||||
from launch_ros.actions import Node
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
bcr_bot_path = get_package_share_directory('bcr_bot')
|
||||
position_x = LaunchConfiguration('position_x', default='0.0')
|
||||
position_y = LaunchConfiguration('position_y', default='0.0')
|
||||
orientation_yaw = LaunchConfiguration('orientation_yaw', default='0.0')
|
||||
|
||||
robot_state_publisher = Node(
|
||||
package='robot_state_publisher',
|
||||
executable='robot_state_publisher',
|
||||
name='robot_state_publisher',
|
||||
parameters=[{
|
||||
'robot_description': Command([
|
||||
'xacro ', join(bcr_bot_path, 'urdf/bcr_bot.xacro'),
|
||||
' camera_enabled:=false',
|
||||
' stereo_camera_enabled:=false',
|
||||
' two_d_lidar_enabled:=false',
|
||||
' odometry_source:=world',
|
||||
' sim_gz:=true',
|
||||
]),
|
||||
}],
|
||||
remappings=[('/joint_states', 'bcr_bot/joint_states')],
|
||||
)
|
||||
|
||||
gz_spawn_entity = Node(
|
||||
package='ros_gz_sim',
|
||||
executable='create',
|
||||
arguments=[
|
||||
'-topic', '/robot_description',
|
||||
'-name', 'bcr_bot',
|
||||
'-allow_renaming', 'true',
|
||||
'-z', '0.28',
|
||||
'-x', position_x,
|
||||
'-y', position_y,
|
||||
'-Y', orientation_yaw,
|
||||
],
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
DeclareLaunchArgument('position_x', default_value='0.0'),
|
||||
DeclareLaunchArgument('position_y', default_value='0.0'),
|
||||
DeclareLaunchArgument('orientation_yaw', default_value='0.0'),
|
||||
robot_state_publisher,
|
||||
gz_spawn_entity,
|
||||
])
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# generated from ament_package/template/package_level/local_setup.bash.in
|
||||
|
||||
# source local_setup.sh from same directory as this file
|
||||
_this_path=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" && pwd)
|
||||
# provide AMENT_CURRENT_PREFIX to shell script
|
||||
AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd)
|
||||
# store AMENT_CURRENT_PREFIX to restore it before each environment hook
|
||||
_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX
|
||||
|
||||
# trace output
|
||||
if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
|
||||
echo "# . \"$_this_path/local_setup.sh\""
|
||||
fi
|
||||
. "$_this_path/local_setup.sh"
|
||||
unset _this_path
|
||||
|
||||
# unset AMENT_ENVIRONMENT_HOOKS
|
||||
# if not appending to them for return
|
||||
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
|
||||
unset AMENT_ENVIRONMENT_HOOKS
|
||||
fi
|
||||
|
||||
# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks
|
||||
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
|
||||
# list all environment hooks of this package
|
||||
|
||||
# source all shell-specific environment hooks of this package
|
||||
# if not returning them
|
||||
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
|
||||
_package_local_setup_IFS=$IFS
|
||||
IFS=":"
|
||||
for _hook in $AMENT_ENVIRONMENT_HOOKS; do
|
||||
# restore AMENT_CURRENT_PREFIX for each environment hook
|
||||
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
|
||||
# restore IFS before sourcing other files
|
||||
IFS=$_package_local_setup_IFS
|
||||
. "$_hook"
|
||||
done
|
||||
unset _hook
|
||||
IFS=$_package_local_setup_IFS
|
||||
unset _package_local_setup_IFS
|
||||
unset AMENT_ENVIRONMENT_HOOKS
|
||||
fi
|
||||
|
||||
unset _package_local_setup_AMENT_CURRENT_PREFIX
|
||||
unset AMENT_CURRENT_PREFIX
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
source;share/bcr_bot/environment/ament_prefix_path.sh
|
||||
source;share/bcr_bot/environment/path.sh
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
# generated from ament_package/template/package_level/local_setup.sh.in
|
||||
|
||||
# since this file is sourced use either the provided AMENT_CURRENT_PREFIX
|
||||
# or fall back to the destination set at configure time
|
||||
: ${AMENT_CURRENT_PREFIX:="/workspace/install/bcr_bot"}
|
||||
if [ ! -d "$AMENT_CURRENT_PREFIX" ]; then
|
||||
if [ -z "$COLCON_CURRENT_PREFIX" ]; then
|
||||
echo "The compile time prefix path '$AMENT_CURRENT_PREFIX' doesn't " \
|
||||
"exist. Consider sourcing a different extension than '.sh'." 1>&2
|
||||
else
|
||||
AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
|
||||
fi
|
||||
fi
|
||||
|
||||
# function to append values to environment variables
|
||||
# using colons as separators and avoiding leading separators
|
||||
ament_append_value() {
|
||||
# arguments
|
||||
_listname="$1"
|
||||
_value="$2"
|
||||
#echo "listname $_listname"
|
||||
#eval echo "list value \$$_listname"
|
||||
#echo "value $_value"
|
||||
|
||||
# avoid leading separator
|
||||
eval _values=\"\$$_listname\"
|
||||
if [ -z "$_values" ]; then
|
||||
eval export $_listname=\"$_value\"
|
||||
#eval echo "set list \$$_listname"
|
||||
else
|
||||
# field separator must not be a colon
|
||||
_ament_append_value_IFS=$IFS
|
||||
unset IFS
|
||||
eval export $_listname=\"\$$_listname:$_value\"
|
||||
#eval echo "append list \$$_listname"
|
||||
IFS=$_ament_append_value_IFS
|
||||
unset _ament_append_value_IFS
|
||||
fi
|
||||
unset _values
|
||||
|
||||
unset _value
|
||||
unset _listname
|
||||
}
|
||||
|
||||
# function to append non-duplicate values to environment variables
|
||||
# using colons as separators and avoiding leading separators
|
||||
ament_append_unique_value() {
|
||||
# arguments
|
||||
_listname=$1
|
||||
_value=$2
|
||||
#echo "listname $_listname"
|
||||
#eval echo "list value \$$_listname"
|
||||
#echo "value $_value"
|
||||
|
||||
# check if the list contains the value
|
||||
eval _values=\$$_listname
|
||||
_duplicate=
|
||||
_ament_append_unique_value_IFS=$IFS
|
||||
IFS=":"
|
||||
if [ "$AMENT_SHELL" = "zsh" ]; then
|
||||
ament_zsh_to_array _values
|
||||
fi
|
||||
for _item in $_values; do
|
||||
# ignore empty strings
|
||||
if [ -z "$_item" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ $_item = $_value ]; then
|
||||
_duplicate=1
|
||||
fi
|
||||
done
|
||||
unset _item
|
||||
|
||||
# append only non-duplicates
|
||||
if [ -z "$_duplicate" ]; then
|
||||
# avoid leading separator
|
||||
if [ -z "$_values" ]; then
|
||||
eval $_listname=\"$_value\"
|
||||
#eval echo "set list \$$_listname"
|
||||
else
|
||||
# field separator must not be a colon
|
||||
unset IFS
|
||||
eval $_listname=\"\$$_listname:$_value\"
|
||||
#eval echo "append list \$$_listname"
|
||||
fi
|
||||
fi
|
||||
IFS=$_ament_append_unique_value_IFS
|
||||
unset _ament_append_unique_value_IFS
|
||||
unset _duplicate
|
||||
unset _values
|
||||
|
||||
unset _value
|
||||
unset _listname
|
||||
}
|
||||
|
||||
# function to prepend non-duplicate values to environment variables
|
||||
# using colons as separators and avoiding trailing separators
|
||||
ament_prepend_unique_value() {
|
||||
# arguments
|
||||
_listname="$1"
|
||||
_value="$2"
|
||||
#echo "listname $_listname"
|
||||
#eval echo "list value \$$_listname"
|
||||
#echo "value $_value"
|
||||
|
||||
# check if the list contains the value
|
||||
eval _values=\"\$$_listname\"
|
||||
_duplicate=
|
||||
_ament_prepend_unique_value_IFS=$IFS
|
||||
IFS=":"
|
||||
if [ "$AMENT_SHELL" = "zsh" ]; then
|
||||
ament_zsh_to_array _values
|
||||
fi
|
||||
for _item in $_values; do
|
||||
# ignore empty strings
|
||||
if [ -z "$_item" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ "$_item" = "$_value" ]; then
|
||||
_duplicate=1
|
||||
fi
|
||||
done
|
||||
unset _item
|
||||
|
||||
# prepend only non-duplicates
|
||||
if [ -z "$_duplicate" ]; then
|
||||
# avoid trailing separator
|
||||
if [ -z "$_values" ]; then
|
||||
eval export $_listname=\"$_value\"
|
||||
#eval echo "set list \$$_listname"
|
||||
else
|
||||
# field separator must not be a colon
|
||||
unset IFS
|
||||
eval export $_listname=\"$_value:\$$_listname\"
|
||||
#eval echo "prepend list \$$_listname"
|
||||
fi
|
||||
fi
|
||||
IFS=$_ament_prepend_unique_value_IFS
|
||||
unset _ament_prepend_unique_value_IFS
|
||||
unset _duplicate
|
||||
unset _values
|
||||
|
||||
unset _value
|
||||
unset _listname
|
||||
}
|
||||
|
||||
# unset AMENT_ENVIRONMENT_HOOKS
|
||||
# if not appending to them for return
|
||||
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
|
||||
unset AMENT_ENVIRONMENT_HOOKS
|
||||
fi
|
||||
|
||||
# list all environment hooks of this package
|
||||
ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/bcr_bot/environment/ament_prefix_path.sh"
|
||||
ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/bcr_bot/environment/path.sh"
|
||||
|
||||
# source all shell-specific environment hooks of this package
|
||||
# if not returning them
|
||||
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
|
||||
_package_local_setup_IFS=$IFS
|
||||
IFS=":"
|
||||
if [ "$AMENT_SHELL" = "zsh" ]; then
|
||||
ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS
|
||||
fi
|
||||
for _hook in $AMENT_ENVIRONMENT_HOOKS; do
|
||||
if [ -f "$_hook" ]; then
|
||||
# restore IFS before sourcing other files
|
||||
IFS=$_package_local_setup_IFS
|
||||
# trace output
|
||||
if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
|
||||
echo "# . \"$_hook\""
|
||||
fi
|
||||
. "$_hook"
|
||||
fi
|
||||
done
|
||||
unset _hook
|
||||
IFS=$_package_local_setup_IFS
|
||||
unset _package_local_setup_IFS
|
||||
unset AMENT_ENVIRONMENT_HOOKS
|
||||
fi
|
||||
|
||||
# reset AMENT_CURRENT_PREFIX after each package
|
||||
# allowing to source multiple package-level setup files
|
||||
unset AMENT_CURRENT_PREFIX
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
# generated from ament_package/template/package_level/local_setup.zsh.in
|
||||
|
||||
AMENT_SHELL=zsh
|
||||
|
||||
# source local_setup.sh from same directory as this file
|
||||
_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)
|
||||
# provide AMENT_CURRENT_PREFIX to shell script
|
||||
AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)
|
||||
# store AMENT_CURRENT_PREFIX to restore it before each environment hook
|
||||
_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX
|
||||
|
||||
# function to convert array-like strings into arrays
|
||||
# to wordaround SH_WORD_SPLIT not being set
|
||||
ament_zsh_to_array() {
|
||||
local _listname=$1
|
||||
local _dollar="$"
|
||||
local _split="{="
|
||||
local _to_array="(\"$_dollar$_split$_listname}\")"
|
||||
eval $_listname=$_to_array
|
||||
}
|
||||
|
||||
# trace output
|
||||
if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
|
||||
echo "# . \"$_this_path/local_setup.sh\""
|
||||
fi
|
||||
# the package-level local_setup file unsets AMENT_CURRENT_PREFIX
|
||||
. "$_this_path/local_setup.sh"
|
||||
unset _this_path
|
||||
|
||||
# unset AMENT_ENVIRONMENT_HOOKS
|
||||
# if not appending to them for return
|
||||
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
|
||||
unset AMENT_ENVIRONMENT_HOOKS
|
||||
fi
|
||||
|
||||
# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks
|
||||
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
|
||||
# list all environment hooks of this package
|
||||
|
||||
# source all shell-specific environment hooks of this package
|
||||
# if not returning them
|
||||
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
|
||||
_package_local_setup_IFS=$IFS
|
||||
IFS=":"
|
||||
for _hook in $AMENT_ENVIRONMENT_HOOKS; do
|
||||
# restore AMENT_CURRENT_PREFIX for each environment hook
|
||||
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
|
||||
# restore IFS before sourcing other files
|
||||
IFS=$_package_local_setup_IFS
|
||||
. "$_hook"
|
||||
done
|
||||
unset _hook
|
||||
IFS=$_package_local_setup_IFS
|
||||
unset _package_local_setup_IFS
|
||||
unset AMENT_ENVIRONMENT_HOOKS
|
||||
fi
|
||||
|
||||
unset _package_local_setup_AMENT_CURRENT_PREFIX
|
||||
unset AMENT_CURRENT_PREFIX
|
||||
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
BIN
install/bcr_bot/share/bcr_bot/models/aws_robomaker_warehouse_Bucket_01/.DS_Store
vendored
Normal file
BIN
install/bcr_bot/share/bcr_bot/models/aws_robomaker_warehouse_Bucket_01/materials/.DS_Store
vendored
Normal file
|
After Width: | Height: | Size: 223 KiB |
|
|
@ -0,0 +1,201 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-03-21T07:58:19Z</created><keywords></keywords><modified>2019-03-21T07:58:19Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_materials>
|
||||
<material id="Material #946391" name="Material #946391">
|
||||
<instance_effect url="#Material #946391-fx"/>
|
||||
</material>
|
||||
</library_materials>
|
||||
<library_effects>
|
||||
<effect id="Material #946391-fx" name="Material #946391">
|
||||
<profile_COMMON>
|
||||
<technique sid="standard">
|
||||
<phong>
|
||||
<emission>
|
||||
<color sid="emission">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</emission>
|
||||
<ambient>
|
||||
<color sid="ambient">0.588000 0.588000 0.588000 1.000000</color>
|
||||
</ambient>
|
||||
<diffuse>
|
||||
<color sid="diffuse">0.588000 0.588000 0.588000 1.000000</color>
|
||||
</diffuse>
|
||||
<specular>
|
||||
<color sid="specular">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</specular>
|
||||
<shininess>
|
||||
<float sid="shininess">2.000000</float>
|
||||
</shininess>
|
||||
<reflective>
|
||||
<color sid="reflective">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</reflective>
|
||||
<reflectivity>
|
||||
<float sid="reflectivity">1.000000</float>
|
||||
</reflectivity>
|
||||
<transparent opaque="RGB_ZERO">
|
||||
<color sid="transparent">1.000000 1.000000 1.000000 1.000000</color>
|
||||
</transparent>
|
||||
<transparency>
|
||||
<float sid="transparency">0.000000</float>
|
||||
</transparency>
|
||||
</phong>
|
||||
</technique>
|
||||
</profile_COMMON>
|
||||
</effect>
|
||||
</library_effects>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_Bucket_01_collision-lib" name="aws_robomaker_warehouse_Bucket_01_collisionMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_Bucket_01_collision-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_Bucket_01_collision-POSITION-array" count="36">
|
||||
-45.501598 -57.976257 0.490845
|
||||
44.339504 -57.976257 0.490845
|
||||
-45.501598 58.313538 0.490845
|
||||
44.339504 58.313538 0.490845
|
||||
-47.634106 -61.119202 140.905685
|
||||
46.472012 -61.119202 140.905685
|
||||
-47.634106 61.119202 140.905685
|
||||
46.472012 61.119202 140.905685
|
||||
46.472012 -61.119198 24.969147
|
||||
-47.634109 -61.119202 24.969151
|
||||
-47.634106 61.119198 24.969147
|
||||
46.472012 61.119198 24.969147
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Bucket_01_collision-POSITION-array" count="12" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_Bucket_01_collision-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_Bucket_01_collision-Normal0-array" count="180">
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -0.998076 -0.062006
|
||||
0.000000 -0.991858 -0.127352
|
||||
0.000000 -0.991858 -0.127352
|
||||
0.000000 -0.991858 -0.127352
|
||||
0.000000 -0.998076 -0.062006
|
||||
0.000000 -0.998076 -0.062006
|
||||
0.999126 0.000000 -0.041805
|
||||
0.996227 0.000000 -0.086790
|
||||
0.996227 0.000000 -0.086790
|
||||
0.996227 0.000000 -0.086790
|
||||
0.999126 0.000000 -0.041805
|
||||
0.999134 0.000000 -0.041602
|
||||
0.000000 0.998463 -0.055418
|
||||
0.000000 0.993495 -0.113873
|
||||
0.000000 0.998463 -0.055418
|
||||
0.000000 0.993495 -0.113873
|
||||
0.000000 0.998463 -0.055418
|
||||
0.000000 0.993495 -0.113873
|
||||
-0.999126 0.000000 -0.041805
|
||||
-0.996227 0.000000 -0.086790
|
||||
-0.999134 0.000000 -0.041602
|
||||
-0.996227 0.000000 -0.086790
|
||||
-0.999126 0.000000 -0.041805
|
||||
-0.996227 0.000000 -0.086790
|
||||
0.000000 -0.998076 -0.062006
|
||||
0.000000 -1.000000 -0.000000
|
||||
0.000000 -1.000000 -0.000000
|
||||
0.000000 -1.000000 -0.000000
|
||||
0.000000 -0.998076 -0.062006
|
||||
0.000000 -0.998076 -0.062006
|
||||
0.999134 0.000000 -0.041602
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.999134 0.000000 -0.041602
|
||||
0.999126 0.000000 -0.041805
|
||||
0.000000 1.000000 -0.000000
|
||||
0.000000 0.998463 -0.055418
|
||||
0.000000 1.000000 -0.000000
|
||||
0.000000 1.000000 -0.000000
|
||||
0.000000 0.998463 -0.055418
|
||||
0.000000 0.998463 -0.055418
|
||||
-0.999126 0.000000 -0.041805
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-0.999126 0.000000 -0.041805
|
||||
-0.999134 0.000000 -0.041602
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Bucket_01_collision-Normal0-array" count="60" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_Bucket_01_collision-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_Bucket_01_collision-UV0-array" count="64">
|
||||
1.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
1.000000 0.174235
|
||||
0.000000 0.174235
|
||||
0.000000 0.174235
|
||||
1.000000 0.174235
|
||||
1.000000 0.174235
|
||||
0.000000 0.174235
|
||||
1.000000 0.174235
|
||||
0.000000 0.174235
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Bucket_01_collision-UV0-array" count="32" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_Bucket_01_collision-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_Bucket_01_collision-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="20" material="Material #946391"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_Bucket_01_collision-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_Bucket_01_collision-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_Bucket_01_collision-UV0"/><p> 1 0 1 0 1 0 3 2 3 0 3 0 2 4 2 3 5 3 7 6 7 6 7 6 4 8 4 7 9 7 4 10 4 5 11 5 8 12 24 0 13 8 1 14 9 0 15 8 8 16 24 9 17 26 11 18 30 1 19 12 3 20 13 1 21 12 11 22 30 8 23 25 11 24 31 2 25 17 10 26 28 2 27 17 11 28 31 3 29 16 10 30 29 0 31 21 9 32 27 0 33 21 10 34 29 2 35 20 9 36 26 5 37 11 4 38 10 5 39 11 9 40 26 8 41 24 8 42 25 7 43 15 5 44 14 7 45 15 8 46 25 11 47 30 7 48 18 11 49 31 6 50 19 6 51 19 11 52 31 10 53 28 10 54 29 4 55 23 6 56 22 4 57 23 10 58 29 9 59 27</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_Bucket_01_collision" name="aws_robomaker_warehouse_Bucket_01_collision">
|
||||
<node name="aws_robomaker_warehouse_Bucket_01_collision" id="aws_robomaker_warehouse_Bucket_01_collision" layer="aws_robomaker_warehouse_Bucket_01" sid="aws_robomaker_warehouse_Bucket_01_collision"><matrix sid="matrix">1.000000 0.000000 0.000000 0.581024 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_Bucket_01_collision-lib"><bind_material><technique_common><instance_material symbol="Material #946391" target="#Material #946391"/></technique_common></bind_material></instance_geometry><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_Bucket_01_collision"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||
|
|
@ -0,0 +1,786 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-03-21T07:57:48Z</created><keywords></keywords><modified>2019-03-21T07:57:48Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_images>
|
||||
<image id="Map #1123124511-image" name="Map #1123124511">
|
||||
<init_from>../materials/textures/aws_robomaker_warehouse_Bucket_01.png</init_from>
|
||||
</image>
|
||||
</library_images>
|
||||
<library_materials>
|
||||
<material id="Material #946392" name="Material #946392">
|
||||
<instance_effect url="#Material #946392-fx"/>
|
||||
</material>
|
||||
</library_materials>
|
||||
<library_effects>
|
||||
<effect id="Material #946392-fx" name="Material #946392">
|
||||
<profile_COMMON>
|
||||
<technique sid="standard">
|
||||
<phong>
|
||||
<emission>
|
||||
<color sid="emission">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</emission>
|
||||
<ambient>
|
||||
<color sid="ambient">0.588000 0.588000 0.588000 1.000000</color>
|
||||
</ambient>
|
||||
<diffuse>
|
||||
<texture texture="Map #1123124511-image" texcoord="CHANNEL0">
|
||||
<extra>
|
||||
<technique profile="MAYA">
|
||||
<wrapU sid="wrapU0">TRUE</wrapU>
|
||||
<wrapV sid="wrapV0">TRUE</wrapV>
|
||||
<blend_mode>ADD</blend_mode>
|
||||
</technique>
|
||||
</extra>
|
||||
</texture>
|
||||
</diffuse>
|
||||
<specular>
|
||||
<color sid="specular">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</specular>
|
||||
<shininess>
|
||||
<float sid="shininess">2.000000</float>
|
||||
</shininess>
|
||||
<reflective>
|
||||
<color sid="reflective">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</reflective>
|
||||
<reflectivity>
|
||||
<float sid="reflectivity">1.000000</float>
|
||||
</reflectivity>
|
||||
<transparent opaque="RGB_ZERO">
|
||||
<color sid="transparent">1.000000 1.000000 1.000000 1.000000</color>
|
||||
</transparent>
|
||||
<transparency>
|
||||
<float sid="transparency">0.000000</float>
|
||||
</transparency>
|
||||
</phong>
|
||||
</technique>
|
||||
</profile_COMMON>
|
||||
</effect>
|
||||
</library_effects>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_Bucket_01_visual-lib" name="aws_robomaker_warehouse_Bucket_01_visualMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_Bucket_01_visual-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_Bucket_01_visual-POSITION-array" count="240">
|
||||
-47.053059 -59.404663 140.414841
|
||||
-3.469593 -59.404663 140.414841
|
||||
-47.053059 0.261108 140.414841
|
||||
-3.469593 0.261108 140.414841
|
||||
-47.053059 -59.404663 24.478302
|
||||
-3.469593 -59.404663 24.478302
|
||||
-47.053059 0.261108 24.478302
|
||||
-3.469593 0.261108 24.478302
|
||||
-44.920551 -56.664063 0.044712
|
||||
-5.602100 -56.664063 0.044712
|
||||
-44.920551 -2.479492 0.044712
|
||||
-5.602100 -2.479492 0.044712
|
||||
-45.551821 -1.313351 140.414841
|
||||
-45.551821 -57.830206 140.414841
|
||||
-4.970831 -57.830206 140.414841
|
||||
-4.970831 -1.313351 140.414841
|
||||
-43.497578 -4.180773 107.089249
|
||||
-43.497578 -55.149446 107.089249
|
||||
-7.025072 -55.149446 107.089249
|
||||
-7.025072 -4.180773 107.089249
|
||||
-43.109898 1.219604 119.170395
|
||||
0.473568 1.219604 119.170395
|
||||
-43.109898 60.885376 119.170395
|
||||
0.473568 60.885376 119.170395
|
||||
-43.109898 1.219604 24.433590
|
||||
0.473568 1.219604 24.433590
|
||||
-43.109898 60.885376 24.433590
|
||||
0.473568 60.885376 24.433590
|
||||
-40.977390 3.960205 0.000000
|
||||
-1.658939 3.960205 0.000000
|
||||
-40.977390 58.144775 0.000000
|
||||
-1.658939 58.144775 0.000000
|
||||
-41.608660 59.310913 119.170395
|
||||
-41.608660 2.794060 119.170395
|
||||
-1.027670 2.794060 119.170395
|
||||
-1.027670 59.310913 119.170395
|
||||
-39.554417 56.443497 85.865417
|
||||
-39.554417 5.474823 85.865417
|
||||
-3.081911 5.474823 85.865417
|
||||
-3.081911 56.443497 85.865417
|
||||
3.469601 1.219604 87.304581
|
||||
47.053070 1.219604 87.304581
|
||||
3.469601 60.885376 87.304581
|
||||
47.053070 60.885376 87.304581
|
||||
3.469601 1.219604 24.433590
|
||||
47.053070 1.219604 24.433590
|
||||
3.469601 60.885376 24.433590
|
||||
47.053070 60.885376 24.433590
|
||||
5.602108 3.960205 0.000000
|
||||
44.920563 3.960205 0.000000
|
||||
5.602108 58.144775 0.000000
|
||||
44.920563 58.144775 0.000000
|
||||
4.970839 59.310913 87.304581
|
||||
4.970839 2.794060 87.304581
|
||||
45.551826 2.794060 87.304581
|
||||
45.551826 59.310913 87.304581
|
||||
7.025082 56.443497 54.033794
|
||||
7.025082 5.474823 54.033794
|
||||
43.497589 5.474823 54.033794
|
||||
43.497589 56.443497 54.033794
|
||||
1.545681 -60.885498 129.792053
|
||||
45.129150 -60.885498 129.792053
|
||||
1.545681 -1.219727 129.792053
|
||||
45.129150 -1.219727 129.792053
|
||||
1.545681 -60.885498 24.478302
|
||||
45.129150 -60.885498 24.478302
|
||||
1.545681 -1.219727 24.478302
|
||||
45.129150 -1.219727 24.478302
|
||||
3.678188 -58.144897 0.044712
|
||||
42.996643 -58.144897 0.044712
|
||||
3.678188 -3.960327 0.044712
|
||||
42.996643 -3.960327 0.044712
|
||||
3.046919 -2.794186 129.792053
|
||||
3.046919 -59.311041 129.792053
|
||||
43.627907 -59.311041 129.792053
|
||||
43.627907 -2.794186 129.792053
|
||||
5.101162 -5.661608 96.496231
|
||||
5.101162 -56.630281 96.496231
|
||||
41.573669 -56.630281 96.496231
|
||||
41.573669 -5.661608 96.496231
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Bucket_01_visual-POSITION-array" count="80" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_Bucket_01_visual-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_Bucket_01_visual-Normal0-array" count="1296">
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.998106 0.000000 0.061525
|
||||
0.998106 0.000000 0.061525
|
||||
0.998106 0.000000 0.061525
|
||||
0.998106 0.000000 0.061525
|
||||
0.998106 0.000000 0.061525
|
||||
0.998106 0.000000 0.061525
|
||||
0.000000 0.996780 0.080182
|
||||
0.000000 0.996780 0.080182
|
||||
0.000000 0.996780 0.080182
|
||||
0.000000 0.996780 0.080182
|
||||
0.000000 0.996780 0.080182
|
||||
0.000000 0.996780 0.080182
|
||||
-0.998106 0.000000 0.061525
|
||||
-0.998106 0.000000 0.061525
|
||||
-0.998106 0.000000 0.061525
|
||||
-0.998106 0.000000 0.061525
|
||||
-0.998106 0.000000 0.061525
|
||||
-0.998106 0.000000 0.061525
|
||||
0.000000 -0.996319 0.085726
|
||||
0.000000 -0.996319 0.085726
|
||||
0.000000 -0.996319 0.085726
|
||||
0.000000 -0.996319 0.085726
|
||||
0.000000 -0.996319 0.085726
|
||||
0.000000 -0.996319 0.085726
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.998103 0.000000 0.061563
|
||||
0.998103 0.000000 0.061563
|
||||
0.998103 0.000000 0.061563
|
||||
0.998103 0.000000 0.061563
|
||||
0.998103 0.000000 0.061563
|
||||
0.998103 0.000000 0.061563
|
||||
0.000000 0.996776 0.080232
|
||||
0.000000 0.996776 0.080232
|
||||
0.000000 0.996776 0.080232
|
||||
0.000000 0.996776 0.080232
|
||||
0.000000 0.996776 0.080232
|
||||
0.000000 0.996776 0.080232
|
||||
-0.998103 0.000000 0.061563
|
||||
-0.998103 0.000000 0.061563
|
||||
-0.998103 0.000000 0.061563
|
||||
-0.998103 0.000000 0.061563
|
||||
-0.998103 0.000000 0.061563
|
||||
-0.998103 0.000000 0.061563
|
||||
0.000000 -0.996314 0.085778
|
||||
0.000000 -0.996314 0.085778
|
||||
0.000000 -0.996314 0.085778
|
||||
0.000000 -0.996314 0.085778
|
||||
0.000000 -0.996314 0.085778
|
||||
0.000000 -0.996314 0.085778
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.998099 0.000000 0.061626
|
||||
0.998099 0.000000 0.061626
|
||||
0.998099 0.000000 0.061626
|
||||
0.998099 0.000000 0.061626
|
||||
0.998099 0.000000 0.061626
|
||||
0.998099 0.000000 0.061626
|
||||
0.000000 0.996770 0.080314
|
||||
0.000000 0.996770 0.080314
|
||||
0.000000 0.996770 0.080314
|
||||
0.000000 0.996770 0.080314
|
||||
0.000000 0.996770 0.080314
|
||||
0.000000 0.996770 0.080314
|
||||
-0.998099 0.000000 0.061626
|
||||
-0.998099 0.000000 0.061626
|
||||
-0.998099 0.000000 0.061626
|
||||
-0.998099 0.000000 0.061626
|
||||
-0.998099 0.000000 0.061626
|
||||
-0.998099 0.000000 0.061626
|
||||
0.000000 -0.996307 0.085866
|
||||
0.000000 -0.996307 0.085866
|
||||
0.000000 -0.996307 0.085866
|
||||
0.000000 -0.996307 0.085866
|
||||
0.000000 -0.996307 0.085866
|
||||
0.000000 -0.996307 0.085866
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
-0.996213 0.000000 -0.086947
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.000000 0.993768 -0.111466
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.996213 0.000000 -0.086947
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 -0.993768 -0.111466
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.998102 0.000000 0.061580
|
||||
0.998102 0.000000 0.061580
|
||||
0.998102 0.000000 0.061580
|
||||
0.998102 0.000000 0.061580
|
||||
0.998102 0.000000 0.061580
|
||||
0.998102 0.000000 0.061580
|
||||
0.000000 0.996774 0.080254
|
||||
0.000000 0.996774 0.080254
|
||||
0.000000 0.996774 0.080254
|
||||
0.000000 0.996774 0.080254
|
||||
0.000000 0.996774 0.080254
|
||||
0.000000 0.996774 0.080254
|
||||
-0.998102 0.000000 0.061579
|
||||
-0.998102 0.000000 0.061579
|
||||
-0.998102 0.000000 0.061579
|
||||
-0.998102 0.000000 0.061579
|
||||
-0.998102 0.000000 0.061579
|
||||
-0.998102 0.000000 0.061579
|
||||
0.000000 -0.996312 0.085802
|
||||
0.000000 -0.996312 0.085802
|
||||
0.000000 -0.996312 0.085802
|
||||
0.000000 -0.996312 0.085802
|
||||
0.000000 -0.996312 0.085802
|
||||
0.000000 -0.996312 0.085802
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Bucket_01_visual-Normal0-array" count="432" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_Bucket_01_visual-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_Bucket_01_visual-UV0-array" count="328">
|
||||
0.503250 0.182172
|
||||
0.260475 0.182172
|
||||
0.266882 0.176062
|
||||
0.496844 0.176062
|
||||
0.202726 0.996046
|
||||
0.670755 0.996046
|
||||
0.004123 0.996046
|
||||
0.472024 0.996046
|
||||
0.003904 0.183168
|
||||
0.003904 0.004111
|
||||
0.250662 0.004111
|
||||
0.250662 0.183168
|
||||
0.677249 0.192456
|
||||
0.251604 0.192456
|
||||
0.429384 0.192456
|
||||
0.854111 0.192456
|
||||
0.765823 0.004091
|
||||
0.765823 0.182429
|
||||
0.516603 0.182429
|
||||
0.516603 0.004091
|
||||
0.670755 0.468044
|
||||
0.004123 0.468044
|
||||
0.670755 0.356586
|
||||
0.004123 0.356586
|
||||
0.202726 0.468044
|
||||
0.472024 0.468044
|
||||
0.202726 0.356586
|
||||
0.472024 0.356586
|
||||
0.260475 0.004834
|
||||
0.266882 0.010943
|
||||
0.503250 0.004834
|
||||
0.496844 0.010943
|
||||
0.004105 0.192456
|
||||
0.251604 0.345840
|
||||
0.004105 0.345840
|
||||
0.677249 0.345840
|
||||
0.429384 0.345840
|
||||
0.854111 0.345840
|
||||
0.941696 0.996046
|
||||
0.941696 0.468044
|
||||
0.941696 0.356586
|
||||
0.503250 0.182172
|
||||
0.260475 0.182172
|
||||
0.266882 0.176063
|
||||
0.496844 0.176063
|
||||
0.202726 0.899077
|
||||
0.670755 0.899077
|
||||
0.004123 0.899077
|
||||
0.472024 0.899077
|
||||
0.003904 0.183168
|
||||
0.003904 0.004111
|
||||
0.250662 0.004111
|
||||
0.250662 0.183168
|
||||
0.251893 0.192456
|
||||
0.677115 0.192456
|
||||
0.854111 0.192456
|
||||
0.429617 0.192456
|
||||
0.765823 0.004091
|
||||
0.765823 0.182429
|
||||
0.516603 0.182429
|
||||
0.516603 0.004091
|
||||
0.670755 0.468044
|
||||
0.004123 0.468044
|
||||
0.670755 0.356586
|
||||
0.004123 0.356586
|
||||
0.202726 0.468044
|
||||
0.472024 0.468044
|
||||
0.202726 0.356586
|
||||
0.472024 0.356586
|
||||
0.004105 0.192456
|
||||
0.004105 0.345840
|
||||
0.677115 0.345840
|
||||
0.260475 0.004834
|
||||
0.266882 0.010943
|
||||
0.503250 0.004834
|
||||
0.496844 0.010943
|
||||
0.429617 0.345840
|
||||
0.251893 0.345840
|
||||
0.854111 0.345840
|
||||
0.941696 0.899077
|
||||
0.941696 0.468044
|
||||
0.941696 0.356586
|
||||
0.503250 0.182172
|
||||
0.260475 0.182172
|
||||
0.266878 0.176066
|
||||
0.496844 0.176066
|
||||
0.670755 0.754753
|
||||
0.202726 0.754753
|
||||
0.472024 0.754753
|
||||
0.941696 0.754753
|
||||
0.003904 0.183168
|
||||
0.003904 0.004111
|
||||
0.250662 0.004111
|
||||
0.250662 0.183168
|
||||
0.251803 0.192456
|
||||
0.676793 0.192456
|
||||
0.854111 0.192456
|
||||
0.429464 0.192456
|
||||
0.765823 0.004091
|
||||
0.765823 0.182429
|
||||
0.516603 0.182429
|
||||
0.516603 0.004091
|
||||
0.202726 0.468044
|
||||
0.472024 0.468044
|
||||
0.202726 0.356586
|
||||
0.472024 0.356586
|
||||
0.670755 0.468044
|
||||
0.941696 0.468044
|
||||
0.670755 0.356586
|
||||
0.941696 0.356586
|
||||
0.004123 0.754753
|
||||
0.004123 0.468044
|
||||
0.004123 0.356586
|
||||
0.260475 0.004834
|
||||
0.266878 0.010943
|
||||
0.503250 0.004834
|
||||
0.496844 0.010943
|
||||
0.676793 0.345840
|
||||
0.429464 0.345840
|
||||
0.251803 0.345840
|
||||
0.854111 0.345840
|
||||
0.004105 0.192456
|
||||
0.004105 0.345840
|
||||
0.503250 0.182172
|
||||
0.260475 0.182172
|
||||
0.266884 0.176061
|
||||
0.496844 0.176061
|
||||
0.670755 0.949681
|
||||
0.202726 0.949681
|
||||
0.472024 0.949681
|
||||
0.941696 0.949681
|
||||
0.003904 0.183168
|
||||
0.003904 0.004111
|
||||
0.250662 0.004111
|
||||
0.250662 0.183168
|
||||
0.251692 0.192456
|
||||
0.677407 0.192456
|
||||
0.854111 0.192456
|
||||
0.429511 0.192456
|
||||
0.765823 0.004091
|
||||
0.765823 0.182429
|
||||
0.516603 0.182429
|
||||
0.516603 0.004091
|
||||
0.202726 0.468044
|
||||
0.472024 0.468044
|
||||
0.202726 0.356586
|
||||
0.472024 0.356586
|
||||
0.670755 0.468044
|
||||
0.941696 0.468044
|
||||
0.670755 0.356586
|
||||
0.941696 0.356586
|
||||
0.260475 0.004834
|
||||
0.266884 0.010943
|
||||
0.503250 0.004834
|
||||
0.496844 0.010943
|
||||
0.677407 0.345840
|
||||
0.429511 0.345840
|
||||
0.004105 0.192456
|
||||
0.251692 0.345840
|
||||
0.004105 0.345840
|
||||
0.854111 0.345840
|
||||
0.004123 0.949681
|
||||
0.004123 0.468044
|
||||
0.004123 0.356586
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Bucket_01_visual-UV0-array" count="164" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_Bucket_01_visual-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_Bucket_01_visual-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="144" material="Material #946392"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_Bucket_01_visual-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_Bucket_01_visual-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_Bucket_01_visual-UV0"/><p> 2 0 4 6 1 24 0 2 7 0 3 7 6 4 24 4 5 25 3 6 6 7 7 21 2 8 4 2 9 4 7 10 21 6 11 24 1 12 5 5 13 20 3 14 38 3 15 38 5 16 20 7 17 39 0 18 7 4 19 25 1 20 5 1 21 5 4 22 25 5 23 20 10 24 26 4 25 25 6 26 24 4 27 25 10 28 26 8 29 27 7 30 21 11 31 23 6 32 24 6 33 24 11 34 23 10 35 26 7 36 39 5 37 20 9 38 22 7 39 39 9 40 22 11 41 40 4 42 25 8 43 27 5 44 20 5 45 20 8 46 27 9 47 22 8 48 11 11 49 9 9 50 10 11 51 9 8 52 11 10 53 8 0 54 1 12 55 3 2 56 0 12 57 3 0 58 1 13 59 2 0 60 1 1 61 28 14 62 29 0 63 1 14 64 29 13 65 2 1 66 28 3 67 30 15 68 31 1 69 28 15 70 31 14 71 29 12 72 3 3 73 30 2 74 0 3 75 30 12 76 3 15 77 31 13 78 13 16 79 34 12 80 32 16 81 34 13 82 13 17 83 33 14 84 14 17 85 33 13 86 13 17 87 33 14 88 14 18 89 36 15 90 12 19 91 35 14 92 14 14 93 14 19 94 35 18 95 36 12 96 15 16 97 37 15 98 12 15 99 12 16 100 37 19 101 35 16 102 19 18 103 17 19 104 18 18 105 17 16 106 19 17 107 16 22 108 45 26 109 65 20 110 48 20 111 48 26 112 65 24 113 66 23 114 47 27 115 62 22 116 45 22 117 45 27 118 62 26 119 65 21 120 46 25 121 61 23 122 79 23 123 79 25 124 61 27 125 80 20 126 48 24 127 66 21 128 46 21 129 46 24 130 66 25 131 61 24 132 66 26 133 65 30 134 67 24 135 66 30 136 67 28 137 68 27 138 62 31 139 64 26 140 65 26 141 65 31 142 64 30 143 67 29 144 63 27 145 80 25 146 61 27 147 80 29 148 63 31 149 81 24 150 66 28 151 68 25 152 61 25 153 61 28 154 68 29 155 63 28 156 52 31 157 50 29 158 51 31 159 50 28 160 52 30 161 49 20 162 42 32 163 44 22 164 41 32 165 44 20 166 42 33 167 43 20 168 42 21 169 72 34 170 73 20 171 42 34 172 73 33 173 43 21 174 72 23 175 74 35 176 75 21 177 72 35 178 75 34 179 73 23 180 74 22 181 41 32 182 44 23 183 74 32 184 44 35 185 75 33 186 54 36 187 76 32 188 56 36 189 76 33 190 54 37 191 71 34 192 55 37 193 71 33 194 54 37 195 71 34 196 55 38 197 78 35 198 53 39 199 77 34 200 69 34 201 69 39 202 77 38 203 70 32 204 56 36 205 76 35 206 53 35 207 53 36 208 76 39 209 77 36 210 60 38 211 58 39 212 59 38 213 58 36 214 60 37 215 57 46 216 106 40 217 89 42 218 86 40 219 89 46 220 106 44 221 107 43 222 88 47 223 103 42 224 86 42 225 86 47 226 103 46 227 106 45 228 102 43 229 88 41 230 87 43 231 88 45 232 102 47 233 103 40 234 110 44 235 111 41 236 87 41 237 87 44 238 111 45 239 102 44 240 107 46 241 106 50 242 108 44 243 107 50 244 108 48 245 109 47 246 103 51 247 105 46 248 106 46 249 106 51 250 105 50 251 108 49 252 104 47 253 103 45 254 102 47 255 103 49 256 104 51 257 105 44 258 111 48 259 112 45 260 102 45 261 102 48 262 112 49 263 104 48 264 93 51 265 91 49 266 92 51 267 91 48 268 93 50 269 90 40 270 83 52 271 85 42 272 82 52 273 85 40 274 83 53 275 84 40 276 83 41 277 113 54 278 114 40 279 83 54 280 114 53 281 84 41 282 113 43 283 115 55 284 116 41 285 113 55 286 116 54 287 114 42 288 82 55 289 116 43 290 115 55 291 116 42 292 82 52 293 85 53 294 95 56 295 118 52 296 97 56 297 118 53 298 95 57 299 117 54 300 96 57 301 117 53 302 95 57 303 117 54 304 96 58 305 120 55 306 94 59 307 119 54 308 121 54 309 121 59 310 119 58 311 122 52 312 97 56 313 118 55 314 94 55 315 94 56 316 118 59 317 119 56 318 101 58 319 99 59 320 100 58 321 99 56 322 101 57 323 98 62 324 127 66 325 147 60 326 130 60 327 130 66 328 147 64 329 148 63 330 129 67 331 144 62 332 127 62 333 127 67 334 144 66 335 147 61 336 128 65 337 143 63 338 129 63 339 129 65 340 143 67 341 144 60 342 161 64 343 162 61 344 128 61 345 128 64 346 162 65 347 143 70 348 149 64 349 148 66 350 147 64 351 148 70 352 149 68 353 150 67 354 144 71 355 146 66 356 147 66 357 147 71 358 146 70 359 149 67 360 144 65 361 143 69 362 145 67 363 144 69 364 145 71 365 146 64 366 162 68 367 163 65 368 143 65 369 143 68 370 163 69 371 145 68 372 134 71 373 132 69 374 133 71 375 132 68 376 134 70 377 131 60 378 124 72 379 126 62 380 123 72 381 126 60 382 124 73 383 125 60 384 124 61 385 151 74 386 152 60 387 124 74 388 152 73 389 125 61 390 151 63 391 153 75 392 154 61 393 151 75 394 154 74 395 152 62 396 123 75 397 154 63 398 153 75 399 154 62 400 123 72 401 126 73 402 136 76 403 156 72 404 138 76 405 156 73 406 136 77 407 155 74 408 137 77 409 155 73 410 136 77 411 155 74 412 137 78 413 160 75 414 135 79 415 158 74 416 157 74 417 157 79 418 158 78 419 159 72 420 138 76 421 156 75 422 135 75 423 135 76 424 156 79 425 158 76 426 142 78 427 140 79 428 141 78 429 140 76 430 142 77 431 139</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_Bucket_01_visual" name="aws_robomaker_warehouse_Bucket_01_visual">
|
||||
<node name="aws_robomaker_warehouse_Bucket_01_visual" id="aws_robomaker_warehouse_Bucket_01_visual" layer="aws_robomaker_warehouse_Bucket_01" sid="aws_robomaker_warehouse_Bucket_01_visual"><matrix sid="matrix">1.000000 0.000000 0.000000 -0.000031 0.000000 1.000000 0.000000 0.168701 0.000000 0.000000 1.000000 0.490845 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_Bucket_01_visual-lib"><bind_material><technique_common><instance_material symbol="Material #946392" target="#Material #946392"/></technique_common></bind_material></instance_geometry><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_Bucket_01_visual"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<model>
|
||||
<name>aws_robomaker_warehouse_Bucket_01</name>
|
||||
<version>1.0</version>
|
||||
<sdf version="1.6">model.sdf</sdf>
|
||||
<author>
|
||||
<name></name>
|
||||
<email></email>
|
||||
</author>
|
||||
<description></description>
|
||||
</model>
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version='1.0'?>
|
||||
<sdf version='1.6'>
|
||||
<model name='aws_robomaker_warehouse_Bucket_01'>
|
||||
<link name='body'>
|
||||
<inertial>
|
||||
<mass>2</mass>
|
||||
<pose frame=''>0 0 0 0 0 0</pose>
|
||||
<inertia>
|
||||
<ixx>0.570</ixx>
|
||||
<ixy>0</ixy>
|
||||
<ixz>0</ixz>
|
||||
<iyy>0.474</iyy>
|
||||
<iyz>0</iyz>
|
||||
<izz>0.391</izz>
|
||||
</inertia>
|
||||
</inertial>
|
||||
<pose frame=''>0 0 0 0 -0 0</pose>
|
||||
<self_collide>0</self_collide>
|
||||
<kinematic>0</kinematic>
|
||||
<gravity>1</gravity>
|
||||
<visual name='visual'>
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_Bucket_01/meshes/aws_robomaker_warehouse_Bucket_01_visual.DAE</uri>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<meta> <layer> 1 </layer></meta>
|
||||
</visual>
|
||||
<collision name='collision_0'>
|
||||
<laser_retro>0</laser_retro>
|
||||
<max_contacts>10</max_contacts>
|
||||
<pose frame=''>0 0 0 0 -0 0</pose>
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_Bucket_01/meshes/aws_robomaker_warehouse_Bucket_01_collision.DAE</uri>
|
||||
<scale>1 1 1</scale>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<surface>
|
||||
<friction>
|
||||
<ode>
|
||||
<mu>0.4</mu>
|
||||
<mu2>0.4</mu2>
|
||||
<fdir1>0 0 0</fdir1>
|
||||
<slip1>0</slip1>
|
||||
<slip2>0</slip2>
|
||||
</ode>
|
||||
<torsional>
|
||||
<coefficient>1</coefficient>
|
||||
<patch_radius>0</patch_radius>
|
||||
<surface_radius>0</surface_radius>
|
||||
<use_patch_radius>1</use_patch_radius>
|
||||
<ode>
|
||||
<slip>0</slip>
|
||||
</ode>
|
||||
</torsional>
|
||||
</friction>
|
||||
</surface>
|
||||
</collision>
|
||||
</link>
|
||||
<static>true</static>
|
||||
</model>
|
||||
</sdf>
|
||||
BIN
install/bcr_bot/share/bcr_bot/models/aws_robomaker_warehouse_ClutteringA_01/.DS_Store
vendored
Normal file
BIN
install/bcr_bot/share/bcr_bot/models/aws_robomaker_warehouse_ClutteringA_01/materials/.DS_Store
vendored
Normal file
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 171 KiB |
|
After Width: | Height: | Size: 335 KiB |
|
|
@ -0,0 +1,327 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-03-18T11:45:58Z</created><keywords></keywords><modified>2019-03-18T11:45:58Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_ClutteringA_01_collision-lib" name="aws_robomaker_warehouse_ClutteringA_01_collisionMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_ClutteringA_01_collision-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringA_01_collision-POSITION-array" count="96">
|
||||
-94.500908 -100.041384 3.000000
|
||||
62.468575 -100.041384 3.000000
|
||||
-94.500908 80.061399 3.000000
|
||||
62.468575 80.061399 3.000000
|
||||
-94.500908 -100.041384 111.551331
|
||||
62.468575 -100.041384 111.551331
|
||||
-94.500908 80.061399 111.551331
|
||||
62.468575 80.061399 111.551331
|
||||
29.526070 43.870054 3.000000
|
||||
96.793404 43.870054 3.000000
|
||||
29.526070 98.479551 3.000000
|
||||
96.793404 100.129454 3.000000
|
||||
29.526070 43.870054 73.674812
|
||||
96.793404 43.870054 73.674812
|
||||
29.526070 98.479551 73.674812
|
||||
96.793404 100.129454 73.674812
|
||||
56.843697 -49.131350 3.000000
|
||||
46.691963 22.638792 3.000000
|
||||
99.844673 23.109861 3.000000
|
||||
107.644112 -43.094973 3.000000
|
||||
56.843697 -49.131350 73.674812
|
||||
107.644112 -43.094973 73.674812
|
||||
99.844673 23.109861 73.674812
|
||||
46.691963 22.638792 73.674812
|
||||
-108.431084 -32.400026 3.000000
|
||||
-108.431084 18.446653 3.000000
|
||||
-88.055717 18.917723 3.000000
|
||||
-84.168144 -31.578005 3.000000
|
||||
-108.431084 -32.400026 73.674812
|
||||
-84.168144 -31.578005 73.674812
|
||||
-88.055717 18.917723 73.674812
|
||||
-108.431084 18.446653 73.674812
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringA_01_collision-POSITION-array" count="32" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_ClutteringA_01_collision-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringA_01_collision-Normal0-array" count="432">
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
-0.024520 0.999699 0.000000
|
||||
-0.024520 0.999699 0.000000
|
||||
-0.024520 0.999699 0.000000
|
||||
-0.024520 0.999699 0.000000
|
||||
-0.024520 0.999699 0.000000
|
||||
-0.024520 0.999699 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.117995 -0.993014 0.000000
|
||||
0.117995 -0.993014 0.000000
|
||||
0.117995 -0.993014 0.000000
|
||||
0.117995 -0.993014 0.000000
|
||||
0.117995 -0.993014 0.000000
|
||||
0.117995 -0.993014 0.000000
|
||||
0.993132 0.116999 0.000000
|
||||
0.993132 0.116999 0.000000
|
||||
0.993132 0.116999 0.000000
|
||||
0.993132 0.116999 0.000000
|
||||
0.993132 0.116999 0.000000
|
||||
0.993132 0.116999 0.000000
|
||||
-0.008862 0.999961 0.000000
|
||||
-0.008862 0.999961 0.000000
|
||||
-0.008862 0.999961 0.000000
|
||||
-0.008862 0.999961 0.000000
|
||||
-0.008862 0.999961 0.000000
|
||||
-0.008862 0.999961 0.000000
|
||||
-0.990144 -0.140054 0.000000
|
||||
-0.990144 -0.140054 0.000000
|
||||
-0.990144 -0.140054 0.000000
|
||||
-0.990144 -0.140054 0.000000
|
||||
-0.990144 -0.140054 0.000000
|
||||
-0.990144 -0.140054 0.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.033860 -0.999427 0.000000
|
||||
0.033860 -0.999427 0.000000
|
||||
0.033860 -0.999427 0.000000
|
||||
0.033860 -0.999427 0.000000
|
||||
0.033860 -0.999427 0.000000
|
||||
0.033860 -0.999427 0.000000
|
||||
0.997050 0.076761 0.000000
|
||||
0.997050 0.076761 0.000000
|
||||
0.997050 0.076761 0.000000
|
||||
0.997050 0.076761 0.000000
|
||||
0.997050 0.076761 0.000000
|
||||
0.997050 0.076761 0.000000
|
||||
-0.023113 0.999733 0.000000
|
||||
-0.023113 0.999733 0.000000
|
||||
-0.023113 0.999733 0.000000
|
||||
-0.023113 0.999733 0.000000
|
||||
-0.023113 0.999733 0.000000
|
||||
-0.023113 0.999733 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringA_01_collision-Normal0-array" count="144" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_ClutteringA_01_collision-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringA_01_collision-UV0-array" count="192">
|
||||
1.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
1.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringA_01_collision-UV0-array" count="96" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_ClutteringA_01_collision-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_ClutteringA_01_collision-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="48"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_ClutteringA_01_collision-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_ClutteringA_01_collision-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_ClutteringA_01_collision-UV0"/><p> 1 0 1 0 1 0 3 2 3 0 3 0 2 4 2 3 5 3 7 6 7 6 7 6 4 8 4 7 9 7 4 10 4 5 11 5 5 12 11 4 13 10 0 14 8 5 15 11 0 16 8 1 17 9 7 18 15 5 19 14 1 20 12 7 21 15 1 22 12 3 23 13 6 24 19 7 25 18 3 26 16 6 27 19 3 28 16 2 29 17 4 30 23 6 31 22 2 32 20 4 33 23 2 34 20 0 35 21 9 36 25 10 37 26 11 38 27 10 39 26 9 40 25 8 41 24 14 42 30 13 43 29 15 44 31 13 45 29 14 46 30 12 47 28 13 48 35 12 49 34 8 50 32 13 51 35 8 52 32 9 53 33 15 54 39 13 55 38 9 56 36 15 57 39 9 58 36 11 59 37 14 60 43 15 61 42 11 62 40 14 63 43 11 64 40 10 65 41 12 66 47 14 67 46 10 68 44 12 69 47 10 70 44 8 71 45 19 72 51 16 73 48 18 74 50 16 75 48 17 76 49 18 77 50 22 78 54 23 79 55 20 80 52 22 81 54 20 82 52 21 83 53 21 84 58 20 85 59 16 86 56 21 87 58 16 88 56 19 89 57 22 90 62 21 91 63 19 92 60 22 93 62 19 94 60 18 95 61 23 96 66 22 97 67 18 98 64 23 99 66 18 100 64 17 101 65 20 102 70 23 103 71 17 104 68 20 105 70 17 106 68 16 107 69 26 108 74 27 109 75 24 110 72 24 111 72 25 112 73 26 113 74 31 114 79 28 115 76 30 116 78 30 117 78 28 118 76 29 119 77 28 120 83 24 121 80 29 122 82 29 123 82 24 124 80 27 125 81 30 126 86 29 127 87 27 128 84 30 129 86 27 130 84 26 131 85 30 132 91 26 133 88 31 134 90 31 135 90 26 136 88 25 137 89 28 138 94 31 139 95 25 140 92 28 141 94 25 142 92 24 143 93</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_ClutteringA_01_collision" name="aws_robomaker_warehouse_ClutteringA_01_collision">
|
||||
<node name="aws_robomaker_warehouse_ClutteringA_01_collision" id="aws_robomaker_warehouse_ClutteringA_01_collision" layer="Cluttering" sid="aws_robomaker_warehouse_ClutteringA_01_collision"><matrix sid="matrix">1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_ClutteringA_01_collision-lib"/><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_ClutteringA_01_collision"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<model>
|
||||
<name>aws_robomaker_warehouse_ClutteringA_01</name>
|
||||
<version>1.0</version>
|
||||
<sdf version="1.6">model.sdf</sdf>
|
||||
<author>
|
||||
<name></name>
|
||||
<email></email>
|
||||
</author>
|
||||
<description></description>
|
||||
</model>
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" ?>
|
||||
<sdf version="1.6">
|
||||
<model name="aws_robomaker_warehouse_ClutteringA_01">
|
||||
<link name="link">
|
||||
<inertial>
|
||||
<mass>2</mass>
|
||||
<inertia>
|
||||
<ixx>0.841</ixx>
|
||||
<ixy>0</ixy>
|
||||
<ixz>0</ixz>
|
||||
<iyy>0.954</iyy>
|
||||
<iyz>0</iyz>
|
||||
<izz>1.422</izz>
|
||||
</inertia>
|
||||
</inertial>
|
||||
<collision name="collision">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_ClutteringA_01/meshes/aws_robomaker_warehouse_ClutteringA_01_collision.DAE</uri>
|
||||
<scale>1 1 1</scale>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<surface>
|
||||
<friction>
|
||||
<ode>
|
||||
<mu>0.6</mu>
|
||||
<mu2>0.6</mu2>
|
||||
<fdir1>0 0 0</fdir1>
|
||||
<slip1>0</slip1>
|
||||
<slip2>0</slip2>
|
||||
</ode>
|
||||
<torsional>
|
||||
<coefficient>1</coefficient>
|
||||
<patch_radius>0</patch_radius>
|
||||
<surface_radius>0</surface_radius>
|
||||
<use_patch_radius>1</use_patch_radius>
|
||||
<ode>
|
||||
<slip>0</slip>
|
||||
</ode>
|
||||
</torsional>
|
||||
</friction>
|
||||
</surface>
|
||||
</collision>
|
||||
<visual name="visual">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_ClutteringA_01/meshes/aws_robomaker_warehouse_ClutteringA_01_visual.DAE</uri>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<meta> <layer> 1 </layer></meta>
|
||||
</visual>
|
||||
</link>
|
||||
<static>1</static>
|
||||
</model>
|
||||
</sdf>
|
||||
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 171 KiB |
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-03-20T02:46:25Z</created><keywords></keywords><modified>2019-03-20T02:46:25Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_ClutteringC_01_collision-lib" name="aws_robomaker_warehouse_ClutteringC_01_collisionMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_ClutteringC_01_collision-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringC_01_collision-POSITION-array" count="24">
|
||||
-88.666687 -102.994263 3.000000
|
||||
88.666687 -102.994263 3.000000
|
||||
-88.666687 102.994263 3.000000
|
||||
88.666687 102.994263 3.000000
|
||||
-88.666687 -102.994263 179.031189
|
||||
88.666687 -102.994263 179.031189
|
||||
-88.666687 102.994263 179.031189
|
||||
88.666687 102.994263 179.031189
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringC_01_collision-POSITION-array" count="8" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_ClutteringC_01_collision-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringC_01_collision-Normal0-array" count="108">
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringC_01_collision-Normal0-array" count="36" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_ClutteringC_01_collision-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringC_01_collision-UV0-array" count="48">
|
||||
1.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringC_01_collision-UV0-array" count="24" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_ClutteringC_01_collision-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_ClutteringC_01_collision-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="12"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_ClutteringC_01_collision-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_ClutteringC_01_collision-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_ClutteringC_01_collision-UV0"/><p> 1 0 1 0 1 0 3 2 3 0 3 0 2 4 2 3 5 3 7 6 7 6 7 6 4 8 4 7 9 7 4 10 4 5 11 5 5 12 11 4 13 10 0 14 8 5 15 11 0 16 8 1 17 9 7 18 15 5 19 14 1 20 12 7 21 15 1 22 12 3 23 13 6 24 19 7 25 18 3 26 16 6 27 19 3 28 16 2 29 17 4 30 23 6 31 22 2 32 20 4 33 23 2 34 20 0 35 21</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_ClutteringC_01_collision" name="aws_robomaker_warehouse_ClutteringC_01_collision">
|
||||
<node name="aws_robomaker_warehouse_ClutteringC_01_collision" id="aws_robomaker_warehouse_ClutteringC_01_collision" layer="Cluttering" sid="aws_robomaker_warehouse_ClutteringC_01_collision"><matrix sid="matrix">1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_ClutteringC_01_collision-lib"/><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_ClutteringC_01_collision"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<model>
|
||||
<name>aws_robomaker_warehouse_ClutteringC_01</name>
|
||||
<version>1.0</version>
|
||||
<sdf version="1.6">model.sdf</sdf>
|
||||
<author>
|
||||
<name></name>
|
||||
<email></email>
|
||||
</author>
|
||||
<description></description>
|
||||
</model>
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" ?>
|
||||
<sdf version="1.6">
|
||||
<model name="aws_robomaker_warehouse_ClutteringC_01">
|
||||
<link name="link">
|
||||
<inertial>
|
||||
<mass>1</mass>
|
||||
<inertia>
|
||||
<ixx>1.558</ixx>
|
||||
<ixy>0</ixy>
|
||||
<ixz>0</ixz>
|
||||
<iyy>1.821</iyy>
|
||||
<iyz>0</iyz>
|
||||
<izz>1.892</izz>
|
||||
</inertia>
|
||||
</inertial>
|
||||
<collision name="collision">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_ClutteringC_01/meshes/aws_robomaker_warehouse_ClutteringC_01_collision.DAE</uri>
|
||||
<scale>1 1 1</scale>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<surface>
|
||||
<friction>
|
||||
<ode>
|
||||
<mu>0.6</mu>
|
||||
<mu2>0.6</mu2>
|
||||
<fdir1>0 0 0</fdir1>
|
||||
<slip1>0</slip1>
|
||||
<slip2>0</slip2>
|
||||
</ode>
|
||||
<torsional>
|
||||
<coefficient>1</coefficient>
|
||||
<patch_radius>0</patch_radius>
|
||||
<surface_radius>0</surface_radius>
|
||||
<use_patch_radius>1</use_patch_radius>
|
||||
<ode>
|
||||
<slip>0</slip>
|
||||
</ode>
|
||||
</torsional>
|
||||
</friction>
|
||||
</surface>
|
||||
</collision>
|
||||
<visual name="visual">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_ClutteringC_01/meshes/aws_robomaker_warehouse_ClutteringC_01_visual.DAE</uri>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<meta> <layer> 1 </layer></meta>
|
||||
</visual>
|
||||
</link>
|
||||
<static>1</static>
|
||||
</model>
|
||||
</sdf>
|
||||
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 171 KiB |
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-03-25T05:42:49Z</created><keywords></keywords><modified>2019-03-25T05:42:49Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_ClutteringD_01_collision-lib" name="aws_robomaker_warehouse_ClutteringD_01_collisionMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_ClutteringD_01_collision-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringD_01_collision-POSITION-array" count="24">
|
||||
-50.844025 33.298004 -76.084843
|
||||
50.844025 33.298004 -76.084843
|
||||
-50.844025 182.463806 -76.084846
|
||||
50.844025 182.463806 -76.084846
|
||||
-50.844025 33.298012 76.084789
|
||||
50.844025 33.298012 76.084789
|
||||
-50.844025 182.463806 76.084789
|
||||
50.844025 182.463806 76.084789
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringD_01_collision-POSITION-array" count="8" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_ClutteringD_01_collision-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringD_01_collision-Normal0-array" count="108">
|
||||
0.000000 -0.000000 -1.000000
|
||||
0.000000 -0.000000 -1.000000
|
||||
0.000000 -0.000000 -1.000000
|
||||
0.000000 -0.000000 -1.000000
|
||||
0.000000 -0.000000 -1.000000
|
||||
0.000000 -0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringD_01_collision-Normal0-array" count="36" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_ClutteringD_01_collision-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_ClutteringD_01_collision-UV0-array" count="48">
|
||||
1.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_ClutteringD_01_collision-UV0-array" count="24" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_ClutteringD_01_collision-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_ClutteringD_01_collision-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="12"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_ClutteringD_01_collision-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_ClutteringD_01_collision-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_ClutteringD_01_collision-UV0"/><p> 1 0 1 0 1 0 3 2 3 0 3 0 2 4 2 3 5 3 7 6 7 6 7 6 4 8 4 7 9 7 4 10 4 5 11 5 5 12 11 4 13 10 0 14 8 5 15 11 0 16 8 1 17 9 5 18 14 3 19 13 7 20 15 3 21 13 5 22 14 1 23 12 6 24 19 7 25 18 3 26 16 6 27 19 3 28 16 2 29 17 4 30 23 6 31 22 2 32 20 4 33 23 2 34 20 0 35 21</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_ClutteringD_01_collision" name="aws_robomaker_warehouse_ClutteringD_01_collision">
|
||||
<node name="aws_robomaker_warehouse_ClutteringD_01_collision" id="aws_robomaker_warehouse_ClutteringD_01_collision" layer="items_xiugai" sid="aws_robomaker_warehouse_ClutteringD_01_collision"><matrix sid="matrix">1.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -1.000000 0.000000 0.000000 1.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_ClutteringD_01_collision-lib"/><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_ClutteringD_01_collision"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<model>
|
||||
<name>aws_robomaker_warehouse_ClutteringD_01</name>
|
||||
<version>1.0</version>
|
||||
<sdf version="1.6">model.sdf</sdf>
|
||||
<author>
|
||||
<name></name>
|
||||
<email></email>
|
||||
</author>
|
||||
<description></description>
|
||||
</model>
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" ?>
|
||||
<sdf version="1.6">
|
||||
<model name="aws_robomaker_warehouse_ClutteringD_01">
|
||||
<link name="link">
|
||||
<inertial>
|
||||
<mass>1</mass>
|
||||
<inertia>
|
||||
<ixx>1.558</ixx>
|
||||
<ixy>0</ixy>
|
||||
<ixz>0</ixz>
|
||||
<iyy>1.821</iyy>
|
||||
<iyz>0</iyz>
|
||||
<izz>1.892</izz>
|
||||
</inertia>
|
||||
</inertial>
|
||||
<collision name="collision">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_ClutteringD_01/meshes/aws_robomaker_warehouse_ClutteringD_01_collision.DAE</uri>
|
||||
<scale>1 1 1</scale>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<surface>
|
||||
<friction>
|
||||
<ode>
|
||||
<mu>0.6</mu>
|
||||
<mu2>0.6</mu2>
|
||||
<fdir1>0 0 0</fdir1>
|
||||
<slip1>0</slip1>
|
||||
<slip2>0</slip2>
|
||||
</ode>
|
||||
<torsional>
|
||||
<coefficient>1</coefficient>
|
||||
<patch_radius>0</patch_radius>
|
||||
<surface_radius>0</surface_radius>
|
||||
<use_patch_radius>1</use_patch_radius>
|
||||
<ode>
|
||||
<slip>0</slip>
|
||||
</ode>
|
||||
</torsional>
|
||||
</friction>
|
||||
</surface>
|
||||
</collision>
|
||||
<visual name="visual">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_ClutteringD_01/meshes/aws_robomaker_warehouse_ClutteringD_01_visual.DAE</uri>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<meta> <layer> 1 </layer></meta>
|
||||
</visual>
|
||||
</link>
|
||||
<static>1</static>
|
||||
</model>
|
||||
</sdf>
|
||||
BIN
install/bcr_bot/share/bcr_bot/models/aws_robomaker_warehouse_DeskC_01/materials/.DS_Store
vendored
Normal file
|
After Width: | Height: | Size: 660 KiB |
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 171 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<model>
|
||||
<name>aws_robomaker_warehouse_DeskC_01</name>
|
||||
<version>1.0</version>
|
||||
<sdf version="1.6">model.sdf</sdf>
|
||||
<author>
|
||||
<name></name>
|
||||
<email></email>
|
||||
</author>
|
||||
<description></description>
|
||||
</model>
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0" ?>
|
||||
<sdf version="1.6">
|
||||
<model name="aws_robomaker_warehouse_DeskC_01">
|
||||
<link name="link">
|
||||
<inertial>
|
||||
<mass>1</mass>
|
||||
<inertia>
|
||||
<ixx>0.608</ixx>
|
||||
<ixy>0</ixy>
|
||||
<ixz>0</ixz>
|
||||
<iyy>0.476</iyy>
|
||||
<iyz>0</iyz>
|
||||
<izz>0.542</izz>
|
||||
</inertia>
|
||||
</inertial>
|
||||
<collision name="collision">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_DeskC_01/meshes/aws_robomaker_warehouse_DeskC_01_collision.DAE</uri>
|
||||
<scale>1 1 1</scale>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<surface>
|
||||
<friction>
|
||||
<ode>
|
||||
<mu>0.3</mu>
|
||||
<mu2>0.3</mu2>
|
||||
<fdir1>0 0 0</fdir1>
|
||||
<slip1>0</slip1>
|
||||
<slip2>0</slip2>
|
||||
</ode>
|
||||
</friction>
|
||||
</surface>
|
||||
</collision>
|
||||
<visual name="visual">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_DeskC_01/meshes/aws_robomaker_warehouse_DeskC_01_visual.DAE</uri>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<meta> <layer> 1 </layer></meta>
|
||||
</visual>
|
||||
</link>
|
||||
<static>1</static>
|
||||
</model>
|
||||
</sdf>
|
||||
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 57 KiB |
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-05-15T08:16:04Z</created><keywords></keywords><modified>2019-05-15T08:16:04Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_GroundB_01_collision-lib" name="aws_robomaker_warehouse_GroundB_01_collisionMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_GroundB_01_collision-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_GroundB_01_collision-POSITION-array" count="24">
|
||||
-699.023499 -1045.333252 -0.000123
|
||||
699.023499 -1045.333252 -0.000124
|
||||
-699.023499 -1045.333252 12.431540
|
||||
699.023499 -1045.333252 12.431539
|
||||
-699.023499 1045.333252 0.000128
|
||||
699.023499 1045.333252 0.000129
|
||||
-699.023499 1045.333130 12.431791
|
||||
699.023499 1045.333130 12.431792
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_GroundB_01_collision-POSITION-array" count="8" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_GroundB_01_collision-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_GroundB_01_collision-Normal0-array" count="108">
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_GroundB_01_collision-Normal0-array" count="36" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_GroundB_01_collision-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_GroundB_01_collision-UV0-array" count="48">
|
||||
1.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_GroundB_01_collision-UV0-array" count="24" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_GroundB_01_collision-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_GroundB_01_collision-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="12"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_GroundB_01_collision-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_GroundB_01_collision-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_GroundB_01_collision-UV0"/><p> 3 0 3 2 1 2 0 2 0 3 3 3 0 4 0 1 5 1 6 6 6 5 7 5 4 8 4 5 9 5 6 10 6 7 11 7 1 12 9 0 13 8 5 14 11 0 15 8 4 16 10 5 17 11 7 18 15 3 19 13 1 20 12 7 21 15 1 22 12 5 23 14 6 24 19 3 25 16 7 26 18 3 27 16 6 28 19 2 29 17 6 30 22 0 31 21 2 32 20 0 33 21 6 34 22 4 35 23</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_GroundB_01_collision" name="aws_robomaker_warehouse_GroundB_01_collision">
|
||||
<node name="aws_robomaker_warehouse_GroundB_01_collision" id="aws_robomaker_warehouse_GroundB_01_collision" layer="zhenghe_collution" sid="aws_robomaker_warehouse_GroundB_01_collision"><matrix sid="matrix">1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_GroundB_01_collision-lib"/><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_GroundB_01_collision"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||
|
|
@ -0,0 +1,706 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-05-15T08:15:48Z</created><keywords></keywords><modified>2019-05-15T08:15:48Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_images>
|
||||
<image id="Map #1123124520-image" name="Map #1123124520">
|
||||
<init_from>../materials/textures/aws_robomaker_warehouse_GroundB_01.png</init_from>
|
||||
</image>
|
||||
<image id="Map #1123124521-image" name="Map #1123124521">
|
||||
<init_from>../materials/textures/aws_robomaker_warehouse_GroundB_02.png</init_from>
|
||||
</image>
|
||||
</library_images>
|
||||
<library_materials>
|
||||
<material id="Material #946568" name="Material #946568">
|
||||
<instance_effect url="#Material #946568-fx"/>
|
||||
</material>
|
||||
<material id="Material #946569" name="Material #946569">
|
||||
<instance_effect url="#Material #946569-fx"/>
|
||||
</material>
|
||||
</library_materials>
|
||||
<library_effects>
|
||||
<effect id="Material #946568-fx" name="Material #946568">
|
||||
<profile_COMMON>
|
||||
<technique sid="standard">
|
||||
<phong>
|
||||
<emission>
|
||||
<color sid="emission">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</emission>
|
||||
<ambient>
|
||||
<color sid="ambient">0.588000 0.588000 0.588000 1.000000</color>
|
||||
</ambient>
|
||||
<diffuse>
|
||||
<texture texture="Map #1123124520-image" texcoord="CHANNEL0">
|
||||
<extra>
|
||||
<technique profile="MAYA">
|
||||
<wrapU sid="wrapU0">TRUE</wrapU>
|
||||
<wrapV sid="wrapV0">TRUE</wrapV>
|
||||
<blend_mode>ADD</blend_mode>
|
||||
</technique>
|
||||
</extra>
|
||||
</texture>
|
||||
</diffuse>
|
||||
<specular>
|
||||
<color sid="specular">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</specular>
|
||||
<shininess>
|
||||
<float sid="shininess">2.000000</float>
|
||||
</shininess>
|
||||
<reflective>
|
||||
<color sid="reflective">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</reflective>
|
||||
<reflectivity>
|
||||
<float sid="reflectivity">1.000000</float>
|
||||
</reflectivity>
|
||||
<transparent opaque="RGB_ZERO">
|
||||
<color sid="transparent">1.000000 1.000000 1.000000 1.000000</color>
|
||||
</transparent>
|
||||
<transparency>
|
||||
<float sid="transparency">0.000000</float>
|
||||
</transparency>
|
||||
</phong>
|
||||
</technique>
|
||||
</profile_COMMON>
|
||||
</effect>
|
||||
<effect id="Material #946569-fx" name="Material #946569">
|
||||
<profile_COMMON>
|
||||
<technique sid="standard">
|
||||
<phong>
|
||||
<emission>
|
||||
<color sid="emission">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</emission>
|
||||
<ambient>
|
||||
<color sid="ambient">0.588000 0.588000 0.588000 1.000000</color>
|
||||
</ambient>
|
||||
<diffuse>
|
||||
<texture texture="Map #1123124521-image" texcoord="CHANNEL0">
|
||||
<extra>
|
||||
<technique profile="MAYA">
|
||||
<wrapU sid="wrapU0">TRUE</wrapU>
|
||||
<wrapV sid="wrapV0">TRUE</wrapV>
|
||||
<blend_mode>ADD</blend_mode>
|
||||
</technique>
|
||||
</extra>
|
||||
</texture>
|
||||
</diffuse>
|
||||
<specular>
|
||||
<color sid="specular">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</specular>
|
||||
<shininess>
|
||||
<float sid="shininess">2.000000</float>
|
||||
</shininess>
|
||||
<reflective>
|
||||
<color sid="reflective">0.000000 0.000000 0.000000 1.000000</color>
|
||||
</reflective>
|
||||
<reflectivity>
|
||||
<float sid="reflectivity">1.000000</float>
|
||||
</reflectivity>
|
||||
<transparent opaque="RGB_ZERO">
|
||||
<color sid="transparent">1.000000 1.000000 1.000000 1.000000</color>
|
||||
</transparent>
|
||||
<transparency>
|
||||
<float sid="transparency">0.000000</float>
|
||||
</transparency>
|
||||
</phong>
|
||||
</technique>
|
||||
</profile_COMMON>
|
||||
</effect>
|
||||
</library_effects>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_GroundB_01_visual-lib" name="aws_robomaker_warehouse_GroundB_01_visualMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_GroundB_01_visual-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_GroundB_01_visual-POSITION-array" count="300">
|
||||
-699.023499 -1045.333252 -0.000123
|
||||
699.023499 -1045.333252 -0.000124
|
||||
-699.023499 -1045.333252 12.431540
|
||||
699.023499 -1045.333252 12.431539
|
||||
-699.023499 1045.333252 0.000128
|
||||
699.023499 1045.333252 0.000129
|
||||
-699.023499 1045.333130 12.431791
|
||||
699.023499 1045.333130 12.431792
|
||||
-255.414734 -237.748291 12.445392
|
||||
44.585266 -237.748291 12.445392
|
||||
-255.414734 62.251705 12.445440
|
||||
44.585266 62.251705 12.445440
|
||||
-248.186340 -230.519897 12.445393
|
||||
37.356873 -230.519897 12.445393
|
||||
37.356873 55.023312 12.445439
|
||||
-248.186340 55.023312 12.445439
|
||||
-255.414734 -882.155273 12.445316
|
||||
44.585266 -882.155273 12.445316
|
||||
-255.414734 -582.155273 12.445366
|
||||
44.585266 -582.155273 12.445366
|
||||
-248.186340 -874.926880 12.445318
|
||||
37.356873 -874.926880 12.445318
|
||||
37.356873 -589.383667 12.445364
|
||||
-248.186340 -589.383667 12.445364
|
||||
-255.414734 -559.951782 12.445369
|
||||
44.585266 -559.951782 12.445369
|
||||
-255.414734 -259.951782 12.445388
|
||||
44.585266 -259.951782 12.445388
|
||||
-248.186340 -552.723389 12.445371
|
||||
37.356873 -552.723389 12.445371
|
||||
37.356873 -267.180176 12.445387
|
||||
-248.186340 -267.180176 12.445387
|
||||
-255.414734 84.455200 12.445444
|
||||
44.585266 84.455200 12.445444
|
||||
-255.414734 384.455200 12.445462
|
||||
44.585266 384.455200 12.445462
|
||||
-248.186340 91.683594 12.445445
|
||||
37.356873 91.683594 12.445445
|
||||
37.356873 377.226807 12.445461
|
||||
-248.186340 377.226807 12.445461
|
||||
-255.414734 406.658691 12.445527
|
||||
44.585266 406.658691 12.445527
|
||||
-255.414734 706.658691 12.445576
|
||||
44.585266 706.658691 12.445576
|
||||
-248.186340 413.887085 12.445528
|
||||
37.356873 413.887085 12.445528
|
||||
37.356873 699.430298 12.445575
|
||||
-248.186340 699.430298 12.445575
|
||||
132.339752 -1043.718018 12.445252
|
||||
141.445953 -1043.718018 12.445252
|
||||
132.339752 1046.807373 12.445501
|
||||
141.445953 1046.807373 12.445501
|
||||
141.445953 -908.130371 12.445269
|
||||
132.339752 -908.130371 12.445269
|
||||
141.445953 -983.652710 12.445258
|
||||
132.339752 -983.652710 12.445258
|
||||
141.445953 -992.508667 12.445259
|
||||
132.339752 -992.508667 12.445259
|
||||
-423.674530 -983.652710 12.445258
|
||||
-423.674530 -992.508667 12.445259
|
||||
141.445953 -899.566162 12.445268
|
||||
132.339752 -899.566162 12.445268
|
||||
-337.738800 -908.130371 12.445269
|
||||
-337.738800 -899.566162 12.445268
|
||||
-329.554382 -908.130371 12.445269
|
||||
-329.554382 -899.566162 12.445268
|
||||
-337.738800 1046.807373 12.445501
|
||||
-329.554382 1046.807373 12.445501
|
||||
-415.294403 -983.652710 12.445258
|
||||
-415.294403 -992.508667 12.445259
|
||||
-423.674530 1046.807373 12.445501
|
||||
-415.294403 1046.807373 12.445501
|
||||
-423.674530 883.609009 12.445482
|
||||
-415.294403 883.609009 12.445482
|
||||
-415.294403 959.849304 12.445491
|
||||
-423.674530 959.849304 12.445491
|
||||
-423.674591 875.711548 12.445481
|
||||
-415.294403 875.711609 12.445481
|
||||
-686.119019 883.609009 12.445482
|
||||
-686.119019 875.711548 12.445481
|
||||
-415.294403 968.018066 12.445493
|
||||
-423.674530 968.018066 12.445493
|
||||
-689.973267 959.849304 12.445491
|
||||
-689.973267 968.018066 12.445493
|
||||
215.702194 -1044.132324 12.445252
|
||||
224.808395 -1044.132324 12.445252
|
||||
215.702194 177.500122 12.445397
|
||||
224.808395 177.500122 12.445397
|
||||
224.808395 168.217163 12.445396
|
||||
215.702194 168.217163 12.445396
|
||||
700.987549 177.500122 12.445397
|
||||
700.987549 168.217163 12.445396
|
||||
215.702194 258.095581 12.445407
|
||||
224.808395 258.095581 12.445407
|
||||
224.808395 1046.807373 12.445501
|
||||
215.702194 1046.807373 12.445501
|
||||
224.808395 266.876099 12.445409
|
||||
215.702194 266.876099 12.445409
|
||||
700.987549 258.095581 12.445407
|
||||
700.987549 266.876099 12.445409
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_GroundB_01_visual-POSITION-array" count="100" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_GroundB_01_visual-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_GroundB_01_visual-Normal0-array" count="846">
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
-0.000000 1.000000 0.000010
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
-0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
0.000000 -0.000000 1.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_GroundB_01_visual-Normal0-array" count="282" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_GroundB_01_visual-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_GroundB_01_visual-UV0-array" count="328">
|
||||
4.846894 2.550678
|
||||
4.846894 4.846265
|
||||
4.826477 4.846265
|
||||
4.826477 2.550678
|
||||
4.783730 2.550678
|
||||
4.804147 2.550678
|
||||
4.804147 4.846265
|
||||
4.783730 4.846265
|
||||
1.222342 2.572054
|
||||
4.655206 2.572054
|
||||
4.655206 4.867640
|
||||
1.222342 4.867640
|
||||
1.222341 4.953428
|
||||
4.655206 4.953428
|
||||
4.655205 4.973845
|
||||
1.222341 4.973845
|
||||
1.179594 0.114090
|
||||
4.612459 0.114091
|
||||
4.612458 2.409678
|
||||
1.179594 2.409678
|
||||
1.414463 2.740246
|
||||
1.414463 -0.692619
|
||||
1.434875 -0.692619
|
||||
1.434875 2.740246
|
||||
-1.691137 1.355757
|
||||
-1.976730 0.985989
|
||||
-1.933884 0.943143
|
||||
-1.733945 1.312949
|
||||
-1.976730 -0.792248
|
||||
-1.933884 -0.749402
|
||||
-1.691137 -0.420905
|
||||
-1.733945 -0.378097
|
||||
-1.799502 -0.426135
|
||||
-1.798186 -0.952645
|
||||
-1.755340 -0.995491
|
||||
-1.842348 -0.468980
|
||||
-1.798186 -2.730882
|
||||
-1.755340 -2.688036
|
||||
-1.799502 -2.204372
|
||||
-1.842348 -2.161526
|
||||
-1.799502 1.365183
|
||||
-1.798186 0.838673
|
||||
-1.755340 0.795827
|
||||
-1.842348 1.322337
|
||||
-1.798186 -0.939565
|
||||
-1.755340 -0.896719
|
||||
-1.799502 -0.413054
|
||||
-1.842348 -0.370208
|
||||
-1.730909 -0.433973
|
||||
-1.875866 -0.575192
|
||||
-1.833020 -0.618038
|
||||
-1.773717 -0.476781
|
||||
-1.875866 -2.353429
|
||||
-1.833020 -2.310584
|
||||
-1.730909 -2.210634
|
||||
-1.773717 -2.167826
|
||||
-1.958919 2.451030
|
||||
-1.717841 -0.433973
|
||||
-1.675033 -0.476781
|
||||
-2.001765 2.408185
|
||||
-1.717841 -2.210634
|
||||
-1.675033 -2.167826
|
||||
-1.958919 0.672793
|
||||
-2.001765 0.715639
|
||||
0.521328 0.470354
|
||||
0.521328 0.474995
|
||||
0.410392 1.020932
|
||||
0.410392 1.016567
|
||||
0.415033 1.016567
|
||||
-1.461452 0.891229
|
||||
0.495226 0.474995
|
||||
-1.461452 0.864380
|
||||
0.495226 0.470354
|
||||
-1.461452 0.858776
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.858776
|
||||
0.415033 1.020932
|
||||
-1.461452 0.896788
|
||||
-1.461452 0.896788
|
||||
-1.461452 0.891229
|
||||
-1.461452 0.891229
|
||||
-1.461452 0.896788
|
||||
-1.461452 0.896788
|
||||
-1.461452 0.896788
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.858776
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
-1.461452 0.864380
|
||||
0.436771 0.036056
|
||||
0.441413 0.036056
|
||||
0.422756 0.026574
|
||||
0.422756 0.021932
|
||||
0.418024 0.026574
|
||||
0.418024 0.021932
|
||||
0.422756 0.269288
|
||||
0.418024 0.269288
|
||||
-1.767357 1.965086
|
||||
-1.767357 0.186848
|
||||
0.425656 0.029564
|
||||
0.430298 0.029564
|
||||
0.430298 0.034040
|
||||
0.425656 0.034040
|
||||
0.430297 0.431580
|
||||
0.425656 0.431580
|
||||
0.444403 0.403750
|
||||
0.448879 0.403750
|
||||
-1.724511 0.229694
|
||||
-1.724511 1.922239
|
||||
-1.855502 0.428975
|
||||
-1.898310 0.471783
|
||||
-1.855502 2.205637
|
||||
-1.898310 2.162829
|
||||
-1.842433 0.376135
|
||||
-1.842433 -1.400526
|
||||
-1.799625 -1.357718
|
||||
-1.799626 0.333327
|
||||
-1.743367 -2.377502
|
||||
-1.786175 -2.334694
|
||||
-1.743367 -0.600840
|
||||
-1.786175 -0.643649
|
||||
-1.795829 2.663701
|
||||
-1.795829 0.885463
|
||||
-1.752983 0.928309
|
||||
-1.752983 2.620854
|
||||
-1.855502 -1.400526
|
||||
-1.898310 -1.357718
|
||||
-1.855502 0.376135
|
||||
-1.898310 0.333327
|
||||
-1.842434 2.165865
|
||||
-1.842433 0.389204
|
||||
-1.799626 0.432011
|
||||
-1.799626 2.123057
|
||||
-1.743367 -0.587772
|
||||
-1.786175 -0.544964
|
||||
-1.743367 1.188889
|
||||
-1.786175 1.146081
|
||||
-1.842434 3.955595
|
||||
-1.842434 2.178934
|
||||
-1.799626 2.221741
|
||||
-1.799626 3.912786
|
||||
-1.743367 1.201958
|
||||
-1.786175 1.244766
|
||||
-1.743367 2.978619
|
||||
-1.786175 2.935811
|
||||
0.410392 0.024476
|
||||
0.415033 0.024476
|
||||
0.490712 0.474995
|
||||
0.490712 0.470354
|
||||
0.441413 0.654006
|
||||
0.436771 0.654006
|
||||
0.444403 0.646464
|
||||
0.448879 0.646464
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_GroundB_01_visual-UV0-array" count="164" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_GroundB_01_visual-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_GroundB_01_visual-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Material #946568"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_GroundB_01_visual-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_GroundB_01_visual-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_GroundB_01_visual-UV0"/><p> 3 0 2 2 1 3 0 2 0 3 3 2 0 4 0 1 5 1 6 6 5 5 7 7 4 8 4 5 9 7 6 10 5 7 11 6 1 12 11 0 13 8 5 14 10 0 15 8 4 16 9 5 17 10 7 18 14 3 19 15 1 20 12 7 21 14 1 22 12 5 23 13 6 24 18 3 25 16 7 26 17 3 27 16 6 28 18 2 29 19 6 30 21 0 31 23 2 32 20 0 33 23 6 34 21 4 35 22</p></triangles>
|
||||
<triangles count="82" material="Material #946569"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_GroundB_01_visual-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_GroundB_01_visual-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_GroundB_01_visual-UV0"/><p> 8 36 108 9 37 109 13 38 118 8 39 108 13 40 118 12 41 119 9 42 25 11 43 28 14 44 29 9 45 25 14 46 29 13 47 26 11 48 120 10 49 122 15 50 123 11 51 120 15 52 123 14 53 121 10 54 30 8 55 24 12 56 27 10 57 30 12 58 27 15 59 31 16 60 124 17 61 125 21 62 126 16 63 124 21 64 126 20 65 127 17 66 33 19 67 36 22 68 37 17 69 33 22 70 37 21 71 34 19 72 128 18 73 130 23 74 131 19 75 128 23 76 131 22 77 129 18 78 38 16 79 32 20 80 35 18 81 38 20 82 35 23 83 39 24 84 132 25 85 133 29 86 134 24 87 132 29 88 134 28 89 135 25 90 41 27 91 44 30 92 45 25 93 41 30 94 45 29 95 42 27 96 136 26 97 138 31 98 139 27 99 136 31 100 139 30 101 137 26 102 46 24 103 40 28 104 43 26 105 46 28 106 43 31 107 47 32 108 140 33 109 141 37 110 142 32 111 140 37 112 142 36 113 143 33 114 49 35 115 52 38 116 53 33 117 49 38 118 53 37 119 50 35 120 144 34 121 146 39 122 147 35 123 144 39 124 147 38 125 145 34 126 54 32 127 48 36 128 51 34 129 54 36 130 51 39 131 55 40 132 148 41 133 149 45 134 150 40 135 148 45 136 150 44 137 151 41 138 57 43 139 60 46 140 61 41 141 57 46 142 61 45 143 58 43 144 152 42 145 154 47 146 155 43 147 152 47 148 155 46 149 153 42 150 62 40 151 56 44 152 59 42 153 62 44 154 59 47 155 63 57 156 72 49 157 65 56 158 70 49 159 65 57 160 72 48 161 64 61 162 68 53 163 76 60 164 67 60 165 67 53 166 76 52 167 66 55 168 159 57 169 72 54 170 158 54 171 158 57 172 72 56 173 70 69 174 85 55 175 71 68 176 84 55 177 71 69 178 85 57 179 73 50 180 157 61 181 68 51 182 156 51 183 156 61 184 68 60 185 67 61 186 77 65 187 81 64 188 80 61 189 77 64 190 80 53 191 69 65 192 81 63 193 78 64 194 80 63 195 78 62 196 79 64 197 80 66 198 83 63 199 78 67 200 82 67 201 82 63 202 78 65 203 81 68 204 84 58 205 74 69 206 85 58 207 74 59 208 75 69 209 85 76 210 92 68 211 84 77 212 93 68 213 84 76 214 92 58 215 74 81 216 97 75 217 91 80 218 96 80 219 96 75 220 91 74 221 90 72 222 88 77 223 93 73 224 89 77 225 93 72 226 88 76 227 92 78 228 94 76 229 92 72 230 88 76 231 92 78 232 94 79 233 95 81 234 97 71 235 86 70 236 87 71 237 86 81 238 97 80 239 96 83 240 98 75 241 91 81 242 97 75 243 91 83 244 98 82 245 99 89 246 161 84 247 100 88 248 160 88 249 160 84 250 100 85 251 101 86 252 105 89 253 103 87 254 104 87 255 104 89 256 103 88 257 102 88 258 102 91 259 106 87 260 104 90 261 107 87 262 104 91 263 106 97 264 113 93 265 111 96 266 112 93 267 111 97 268 113 92 269 110 95 270 115 97 271 113 94 272 114 94 273 114 97 274 113 96 275 112 93 276 162 98 277 116 96 278 163 99 279 117 96 280 163 98 281 116</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_GroundB_01_visual" name="aws_robomaker_warehouse_GroundB_01_visual">
|
||||
<node name="aws_robomaker_warehouse_GroundB_01_visual" id="aws_robomaker_warehouse_GroundB_01_visual" layer="zhenghe" sid="aws_robomaker_warehouse_GroundB_01_visual"><matrix sid="matrix">1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_GroundB_01_visual-lib"><bind_material><technique_common><instance_material symbol="Material #946568" target="#Material #946568"/><instance_material symbol="Material #946569" target="#Material #946569"/></technique_common></bind_material></instance_geometry><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_GroundB_01_visual"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<model>
|
||||
<name>aws_robomaker_warehouse_GroundB_01</name>
|
||||
<version>1.0</version>
|
||||
<sdf version="1.6">model.sdf</sdf>
|
||||
<author>
|
||||
<name></name>
|
||||
<email></email>
|
||||
</author>
|
||||
<description></description>
|
||||
</model>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" ?>
|
||||
<sdf version="1.6">
|
||||
<model name="aws_robomaker_warehouse_GroundB_01">
|
||||
<link name="link">
|
||||
<collision name="collision">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_GroundB_01/meshes/aws_robomaker_warehouse_GroundB_01_collision.DAE</uri>
|
||||
<scale>1 1 1</scale>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<surface>
|
||||
<friction>
|
||||
<ode>
|
||||
<mu>100</mu>
|
||||
<mu2>50</mu2>
|
||||
<fdir1>0 0 0</fdir1>
|
||||
<slip1>0</slip1>
|
||||
<slip2>0</slip2>
|
||||
</ode>
|
||||
</friction>
|
||||
</surface>
|
||||
</collision>
|
||||
<visual name="visual">
|
||||
<geometry>
|
||||
<mesh>
|
||||
<uri>model://aws_robomaker_warehouse_GroundB_01/meshes/aws_robomaker_warehouse_GroundB_01_visual.DAE</uri>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<meta> <layer> 1 </layer></meta>
|
||||
</visual>
|
||||
</link>
|
||||
<static>1</static>
|
||||
</model>
|
||||
</sdf>
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset><contributor><author></author><authoring_tool>FBX COLLADA exporter</authoring_tool><comments></comments></contributor><created>2019-04-04T08:27:36Z</created><keywords></keywords><modified>2019-04-04T08:27:36Z</modified><revision></revision><subject></subject><title></title><unit meter="0.010000" name="centimeter"></unit><up_axis>Z_UP</up_axis></asset>
|
||||
<library_geometries>
|
||||
<geometry id="aws_robomaker_warehouse_Lamp_01_collision-lib" name="aws_robomaker_warehouse_Lamp_01_collisionMesh">
|
||||
<mesh>
|
||||
<source id="aws_robomaker_warehouse_Lamp_01_collision-POSITION">
|
||||
<float_array id="aws_robomaker_warehouse_Lamp_01_collision-POSITION-array" count="24">
|
||||
-51.220013 -75.723572 -50.385498
|
||||
51.220005 -75.723572 -50.385498
|
||||
-51.220013 75.723572 -50.385498
|
||||
51.220005 75.723572 -50.385498
|
||||
-51.220005 -75.723572 50.385498
|
||||
51.220013 -75.723572 50.385498
|
||||
-51.220005 75.723572 50.385498
|
||||
51.220013 75.723572 50.385498
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Lamp_01_collision-POSITION-array" count="8" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_Lamp_01_collision-Normal0">
|
||||
<float_array id="aws_robomaker_warehouse_Lamp_01_collision-Normal0-array" count="108">
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 -1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 0.000000 1.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
0.000000 -1.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
1.000000 0.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
0.000000 1.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
-1.000000 0.000000 0.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Lamp_01_collision-Normal0-array" count="36" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="aws_robomaker_warehouse_Lamp_01_collision-UV0">
|
||||
<float_array id="aws_robomaker_warehouse_Lamp_01_collision-UV0-array" count="48">
|
||||
1.000000 0.000000
|
||||
0.000000 0.000000
|
||||
1.000000 1.000000
|
||||
0.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
0.000000 0.000000
|
||||
1.000000 0.000000
|
||||
0.000000 1.000000
|
||||
1.000000 1.000000
|
||||
</float_array>
|
||||
<technique_common>
|
||||
<accessor source="#aws_robomaker_warehouse_Lamp_01_collision-UV0-array" count="24" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="aws_robomaker_warehouse_Lamp_01_collision-VERTEX">
|
||||
<input semantic="POSITION" source="#aws_robomaker_warehouse_Lamp_01_collision-POSITION"/>
|
||||
</vertices>
|
||||
<triangles count="12"><input semantic="VERTEX" offset="0" source="#aws_robomaker_warehouse_Lamp_01_collision-VERTEX"/><input semantic="NORMAL" offset="1" source="#aws_robomaker_warehouse_Lamp_01_collision-Normal0"/><input semantic="TEXCOORD" offset="2" set="0" source="#aws_robomaker_warehouse_Lamp_01_collision-UV0"/><p> 1 0 1 0 1 0 3 2 3 0 3 0 2 4 2 3 5 3 7 6 7 6 7 6 4 8 4 7 9 7 4 10 4 5 11 5 4 12 10 1 13 9 5 14 11 1 15 9 4 16 10 0 17 8 7 18 15 5 19 14 1 20 12 7 21 15 1 22 12 3 23 13 6 24 19 7 25 18 3 26 16 6 27 19 3 28 16 2 29 17 4 30 23 6 31 22 2 32 20 4 33 23 2 34 20 0 35 21</p></triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="aws_robomaker_warehouse_Lamp_01_collision" name="aws_robomaker_warehouse_Lamp_01_collision">
|
||||
<node name="aws_robomaker_warehouse_Lamp_01_collision" id="aws_robomaker_warehouse_Lamp_01_collision" sid="aws_robomaker_warehouse_Lamp_01_collision"><matrix sid="matrix">-0.999000 -0.000000 -0.000000 0.087481 -0.000000 0.000000 0.998995 0.000494 0.000000 1.002288 -0.000000 1325.909302 0.000000 0.000000 0.000000 1.000000</matrix><instance_geometry url="#aws_robomaker_warehouse_Lamp_01_collision-lib"/><extra><technique profile="FCOLLADA"><visibility>1.000000</visibility></technique></extra></node>
|
||||
<extra><technique profile="MAX3D"><frame_rate>30.000000</frame_rate></technique><technique profile="FCOLLADA"><start_time>0.000000</start_time><end_time>3.333333</end_time></technique></extra>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#aws_robomaker_warehouse_Lamp_01_collision"></instance_visual_scene>
|
||||
</scene>
|
||||
</COLLADA>
|
||||