From 7786143d0ae43a0e7f7c8145919e502c865e3735 Mon Sep 17 00:00:00 2001 From: Chris Iverach-Brereton <59611394+civerachb-cpr@users.noreply.github.com> Date: Tue, 3 Sep 2024 13:57:14 -0400 Subject: [PATCH] Initial Jazzy implementation (#80) * Begin renaming ignition -> gz, updating dependencies for Jazzy * Update gazebo macros, include paths * More include paths * Namespace replacements * Include messages in the header * Update dependencies * create_ignition -> create_gz * Rename more launch files * Revert launch argument change * More ignition renames * Remove depcreated condition checks * Fix imports * IfCondition wrappers * Rename gazebo -> sim/gz, fix resource path envar * Fix permissions * Update the GUI configurations * Update the simulation launch file * ign -> gz for plugin logging, cover up the "UNKNOWN %0" text for now * Replace the Table model with CoffeeTable; Table doesn't appear to be supported anymore * Replace the sitting person so they're in a chair instead of on the ground * Hmi -> HMI in titlebars * Ignition -> Harmonic transition, minor updates to the warehouse world * Fix gz-gui8 rosdep * Launch Rviz in the naviation profile if it's being started as part of the simulation launch * Update CI for Jazzy * Change the gz_gui_vendor dependency to depend (from buildtool_depend) * Update github issue template * Enable OSRF testing packages for CI * Linting & formatting fixes --- .github/ISSUE_TEMPLATE/1-bug.yml | 2 + .github/workflows/ci.yml | 17 ++-- README.md | 4 +- .../CHANGELOG.rst | 2 +- .../CMakeLists.txt | 4 +- turtlebot4_gz_bringup/README.md | 1 + .../config/turtlebot4_node.yaml | 0 .../gui/lite}/gui.config | 60 +++++++----- .../gui/standard}/gui.config | 60 +++++++----- .../launch/ros_gz_bridge.launch.py | 38 ++++---- .../launch/sim.launch.py | 91 ++++++++++-------- .../launch/turtlebot4_gz.launch.py | 18 ++-- .../launch/turtlebot4_nodes.launch.py | 22 ++--- .../launch/turtlebot4_spawn.launch.py | 32 +++--- .../package.xml | 18 ++-- turtlebot4_gz_bringup/worlds/depot.sdf | 26 +++++ .../worlds/maze.sdf | 13 ++- .../worlds/warehouse.sdf | 19 ++-- .../CHANGELOG.rst | 2 +- .../CMakeLists.txt | 2 +- turtlebot4_gz_gui_plugins/README.md | 1 + .../Turtlebot4Hmi/CMakeLists.txt | 18 ++-- .../Turtlebot4Hmi/Turtlebot4Hmi.cc | 52 +++++----- .../Turtlebot4Hmi/Turtlebot4Hmi.config | 0 .../Turtlebot4Hmi/Turtlebot4Hmi.hh | 43 +++++---- .../Turtlebot4Hmi/Turtlebot4Hmi.qml | 27 ++++-- .../Turtlebot4Hmi/Turtlebot4Hmi.qrc | 0 .../Turtlebot4Hmi/images/One Dot.png | Bin .../Turtlebot4Hmi/images/Power.png | Bin .../Turtlebot4Hmi/images/Two Dots.png | Bin .../package.xml | 6 +- .../CHANGELOG.rst | 2 +- .../CMakeLists.txt | 4 +- .../turtlebot4_gz_toolbox}/hmi_node.hpp | 10 +- .../package.xml | 6 +- .../src/hmi_main.cpp | 4 +- .../src/hmi_node.cpp | 4 +- turtlebot4_ignition_bringup/README.md | 1 - turtlebot4_ignition_bringup/worlds/depot.sdf | 22 ----- turtlebot4_ignition_gui_plugins/README.md | 1 - turtlebot4_simulator/package.xml | 8 +- 41 files changed, 348 insertions(+), 292 deletions(-) rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/CHANGELOG.rst (96%) rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/CMakeLists.txt (84%) create mode 100644 turtlebot4_gz_bringup/README.md rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/config/turtlebot4_node.yaml (100%) rename {turtlebot4_ignition_bringup/gui/standard => turtlebot4_gz_bringup/gui/lite}/gui.config (74%) rename {turtlebot4_ignition_bringup/gui/lite => turtlebot4_gz_bringup/gui/standard}/gui.config (74%) rename turtlebot4_ignition_bringup/launch/ros_ign_bridge.launch.py => turtlebot4_gz_bringup/launch/ros_gz_bridge.launch.py (86%) rename turtlebot4_ignition_bringup/launch/ignition.launch.py => turtlebot4_gz_bringup/launch/sim.launch.py (55%) rename turtlebot4_ignition_bringup/launch/turtlebot4_ignition.launch.py => turtlebot4_gz_bringup/launch/turtlebot4_gz.launch.py (83%) rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/launch/turtlebot4_nodes.launch.py (73%) rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/launch/turtlebot4_spawn.launch.py (90%) rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/package.xml (71%) create mode 100644 turtlebot4_gz_bringup/worlds/depot.sdf rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/worlds/maze.sdf (98%) rename {turtlebot4_ignition_bringup => turtlebot4_gz_bringup}/worlds/warehouse.sdf (89%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/CHANGELOG.rst (89%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/CMakeLists.txt (92%) create mode 100644 turtlebot4_gz_gui_plugins/README.md rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/CMakeLists.txt (70%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/Turtlebot4Hmi.cc (84%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/Turtlebot4Hmi.config (100%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/Turtlebot4Hmi.hh (74%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/Turtlebot4Hmi.qml (96%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/Turtlebot4Hmi.qrc (100%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/images/One Dot.png (100%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/images/Power.png (100%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/Turtlebot4Hmi/images/Two Dots.png (100%) rename {turtlebot4_ignition_gui_plugins => turtlebot4_gz_gui_plugins}/package.xml (76%) rename {turtlebot4_ignition_toolbox => turtlebot4_gz_toolbox}/CHANGELOG.rst (89%) rename {turtlebot4_ignition_toolbox => turtlebot4_gz_toolbox}/CMakeLists.txt (94%) rename {turtlebot4_ignition_toolbox/include/turtlebot4_ignition_toolbox => turtlebot4_gz_toolbox/include/turtlebot4_gz_toolbox}/hmi_node.hpp (87%) rename {turtlebot4_ignition_toolbox => turtlebot4_gz_toolbox}/package.xml (83%) rename {turtlebot4_ignition_toolbox => turtlebot4_gz_toolbox}/src/hmi_main.cpp (86%) rename {turtlebot4_ignition_toolbox => turtlebot4_gz_toolbox}/src/hmi_node.cpp (96%) delete mode 100644 turtlebot4_ignition_bringup/README.md delete mode 100644 turtlebot4_ignition_bringup/worlds/depot.sdf delete mode 100644 turtlebot4_ignition_gui_plugins/README.md diff --git a/.github/ISSUE_TEMPLATE/1-bug.yml b/.github/ISSUE_TEMPLATE/1-bug.yml index e1d2ea5..e80731e 100644 --- a/.github/ISSUE_TEMPLATE/1-bug.yml +++ b/.github/ISSUE_TEMPLATE/1-bug.yml @@ -30,6 +30,7 @@ body: - Select One - Galactic - Humble + - Jazzy validations: required: true - type: dropdown @@ -52,6 +53,7 @@ body: - Select One - Ubuntu 20.04 - Ubuntu 22.04 + - Ubuntu 24.04 - Other Linux - Windows / MAC validations: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0667be7..db88d0a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,20 +3,21 @@ name: turtlebot4_simulator_ci on: [push, pull_request] jobs: - turtlebot4_humble_ci: - name: Humble - runs-on: ubuntu-22.04 + turtlebot4_jazzy_ci: + name: Jazzy + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v2.3.4 - uses: ros-tooling/setup-ros@v0.7 with: - required-ros-distributions: humble + required-ros-distributions: jazzy + use-ros2-testing: true - uses: ros-tooling/action-ros-ci@v0.3 id: action_ros_ci_step with: - target-ros2-distro: humble + target-ros2-distro: jazzy import-token: ${{ secrets.GITHUB_TOKEN }} package-name: - turtlebot4_ignition_bringup - turtlebot4_ignition_gui_plugins - turtlebot4_ignition_toolbox + turtlebot4_gz_bringup + turtlebot4_gz_gui_plugins + turtlebot4_gz_toolbox diff --git a/README.md b/README.md index 0d1812e..1e07c14 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Turtlebot4 Simulator -Turtlebot4 Simulation using Ignition Gazebo. +Turtlebot4 Simulation using Harmonic Gazebo for ROS 2 Jazzy. Visit the [TurtleBot 4 User Manual](https://turtlebot.github.io/turtlebot4-user-manual/software/turtlebot4_simulator.html) for details. @@ -10,5 +10,5 @@ sudo apt-get update && sudo apt-get install wget sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - sudo apt-get update -sudo apt-get install ignition-fortress ros-humble-turtlebot4-simulator +sudo apt-get install gz-harmonic ros-jazzy-turtlebot4-simulator ``` diff --git a/turtlebot4_ignition_bringup/CHANGELOG.rst b/turtlebot4_gz_bringup/CHANGELOG.rst similarity index 96% rename from turtlebot4_ignition_bringup/CHANGELOG.rst rename to turtlebot4_gz_bringup/CHANGELOG.rst index f394e88..b64f965 100644 --- a/turtlebot4_ignition_bringup/CHANGELOG.rst +++ b/turtlebot4_gz_bringup/CHANGELOG.rst @@ -1,5 +1,5 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Changelog for package turtlebot4_ignition_bringup +Changelog for package turtlebot4_gz_bringup ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1.0.2 (2024-04-15) diff --git a/turtlebot4_ignition_bringup/CMakeLists.txt b/turtlebot4_gz_bringup/CMakeLists.txt similarity index 84% rename from turtlebot4_ignition_bringup/CMakeLists.txt rename to turtlebot4_gz_bringup/CMakeLists.txt index 031251d..05e9151 100644 --- a/turtlebot4_ignition_bringup/CMakeLists.txt +++ b/turtlebot4_gz_bringup/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.8) -project(turtlebot4_ignition_bringup) +project(turtlebot4_gz_bringup) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) @@ -8,7 +8,7 @@ endif() # find dependencies find_package(ament_cmake REQUIRED) -find_package(ros_ign_interfaces REQUIRED) +find_package(ros_gz_interfaces REQUIRED) install( DIRECTORY config gui launch worlds diff --git a/turtlebot4_gz_bringup/README.md b/turtlebot4_gz_bringup/README.md new file mode 100644 index 0000000..8a77b14 --- /dev/null +++ b/turtlebot4_gz_bringup/README.md @@ -0,0 +1 @@ +# turtlebot4_gz_bringup diff --git a/turtlebot4_ignition_bringup/config/turtlebot4_node.yaml b/turtlebot4_gz_bringup/config/turtlebot4_node.yaml similarity index 100% rename from turtlebot4_ignition_bringup/config/turtlebot4_node.yaml rename to turtlebot4_gz_bringup/config/turtlebot4_node.yaml diff --git a/turtlebot4_ignition_bringup/gui/standard/gui.config b/turtlebot4_gz_bringup/gui/lite/gui.config similarity index 74% rename from turtlebot4_ignition_bringup/gui/standard/gui.config rename to turtlebot4_gz_bringup/gui/lite/gui.config index d3c30d8..583195d 100644 --- a/turtlebot4_ignition_bringup/gui/standard/gui.config +++ b/turtlebot4_gz_bringup/gui/lite/gui.config @@ -1,26 +1,38 @@ - - - 3D View - false - docked - - - ogre2 - scene - -0.0176 -0.737 0.017 0 -0.135 1.64 + + + 3D View + docked + false + + ogre2 + scene + 0.4 0.4 0.4 + 0.8 0.8 0.8 + -6 0 6 0 0.5 0 + + + + false + floating + + + + + false + floating + - + World control false false 72 - 121 1 floating @@ -28,7 +40,7 @@ - + true true @@ -37,7 +49,7 @@ - + World stats false false @@ -50,7 +62,7 @@ - + true true @@ -60,7 +72,7 @@ - + Transform control @@ -72,12 +84,12 @@ floating false #03a9f4 - + - + @@ -88,25 +100,25 @@ floating false #03a9f4 - + - - + + true docked 200 true - + /cmd_vel - + true docked true - + diff --git a/turtlebot4_ignition_bringup/gui/lite/gui.config b/turtlebot4_gz_bringup/gui/standard/gui.config similarity index 74% rename from turtlebot4_ignition_bringup/gui/lite/gui.config rename to turtlebot4_gz_bringup/gui/standard/gui.config index 3f512c9..9ff001b 100644 --- a/turtlebot4_ignition_bringup/gui/lite/gui.config +++ b/turtlebot4_gz_bringup/gui/standard/gui.config @@ -1,26 +1,38 @@ - - - 3D View - false - docked - - - ogre2 - scene - -0.0176 -0.737 0.017 0 -0.135 1.64 + + + 3D View + docked + false + + ogre2 + scene + 0.4 0.4 0.4 + 0.8 0.8 0.8 + -6 0 6 0 0.5 0 + + + + false + floating + + + + + false + floating + - + World control false false 72 - 121 1 floating @@ -28,7 +40,7 @@ - + true true @@ -37,7 +49,7 @@ - + World stats false false @@ -50,7 +62,7 @@ - + true true @@ -60,7 +72,7 @@ - + Transform control @@ -72,12 +84,12 @@ floating false #03a9f4 - + - + @@ -88,25 +100,25 @@ floating false #03a9f4 - + - - + + true docked 200 true - + /cmd_vel - + true docked true - + diff --git a/turtlebot4_ignition_bringup/launch/ros_ign_bridge.launch.py b/turtlebot4_gz_bringup/launch/ros_gz_bridge.launch.py similarity index 86% rename from turtlebot4_ignition_bringup/launch/ros_ign_bridge.launch.py rename to turtlebot4_gz_bringup/launch/ros_gz_bridge.launch.py index a874416..55d1a1a 100644 --- a/turtlebot4_ignition_bringup/launch/ros_ign_bridge.launch.py +++ b/turtlebot4_gz_bringup/launch/ros_gz_bridge.launch.py @@ -18,9 +18,9 @@ from launch import LaunchDescription from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription -from launch.conditions import LaunchConfigurationEquals +from launch.conditions import IfCondition from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import LaunchConfiguration +from launch.substitutions import EqualsSubstitution, LaunchConfiguration from launch.substitutions.path_join_substitution import PathJoinSubstitution from launch_ros.actions import Node @@ -30,9 +30,9 @@ choices=['true', 'false'], description='Use sim time'), DeclareLaunchArgument('robot_name', default_value='turtlebot4', - description='Ignition model name'), + description='Gazebo model name'), DeclareLaunchArgument('dock_name', default_value='standard_dock', - description='Ignition model name'), + description='Gazebo model name'), DeclareLaunchArgument('namespace', default_value='', description='Robot namespace'), DeclareLaunchArgument('world', default_value='warehouse', @@ -60,11 +60,11 @@ def generate_launch_description(): 'user2' ] - pkg_irobot_create_ignition_bringup = get_package_share_directory( - 'irobot_create_ignition_bringup') + pkg_irobot_create_gz_bringup = get_package_share_directory( + 'irobot_create_gz_bringup') create3_ros_gz_bridge_launch = PathJoinSubstitution( - [pkg_irobot_create_ignition_bringup, 'launch', 'create3_ros_ignition_bridge.launch.py']) + [pkg_irobot_create_gz_bringup, 'launch', 'create3_ros_gz_bridge.launch.py']) create3_bridge = IncludeLaunchDescription( PythonLaunchDescriptionSource([create3_ros_gz_bridge_launch]), @@ -89,7 +89,7 @@ def generate_launch_description(): ['/world/', world, '/model/', robot_name, '/link/rplidar_link/sensor/rplidar/scan' + - '@sensor_msgs/msg/LaserScan[ignition.msgs.LaserScan'] + '@sensor_msgs/msg/LaserScan[gz.msgs.LaserScan'] ], remappings=[ (['/world/', world, @@ -108,10 +108,10 @@ def generate_launch_description(): arguments=[ [namespace, '/hmi/display/raw' + '@std_msgs/msg/String' + - ']ignition.msgs.StringMsg'], + ']gz.msgs.StringMsg'], [namespace, '/hmi/display/selected' + '@std_msgs/msg/Int32' + - ']ignition.msgs.Int32'] + ']gz.msgs.Int32'] ], remappings=[ ([namespace, '/hmi/display/raw'], @@ -119,7 +119,7 @@ def generate_launch_description(): ([namespace, '/hmi/display/selected'], 'hmi/display/_selected') ], - condition=LaunchConfigurationEquals('model', 'standard')) + condition=IfCondition(EqualsSubstitution(LaunchConfiguration('model'), 'standard'))) # Buttons message bridge hmi_buttons_msg_bridge = Node( @@ -131,13 +131,13 @@ def generate_launch_description(): arguments=[ [namespace, '/hmi/buttons' + '@std_msgs/msg/Int32' + - '[ignition.msgs.Int32'] + '[gz.msgs.Int32'] ], remappings=[ ([namespace, '/hmi/buttons'], 'hmi/buttons/_set') ], - condition=LaunchConfigurationEquals('model', 'standard')) + condition=IfCondition(EqualsSubstitution(LaunchConfiguration('model'), 'standard'))) # Buttons message bridge hmi_led_msg_bridge = Node( @@ -149,13 +149,13 @@ def generate_launch_description(): arguments=[ [namespace, '/hmi/led/' + led + '@std_msgs/msg/Int32' + - ']ignition.msgs.Int32'] for led in leds + ']gz.msgs.Int32'] for led in leds ], remappings=[ ([namespace, '/hmi/led/' + led], 'hmi/led/_' + led) for led in leds ], - condition=LaunchConfigurationEquals('model', 'standard')) + condition=IfCondition(EqualsSubstitution(LaunchConfiguration('model'), 'standard'))) # Camera sensor bridge oakd_camera_bridge = Node( @@ -169,22 +169,22 @@ def generate_launch_description(): '/model/', robot_name, '/link/oakd_rgb_camera_frame/sensor/rgbd_camera/image' + '@sensor_msgs/msg/Image' + - '[ignition.msgs.Image'], + '[gz.msgs.Image'], ['/world/', world, '/model/', robot_name, '/link/oakd_rgb_camera_frame/sensor/rgbd_camera/depth_image' + '@sensor_msgs/msg/Image' + - '[ignition.msgs.Image'], + '[gz.msgs.Image'], ['/world/', world, '/model/', robot_name, '/link/oakd_rgb_camera_frame/sensor/rgbd_camera/points' + '@sensor_msgs/msg/PointCloud2' + - '[ignition.msgs.PointCloudPacked'], + '[gz.msgs.PointCloudPacked'], ['/world/', world, '/model/', robot_name, '/link/oakd_rgb_camera_frame/sensor/rgbd_camera/camera_info' + '@sensor_msgs/msg/CameraInfo' + - '[ignition.msgs.CameraInfo'], + '[gz.msgs.CameraInfo'], ], remappings=[ (['/world/', world, diff --git a/turtlebot4_ignition_bringup/launch/ignition.launch.py b/turtlebot4_gz_bringup/launch/sim.launch.py similarity index 55% rename from turtlebot4_ignition_bringup/launch/ignition.launch.py rename to turtlebot4_gz_bringup/launch/sim.launch.py index 58b3c60..7b4c665 100644 --- a/turtlebot4_ignition_bringup/launch/ignition.launch.py +++ b/turtlebot4_gz_bringup/launch/sim.launch.py @@ -33,7 +33,7 @@ choices=['true', 'false'], description='use_sim_time'), DeclareLaunchArgument('world', default_value='warehouse', - description='Ignition World'), + description='Simulation World'), DeclareLaunchArgument('model', default_value='lite', choices=['standard', 'lite'], description='Turtlebot4 Model'), @@ -43,53 +43,60 @@ def generate_launch_description(): # Directories - pkg_turtlebot4_ignition_bringup = get_package_share_directory( - 'turtlebot4_ignition_bringup') - pkg_turtlebot4_ignition_gui_plugins = get_package_share_directory( - 'turtlebot4_ignition_gui_plugins') + pkg_turtlebot4_gz_bringup = get_package_share_directory( + 'turtlebot4_gz_bringup') + pkg_turtlebot4_gz_gui_plugins = get_package_share_directory( + 'turtlebot4_gz_gui_plugins') pkg_turtlebot4_description = get_package_share_directory( 'turtlebot4_description') pkg_irobot_create_description = get_package_share_directory( 'irobot_create_description') - pkg_irobot_create_ignition_bringup = get_package_share_directory( - 'irobot_create_ignition_bringup') - pkg_irobot_create_ignition_plugins = get_package_share_directory( - 'irobot_create_ignition_plugins') - pkg_ros_ign_gazebo = get_package_share_directory( - 'ros_ign_gazebo') + pkg_irobot_create_gz_bringup = get_package_share_directory( + 'irobot_create_gz_bringup') + pkg_irobot_create_gz_plugins = get_package_share_directory( + 'irobot_create_gz_plugins') + pkg_ros_gz_sim = get_package_share_directory( + 'ros_gz_sim') - # Set ignition resource path - ign_resource_path = SetEnvironmentVariable( - name='IGN_GAZEBO_RESOURCE_PATH', - value=[ - os.path.join(pkg_turtlebot4_ignition_bringup, 'worlds'), ':' + - os.path.join(pkg_irobot_create_ignition_bringup, 'worlds'), ':' + - str(Path(pkg_turtlebot4_description).parent.resolve()), ':' + - str(Path(pkg_irobot_create_description).parent.resolve())]) + # Set Gazebo resource path + gz_resource_path = SetEnvironmentVariable( + name='GZ_SIM_RESOURCE_PATH', + value=':'.join([ + os.path.join(pkg_turtlebot4_gz_bringup, 'worlds'), + os.path.join(pkg_irobot_create_gz_bringup, 'worlds'), + str(Path(pkg_turtlebot4_description).parent.resolve()), + str(Path(pkg_irobot_create_description).parent.resolve()) + ]) + ) - ign_gui_plugin_path = SetEnvironmentVariable( - name='IGN_GUI_PLUGIN_PATH', - value=[ - os.path.join(pkg_turtlebot4_ignition_gui_plugins, 'lib'), ':' + - os.path.join(pkg_irobot_create_ignition_plugins, 'lib')]) + gz_gui_plugin_path = SetEnvironmentVariable( + name='GZ_GUI_PLUGIN_PATH', + value=':'.join([ + os.path.join(pkg_turtlebot4_gz_gui_plugins, 'lib'), + os.path.join(pkg_irobot_create_gz_plugins, 'lib') + ]) + ) # Paths - ign_gazebo_launch = PathJoinSubstitution( - [pkg_ros_ign_gazebo, 'launch', 'ign_gazebo.launch.py']) + gz_sim_launch = PathJoinSubstitution( + [pkg_ros_gz_sim, 'launch', 'gz_sim.launch.py']) - # Ignition gazebo - ignition_gazebo = IncludeLaunchDescription( - PythonLaunchDescriptionSource([ign_gazebo_launch]), + # Gazebo harmonic + gazebo = IncludeLaunchDescription( + PythonLaunchDescriptionSource([gz_sim_launch]), launch_arguments=[ - ('ign_args', [LaunchConfiguration('world'), - '.sdf', - ' -v 4', - ' --gui-config ', - PathJoinSubstitution( - [pkg_turtlebot4_ignition_bringup, - 'gui', - LaunchConfiguration('model'), - 'gui.config'])]) + ('gz_args', [ + LaunchConfiguration('world'), + '.sdf', + ' -v 4', + ' --gui-config ', + PathJoinSubstitution([ + pkg_turtlebot4_gz_bringup, + 'gui', + LaunchConfiguration('model'), + 'gui.config' + ]) + ]) ] ) @@ -98,13 +105,13 @@ def generate_launch_description(): name='clock_bridge', output='screen', arguments=[ - '/clock' + '@rosgraph_msgs/msg/Clock' + '[ignition.msgs.Clock' + '/clock' + '@rosgraph_msgs/msg/Clock' + '[gz.msgs.Clock' ]) # Create launch description and add actions ld = LaunchDescription(ARGUMENTS) - ld.add_action(ign_resource_path) - ld.add_action(ign_gui_plugin_path) - ld.add_action(ignition_gazebo) + ld.add_action(gz_resource_path) + ld.add_action(gz_gui_plugin_path) + ld.add_action(gazebo) ld.add_action(clock_bridge) return ld diff --git a/turtlebot4_ignition_bringup/launch/turtlebot4_ignition.launch.py b/turtlebot4_gz_bringup/launch/turtlebot4_gz.launch.py similarity index 83% rename from turtlebot4_ignition_bringup/launch/turtlebot4_ignition.launch.py rename to turtlebot4_gz_bringup/launch/turtlebot4_gz.launch.py index 107a14e..4c7cec6 100644 --- a/turtlebot4_ignition_bringup/launch/turtlebot4_ignition.launch.py +++ b/turtlebot4_gz_bringup/launch/turtlebot4_gz.launch.py @@ -29,7 +29,7 @@ DeclareLaunchArgument('rviz', default_value='false', choices=['true', 'false'], description='Start rviz.'), DeclareLaunchArgument('world', default_value='warehouse', - description='Ignition World'), + description='Simulation World'), DeclareLaunchArgument('model', default_value='standard', choices=['standard', 'lite'], description='Turtlebot4 Model'), @@ -42,17 +42,17 @@ def generate_launch_description(): # Directories - pkg_turtlebot4_ignition_bringup = get_package_share_directory( - 'turtlebot4_ignition_bringup') + pkg_turtlebot4_gz_bringup = get_package_share_directory( + 'turtlebot4_gz_bringup') # Paths - ignition_launch = PathJoinSubstitution( - [pkg_turtlebot4_ignition_bringup, 'launch', 'ignition.launch.py']) + gazebo_launch = PathJoinSubstitution( + [pkg_turtlebot4_gz_bringup, 'launch', 'sim.launch.py']) robot_spawn_launch = PathJoinSubstitution( - [pkg_turtlebot4_ignition_bringup, 'launch', 'turtlebot4_spawn.launch.py']) + [pkg_turtlebot4_gz_bringup, 'launch', 'turtlebot4_spawn.launch.py']) - ignition = IncludeLaunchDescription( - PythonLaunchDescriptionSource([ignition_launch]), + gazebo = IncludeLaunchDescription( + PythonLaunchDescriptionSource([gazebo_launch]), launch_arguments=[ ('world', LaunchConfiguration('world')) ] @@ -71,6 +71,6 @@ def generate_launch_description(): # Create launch description and add actions ld = LaunchDescription(ARGUMENTS) - ld.add_action(ignition) + ld.add_action(gazebo) ld.add_action(robot_spawn) return ld diff --git a/turtlebot4_ignition_bringup/launch/turtlebot4_nodes.launch.py b/turtlebot4_gz_bringup/launch/turtlebot4_nodes.launch.py similarity index 73% rename from turtlebot4_ignition_bringup/launch/turtlebot4_nodes.launch.py rename to turtlebot4_gz_bringup/launch/turtlebot4_nodes.launch.py index 2d7b89e..37b7937 100644 --- a/turtlebot4_ignition_bringup/launch/turtlebot4_nodes.launch.py +++ b/turtlebot4_gz_bringup/launch/turtlebot4_nodes.launch.py @@ -18,8 +18,8 @@ from launch import LaunchDescription from launch.actions import DeclareLaunchArgument -from launch.conditions import LaunchConfigurationEquals -from launch.substitutions import LaunchConfiguration, PathJoinSubstitution +from launch.conditions import IfCondition +from launch.substitutions import EqualsSubstitution, LaunchConfiguration, PathJoinSubstitution from launch_ros.actions import Node ARGUMENTS = [ @@ -32,13 +32,13 @@ def generate_launch_description(): # Directories - pkg_turtlebot4_ignition_bringup = get_package_share_directory('turtlebot4_ignition_bringup') + pkg_turtlebot4_gz_bringup = get_package_share_directory('turtlebot4_gz_bringup') # Parameters param_file_cmd = DeclareLaunchArgument( 'param_file', default_value=PathJoinSubstitution( - [pkg_turtlebot4_ignition_bringup, 'config', 'turtlebot4_node.yaml']), + [pkg_turtlebot4_gz_bringup, 'config', 'turtlebot4_node.yaml']), description='Turtlebot4 Robot param file' ) @@ -54,18 +54,18 @@ def generate_launch_description(): output='screen', ) - # Turtlebot4 Ignition Hmi node - turtlebot4_ignition_hmi_node = Node( - package='turtlebot4_ignition_toolbox', - name='turtlebot4_ignition_hmi_node', - executable='turtlebot4_ignition_hmi_node', + # Turtlebot4 Gazebo Hmi node + turtlebot4_gz_hmi_node = Node( + package='turtlebot4_gz_toolbox', + name='turtlebot4_gz_hmi_node', + executable='turtlebot4_gz_hmi_node', output='screen', - condition=LaunchConfigurationEquals('model', 'standard') + condition=IfCondition(EqualsSubstitution(LaunchConfiguration('model'), 'standard')) ) # Define LaunchDescription variable ld = LaunchDescription(ARGUMENTS) ld.add_action(param_file_cmd) ld.add_action(turtlebot4_node) - ld.add_action(turtlebot4_ignition_hmi_node) + ld.add_action(turtlebot4_gz_hmi_node) return ld diff --git a/turtlebot4_ignition_bringup/launch/turtlebot4_spawn.launch.py b/turtlebot4_gz_bringup/launch/turtlebot4_spawn.launch.py similarity index 90% rename from turtlebot4_ignition_bringup/launch/turtlebot4_spawn.launch.py rename to turtlebot4_gz_bringup/launch/turtlebot4_spawn.launch.py index de381ea..f9dc65a 100644 --- a/turtlebot4_ignition_bringup/launch/turtlebot4_spawn.launch.py +++ b/turtlebot4_gz_bringup/launch/turtlebot4_spawn.launch.py @@ -60,8 +60,8 @@ def generate_launch_description(): # Directories - pkg_turtlebot4_ignition_bringup = get_package_share_directory( - 'turtlebot4_ignition_bringup') + pkg_turtlebot4_gz_bringup = get_package_share_directory( + 'turtlebot4_gz_bringup') pkg_turtlebot4_description = get_package_share_directory( 'turtlebot4_description') pkg_turtlebot4_viz = get_package_share_directory( @@ -70,20 +70,20 @@ def generate_launch_description(): 'turtlebot4_navigation') pkg_irobot_create_common_bringup = get_package_share_directory( 'irobot_create_common_bringup') - pkg_irobot_create_ignition_bringup = get_package_share_directory( - 'irobot_create_ignition_bringup') + pkg_irobot_create_gz_bringup = get_package_share_directory( + 'irobot_create_gz_bringup') # Paths - turtlebot4_ros_ign_bridge_launch = PathJoinSubstitution( - [pkg_turtlebot4_ignition_bringup, 'launch', 'ros_ign_bridge.launch.py']) + turtlebot4_ros_gz_bridge_launch = PathJoinSubstitution( + [pkg_turtlebot4_gz_bringup, 'launch', 'ros_gz_bridge.launch.py']) rviz_launch = PathJoinSubstitution( - [pkg_turtlebot4_viz, 'launch', 'view_robot.launch.py']) + [pkg_turtlebot4_viz, 'launch', 'view_navigation.launch.py']) turtlebot4_node_launch = PathJoinSubstitution( - [pkg_turtlebot4_ignition_bringup, 'launch', 'turtlebot4_nodes.launch.py']) + [pkg_turtlebot4_gz_bringup, 'launch', 'turtlebot4_nodes.launch.py']) create3_nodes_launch = PathJoinSubstitution( [pkg_irobot_create_common_bringup, 'launch', 'create3_nodes.launch.py']) - create3_ignition_nodes_launch = PathJoinSubstitution( - [pkg_irobot_create_ignition_bringup, 'launch', 'create3_ignition_nodes.launch.py']) + create3_gz_nodes_launch = PathJoinSubstitution( + [pkg_irobot_create_gz_bringup, 'launch', 'create3_gz_nodes.launch.py']) robot_description_launch = PathJoinSubstitution( [pkg_turtlebot4_description, 'launch', 'robot_description.launch.py']) dock_description_launch = PathJoinSubstitution( @@ -99,7 +99,7 @@ def generate_launch_description(): param_file_cmd = DeclareLaunchArgument( 'param_file', default_value=PathJoinSubstitution( - [pkg_turtlebot4_ignition_bringup, 'config', 'turtlebot4_node.yaml']), + [pkg_turtlebot4_gz_bringup, 'config', 'turtlebot4_node.yaml']), description='Turtlebot4 Robot param file') # Launch configurations @@ -143,7 +143,7 @@ def generate_launch_description(): # Spawn TurtleBot 4 Node( - package='ros_ign_gazebo', + package='ros_gz_sim', executable='create', arguments=['-name', robot_name, '-x', x, @@ -156,7 +156,7 @@ def generate_launch_description(): # Spawn Dock Node( - package='ros_ign_gazebo', + package='ros_gz_sim', executable='create', arguments=['-name', dock_name, '-x', x_dock, @@ -169,7 +169,7 @@ def generate_launch_description(): # ROS IGN bridge IncludeLaunchDescription( - PythonLaunchDescriptionSource([turtlebot4_ros_ign_bridge_launch]), + PythonLaunchDescriptionSource([turtlebot4_ros_gz_bridge_launch]), launch_arguments=[ ('model', LaunchConfiguration('model')), ('robot_name', robot_name), @@ -192,9 +192,9 @@ def generate_launch_description(): ] ), - # Create 3 Ignition nodes + # Create 3 Gazebo nodes IncludeLaunchDescription( - PythonLaunchDescriptionSource([create3_ignition_nodes_launch]), + PythonLaunchDescriptionSource([create3_gz_nodes_launch]), launch_arguments=[ ('robot_name', robot_name), ('dock_name', dock_name), diff --git a/turtlebot4_ignition_bringup/package.xml b/turtlebot4_gz_bringup/package.xml similarity index 71% rename from turtlebot4_ignition_bringup/package.xml rename to turtlebot4_gz_bringup/package.xml index 352013d..061dc8b 100644 --- a/turtlebot4_ignition_bringup/package.xml +++ b/turtlebot4_gz_bringup/package.xml @@ -1,9 +1,9 @@ - turtlebot4_ignition_bringup + turtlebot4_gz_bringup 1.0.2 - TurtleBot 4 Ignition Simulator bringup + TurtleBot 4 Gazebo Simulator bringup rkreinin Apache 2.0 @@ -15,21 +15,21 @@ turtlebot4_navigation turtlebot4_node turtlebot4_viz - turtlebot4_ignition_gui_plugins - turtlebot4_ignition_toolbox + turtlebot4_gz_gui_plugins + turtlebot4_gz_toolbox irobot_create_description irobot_create_common_bringup irobot_create_nodes irobot_create_toolbox - irobot_create_ignition_bringup - irobot_create_ignition_toolbox + irobot_create_gz_bringup + irobot_create_gz_toolbox - ros_ign_interfaces - ros_ign_gazebo - ros_ign_bridge + ros_gz_interfaces + ros_gz_sim + std_msgs diff --git a/turtlebot4_gz_bringup/worlds/depot.sdf b/turtlebot4_gz_bringup/worlds/depot.sdf new file mode 100644 index 0000000..24f9a88 --- /dev/null +++ b/turtlebot4_gz_bringup/worlds/depot.sdf @@ -0,0 +1,26 @@ + + + + + false + + + 0.003 + 1.0 + + + + + + + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Depot + + + + + diff --git a/turtlebot4_ignition_bringup/worlds/maze.sdf b/turtlebot4_gz_bringup/worlds/maze.sdf similarity index 98% rename from turtlebot4_ignition_bringup/worlds/maze.sdf rename to turtlebot4_gz_bringup/worlds/maze.sdf index 00950da..61e1345 100644 --- a/turtlebot4_ignition_bringup/worlds/maze.sdf +++ b/turtlebot4_gz_bringup/worlds/maze.sdf @@ -6,10 +6,15 @@ 1 1000 - - - - + + + + + + + 1 0 0 10 0 -0 0 diff --git a/turtlebot4_ignition_bringup/worlds/warehouse.sdf b/turtlebot4_gz_bringup/worlds/warehouse.sdf similarity index 89% rename from turtlebot4_ignition_bringup/worlds/warehouse.sdf rename to turtlebot4_gz_bringup/worlds/warehouse.sdf index eb31ad1..c818bd2 100644 --- a/turtlebot4_ignition_bringup/worlds/warehouse.sdf +++ b/turtlebot4_gz_bringup/worlds/warehouse.sdf @@ -5,9 +5,13 @@ 0.003 1.0 - - - + + + + + 1 1 1 1 @@ -222,7 +226,7 @@ - https://fuel.gazebosim.org/1.0/OpenRobotics/models/Table + https://fuel.gazebosim.org/1.0/OpenRobotics/models/CoffeeTable table0 -12.7 6.5 0 0 0 0 @@ -230,14 +234,13 @@ - + 14.3 -4 0 0 -0 -1.43 + diff --git a/turtlebot4_ignition_gui_plugins/CHANGELOG.rst b/turtlebot4_gz_gui_plugins/CHANGELOG.rst similarity index 89% rename from turtlebot4_ignition_gui_plugins/CHANGELOG.rst rename to turtlebot4_gz_gui_plugins/CHANGELOG.rst index 7b77656..e184e0f 100644 --- a/turtlebot4_ignition_gui_plugins/CHANGELOG.rst +++ b/turtlebot4_gz_gui_plugins/CHANGELOG.rst @@ -1,5 +1,5 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Changelog for package turtlebot4_ignition_gui_plugins +Changelog for package turtlebot4_gz_gui_plugins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1.0.2 (2024-04-15) diff --git a/turtlebot4_ignition_gui_plugins/CMakeLists.txt b/turtlebot4_gz_gui_plugins/CMakeLists.txt similarity index 92% rename from turtlebot4_ignition_gui_plugins/CMakeLists.txt rename to turtlebot4_gz_gui_plugins/CMakeLists.txt index f0b40c8..21842f8 100644 --- a/turtlebot4_ignition_gui_plugins/CMakeLists.txt +++ b/turtlebot4_gz_gui_plugins/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.8) -project(turtlebot4_ignition_gui_plugins) +project(turtlebot4_gz_gui_plugins) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) diff --git a/turtlebot4_gz_gui_plugins/README.md b/turtlebot4_gz_gui_plugins/README.md new file mode 100644 index 0000000..4a997f3 --- /dev/null +++ b/turtlebot4_gz_gui_plugins/README.md @@ -0,0 +1 @@ +# turtlebot4_gz_gui_plugins diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/CMakeLists.txt b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/CMakeLists.txt similarity index 70% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/CMakeLists.txt rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/CMakeLists.txt index f473e62..29b8bce 100644 --- a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/CMakeLists.txt +++ b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/CMakeLists.txt @@ -16,17 +16,17 @@ find_package(Qt5 REQUIRED ) -# Find the Ignition gui library -find_package(ignition-gui6 REQUIRED) -find_package(ignition-common4 REQUIRED) +# Find the Gz gui library +find_package(gz-gui8 REQUIRED) +find_package(gz-common5 REQUIRED) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IGNITION-GUI_CXX_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GZ-GUI_CXX_FLAGS}") qt5_add_resources(resources_rcc Turtlebot4Hmi.qrc) include_directories(SYSTEM - ${IGNITION-COMMON_INCLUDE_DIRS} - ${IGNITION-GUI_INCLUDE_DIRS} + ${GZ-COMMON_INCLUDE_DIRS} + ${GZ-GUI_INCLUDE_DIRS} ${Qt5Core_INCLUDE_DIRS} ${Qt5Qml_INCLUDE_DIRS} ${Qt5Quick_INCLUDE_DIRS} @@ -34,8 +34,8 @@ include_directories(SYSTEM ) link_directories( - ${IGNITION-COMMON_LIBRARY_DIRS} - ${IGNITION-GUI_LIBRARY_DIRS} + ${GZ-COMMON_LIBRARY_DIRS} + ${GZ-GUI_LIBRARY_DIRS} ) # Generate examples @@ -44,7 +44,7 @@ Turtlebot4Hmi.cc ${resources_rcc} ) target_link_libraries(Turtlebot4Hmi - ${IGNITION-GUI_LIBRARIES} + ${GZ-GUI_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Qml_LIBRARIES} ${Qt5Quick_LIBRARIES} diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.cc b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.cc similarity index 84% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.cc rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.cc index 60a6391..c191f6b 100644 --- a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.cc +++ b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.cc @@ -18,16 +18,16 @@ #include "Turtlebot4Hmi.hh" -#include +#include #include #include -#include -#include -#include +#include +#include +#include -using ignition::gui::Turtlebot4Hmi; +using gz::gui::Turtlebot4Hmi; Turtlebot4Hmi::Turtlebot4Hmi() : Plugin() @@ -43,10 +43,10 @@ Turtlebot4Hmi::~Turtlebot4Hmi() void Turtlebot4Hmi::CreatePublishers() { - this->hmi_button_pub_ = ignition::transport::Node::Publisher(); - this->hmi_button_pub_ = this->node_.Advertise < ignition::msgs::Int32 > (this->hmi_button_topic_); - this->create3_button_pub_ = ignition::transport::Node::Publisher(); - this->create3_button_pub_ = this->node_.Advertise < ignition::msgs::Int32 > ( + this->hmi_button_pub_ = gz::transport::Node::Publisher(); + this->hmi_button_pub_ = this->node_.Advertise < gz::msgs::Int32 > (this->hmi_button_topic_); + this->create3_button_pub_ = gz::transport::Node::Publisher(); + this->create3_button_pub_ = this->node_.Advertise < gz::msgs::Int32 > ( this->create3_button_topic_); } @@ -112,7 +112,7 @@ void Turtlebot4Hmi::SetNamespace(const QString &_name) { this->namespace_ = _name.toStdString(); - ignmsg << "A new robot namespace has been entered: '" << + gzmsg << "A new robot namespace has been entered: '" << this->namespace_ << " ' " <hmi_button_pub_.Publish(button_msg)) { - ignerr << "ignition::msgs::Int32 message couldn't be published at topic: " << + gzerr << "gz::msgs::Int32 message couldn't be published at topic: " << this->hmi_button_topic_ << std::endl; } } void Turtlebot4Hmi::OnCreate3Button(const int button) { - ignition::msgs::Int32 button_msg; + gz::msgs::Int32 button_msg; button_msg.set_data(button); if (!this->create3_button_pub_.Publish(button_msg)) { - ignerr << "ignition::msgs::Int32 message couldn't be published at topic: " << + gzerr << "gz::msgs::Int32 message couldn't be published at topic: " << this->create3_button_topic_ << std::endl; } } -void Turtlebot4Hmi::OnRawMessage(const ignition::msgs::StringMsg & msg) +void Turtlebot4Hmi::OnRawMessage(const gz::msgs::StringMsg & msg) { std::lock_guard < std::mutex > lock(this->raw_msg_mutex_); this->AddMsg(QString::fromStdString(msg.data())); } -void Turtlebot4Hmi::OnSelectedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnSelectedMessage(const gz::msgs::Int32 & msg) { std::lock_guard < std::mutex > lock(this->selected_msg_mutex_); selected_line_ = msg.data(); } -void Turtlebot4Hmi::OnPowerLedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnPowerLedMessage(const gz::msgs::Int32 & msg) { switch (msg.data()) { case 0: @@ -194,7 +194,7 @@ void Turtlebot4Hmi::OnPowerLedMessage(const ignition::msgs::Int32 & msg) } } -void Turtlebot4Hmi::OnMotorsLedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnMotorsLedMessage(const gz::msgs::Int32 & msg) { switch (msg.data()) { case 0: @@ -214,7 +214,7 @@ void Turtlebot4Hmi::OnMotorsLedMessage(const ignition::msgs::Int32 & msg) } } -void Turtlebot4Hmi::OnCommsLedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnCommsLedMessage(const gz::msgs::Int32 & msg) { switch (msg.data()) { case 0: @@ -234,7 +234,7 @@ void Turtlebot4Hmi::OnCommsLedMessage(const ignition::msgs::Int32 & msg) } } -void Turtlebot4Hmi::OnWifiLedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnWifiLedMessage(const gz::msgs::Int32 & msg) { switch (msg.data()) { case 0: @@ -254,7 +254,7 @@ void Turtlebot4Hmi::OnWifiLedMessage(const ignition::msgs::Int32 & msg) } } -void Turtlebot4Hmi::OnBatteryLedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnBatteryLedMessage(const gz::msgs::Int32 & msg) { switch (msg.data()) { case 0: @@ -286,7 +286,7 @@ void Turtlebot4Hmi::OnBatteryLedMessage(const ignition::msgs::Int32 & msg) } } -void Turtlebot4Hmi::OnUser1LedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnUser1LedMessage(const gz::msgs::Int32 & msg) { switch (msg.data()) { case 0: @@ -306,7 +306,7 @@ void Turtlebot4Hmi::OnUser1LedMessage(const ignition::msgs::Int32 & msg) } } -void Turtlebot4Hmi::OnUser2LedMessage(const ignition::msgs::Int32 & msg) +void Turtlebot4Hmi::OnUser2LedMessage(const gz::msgs::Int32 & msg) { switch (msg.data()) { case 0: @@ -379,6 +379,6 @@ void Turtlebot4Hmi::OnAddMsg(QString msg) } // Register this plugin -IGNITION_ADD_PLUGIN( - ignition::gui::Turtlebot4Hmi, - ignition::gui::Plugin) +GZ_ADD_PLUGIN( + gz::gui::Turtlebot4Hmi, + gz::gui::Plugin) diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.config b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.config similarity index 100% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.config rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.config diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.hh b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.hh similarity index 74% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.hh rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.hh index b89efb7..b3ad5a0 100644 --- a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.hh +++ b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.hh @@ -16,17 +16,18 @@ * @author Roni Kreinin (rkreinin@clearpathrobotics.com) */ -#ifndef TURTLEBOT4_IGNITION_GUI_PLUGINS__TURTLEBOT4HMI__TURTLEBOT4HMI_HH_ -#define TURTLEBOT4_IGNITION_GUI_PLUGINS__TURTLEBOT4HMI__TURTLEBOT4HMI_HH_ +#ifndef TURTLEBOT4_GZ_GUI_PLUGINS__TURTLEBOT4HMI__TURTLEBOT4HMI_HH_ +#define TURTLEBOT4_GZ_GUI_PLUGINS__TURTLEBOT4HMI__TURTLEBOT4HMI_HH_ -#include +#include #include -#include -#include +#include +#include +#include -namespace ignition +namespace gz { namespace gui @@ -49,7 +50,7 @@ public: Turtlebot4Hmi(); /// \brief Destructor virtual ~Turtlebot4Hmi(); - /// \brief Called by Ignition GUI when plugin is instantiated. + /// \brief Called by Gz GUI when plugin is instantiated. /// \param[in] _pluginElem XML configuration for this plugin. void LoadConfig(const tinyxml2::XMLElement * _pluginElem) override; // \brief Get the robot namespace as a string, for example @@ -82,15 +83,15 @@ signals: /// \brief Subscriber callbacks private: - void OnRawMessage(const ignition::msgs::StringMsg & msg); - void OnSelectedMessage(const ignition::msgs::Int32 & msg); - void OnPowerLedMessage(const ignition::msgs::Int32 & msg); - void OnMotorsLedMessage(const ignition::msgs::Int32 & msg); - void OnCommsLedMessage(const ignition::msgs::Int32 & msg); - void OnWifiLedMessage(const ignition::msgs::Int32 & msg); - void OnBatteryLedMessage(const ignition::msgs::Int32 & msg); - void OnUser1LedMessage(const ignition::msgs::Int32 & msg); - void OnUser2LedMessage(const ignition::msgs::Int32 & msg); + void OnRawMessage(const gz::msgs::StringMsg & msg); + void OnSelectedMessage(const gz::msgs::Int32 & msg); + void OnPowerLedMessage(const gz::msgs::Int32 & msg); + void OnMotorsLedMessage(const gz::msgs::Int32 & msg); + void OnCommsLedMessage(const gz::msgs::Int32 & msg); + void OnWifiLedMessage(const gz::msgs::Int32 & msg); + void OnBatteryLedMessage(const gz::msgs::Int32 & msg); + void OnUser1LedMessage(const gz::msgs::Int32 & msg); + void OnUser2LedMessage(const gz::msgs::Int32 & msg); void CreatePublishers(); void CreateSubscribers(); void RemovePublishers(); @@ -103,9 +104,9 @@ private slots: void OnAddMsg(QString msg); private: - ignition::transport::Node node_; - ignition::transport::Node::Publisher hmi_button_pub_; - ignition::transport::Node::Publisher create3_button_pub_; + gz::transport::Node node_; + gz::transport::Node::Publisher hmi_button_pub_; + gz::transport::Node::Publisher create3_button_pub_; std::string namespace_ = ""; std::string hmi_button_topic_ = "/hmi/buttons"; @@ -133,6 +134,6 @@ private: } // namespace gui -} // namespace ignition +} // namespace gz -#endif // TURTLEBOT4_IGNITION_GUI_PLUGINS__TURTLEBOT4HMI__TURTLEBOT4HMI_HH_ +#endif // TURTLEBOT4_GZ_GUI_PLUGINS__TURTLEBOT4HMI__TURTLEBOT4HMI_HH_ diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qml b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qml similarity index 96% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qml rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qml index f511ec6..7fdc610 100644 --- a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qml +++ b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qml @@ -361,7 +361,7 @@ Rectangle id: headerBox height: 30 width: 250 - color: "transparent" + color: "black" border.color: "black" border.width: 2 anchors.horizontalCenter: hmiRectangle.horizontalCenter @@ -369,9 +369,18 @@ Rectangle anchors.topMargin: 0 } + Label + { + id: headerLabel + anchors.horizontalCenter: headerBox.horizontalCenter + anchors.verticalCenter: headerBox.verticalCenter + text: qsTr("Actions") + color: "white" + } + Button { id: hmiButton1 - text: qsTr("1") + text: qsTr("Run") highlighted: false onPressed: { Turtlebot4Hmi.OnHmiButton(1); } onReleased: { Turtlebot4Hmi.OnHmiButton(0); } @@ -385,7 +394,7 @@ Rectangle implicitHeight: 40 opacity: 0.3 border.color: "#000000" - border.width: control.down ? 2 : 1 + border.width: 1 radius: 20 color: "gray" } @@ -393,7 +402,7 @@ Rectangle Button { id: hmiButton2 - text: qsTr("2") + text: qsTr("Top") highlighted: false onPressed: { Turtlebot4Hmi.OnHmiButton(2); } onReleased: { Turtlebot4Hmi.OnHmiButton(0); } @@ -407,7 +416,7 @@ Rectangle implicitHeight: 40 opacity: 0.3 border.color: "#000000" - border.width: control.down ? 2 : 1 + border.width: 1 radius: 20 color: "gray" } @@ -415,7 +424,7 @@ Rectangle Button { id: hmiButton3 - text: qsTr("3") + text: qsTr("^") highlighted: false onPressed: { Turtlebot4Hmi.OnHmiButton(3); } onReleased: { Turtlebot4Hmi.OnHmiButton(0); } @@ -429,7 +438,7 @@ Rectangle implicitHeight: 40 opacity: 0.3 border.color: "#000000" - border.width: control.down ? 2 : 1 + border.width: 1 radius: 20 color: "gray" } @@ -437,7 +446,7 @@ Rectangle Button { id: hmiButton4 - text: qsTr("4") + text: qsTr("v") highlighted: false onPressed: { Turtlebot4Hmi.OnHmiButton(4); } onReleased: { Turtlebot4Hmi.OnHmiButton(0); } @@ -451,7 +460,7 @@ Rectangle implicitHeight: 40 opacity: 0.3 border.color: "#000000" - border.width: control.down ? 2 : 1 + border.width: 1 radius: 20 color: "gray" } diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qrc b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qrc similarity index 100% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qrc rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/Turtlebot4Hmi.qrc diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/images/One Dot.png b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/images/One Dot.png similarity index 100% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/images/One Dot.png rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/images/One Dot.png diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/images/Power.png b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/images/Power.png similarity index 100% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/images/Power.png rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/images/Power.png diff --git a/turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/images/Two Dots.png b/turtlebot4_gz_gui_plugins/Turtlebot4Hmi/images/Two Dots.png similarity index 100% rename from turtlebot4_ignition_gui_plugins/Turtlebot4Hmi/images/Two Dots.png rename to turtlebot4_gz_gui_plugins/Turtlebot4Hmi/images/Two Dots.png diff --git a/turtlebot4_ignition_gui_plugins/package.xml b/turtlebot4_gz_gui_plugins/package.xml similarity index 76% rename from turtlebot4_ignition_gui_plugins/package.xml rename to turtlebot4_gz_gui_plugins/package.xml index c7f81e2..112541b 100644 --- a/turtlebot4_ignition_gui_plugins/package.xml +++ b/turtlebot4_gz_gui_plugins/package.xml @@ -1,14 +1,14 @@ - turtlebot4_ignition_gui_plugins + turtlebot4_gz_gui_plugins 1.0.2 - Turtlebot4 Ignition Simulator GUI Plugins + Turtlebot4 Gazebo Simulator GUI Plugins rkreinin Apache 2.0 ament_cmake - ignition-gui6 + gz_gui_vendor qml-module-qtquick-extras ament_lint_auto diff --git a/turtlebot4_ignition_toolbox/CHANGELOG.rst b/turtlebot4_gz_toolbox/CHANGELOG.rst similarity index 89% rename from turtlebot4_ignition_toolbox/CHANGELOG.rst rename to turtlebot4_gz_toolbox/CHANGELOG.rst index 911fa63..ad120ef 100644 --- a/turtlebot4_ignition_toolbox/CHANGELOG.rst +++ b/turtlebot4_gz_toolbox/CHANGELOG.rst @@ -1,5 +1,5 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Changelog for package turtlebot4_ignition_toolbox +Changelog for package turtlebot4_gz_toolbox ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1.0.2 (2024-04-15) diff --git a/turtlebot4_ignition_toolbox/CMakeLists.txt b/turtlebot4_gz_toolbox/CMakeLists.txt similarity index 94% rename from turtlebot4_ignition_toolbox/CMakeLists.txt rename to turtlebot4_gz_toolbox/CMakeLists.txt index 20024d2..5d03643 100644 --- a/turtlebot4_ignition_toolbox/CMakeLists.txt +++ b/turtlebot4_gz_toolbox/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.8) -project(turtlebot4_ignition_toolbox) +project(turtlebot4_gz_toolbox) # Default to C99 if(NOT CMAKE_C_STANDARD) @@ -48,7 +48,7 @@ target_link_libraries(${PROJECT_NAME}_lib ${GPIOD_LIBRARY}) ament_target_dependencies(${PROJECT_NAME}_lib ${DEPENDENCIES}) -set(EXECUTABLE_NAME "turtlebot4_ignition_hmi_node") +set(EXECUTABLE_NAME "turtlebot4_gz_hmi_node") add_executable(${EXECUTABLE_NAME} src/hmi_main.cpp) target_link_libraries(${EXECUTABLE_NAME} ${PROJECT_NAME}_lib) diff --git a/turtlebot4_ignition_toolbox/include/turtlebot4_ignition_toolbox/hmi_node.hpp b/turtlebot4_gz_toolbox/include/turtlebot4_gz_toolbox/hmi_node.hpp similarity index 87% rename from turtlebot4_ignition_toolbox/include/turtlebot4_ignition_toolbox/hmi_node.hpp rename to turtlebot4_gz_toolbox/include/turtlebot4_gz_toolbox/hmi_node.hpp index ddcfa74..4cdf93b 100644 --- a/turtlebot4_ignition_toolbox/include/turtlebot4_ignition_toolbox/hmi_node.hpp +++ b/turtlebot4_gz_toolbox/include/turtlebot4_gz_toolbox/hmi_node.hpp @@ -16,8 +16,8 @@ * @author Roni Kreinin (rkreinin@clearpathrobotics.com) */ -#ifndef TURTLEBOT4_IGNITION_TOOLBOX__HMI_NODE_HPP_ -#define TURTLEBOT4_IGNITION_TOOLBOX__HMI_NODE_HPP_ +#ifndef TURTLEBOT4_GZ_TOOLBOX__HMI_NODE_HPP_ +#define TURTLEBOT4_GZ_TOOLBOX__HMI_NODE_HPP_ #include @@ -28,7 +28,7 @@ #include "turtlebot4_msgs/msg/user_button.hpp" #include "turtlebot4_msgs/msg/user_display.hpp" -namespace turtlebot4_ignition_toolbox +namespace turtlebot4_gz_toolbox { static constexpr auto DISPLAY_CHAR_PER_LINE_HEADER = 21; @@ -52,6 +52,6 @@ class Hmi : public rclcpp::Node rclcpp::Subscription::SharedPtr button_subscriber_; }; -} // namespace turtlebot4_ignition_toolbox +} // namespace turtlebot4_gz_toolbox -#endif // TURTLEBOT4_IGNITION_TOOLBOX__HMI_NODE_HPP_ +#endif // TURTLEBOT4_GZ_TOOLBOX__HMI_NODE_HPP_ diff --git a/turtlebot4_ignition_toolbox/package.xml b/turtlebot4_gz_toolbox/package.xml similarity index 83% rename from turtlebot4_ignition_toolbox/package.xml rename to turtlebot4_gz_toolbox/package.xml index 5cb342f..80b6268 100644 --- a/turtlebot4_ignition_toolbox/package.xml +++ b/turtlebot4_gz_toolbox/package.xml @@ -1,9 +1,9 @@ - turtlebot4_ignition_toolbox + turtlebot4_gz_toolbox 1.0.2 - Turtlebot4 Ignition Toolbox + Turtlebot4 Gazebo Toolbox rkreinin Apache 2.0 @@ -15,7 +15,7 @@ std_msgs sensor_msgs turtlebot4_msgs - ros_ign_interfaces + ros_gz_interfaces ament_lint_auto ament_lint_common diff --git a/turtlebot4_ignition_toolbox/src/hmi_main.cpp b/turtlebot4_gz_toolbox/src/hmi_main.cpp similarity index 86% rename from turtlebot4_ignition_toolbox/src/hmi_main.cpp rename to turtlebot4_gz_toolbox/src/hmi_main.cpp index 8b9fb0f..7be7368 100644 --- a/turtlebot4_ignition_toolbox/src/hmi_main.cpp +++ b/turtlebot4_gz_toolbox/src/hmi_main.cpp @@ -16,13 +16,13 @@ * @author Roni Kreinin (rkreinin@clearpathrobotics.com) */ -#include "turtlebot4_ignition_toolbox/hmi_node.hpp" +#include "turtlebot4_gz_toolbox/hmi_node.hpp" #include int main(int argc, char * argv[]) { rclcpp::init(argc, argv); - rclcpp::spin(std::make_shared()); + rclcpp::spin(std::make_shared()); rclcpp::shutdown(); return 0; } diff --git a/turtlebot4_ignition_toolbox/src/hmi_node.cpp b/turtlebot4_gz_toolbox/src/hmi_node.cpp similarity index 96% rename from turtlebot4_ignition_toolbox/src/hmi_node.cpp rename to turtlebot4_gz_toolbox/src/hmi_node.cpp index a707a76..e53c0c2 100644 --- a/turtlebot4_ignition_toolbox/src/hmi_node.cpp +++ b/turtlebot4_gz_toolbox/src/hmi_node.cpp @@ -20,9 +20,9 @@ #include #include -#include "turtlebot4_ignition_toolbox/hmi_node.hpp" +#include "turtlebot4_gz_toolbox/hmi_node.hpp" -using turtlebot4_ignition_toolbox::Hmi; +using turtlebot4_gz_toolbox::Hmi; Hmi::Hmi() : rclcpp::Node("hmi_node") diff --git a/turtlebot4_ignition_bringup/README.md b/turtlebot4_ignition_bringup/README.md deleted file mode 100644 index defad81..0000000 --- a/turtlebot4_ignition_bringup/README.md +++ /dev/null @@ -1 +0,0 @@ -# turtlebot4_ignition diff --git a/turtlebot4_ignition_bringup/worlds/depot.sdf b/turtlebot4_ignition_bringup/worlds/depot.sdf deleted file mode 100644 index c7f04c0..0000000 --- a/turtlebot4_ignition_bringup/worlds/depot.sdf +++ /dev/null @@ -1,22 +0,0 @@ - - - - - false - - - 0.003 - 1.0 - - - - - - - - https://fuel.gazebosim.org/1.0/OpenRobotics/models/Depot - - - - - diff --git a/turtlebot4_ignition_gui_plugins/README.md b/turtlebot4_ignition_gui_plugins/README.md deleted file mode 100644 index 4f86064..0000000 --- a/turtlebot4_ignition_gui_plugins/README.md +++ /dev/null @@ -1 +0,0 @@ -# turtlebot4_ignition_gui_plugins diff --git a/turtlebot4_simulator/package.xml b/turtlebot4_simulator/package.xml index 61f265a..abf3498 100644 --- a/turtlebot4_simulator/package.xml +++ b/turtlebot4_simulator/package.xml @@ -3,15 +3,15 @@ turtlebot4_simulator 1.0.2 - TODO: Package description + Metapackage for Turtlebot4 simulations rkreinin Apache 2.0 ament_cmake - turtlebot4_ignition_bringup - turtlebot4_ignition_gui_plugins - turtlebot4_ignition_toolbox + turtlebot4_gz_bringup + turtlebot4_gz_gui_plugins + turtlebot4_gz_toolbox ament_cmake