diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index a685e4f1..27b0be71 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.6.0
+ rev: v5.0.0
hooks:
- id: check-added-large-files
# mesh files has to be taken into account
@@ -34,7 +34,7 @@ repos:
- id: cmake-format
- repo: https://github.com/pre-commit/mirrors-clang-format
- rev: v18.1.8
+ rev: v19.1.3
hooks:
- id: clang-format
@@ -63,7 +63,7 @@ repos:
args: [--mapping, '2', --sequence, '4', --offset, '2', --width, '100']
- repo: https://github.com/psf/black
- rev: 24.8.0
+ rev: 24.10.0
hooks:
- id: black
args: ["--line-length=99"]
@@ -87,11 +87,11 @@ repos:
# Docs - RestructuredText hooks
- repo: https://github.com/PyCQA/doc8
- rev: v1.1.1
+ rev: v1.1.2
hooks:
- id: doc8
args: ["--max-line-length=100", "--ignore=D001"]
- exclude: ^.*\/CHANGELOG\.rst/.*$
+ exclude: ^.*\/CHANGELOG\.rst$
- repo: https://github.com/tier4/pre-commit-hooks-ros
rev: v0.10.0
diff --git a/README.md b/README.md
index 1b7dee1e..5e23fad0 100644
--- a/README.md
+++ b/README.md
@@ -89,7 +89,7 @@ Launch arguments are largely common to both simulation and physical robot. Howev
| ❌ | ✅ | `add_world_transform` | Adds a world frame that connects the tf trees of individual robots (useful when running multiple robots).
***bool:*** `False` |
| ✅ | ✅ | `animations_config_path` | Path to a YAML file with a description of led configuration. This file includes definition of robot panels, virtual segments and default animations.
***string:*** [`{robot_model}_animations.yaml`](./husarion_ugv_lights/config) |
| ❌ | ✅ | `battery_config_path` | Path to the Ignition LinearBatteryPlugin configuration file. This configuration is intended for use in simulations only.
***string:*** `None` |
-| ✅ | ✅ | `components_config_path` | Additional components configuration file. Components described in this file are dynamically included in robot's URDF. Available options are described in [the manual](https://husarion.com/manuals/panther/panther-options).
***string:*** [`components.yaml`](./panther_description/config/components.yaml) |
+| ✅ | ✅ | `components_config_path` | Additional components configuration file. Components described in this file are dynamically included in robot's URDF. Available options are described in [the manual](https://husarion.com/manuals/panther/panther-options).
***string:*** [`components.yaml`](./husarion_ugv_description/config/components.yaml) |
| ✅ | ✅ | `controller_config_path` | Path to controller configuration file. A path to custom configuration can be specified here.
***string:*** [`{wheel_type}_controller.yaml`](./husarion_ugv_controller/config/) |
| ✅ | ✅ | `disable_manager` | Enable or disable manager_bt_node.
***bool:*** `False` |
| ✅ | ✅ | `fuse_gps` | Include GPS for data fusion.
***bool:*** `False` |
@@ -111,7 +111,7 @@ Launch arguments are largely common to both simulation and physical robot. Howev
| ❌ | ✅ | `use_rviz` | Run RViz simultaneously.
***bool:*** `True` |
| ✅ | ✅ | `use_sim` | Whether simulation is used.
***bool:*** `False` |
| ✅ | ✅ | `user_led_animations_path` | Path to a YAML file with a description of the user-defined animations.
***string:*** `''` |
-| ✅ | ✅ | `wheel_config_path` | Path to wheel configuration file.
***string:*** [`{wheel_type}.yaml`](./panther_description/config) |
+| ✅ | ✅ | `wheel_config_path` | Path to wheel configuration file.
***string:*** [`{wheel_type}.yaml`](./husarion_ugv_description/config) |
| ✅ | ✅ | `wheel_type` | Specify the wheel type. If the selected wheel type is not 'custom', the wheel_config_path and controller_config_path arguments will be automatically adjusted and can be omitted.
***string:*** `WH01` (for Panther), `WH05` (for Lynx) (choices: `WH01`, `WH02`, `WH04`, `WH05`, `custom`) |
| ❌ | ✅ | `x` | Initial robot position in the global 'x' axis.
***float:*** `0.0` |
| ❌ | ✅ | `y` | Initial robot position in the global 'y' axis.
***float:***` -2.0` |
diff --git a/husarion_ugv/CHANGELOG.rst b/husarion_ugv/CHANGELOG.rst
index f889df6f..4831c776 100644
--- a/husarion_ugv/CHANGELOG.rst
+++ b/husarion_ugv/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther
+Changelog for package husarion_ugv
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_battery/CHANGELOG.rst b/husarion_ugv_battery/CHANGELOG.rst
index de4e0a10..46ba4f6a 100644
--- a/husarion_ugv_battery/CHANGELOG.rst
+++ b/husarion_ugv_battery/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_battery
+Changelog for package husarion_ugv_battery
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_bringup/CHANGELOG.rst b/husarion_ugv_bringup/CHANGELOG.rst
index da3524f3..16a30e1a 100644
--- a/husarion_ugv_bringup/CHANGELOG.rst
+++ b/husarion_ugv_bringup/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_bringup
+Changelog for package husarion_ugv_bringup
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_controller/CHANGELOG.rst b/husarion_ugv_controller/CHANGELOG.rst
index 8ab5b60e..6bba2ca3 100644
--- a/husarion_ugv_controller/CHANGELOG.rst
+++ b/husarion_ugv_controller/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_controller
+Changelog for package husarion_ugv_controller
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_controller/CONFIGURATION.md b/husarion_ugv_controller/CONFIGURATION.md
index 01a40d15..360e25c9 100644
--- a/husarion_ugv_controller/CONFIGURATION.md
+++ b/husarion_ugv_controller/CONFIGURATION.md
@@ -6,4 +6,4 @@ The default drive controller is based on [diff_drive_controller](https://control
## Changing Wheel Type
-Changing wheel types is possible and can be done for both the real robot and the simulation. By default, three types of wheels are supported using the launch argument `wheel_type`. If you want to use custom wheels, all you need to do is point to the new wheel and controller configuration files using the `wheel_config_path` and `controller_config_path` parameters. These files should be based on the default files, i.e. [WH01_controller.yaml](./config/WH01_controller.yaml) and [WH01.yaml](../panther_description/config/WH01.yaml).
+Changing wheel types is possible and can be done for both the real robot and the simulation. By default, three types of wheels are supported using the launch argument `wheel_type`. If you want to use custom wheels, all you need to do is point to the new wheel and controller configuration files using the `wheel_config_path` and `controller_config_path` parameters. These files should be based on the default files, i.e. [WH01_controller.yaml](./config/WH01_controller.yaml) and [WH01.yaml](../husarion_ugv_description/config/WH01.yaml).
diff --git a/husarion_ugv_controller/launch/controller.launch.py b/husarion_ugv_controller/launch/controller.launch.py
index 2e61a370..f2dd1cff 100644
--- a/husarion_ugv_controller/launch/controller.launch.py
+++ b/husarion_ugv_controller/launch/controller.launch.py
@@ -48,7 +48,7 @@ def generate_launch_description():
declare_components_config_path_arg = DeclareLaunchArgument(
"components_config_path",
default_value=PathJoinSubstitution(
- [FindPackageShare("panther_description"), "config", "components.yaml"]
+ [FindPackageShare("husarion_ugv_description"), "config", "components.yaml"]
),
description=(
"Additional components configuration file. Components described in this file "
@@ -100,7 +100,7 @@ def generate_launch_description():
declare_robot_model_arg = DeclareLaunchArgument(
"robot_model",
default_value=robot_model_dict[robot_model_env],
- description="Specify robot model",
+ description="Specify robot model.",
choices=["lynx", "panther"],
)
@@ -112,20 +112,19 @@ def generate_launch_description():
choices=["True", "true", "False", "false"],
)
- robot_description_pkg = PythonExpression(["'", robot_model, "_description'"])
wheel_config_path = LaunchConfiguration("wheel_config_path")
declare_wheel_config_path_arg = DeclareLaunchArgument(
"wheel_config_path",
default_value=PathJoinSubstitution(
[
- FindPackageShare(robot_description_pkg),
+ FindPackageShare("husario_ugv_description"),
"config",
PythonExpression(["'", wheel_type, ".yaml'"]),
]
),
description=(
"Path to wheel configuration file. By default, it is located in "
- "'panther_description/config/{wheel_type}.yaml'. You can also specify the path "
+ "'husarion_ugv_description/config/{wheel_type}.yaml'. You can also specify the path "
"to your custom wheel configuration file here. "
),
)
@@ -143,25 +142,18 @@ def generate_launch_description():
)
# Get URDF via xacro
- robot_description_pkg = PythonExpression(["'", robot_model, "_description'"])
- robot_description_file = PythonExpression(["'", robot_model, ".urdf.xacro'"])
imu_pos_x = os.environ.get("ROBOT_IMU_LOCALIZATION_X", "0.168")
imu_pos_y = os.environ.get("ROBOT_IMU_LOCALIZATION_Y", "0.028")
imu_pos_z = os.environ.get("ROBOT_IMU_LOCALIZATION_Z", "0.083")
imu_rot_r = os.environ.get("ROBOT_IMU_ORIENTATION_R", "3.14")
imu_rot_p = os.environ.get("ROBOT_IMU_ORIENTATION_P", "-1.57")
imu_rot_y = os.environ.get("ROBOT_IMU_ORIENTATION_Y", "0.0")
+ urdf_file = PythonExpression(["'", robot_model, ".urdf.xacro'"])
robot_description_content = Command(
[
PathJoinSubstitution([FindExecutable(name="xacro")]),
" ",
- PathJoinSubstitution(
- [
- FindPackageShare(robot_description_pkg),
- "urdf",
- robot_description_file,
- ]
- ),
+ PathJoinSubstitution([FindPackageShare("husario_ugv_description"), "urdf", urdf_file]),
" use_sim:=",
use_sim,
" wheel_config_file:=",
diff --git a/husarion_ugv_controller/package.xml b/husarion_ugv_controller/package.xml
index 606766aa..09b83999 100644
--- a/husarion_ugv_controller/package.xml
+++ b/husarion_ugv_controller/package.xml
@@ -18,14 +18,13 @@
controller_manager
diff_drive_controller
+ husarion_ugv_description
husarion_ugv_hardware_interfaces
imu_sensor_broadcaster
joint_state_broadcaster
launch
launch_ros
- lynx_description
mecanum_drive_controller
- panther_description
robot_state_publisher
xacro
diff --git a/panther_description/CHANGELOG.rst b/husarion_ugv_description/CHANGELOG.rst
similarity index 99%
rename from panther_description/CHANGELOG.rst
rename to husarion_ugv_description/CHANGELOG.rst
index 07a9fce1..ba06e9f6 100644
--- a/panther_description/CHANGELOG.rst
+++ b/husarion_ugv_description/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_description
+Changelog for package husarion_ugv_description
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/panther_description/CMakeLists.txt b/husarion_ugv_description/CMakeLists.txt
similarity index 61%
rename from panther_description/CMakeLists.txt
rename to husarion_ugv_description/CMakeLists.txt
index 87ff28f0..9f7e7d4a 100644
--- a/panther_description/CMakeLists.txt
+++ b/husarion_ugv_description/CMakeLists.txt
@@ -1,12 +1,11 @@
cmake_minimum_required(VERSION 3.10.2)
-project(panther_description)
+project(husarion_ugv_description)
find_package(ament_cmake REQUIRED)
install(DIRECTORY config launch meshes rviz urdf
DESTINATION share/${PROJECT_NAME})
-ament_environment_hooks(
- "${CMAKE_CURRENT_SOURCE_DIR}/hooks/${PROJECT_NAME}.sh.in")
+ament_environment_hooks("${CMAKE_CURRENT_SOURCE_DIR}/hooks/setup_envs.sh.in")
ament_package()
diff --git a/panther_description/README.md b/husarion_ugv_description/README.md
similarity index 74%
rename from panther_description/README.md
rename to husarion_ugv_description/README.md
index 6c15c4c4..9cf7a1e0 100644
--- a/panther_description/README.md
+++ b/husarion_ugv_description/README.md
@@ -1,10 +1,12 @@
-# panther_description
+# husarion_ugv_description
The package contains URDF files responsible for creating a representation of the robot by specifying the relationships and types of connections (joints) between individual links. It also contains information about the robot's mesh.
## Launch Files
- `load_urdf.launch.py` - loads the robot's URDF and creates simple bindings to display moving joints.
+- `overwrite_robot_description.launch.py` - launch is able to change `robot_description` topic in runtime.
+- `rviz.launch.py` - launch RViz2 with basic configuration.
## Configuration Files
@@ -12,3 +14,4 @@ The package contains URDF files responsible for creating a representation of the
- [`WH01.yaml`](./config/WH01.yaml): Description of physical and visual parameters for the wheel WH01.
- [`WH02.yaml`](./config/WH02.yaml): Description of physical and visual parameters for the wheel WH02.
- [`WH04.yaml`](./config/WH04.yaml): Description of physical and visual parameters for the wheel WH04.
+- [`WH05.yaml`](./config/WH05.yaml): Description of physical and visual parameters for the wheel WH05.
diff --git a/panther_description/config/WH01.yaml b/husarion_ugv_description/config/WH01.yaml
similarity index 83%
rename from panther_description/config/WH01.yaml
rename to husarion_ugv_description/config/WH01.yaml
index d1c79e20..e5bbdd1c 100644
--- a/panther_description/config/WH01.yaml
+++ b/husarion_ugv_description/config/WH01.yaml
@@ -4,6 +4,6 @@ wheel_separation: 0.697
mass: 3.0
inertia: { ixx: 0.022510, iyy: 0.034850, izz: 0.022510 }
inertia_y_offset: 0.0
-mesh_package: panther_description
+mesh_package: husarion_ugv_description
folder_path: meshes/WH01
mecanum: False
diff --git a/panther_description/config/WH02.yaml b/husarion_ugv_description/config/WH02.yaml
similarity index 83%
rename from panther_description/config/WH02.yaml
rename to husarion_ugv_description/config/WH02.yaml
index 91f415fa..60ff7a59 100644
--- a/panther_description/config/WH02.yaml
+++ b/husarion_ugv_description/config/WH02.yaml
@@ -4,6 +4,6 @@ wheel_separation: 0.6785
mass: 2.4
inertia: { ixx: 0.010050, iyy: 0.016496, izz: 0.010068 }
inertia_y_offset: 0.0
-mesh_package: panther_description
+mesh_package: husarion_ugv_description
folder_path: meshes/WH02
mecanum: True
diff --git a/panther_description/config/WH04.yaml b/husarion_ugv_description/config/WH04.yaml
similarity index 83%
rename from panther_description/config/WH04.yaml
rename to husarion_ugv_description/config/WH04.yaml
index 235101cd..45fb0d6a 100644
--- a/panther_description/config/WH04.yaml
+++ b/husarion_ugv_description/config/WH04.yaml
@@ -4,6 +4,6 @@ wheel_separation: 0.616
mass: 0.85
inertia: { ixx: 0.003099, iyy: 0.005849, izz: 0.003101 }
inertia_y_offset: 0.0
-mesh_package: panther_description
+mesh_package: husarion_ugv_description
folder_path: meshes/WH04
mecanum: False
diff --git a/lynx_description/config/WH05.yaml b/husarion_ugv_description/config/WH05.yaml
similarity index 85%
rename from lynx_description/config/WH05.yaml
rename to husarion_ugv_description/config/WH05.yaml
index 4e25988b..3cae8f1d 100644
--- a/lynx_description/config/WH05.yaml
+++ b/husarion_ugv_description/config/WH05.yaml
@@ -5,6 +5,6 @@ wheel_separation: 0.45
mass: 2.5
inertia: { ixx: 0.014738, iyy: 0.0261, izz: 0.014738 }
inertia_y_offset: 0.0
-mesh_package: lynx_description
+mesh_package: husarion_ugv_description
folder_path: meshes/WH05
mecanum: False
diff --git a/panther_description/config/components.yaml b/husarion_ugv_description/config/components.yaml
similarity index 90%
rename from panther_description/config/components.yaml
rename to husarion_ugv_description/config/components.yaml
index c44f4850..e2427796 100644
--- a/panther_description/config/components.yaml
+++ b/husarion_ugv_description/config/components.yaml
@@ -1,4 +1,4 @@
-# By default panther is loaded without any components.
+# By default Husarion UGV is loaded without any components.
components: []
diff --git a/lynx_description/hooks/lynx_description.sh.in b/husarion_ugv_description/hooks/setup_envs.sh.in
similarity index 100%
rename from lynx_description/hooks/lynx_description.sh.in
rename to husarion_ugv_description/hooks/setup_envs.sh.in
diff --git a/lynx_description/launch/load_urdf.launch.py b/husarion_ugv_description/launch/load_urdf.launch.py
similarity index 83%
rename from lynx_description/launch/load_urdf.launch.py
rename to husarion_ugv_description/launch/load_urdf.launch.py
index cc3e6dbf..391191bb 100644
--- a/lynx_description/launch/load_urdf.launch.py
+++ b/husarion_ugv_description/launch/load_urdf.launch.py
@@ -56,13 +56,11 @@ def generate_launch_description():
declare_components_config_path_arg = DeclareLaunchArgument(
"components_config_path",
default_value=PathJoinSubstitution(
- [FindPackageShare("lynx_description"), "config", "components.yaml"]
+ [FindPackageShare("husarion_ugv_description"), "config", "components.yaml"]
),
description=(
- "Additional components configuration file. Components described in this file "
- "are dynamically included in Lynx's urdf."
- "Lynx options are described here "
- "https://husarion.com/manuals/lynx/lynx-options/"
+ "Specify file which contains components. These components will be included in URDF."
+ "Available options can be found in manuals: https://husarion.com/manuals"
),
)
@@ -91,6 +89,16 @@ def generate_launch_description():
description="Add namespace to all launched nodes.",
)
+ robot_model = LaunchConfiguration("robot_model")
+ robot_model_dict = {"LNX": "lynx", "PTH": "panther"}
+ robot_model_env = os.environ.get("ROBOT_MODEL", default="PTH")
+ declare_robot_model_arg = DeclareLaunchArgument(
+ "robot_model",
+ default_value=robot_model_dict[robot_model_env],
+ description="Specify robot model.",
+ choices=["lynx", "panther"],
+ )
+
use_sim = LaunchConfiguration("use_sim")
declare_use_sim_arg = DeclareLaunchArgument(
"use_sim",
@@ -104,27 +112,28 @@ def generate_launch_description():
"wheel_config_path",
default_value=PathJoinSubstitution(
[
- FindPackageShare("lynx_description"),
+ FindPackageShare("husarion_ugv_description"),
"config",
PythonExpression(["'", wheel_type, ".yaml'"]),
]
),
description=(
"Path to wheel configuration file. By default, it is located in "
- "'lynx_description/config/{wheel_type}.yaml'. You can also specify the path "
+ "'husarion_ugv_description/config/{wheel_type}.yaml'. You can also specify the path "
"to your custom wheel configuration file here. "
),
)
+ default_wheel_type = {"lynx": "WH05", "panther": "WH01"}
declare_wheel_type_arg = DeclareLaunchArgument(
"wheel_type",
- default_value="WH05",
+ default_value=PythonExpression([f"{default_wheel_type}['", robot_model, "']"]),
description=(
"Specify the wheel type. If the selected wheel type is not 'custom', "
"the 'wheel_config_path' and 'controller_config_path' arguments will be "
"automatically adjusted and can be omitted."
),
- choices=["WH05", "custom"],
+ choices=["WH01", "WH02", "WH04", "WH05", "custom"],
)
# Get URDF via xacro
@@ -134,13 +143,12 @@ def generate_launch_description():
imu_rot_r = os.environ.get("ROBOT_IMU_ORIENTATION_R", "3.14")
imu_rot_p = os.environ.get("ROBOT_IMU_ORIENTATION_P", "-1.57")
imu_rot_y = os.environ.get("ROBOT_IMU_ORIENTATION_Y", "0.0")
+ urdf_file = PythonExpression(["'", robot_model, ".urdf.xacro'"])
robot_description_content = Command(
[
PathJoinSubstitution([FindExecutable(name="xacro")]),
" ",
- PathJoinSubstitution(
- [FindPackageShare("lynx_description"), "urdf", "lynx.urdf.xacro"]
- ),
+ PathJoinSubstitution([FindPackageShare("husario_ugv_description"), "urdf", urdf_file]),
" use_sim:=",
use_sim,
" wheel_config_file:=",
@@ -185,6 +193,7 @@ def generate_launch_description():
declared_add_wheel_joints_arg,
declare_battery_config_path_arg,
declare_components_config_path_arg,
+ declare_robot_model_arg, # robot_model is used by wheel_type
declare_wheel_type_arg, # wheel_type is used by controller_config_path
declare_controller_config_path_arg,
declare_namespace_arg,
diff --git a/panther_description/launch/overwrite_robot_description.launch.py b/husarion_ugv_description/launch/overwrite_robot_description.launch.py
similarity index 81%
rename from panther_description/launch/overwrite_robot_description.launch.py
rename to husarion_ugv_description/launch/overwrite_robot_description.launch.py
index a7f5cff9..90344d60 100644
--- a/panther_description/launch/overwrite_robot_description.launch.py
+++ b/husarion_ugv_description/launch/overwrite_robot_description.launch.py
@@ -47,13 +47,11 @@ def generate_launch_description():
declare_components_config_path_arg = DeclareLaunchArgument(
"components_config_path",
default_value=PathJoinSubstitution(
- [FindPackageShare("panther_description"), "config", "components.yaml"]
+ [FindPackageShare("husarion_ugv_description"), "config", "components.yaml"]
),
description=(
- "Additional components configuration file. Components described in this file "
- "are dynamically included in Panther's urdf."
- "Panther options are described here "
- "https://husarion.com/manuals/panther/panther-options/"
+ "Specify file which contains components. These components will be included in URDF."
+ "Available options can be found in manuals: https://husarion.com/manuals"
),
)
@@ -82,6 +80,16 @@ def generate_launch_description():
description="Add namespace to all launched nodes.",
)
+ robot_model = LaunchConfiguration("robot_model")
+ robot_model_dict = {"LNX": "lynx", "PTH": "panther"}
+ robot_model_env = os.environ.get("ROBOT_MODEL", default="PTH")
+ declare_robot_model_arg = DeclareLaunchArgument(
+ "robot_model",
+ default_value=robot_model_dict[robot_model_env],
+ description="Specify robot model.",
+ choices=["lynx", "panther"],
+ )
+
use_sim = LaunchConfiguration("use_sim")
declare_use_sim_arg = DeclareLaunchArgument(
"use_sim",
@@ -95,27 +103,28 @@ def generate_launch_description():
"wheel_config_path",
default_value=PathJoinSubstitution(
[
- FindPackageShare("panther_description"),
+ FindPackageShare("husarion_ugv_description"),
"config",
PythonExpression(["'", wheel_type, ".yaml'"]),
]
),
description=(
"Path to wheel configuration file. By default, it is located in "
- "'panther_description/config/{wheel_type}.yaml'. You can also specify the path "
+ "'husarion_ugv_description/config/{wheel_type}.yaml'. You can also specify the path "
"to your custom wheel configuration file here. "
),
)
+ default_wheel_type = {"lynx": "WH05", "panther": "WH01"}
declare_wheel_type_arg = DeclareLaunchArgument(
"wheel_type",
- default_value="WH01",
+ default_value=PythonExpression([f"{default_wheel_type}['", robot_model, "']"]),
description=(
"Specify the wheel type. If the selected wheel type is not 'custom', "
"the 'wheel_config_path' and 'controller_config_path' arguments will be "
"automatically adjusted and can be omitted."
),
- choices=["WH01", "WH02", "WH04", "custom"],
+ choices=["WH01", "WH02", "WH04", "WH05", "custom"],
)
# Get URDF via xacro
@@ -125,13 +134,12 @@ def generate_launch_description():
imu_rot_r = os.environ.get("ROBOT_IMU_ORIENTATION_R", "3.14")
imu_rot_p = os.environ.get("ROBOT_IMU_ORIENTATION_P", "-1.57")
imu_rot_y = os.environ.get("ROBOT_IMU_ORIENTATION_Y", "0.0")
+ urdf_file = PythonExpression(["'", robot_model, ".urdf.xacro'"])
robot_description_content = Command(
[
PathJoinSubstitution([FindExecutable(name="xacro")]),
" ",
- PathJoinSubstitution(
- [FindPackageShare("panther_description"), "urdf", "panther.urdf.xacro"]
- ),
+ PathJoinSubstitution([FindPackageShare("husario_ugv_description"), "urdf", urdf_file]),
" use_sim:=",
use_sim,
" wheel_config_file:=",
@@ -168,6 +176,7 @@ def generate_launch_description():
actions = [
declare_battery_config_path_arg,
declare_components_config_path_arg,
+ declare_robot_model_arg, # robot_model is used by wheel_type
declare_wheel_type_arg, # wheel_type is used by controller_config_path
declare_controller_config_path_arg,
declare_namespace_arg,
diff --git a/panther_description/launch/rviz.launch.py b/husarion_ugv_description/launch/rviz.launch.py
similarity index 96%
rename from panther_description/launch/rviz.launch.py
rename to husarion_ugv_description/launch/rviz.launch.py
index b194341c..1fd0b0bc 100644
--- a/panther_description/launch/rviz.launch.py
+++ b/husarion_ugv_description/launch/rviz.launch.py
@@ -41,7 +41,7 @@ def generate_launch_description():
declare_rviz_config_arg = DeclareLaunchArgument(
"rviz_config",
default_value=PathJoinSubstitution(
- [FindPackageShare("panther_description"), "rviz", "husarion_ugv.rviz"]
+ [FindPackageShare("husarion_ugv_description"), "rviz", "husarion_ugv.rviz"]
),
description="RViz configuration file.",
)
diff --git a/panther_description/meshes/WH01/fl_wheel.dae b/husarion_ugv_description/meshes/WH01/fl_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH01/fl_wheel.dae
rename to husarion_ugv_description/meshes/WH01/fl_wheel.dae
diff --git a/panther_description/meshes/WH01/fr_wheel.dae b/husarion_ugv_description/meshes/WH01/fr_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH01/fr_wheel.dae
rename to husarion_ugv_description/meshes/WH01/fr_wheel.dae
diff --git a/panther_description/meshes/WH01/rl_wheel.dae b/husarion_ugv_description/meshes/WH01/rl_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH01/rl_wheel.dae
rename to husarion_ugv_description/meshes/WH01/rl_wheel.dae
diff --git a/panther_description/meshes/WH01/rr_wheel.dae b/husarion_ugv_description/meshes/WH01/rr_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH01/rr_wheel.dae
rename to husarion_ugv_description/meshes/WH01/rr_wheel.dae
diff --git a/panther_description/meshes/WH02/fl_wheel.dae b/husarion_ugv_description/meshes/WH02/fl_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH02/fl_wheel.dae
rename to husarion_ugv_description/meshes/WH02/fl_wheel.dae
diff --git a/panther_description/meshes/WH02/fr_wheel.dae b/husarion_ugv_description/meshes/WH02/fr_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH02/fr_wheel.dae
rename to husarion_ugv_description/meshes/WH02/fr_wheel.dae
diff --git a/panther_description/meshes/WH02/rl_wheel.dae b/husarion_ugv_description/meshes/WH02/rl_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH02/rl_wheel.dae
rename to husarion_ugv_description/meshes/WH02/rl_wheel.dae
diff --git a/panther_description/meshes/WH02/rr_wheel.dae b/husarion_ugv_description/meshes/WH02/rr_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH02/rr_wheel.dae
rename to husarion_ugv_description/meshes/WH02/rr_wheel.dae
diff --git a/panther_description/meshes/WH04/fl_wheel.dae b/husarion_ugv_description/meshes/WH04/fl_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH04/fl_wheel.dae
rename to husarion_ugv_description/meshes/WH04/fl_wheel.dae
diff --git a/panther_description/meshes/WH04/fr_wheel.dae b/husarion_ugv_description/meshes/WH04/fr_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH04/fr_wheel.dae
rename to husarion_ugv_description/meshes/WH04/fr_wheel.dae
diff --git a/panther_description/meshes/WH04/rl_wheel.dae b/husarion_ugv_description/meshes/WH04/rl_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH04/rl_wheel.dae
rename to husarion_ugv_description/meshes/WH04/rl_wheel.dae
diff --git a/panther_description/meshes/WH04/rr_wheel.dae b/husarion_ugv_description/meshes/WH04/rr_wheel.dae
similarity index 100%
rename from panther_description/meshes/WH04/rr_wheel.dae
rename to husarion_ugv_description/meshes/WH04/rr_wheel.dae
diff --git a/panther_description/meshes/body.dae b/husarion_ugv_description/meshes/panther/body.dae
similarity index 100%
rename from panther_description/meshes/body.dae
rename to husarion_ugv_description/meshes/panther/body.dae
diff --git a/panther_description/meshes/body_collision.stl b/husarion_ugv_description/meshes/panther/body_collision.stl
similarity index 100%
rename from panther_description/meshes/body_collision.stl
rename to husarion_ugv_description/meshes/panther/body_collision.stl
diff --git a/panther_description/package.xml b/husarion_ugv_description/package.xml
similarity index 82%
rename from panther_description/package.xml
rename to husarion_ugv_description/package.xml
index 6df0f171..98f837ab 100644
--- a/panther_description/package.xml
+++ b/husarion_ugv_description/package.xml
@@ -1,9 +1,9 @@
- panther_description
+ husarion_ugv_description
2.1.1
- The panther_description package
+ The package contains URDF and mesh files for Husarion UGV
Husarion
Apache License 2.0
@@ -11,9 +11,11 @@
https://github.com/husarion/panther_ros
https://github.com/husarion/panther_ros/issues
+ Dawid Kmak
Krzysztof Wojciechowski
Maciej Stepien
Paweł Kowalski
+ Rafal Gorecki
ament_cmake
diff --git a/panther_description/rviz/husarion_ugv.rviz b/husarion_ugv_description/rviz/husarion_ugv.rviz
similarity index 100%
rename from panther_description/rviz/husarion_ugv.rviz
rename to husarion_ugv_description/rviz/husarion_ugv.rviz
diff --git a/panther_description/urdf/gazebo.urdf.xacro b/husarion_ugv_description/urdf/common/gazebo.urdf.xacro
similarity index 98%
rename from panther_description/urdf/gazebo.urdf.xacro
rename to husarion_ugv_description/urdf/common/gazebo.urdf.xacro
index 40918200..76dd4959 100644
--- a/panther_description/urdf/gazebo.urdf.xacro
+++ b/husarion_ugv_description/urdf/common/gazebo.urdf.xacro
@@ -66,7 +66,7 @@
-
+
diff --git a/lynx_description/urdf/lynx.urdf.xacro b/husarion_ugv_description/urdf/lynx.urdf.xacro
similarity index 78%
rename from lynx_description/urdf/lynx.urdf.xacro
rename to husarion_ugv_description/urdf/lynx.urdf.xacro
index 8a78c117..a5aba292 100644
--- a/lynx_description/urdf/lynx.urdf.xacro
+++ b/husarion_ugv_description/urdf/lynx.urdf.xacro
@@ -2,13 +2,11 @@
-
-
+ default="$(find husarion_ugv_description)/config/WH05.yaml" />
-
+
-
+
diff --git a/lynx_description/urdf/body.urdf.xacro b/husarion_ugv_description/urdf/lynx/body.urdf.xacro
similarity index 89%
rename from lynx_description/urdf/body.urdf.xacro
rename to husarion_ugv_description/urdf/lynx/body.urdf.xacro
index c424ba01..938e2629 100644
--- a/lynx_description/urdf/body.urdf.xacro
+++ b/husarion_ugv_description/urdf/lynx/body.urdf.xacro
@@ -19,7 +19,7 @@
-
+
@@ -28,7 +28,7 @@
-
+
diff --git a/lynx_description/urdf/lynx_macro.urdf.xacro b/husarion_ugv_description/urdf/lynx/lynx_macro.urdf.xacro
similarity index 95%
rename from lynx_description/urdf/lynx_macro.urdf.xacro
rename to husarion_ugv_description/urdf/lynx/lynx_macro.urdf.xacro
index f835d42f..5f11743f 100644
--- a/lynx_description/urdf/lynx_macro.urdf.xacro
+++ b/husarion_ugv_description/urdf/lynx/lynx_macro.urdf.xacro
@@ -23,9 +23,9 @@
-
-
-
+
+
+
-
-
+ default="$(find husarion_ugv_description)/config/WH01.yaml" />
-
+
-
+
diff --git a/panther_description/urdf/body.urdf.xacro b/husarion_ugv_description/urdf/panther/body.urdf.xacro
similarity index 93%
rename from panther_description/urdf/body.urdf.xacro
rename to husarion_ugv_description/urdf/panther/body.urdf.xacro
index 2978d93d..570cfe3c 100644
--- a/panther_description/urdf/body.urdf.xacro
+++ b/husarion_ugv_description/urdf/panther/body.urdf.xacro
@@ -18,14 +18,14 @@
-
+
-
+
diff --git a/panther_description/urdf/panther_macro.urdf.xacro b/husarion_ugv_description/urdf/panther/panther_macro.urdf.xacro
similarity index 95%
rename from panther_description/urdf/panther_macro.urdf.xacro
rename to husarion_ugv_description/urdf/panther/panther_macro.urdf.xacro
index 99c7ca43..f11ebdde 100644
--- a/panther_description/urdf/panther_macro.urdf.xacro
+++ b/husarion_ugv_description/urdf/panther/panther_macro.urdf.xacro
@@ -22,9 +22,9 @@
-
-
-
+
+
+
-
+
diff --git a/husarion_ugv_diagnostics/CHANGELOG.rst b/husarion_ugv_diagnostics/CHANGELOG.rst
index 4553018b..28ae5f17 100644
--- a/husarion_ugv_diagnostics/CHANGELOG.rst
+++ b/husarion_ugv_diagnostics/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_diagnostics
+Changelog for package husarion_ugv_diagnostics
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_gazebo/CHANGELOG.rst b/husarion_ugv_gazebo/CHANGELOG.rst
index a11cc3b1..8ced29c0 100644
--- a/husarion_ugv_gazebo/CHANGELOG.rst
+++ b/husarion_ugv_gazebo/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_gazebo
+Changelog for package husarion_ugv_gazebo
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_gazebo/CONFIGURATION.md b/husarion_ugv_gazebo/CONFIGURATION.md
index 3ad174b3..d85647b4 100644
--- a/husarion_ugv_gazebo/CONFIGURATION.md
+++ b/husarion_ugv_gazebo/CONFIGURATION.md
@@ -8,7 +8,7 @@ The NavSat sensors requires the spherical coordinates of the world origin to be
To obtain GPS data in Ignition, follow these steps:
-- Include the [ANT02](https://github.com/husarion/ros_components_description/blob/ros2/urdf/teltonika_003R-00253.urdf.xacro) by adding the following lines to your [components.yaml](../panther_description/config/components.yaml) file inside the `components` list:
+- Include the [ANT02](https://github.com/husarion/ros_components_description/blob/ros2/urdf/teltonika_003R-00253.urdf.xacro) by adding the following lines to your [components.yaml](../husarion_ugv_description/config/components.yaml) file inside the `components` list:
```yaml
- type: ANT02
diff --git a/husarion_ugv_gazebo/README.md b/husarion_ugv_gazebo/README.md
index 3b573404..78ee8904 100644
--- a/husarion_ugv_gazebo/README.md
+++ b/husarion_ugv_gazebo/README.md
@@ -44,7 +44,7 @@ Plugin based on `ign_system` is responsible for handling sensor interfaces (only
#### Parameters
-Required parameters are defined when including the interface in the URDF (you can check out [panther_macro.urdf.xacro](../panther_description/urdf/panther_macro.urdf.xacro)).
+Required parameters are defined when including the interface in the URDF (you can check out [panther_macro.urdf.xacro](../husarion_ugv_description/urdf/panther_macro.urdf.xacro)).
- `e_stop_initial_state` [*bool*, default: **true**]: Initial state of E-stop.
@@ -65,7 +65,7 @@ Required parameters are defined when including the interface in the URDF (you ca
#### Parameters
-The following parameters are required when including this interface in the URDF (you can refer to the [gazebo.urdf.xacro](../panther_description/urdf/gazebo.urdf.xacro) file for details).
+The following parameters are required when including this interface in the URDF (you can refer to the [gazebo.urdf.xacro](../husarion_ugv_description/urdf/panther/common/gazebo.urdf.xacro) file for details).
- `light_name` [*string*, default: **""**]: The name of the light entity. The visualization will be attached to this entity.
- `topic` [*string*, default: **""**]: The name of the topic from which the Image message is received.
diff --git a/husarion_ugv_gazebo/launch/simulate_robot.launch.py b/husarion_ugv_gazebo/launch/simulate_robot.launch.py
index db367687..0a714908 100644
--- a/husarion_ugv_gazebo/launch/simulate_robot.launch.py
+++ b/husarion_ugv_gazebo/launch/simulate_robot.launch.py
@@ -55,12 +55,10 @@ def generate_launch_description():
)
components_config_path = LaunchConfiguration("components_config_path")
- robot_model = LaunchConfiguration("robot_model")
- robot_description_pkg = PythonExpression(["'", robot_model, "_description'"])
declare_components_config_path_arg = DeclareLaunchArgument(
"components_config_path",
default_value=PathJoinSubstitution(
- [FindPackageShare(robot_description_pkg), "config", "components.yaml"]
+ [FindPackageShare("husarion_ugv_description"), "config", "components.yaml"]
),
description=(
"Additional components configuration file. Components described in this file "
@@ -94,12 +92,13 @@ def generate_launch_description():
description="Add namespace to all launched nodes.",
)
+ robot_model = LaunchConfiguration("robot_model")
robot_model_dict = {"LNX": "lynx", "PTH": "panther"}
robot_model_env = os.environ.get("ROBOT_MODEL", default="PTH")
declare_robot_model_arg = DeclareLaunchArgument(
"robot_model",
default_value=robot_model_dict[robot_model_env],
- description="Specify robot model",
+ description="Specify robot model.",
choices=["lynx", "panther"],
)
@@ -112,6 +111,7 @@ def generate_launch_description():
launch_arguments={
"add_wheel_joints": "False",
"namespace": namespace,
+ "robot_model": robot_model,
}.items(),
)
diff --git a/husarion_ugv_gazebo/launch/simulation.launch.py b/husarion_ugv_gazebo/launch/simulation.launch.py
index 34da7dc9..25eb3bf9 100644
--- a/husarion_ugv_gazebo/launch/simulation.launch.py
+++ b/husarion_ugv_gazebo/launch/simulation.launch.py
@@ -72,7 +72,7 @@ def generate_launch_description():
PythonLaunchDescriptionSource(
PathJoinSubstitution(
[
- FindPackageShare("panther_description"),
+ FindPackageShare("husarion_ugv_description"),
"launch",
"rviz.launch.py",
]
diff --git a/husarion_ugv_gazebo/launch/spawn_robot.launch.py b/husarion_ugv_gazebo/launch/spawn_robot.launch.py
index 39a47a2c..313c9210 100644
--- a/husarion_ugv_gazebo/launch/spawn_robot.launch.py
+++ b/husarion_ugv_gazebo/launch/spawn_robot.launch.py
@@ -24,7 +24,6 @@
EnvironmentVariable,
LaunchConfiguration,
PathJoinSubstitution,
- PythonExpression,
)
from launch_ros.actions import Node, SetUseSimTime
from launch_ros.substitutions import FindPackageShare
@@ -45,7 +44,7 @@ def generate_launch_description():
declare_robot_model_arg = DeclareLaunchArgument(
"robot_model",
default_value=robot_model_dict[robot_model_env],
- description="Specify robot model",
+ description="Specify robot model.",
choices=["lynx", "panther"],
)
@@ -85,16 +84,16 @@ def generate_launch_description():
}
welcome_info = welcome_msg(robot_model, "----", "simulation", log_stats)
- robot_description_pkg = PythonExpression(["'", robot_model, "_description'"])
load_urdf = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
PathJoinSubstitution(
- [FindPackageShare(robot_description_pkg), "launch", "load_urdf.launch.py"]
+ [FindPackageShare("husarion_ugv_description"), "launch", "load_urdf.launch.py"]
)
),
launch_arguments={
"add_wheel_joints": LaunchConfiguration("add_wheel_joints", default="True"),
"namespace": namespace,
+ "robot_model": robot_model,
"use_sim": "True",
}.items(),
)
diff --git a/husarion_ugv_gazebo/package.xml b/husarion_ugv_gazebo/package.xml
index 7f76d0f7..bab677e3 100644
--- a/husarion_ugv_gazebo/package.xml
+++ b/husarion_ugv_gazebo/package.xml
@@ -30,15 +30,14 @@
controller_manager
husarion_gz_worlds
husarion_ugv_controller
+ husarion_ugv_description
husarion_ugv_lights
husarion_ugv_localization
husarion_ugv_manager
husarion_ugv_utils
launch
launch_ros
- lynx_description
nav2_common
- panther_description
robot_state_publisher
ros_components_description
ros_gz_bridge
diff --git a/husarion_ugv_hardware_interfaces/CHANGELOG.rst b/husarion_ugv_hardware_interfaces/CHANGELOG.rst
index 039200a5..2c20ff2f 100644
--- a/husarion_ugv_hardware_interfaces/CHANGELOG.rst
+++ b/husarion_ugv_hardware_interfaces/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_hardware_interfaces
+Changelog for package husarion_ugv_hardware_interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_hardware_interfaces/README.md b/husarion_ugv_hardware_interfaces/README.md
index 980b9367..3b6ec176 100644
--- a/husarion_ugv_hardware_interfaces/README.md
+++ b/husarion_ugv_hardware_interfaces/README.md
@@ -4,7 +4,7 @@ Package that implements SystemInterface from ros2_control for Husarion UGV.
## ROS Nodes
-This package doesn't contain any standalone nodes, only plugins that are loaded by the resource manager. To use this hardware interface, add it to your URDF. You can check how to do it in [lynx_description](https://github.com/husarion/panther_ros/tree/ros2/panther_description/) or [panther_description](https://github.com/husarion/panther_ros/tree/ros2/panther_description/).
+This package doesn't contain any standalone nodes, only plugins that are loaded by the resource manager. To use this hardware interface, add it to your URDF. You can check how to do it in [panther_macro.urdf.xacro](../husarion_ugv_description/urdf/panther/panther_macro.urdf.xacro) or [lynx_macro.urdf.xacro](../husarion_ugv_description/urdf/lynx/lynx_macro.urdf.xacro).
### UGVSystem (PantherSystem | LynxSystem)
@@ -30,7 +30,7 @@ Plugins for Panther and Lynx are based on an abstraction called UGVSystem. Most
#### Parameters
-Required parameters are defined when including the interface in the URDF (you can check out [panther_macro.urdf.xacro](../panther_description/urdf/panther_macro.urdf.xacro) or [lynx_macro.urdf.xacro](../lynx_description/urdf/lynx_macro.urdf.xacro)).
+Required parameters are defined when including the interface in the URDF (you can check out [panther_macro.urdf.xacro](../husarion_ugv_description/urdf/panther/panther_macro.urdf.xacro) or [lynx_macro.urdf.xacro](../husarion_ugv_description/urdf/lynx/lynx_macro.urdf.xacro)).
Physical properties
@@ -72,7 +72,7 @@ Plugin responsible for communicating with IMU and filtering data using Madgwick
#### Parameters
-Required parameters are defined when including the interface in the URDF (you can check out [panther_macro.urdf.xacro](../panther_description/urdf/panther_macro.urdf.xacro)).
+Required parameters are defined when including the interface in the URDF (you can check out [panther_macro.urdf.xacro](../husarion_ugv_description/urdf/panther/panther_macro.urdf.xacro) or [lynx_macro.urdf.xacro](../husarion_ugv_description/urdf/lynx/lynx_macro.urdf.xacro)).
Physical properties
diff --git a/husarion_ugv_lights/CHANGELOG.rst b/husarion_ugv_lights/CHANGELOG.rst
index 5edb9e2a..0297225e 100644
--- a/husarion_ugv_lights/CHANGELOG.rst
+++ b/husarion_ugv_lights/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_lights
+Changelog for package husarion_ugv_lights
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_lights/launch/lights.launch.py b/husarion_ugv_lights/launch/lights.launch.py
index fa45aa53..b14d9e2a 100644
--- a/husarion_ugv_lights/launch/lights.launch.py
+++ b/husarion_ugv_lights/launch/lights.launch.py
@@ -55,7 +55,7 @@ def generate_launch_description():
declare_robot_model_arg = DeclareLaunchArgument(
"robot_model",
default_value=robot_model_dict[robot_model_env],
- description="Specify robot model",
+ description="Specify robot model.",
choices=["lynx", "panther"],
)
diff --git a/husarion_ugv_localization/CHANGELOG.rst b/husarion_ugv_localization/CHANGELOG.rst
index d33e3ed7..e2f16b49 100644
--- a/husarion_ugv_localization/CHANGELOG.rst
+++ b/husarion_ugv_localization/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_localization
+Changelog for package husarion_ugv_localization
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_manager/CHANGELOG.rst b/husarion_ugv_manager/CHANGELOG.rst
index 610316f2..cf902090 100644
--- a/husarion_ugv_manager/CHANGELOG.rst
+++ b/husarion_ugv_manager/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_manager
+Changelog for package husarion_ugv_manager
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/husarion_ugv_utils/CHANGELOG.rst b/husarion_ugv_utils/CHANGELOG.rst
index 7d3e06c3..1f6376a5 100644
--- a/husarion_ugv_utils/CHANGELOG.rst
+++ b/husarion_ugv_utils/CHANGELOG.rst
@@ -1,5 +1,5 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package panther_utils
+Changelog for package husarion_ugv_utils
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2.1.1 (2024-09-05)
diff --git a/lynx_description/CMakeLists.txt b/lynx_description/CMakeLists.txt
deleted file mode 100644
index f4e2ded4..00000000
--- a/lynx_description/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-cmake_minimum_required(VERSION 3.10.2)
-project(lynx_description)
-
-find_package(ament_cmake REQUIRED)
-
-install(DIRECTORY config launch urdf DESTINATION share/${PROJECT_NAME})
-
-ament_environment_hooks(
- "${CMAKE_CURRENT_SOURCE_DIR}/hooks/${PROJECT_NAME}.sh.in")
-
-ament_package()
diff --git a/lynx_description/README.md b/lynx_description/README.md
deleted file mode 100644
index 953bab34..00000000
--- a/lynx_description/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# lynx_description
-
-The package contains URDF files responsible for creating a representation of the robot by specifying the relationships and types of connections (joints) between individual links. It also contains information about the robot's mesh.
-
-## Launch Files
-
-- `load_urdf.launch.py` - loads the robot's URDF and creates simple bindings to display moving joints.
-
-## Configuration Files
-
-- [`components.yaml`](./config/components.yaml): Allows you to quickly add visualization of sensors, TF connections and simulate their behavior in the simulator.
-- [`WH05.yaml`](./config/WH05.yaml): Description of physical and visual parameters for the wheel WH05.
diff --git a/lynx_description/config/components.yaml b/lynx_description/config/components.yaml
deleted file mode 100644
index 71826593..00000000
--- a/lynx_description/config/components.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
-# By default lynx is loaded without any components.
-
-components: []
-
-# If you want to add for example LDR01, LDR06 and CAM01 to your Panther look at this example below:
-
-# components:
-# - type: LDR01
-# parent_link: cover_link
-# xyz: 0.0 0.1 0.0
-# rpy: 0.0 0.0 0.0
-# device_namespace: main_lidar
-
-# - type: LDR06
-# parent_link: cover_link
-# xyz: 0.0 -0.1 0.0
-# rpy: 0.0 0.0 0.0
-# device_namespace: second_lidar
-
-# - type: CAM01
-# name: camera
-# parent_link: cover_link
-# xyz: 0.1 0.0 0.0
-# rpy: 0.0 0.0 0.0
-# device_namespace: front_cam
diff --git a/lynx_description/package.xml b/lynx_description/package.xml
deleted file mode 100644
index 77584066..00000000
--- a/lynx_description/package.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- lynx_description
- 2.1.0
- The lynx_description package
- Husarion
- Apache License 2.0
-
- https://husarion.com/
- https://github.com/husarion/panther_ros
- https://github.com/husarion/panther_ros/issues
-
- Dawid Kmak
-
- ament_cmake
-
- joint_state_publisher
- launch
- launch_ros
- robot_state_publisher
- ros_components_description
- xacro
-
-
- ament_cmake
-
-
diff --git a/lynx_description/urdf/gazebo.urdf.xacro b/lynx_description/urdf/gazebo.urdf.xacro
deleted file mode 100644
index ce1a25c8..00000000
--- a/lynx_description/urdf/gazebo.urdf.xacro
+++ /dev/null
@@ -1,142 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${ns}battery
- 41.4
- 42.0
- -10.0
- ${battery_config['initial_charge_percentage']*battery_config['capacity']}
- ${battery_config['capacity']}
- 0.15
- 2.0
- true
- ${battery_config['charging_time']}
- 2.0
-
- ${battery_config['power_load']/100.0}
- ${battery_config['simulate_discharging']}
-
-
-
-
-
-
-
-
- ${config_file}
-
- ${namespace}
- drive_controller/cmd_vel_unstamped:=cmd_vel
- drive_controller/odom:=odometry/wheels
- drive_controller/transition_event:=drive_controller/_transition_event
- gz_ros2_control/e_stop:=hardware/e_stop
- gz_ros2_control/e_stop_reset:=hardware/e_stop_reset
- gz_ros2_control/e_stop_trigger:=hardware/e_stop_trigger
- imu_broadcaster/imu:=imu/data
- imu_broadcaster/transition_event:=imu_broadcaster/_transition_event
- joint_state_broadcaster/transition_event:=joint_state_broadcaster/_transition_event
-
-
-
-
-
-
-
-
- ${mean}
- ${stddev}
- ${bias_mean}
- ${bias_stddev}
- ${precision}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- 50
- ${ns}imu/data_raw
- false
- false
- imu_link
-
-
- ENU
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- 0
- 1.0 1.0 1.0
- 1.0 1.0 1.0
- 1 0 0
- 1.0
-
- 1.0
- 2.0
- 0.4
-
-
-
-
-
-
diff --git a/panther_description/hooks/panther_description.sh.in b/panther_description/hooks/panther_description.sh.in
deleted file mode 100755
index 45d23a05..00000000
--- a/panther_description/hooks/panther_description.sh.in
+++ /dev/null
@@ -1,3 +0,0 @@
-ament_prepend_unique_value GAZEBO_MODEL_PATH "@CMAKE_INSTALL_PREFIX@/share"
-ament_prepend_unique_value GZ_SIM_RESOURCE_PATH "@CMAKE_INSTALL_PREFIX@/share"
-ament_prepend_unique_value IGN_GAZEBO_RESOURCE_PATH "@CMAKE_INSTALL_PREFIX@/share"
diff --git a/panther_description/launch/load_urdf.launch.py b/panther_description/launch/load_urdf.launch.py
deleted file mode 100644
index 1297f7c1..00000000
--- a/panther_description/launch/load_urdf.launch.py
+++ /dev/null
@@ -1,197 +0,0 @@
-#!/usr/bin/env python3
-
-# Copyright 2020 ros2_control Development Team
-# Copyright 2024 Husarion sp. z o.o.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import os
-
-from launch import LaunchDescription
-from launch.actions import DeclareLaunchArgument
-from launch.conditions import IfCondition
-from launch.substitutions import (
- Command,
- EnvironmentVariable,
- FindExecutable,
- LaunchConfiguration,
- PathJoinSubstitution,
- PythonExpression,
-)
-from launch_ros.actions import Node, SetParameter
-from launch_ros.substitutions import FindPackageShare
-
-
-def generate_launch_description():
- add_wheel_joints = LaunchConfiguration("add_wheel_joints")
- declared_add_wheel_joints_arg = DeclareLaunchArgument(
- "add_wheel_joints",
- default_value="True",
- description="Flag enabling joint_state_publisher to publish information about the wheel position. Should be false when there is a controller that sends this information.",
- choices=["True", "true", "False", "false"],
- )
-
- battery_config_path = LaunchConfiguration("battery_config_path")
- declare_battery_config_path_arg = DeclareLaunchArgument(
- "battery_config_path",
- description=(
- "Path to the Ignition LinearBatteryPlugin configuration file. "
- "This configuration is intended for use in simulations only."
- ),
- default_value="",
- )
-
- components_config_path = LaunchConfiguration("components_config_path")
- declare_components_config_path_arg = DeclareLaunchArgument(
- "components_config_path",
- default_value=PathJoinSubstitution(
- [FindPackageShare("panther_description"), "config", "components.yaml"]
- ),
- description=(
- "Additional components configuration file. Components described in this file "
- "are dynamically included in Panther's urdf."
- "Panther options are described here "
- "https://husarion.com/manuals/panther/panther-options/"
- ),
- )
-
- wheel_type = LaunchConfiguration("wheel_type")
- controller_config_path = LaunchConfiguration("controller_config_path")
- declare_controller_config_path_arg = DeclareLaunchArgument(
- "controller_config_path",
- default_value=PathJoinSubstitution(
- [
- FindPackageShare("husarion_ugv_controller"),
- "config",
- PythonExpression(["'", wheel_type, "_controller.yaml'"]),
- ]
- ),
- description=(
- "Path to controller configuration file. By default, it is located in"
- " 'husarion_ugv_controller/config/{wheel_type}_controller.yaml'. You can also specify"
- " the path to your custom controller configuration file here. "
- ),
- )
-
- namespace = LaunchConfiguration("namespace")
- declare_namespace_arg = DeclareLaunchArgument(
- "namespace",
- default_value=EnvironmentVariable("ROBOT_NAMESPACE", default_value=""),
- description="Add namespace to all launched nodes.",
- )
-
- use_sim = LaunchConfiguration("use_sim")
- declare_use_sim_arg = DeclareLaunchArgument(
- "use_sim",
- default_value="False",
- description="Whether simulation is used.",
- choices=["True", "true", "False", "false"],
- )
-
- wheel_config_path = LaunchConfiguration("wheel_config_path")
- declare_wheel_config_path_arg = DeclareLaunchArgument(
- "wheel_config_path",
- default_value=PathJoinSubstitution(
- [
- FindPackageShare("panther_description"),
- "config",
- PythonExpression(["'", wheel_type, ".yaml'"]),
- ]
- ),
- description=(
- "Path to wheel configuration file. By default, it is located in "
- "'panther_description/config/{wheel_type}.yaml'. You can also specify the path "
- "to your custom wheel configuration file here. "
- ),
- )
-
- declare_wheel_type_arg = DeclareLaunchArgument(
- "wheel_type",
- default_value="WH01",
- description=(
- "Specify the wheel type. If the selected wheel type is not 'custom', "
- "the 'wheel_config_path' and 'controller_config_path' arguments will be "
- "automatically adjusted and can be omitted."
- ),
- choices=["WH01", "WH02", "WH04", "custom"],
- )
-
- # Get URDF via xacro
- imu_pos_x = os.environ.get("ROBOT_IMU_LOCALIZATION_X", "0.168")
- imu_pos_y = os.environ.get("ROBOT_IMU_LOCALIZATION_Y", "0.028")
- imu_pos_z = os.environ.get("ROBOT_IMU_LOCALIZATION_Z", "0.083")
- imu_rot_r = os.environ.get("ROBOT_IMU_ORIENTATION_R", "3.14")
- imu_rot_p = os.environ.get("ROBOT_IMU_ORIENTATION_P", "-1.57")
- imu_rot_y = os.environ.get("ROBOT_IMU_ORIENTATION_Y", "0.0")
- robot_description_content = Command(
- [
- PathJoinSubstitution([FindExecutable(name="xacro")]),
- " ",
- PathJoinSubstitution(
- [FindPackageShare("panther_description"), "urdf", "panther.urdf.xacro"]
- ),
- " use_sim:=",
- use_sim,
- " wheel_config_file:=",
- wheel_config_path,
- " controller_config_file:=",
- controller_config_path,
- " battery_config_file:=",
- battery_config_path,
- " imu_xyz:=",
- f"'{imu_pos_x} {imu_pos_y} {imu_pos_z}'",
- " imu_rpy:=",
- f"'{imu_rot_r} {imu_rot_p} {imu_rot_y}'",
- " namespace:=",
- namespace,
- " components_config_path:=",
- components_config_path,
- ]
- )
-
- namespace_ext = PythonExpression(["'", namespace, "' + '/' if '", namespace, "' else ''"])
-
- robot_state_pub_node = Node(
- package="robot_state_publisher",
- executable="robot_state_publisher",
- parameters=[
- {"robot_description": robot_description_content},
- {"frame_prefix": namespace_ext},
- ],
- namespace=namespace,
- emulate_tty=True,
- )
-
- joint_state_publisher_node = Node(
- package="joint_state_publisher",
- executable="joint_state_publisher",
- namespace=namespace,
- emulate_tty=True,
- condition=IfCondition(add_wheel_joints),
- )
-
- actions = [
- declared_add_wheel_joints_arg,
- declare_battery_config_path_arg,
- declare_components_config_path_arg,
- declare_wheel_type_arg, # wheel_type is used by controller_config_path
- declare_controller_config_path_arg,
- declare_namespace_arg,
- declare_use_sim_arg,
- declare_wheel_config_path_arg,
- SetParameter(name="use_sim_time", value=use_sim),
- robot_state_pub_node,
- joint_state_publisher_node, # do not publish, when use_sim is true
- ]
-
- return LaunchDescription(actions)