diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..339a484e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2021 Robots
+
+ 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.
diff --git a/pmb2_bringup/CHANGELOG.rst b/pmb2_bringup/CHANGELOG.rst
index ab5985ab..35f27a9a 100644
--- a/pmb2_bringup/CHANGELOG.rst
+++ b/pmb2_bringup/CHANGELOG.rst
@@ -2,6 +2,31 @@
Changelog for package pmb2_bringup
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+4.0.4 (2021-10-19)
+------------------
+
+4.0.3 (2021-10-19)
+------------------
+
+4.0.2 (2021-07-15)
+------------------
+
+4.0.1 (2021-07-15)
+------------------
+* Fix missing dependencies
+* Contributors: Victor Lopez
+
+4.0.0 (2021-07-12)
+------------------
+* Cleanup unused files
+* Add linters and fix errors
+* Cleanup pmb2_bringup
+* Remove old joystick_teleop.launch
+* Use unstamped topic in mobile_base_controller
+* Migrate pmb2_bringup to ROS2
+* First working version
+* Contributors: Victor Lopez
+
3.0.14 (2021-01-18)
-------------------
diff --git a/pmb2_bringup/CMakeLists.txt b/pmb2_bringup/CMakeLists.txt
index b0083637..bde03f1f 100644
--- a/pmb2_bringup/CMakeLists.txt
+++ b/pmb2_bringup/CMakeLists.txt
@@ -1,11 +1,16 @@
-cmake_minimum_required(VERSION 2.8.3)
+cmake_minimum_required(VERSION 3.5)
project(pmb2_bringup)
-find_package(catkin REQUIRED)
+find_package(ament_cmake_auto REQUIRED)
-catkin_package()
+# PAL Robotics stricter build flags, other developers should not worry about this
+find_package(ament_cmake_pal QUIET)
-foreach(dir config launch)
- install(DIRECTORY ${dir}/
- DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir})
-endforeach()
+ament_auto_find_build_dependencies()
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+ament_auto_package(INSTALL_TO_SHARE config launch)
diff --git a/pmb2_bringup/config/joy_teleop.yaml b/pmb2_bringup/config/joy_teleop.yaml
index 0189d9f3..953081c9 100644
--- a/pmb2_bringup/config/joy_teleop.yaml
+++ b/pmb2_bringup/config/joy_teleop.yaml
@@ -1,52 +1,60 @@
-teleop:
- move:
- type: topic
- message_type: geometry_msgs/Twist
- topic_name: cmd_vel
- axis_mappings:
- -
- axis: 1
- target: linear.x
- scale: 1.0
- -
- axis: 2
- target: angular.z
- scale: 1.0
+/**:
+ ros__parameters:
+ move:
+ type: topic
+ interface_type: geometry_msgs/msg/Twist
+ topic_name: cmd_vel
+ deadman_buttons: []
+ axis_mappings:
+ linear-x:
+ axis: 1
+ scale: 1.0
+ offset: 0.0
+ angular-z:
+ axis: 2
+ scale: 1.0
+ offset: 0.0
- joy_priority:
- type: action
- action_name: joy_priority_action
- buttons: [0]
+ joy_priority:
+ type: action
+ interface_type: teleop_tools_msgs/action/Increment
+ action_name: joy_priority_action
+ buttons: [0]
- joy_turbo_decrease:
- type: action
- action_name: joy_turbo_decrease
- buttons: [1, 4, 5]
+ joy_turbo_decrease:
+ type: action
+ interface_type: teleop_tools_msgs/action/Increment
+ action_name: joy_turbo_decrease
+ buttons: [1, 4, 5]
- joy_turbo_increase:
- type: action
- action_name: joy_turbo_increase
- buttons: [3, 4, 5]
+ joy_turbo_increase:
+ type: action
+ interface_type: teleop_tools_msgs/action/Increment
+ action_name: joy_turbo_increase
+ buttons: [3, 4, 5]
- joy_turbo_angular_decrease:
- type: action
- action_name: joy_turbo_angular_decrease
- buttons: [0, 4, 5]
+ joy_turbo_angular_decrease:
+ type: action
+ interface_type: teleop_tools_msgs/action/Increment
+ action_name: joy_turbo_angular_decrease
+ buttons: [0, 4, 5]
- joy_turbo_angular_increase:
- type: action
- action_name: joy_turbo_angular_increase
- buttons: [2, 4, 5]
+ joy_turbo_angular_increase:
+ type: action
+ interface_type: teleop_tools_msgs/action/Increment
+ action_name: joy_turbo_angular_increase
+ buttons: [2, 4, 5]
- joy_turbo_reset:
- type: action
- action_name: joy_turbo_reset
- buttons: [4, 5, 7]
+ joy_turbo_reset:
+ type: action
+ interface_type: teleop_tools_msgs/action/Increment
+ action_name: joy_turbo_reset
+ buttons: [4, 5, 7]
- # Disable speed_limit example
- # @todo duration param is not taken
- #speed_limit_disable:
- # type: action
- # action_name: speed_limit/disable
- # duration: 10.0
- # buttons: [4, 5, 6, 7]
+ # Disable speed_limit example
+ # @todo duration param is not taken
+ #speed_limit_disable:
+ # type: action
+ # action_name: speed_limit/disable
+ # duration: 10.0
+ # buttons: [4, 5, 6, 7]
diff --git a/pmb2_bringup/config/sensor_to_cloud/bumper_to_cloud.yaml b/pmb2_bringup/config/sensor_to_cloud/bumper_to_cloud.yaml
deleted file mode 100644
index 561d85a1..00000000
--- a/pmb2_bringup/config/sensor_to_cloud/bumper_to_cloud.yaml
+++ /dev/null
@@ -1 +0,0 @@
-bumper_base_topic: bumper_base
diff --git a/pmb2_bringup/config/sensor_to_cloud/sonar_to_cloud.yaml b/pmb2_bringup/config/sensor_to_cloud/sonar_to_cloud.yaml
deleted file mode 100644
index 90f43809..00000000
--- a/pmb2_bringup/config/sensor_to_cloud/sonar_to_cloud.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-sonar_base_topic: sonar_base
-
-infinity_dist : 4.0
-aperture_angle: 0.18
-arc_resolution: 0.10
diff --git a/pmb2_bringup/config/twist_mux/joystick.yaml b/pmb2_bringup/config/twist_mux/joystick.yaml
index 5eb29d7d..8912457c 100644
--- a/pmb2_bringup/config/twist_mux/joystick.yaml
+++ b/pmb2_bringup/config/twist_mux/joystick.yaml
@@ -1,10 +1,12 @@
-priority: false
+/**:
+ ros__parameters:
+ priority: false
-turbo:
- linear_forward_min : 0.05
- linear_forward_max : 1.00
- linear_backward_min : 0.05
- linear_backward_max : 0.20
- angular_min : !degrees 10.0
- angular_max : !degrees 120.0
- steps : 8
+ turbo:
+ linear_forward_min : 0.05
+ linear_forward_max : 1.00
+ linear_backward_min : 0.05
+ linear_backward_max : 0.20
+ angular_min : !degrees 10.0
+ angular_max : !degrees 120.0
+ steps : 8
diff --git a/pmb2_bringup/config/twist_mux/twist_mux_locks.yaml b/pmb2_bringup/config/twist_mux/twist_mux_locks.yaml
index 74c45113..4f9f6bf5 100644
--- a/pmb2_bringup/config/twist_mux/twist_mux_locks.yaml
+++ b/pmb2_bringup/config/twist_mux/twist_mux_locks.yaml
@@ -8,21 +8,20 @@
# - priority: priority in the range [0, 255], so all the topics with priority lower than it
# will be stopped/disabled
-locks:
--
- name : pause
- topic : pause_navigation
- timeout : 0.0
- # Same priority as joystick control, so it'll not block it.
- priority: 100
--
- name : loop_closure
- topic : stop_closing_loop
- timeout : 0.0
- priority: 200
--
- name : joystick
- topic : joy_priority
- timeout : 0.0
- priority: 100
+/**:
+ ros__parameters:
+ locks:
+ pause:
+ topic : pause_navigation
+ timeout : 0.0
+ # Same priority as joystick control, so it'll not block it.
+ priority: 100
+ loop_closure:
+ topic : stop_closing_loop
+ timeout : 0.0
+ priority: 200
+ joystick:
+ topic : joy_priority
+ timeout : 0.0
+ priority: 100
diff --git a/pmb2_bringup/config/twist_mux/twist_mux_topics.yaml b/pmb2_bringup/config/twist_mux/twist_mux_topics.yaml
index a310a69d..598cdd39 100644
--- a/pmb2_bringup/config/twist_mux/twist_mux_topics.yaml
+++ b/pmb2_bringup/config/twist_mux/twist_mux_topics.yaml
@@ -4,45 +4,41 @@
# - topic : input topic of geometry_msgs::Twist type
# - timeout : timeout in seconds to start discarding old messages, and use 0.0 speed instead
# - priority: priority in the range [0, 255]; the higher the more priority over other topics
-
-topics:
--
- name : navigation
- topic : nav_vel
- timeout : 0.5
- priority: 10
--
- name : joystick
- topic : joy_vel
- timeout : 0.5
- priority: 100
--
- name : keyboard
- topic : key_vel
- timeout : 0.5
- priority: 90
--
- name : tablet
- topic : tab_vel
- timeout : 0.5
- priority: 100
--
- name : marker
- topic : marker_vel
- timeout : 0.5
- priority: 99
--
- name : phone
- topic : phone_vel
- timeout : 0.5
- priority: 98
--
- name : rviz_joy
- topic : rviz_joy_vel
- timeout : 0.5
- priority: 95
--
- name : servoing_cmd_vel
- topic : servoing_cmd_vel
- timeout : 0.5
- priority: 20
\ No newline at end of file
+/**:
+ ros__parameters:
+ topics:
+ navigation:
+ topic : nav_vel
+ timeout : 0.5
+ priority: 10
+ joystick:
+ topic : joy_vel
+ timeout : 0.5
+ priority: 100
+ keyboard:
+ topic : key_vel
+ timeout : 0.5
+ priority: 90
+ tablet:
+ topic : tab_vel
+ timeout : 0.5
+ priority: 100
+ marker:
+ name : marker
+ topic : marker_vel
+ timeout : 0.5
+ priority: 99
+ phone:
+ topic : phone_vel
+ timeout : 0.5
+ priority: 98
+ rviz:
+ name : rviz_joy
+ topic : rviz_joy_vel
+ timeout : 0.5
+ priority: 95
+ servoing:
+ name : servoing_cmd_vel
+ topic : servoing_cmd_vel
+ timeout : 0.5
+ priority: 20
diff --git a/pmb2_bringup/launch/joystick_teleop.launch b/pmb2_bringup/launch/joystick_teleop.launch
deleted file mode 100644
index 34c33363..00000000
--- a/pmb2_bringup/launch/joystick_teleop.launch
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pmb2_bringup/launch/joystick_teleop.launch.py b/pmb2_bringup/launch/joystick_teleop.launch.py
new file mode 100644
index 00000000..8febf2b3
--- /dev/null
+++ b/pmb2_bringup/launch/joystick_teleop.launch.py
@@ -0,0 +1,47 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from ament_index_python.packages import get_package_share_directory
+
+from launch import LaunchDescription
+from launch.actions import DeclareLaunchArgument
+from launch.substitutions import LaunchConfiguration
+from launch_ros.actions import Node
+
+import os
+
+
+def generate_launch_description():
+ pkg_dir = get_package_share_directory('pmb2_bringup')
+ joy_teleop_path = os.path.join(pkg_dir, 'config', 'joy_teleop.yaml')
+
+ declare_cmd_vel = DeclareLaunchArgument('cmd_vel', default_value='input_joy/cmd_vel',
+ description='Joystick cmd_vel topic')
+ declare_teleop_config = DeclareLaunchArgument('teleop_config',
+ default_value=joy_teleop_path,
+ description='Joystick teleop configuration file')
+ joy_teleop_node = Node(
+ package='joy_teleop', executable='joy_teleop',
+ parameters=[LaunchConfiguration('teleop_config')],
+ remappings=[('cmd_vel', LaunchConfiguration('cmd_vel'))])
+
+ # Missing joy_node (not ported to ROS2 yet)
+
+ ld = LaunchDescription([
+ declare_cmd_vel,
+ declare_teleop_config,
+ joy_teleop_node,
+ ])
+
+ return ld
diff --git a/pmb2_bringup/launch/pmb2_bringup.launch b/pmb2_bringup/launch/pmb2_bringup.launch
deleted file mode 100644
index 0cde6fa3..00000000
--- a/pmb2_bringup/launch/pmb2_bringup.launch
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pmb2_bringup/launch/pmb2_bringup.launch.py b/pmb2_bringup/launch/pmb2_bringup.launch.py
new file mode 100644
index 00000000..3c8749d5
--- /dev/null
+++ b/pmb2_bringup/launch/pmb2_bringup.launch.py
@@ -0,0 +1,30 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from launch import LaunchDescription
+from launch_pal.include_utils import include_launch_py_description
+
+
+def generate_launch_description():
+ # Create the launch description and populate
+ ld = LaunchDescription([
+ # TODO missing equivalent to ROS1 robot_pose_node
+ # TODO missing equivalent to tf_lookup, but it may have been legacy from tf1
+ include_launch_py_description(
+ 'pmb2_controller_configuration', ['launch', 'default_controllers.launch.py']),
+ include_launch_py_description('pmb2_bringup', ['launch', 'twist_mux.launch.py']),
+ include_launch_py_description('pmb2_bringup', ['launch', 'joystick_teleop.launch.py']),
+ ])
+
+ return ld
diff --git a/pmb2_bringup/launch/twist_mux.launch b/pmb2_bringup/launch/twist_mux.launch
deleted file mode 100644
index b11f5ffb..00000000
--- a/pmb2_bringup/launch/twist_mux.launch
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pmb2_bringup/launch/twist_mux.launch.py b/pmb2_bringup/launch/twist_mux.launch.py
new file mode 100644
index 00000000..20d01306
--- /dev/null
+++ b/pmb2_bringup/launch/twist_mux.launch.py
@@ -0,0 +1,37 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from ament_index_python.packages import get_package_share_directory
+from launch_pal.include_utils import include_launch_py_description
+
+from launch import LaunchDescription
+
+import os
+
+
+def generate_launch_description():
+ pkg = get_package_share_directory('pmb2_bringup')
+
+ ld = LaunchDescription([
+ include_launch_py_description(
+ 'twist_mux', ['launch', 'twist_mux_launch.py'],
+ launch_arguments={
+ 'cmd_vel_out': 'mobile_base_controller/cmd_vel_unstamped',
+ 'config_locks': os.path.join(pkg, 'config', 'twist_mux', 'twist_mux_locks.yaml'),
+ 'config_topics': os.path.join(pkg, 'config', 'twist_mux', 'twist_mux_topics.yaml'),
+ 'joystick': os.path.join(pkg, 'config', 'twist_mux', 'joystick.yaml'),
+ }.items()),
+ ])
+
+ return ld
diff --git a/pmb2_bringup/package.xml b/pmb2_bringup/package.xml
index 332e2f72..e5ee887d 100644
--- a/pmb2_bringup/package.xml
+++ b/pmb2_bringup/package.xml
@@ -1,23 +1,28 @@
-
+pmb2_bringup
- 3.0.14
+ 4.0.4Launch files and scripts needed to bring up the ROS nodes of a PMB2 robot.
- Procopio Stein
+ Victor LopezApache License 2.0Bence MagyarEnrique Fernandez
- catkin
+ ament_cmake_auto
+ launch_palpmb2_controller_configurationpmb2_descriptionrobot_state_publisher
- robot_pose
- tf_lookup
- speed_limit_nodetwist_muxjoyjoy_teleop
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+
diff --git a/pmb2_controller_configuration/CHANGELOG.rst b/pmb2_controller_configuration/CHANGELOG.rst
index 6c18f4dc..2dd1603e 100644
--- a/pmb2_controller_configuration/CHANGELOG.rst
+++ b/pmb2_controller_configuration/CHANGELOG.rst
@@ -2,6 +2,43 @@
Changelog for package pmb2_controller_configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+4.0.4 (2021-10-19)
+------------------
+
+4.0.3 (2021-10-19)
+------------------
+* Merge branch 'add_extra_joints' into 'foxy-devel'
+ Add extra joints
+ See merge request robots/pmb2_robot!74
+* add extra joints to joint state
+* add extra joints to joint state
+* Contributors: cescfolch, victor
+
+4.0.2 (2021-07-15)
+------------------
+
+4.0.1 (2021-07-15)
+------------------
+* Fix missing dependencies
+* Contributors: Victor Lopez
+
+4.0.0 (2021-07-12)
+------------------
+* Correct dependency name
+* Using joint_state_broadcaster instead of controller
+* Adapt to proper parameter naming
+* Add linters to pmb2_bringup and apply fixes
+* use_sim_time in controllers and cleanup
+* Split default_controllers launch file
+* Fixes to gazebo ros2 control param changes
+* More fixes to default_controllers
+* Add default_controllers.launch.py
+* Update default_controllers.yaml
+ Update gazebo controller name
+* Add pmb2_controller_configuration
+* First working version
+* Contributors: Jordan Palacios, Victor Lopez
+
3.0.14 (2021-01-18)
-------------------
diff --git a/pmb2_controller_configuration/CMakeLists.txt b/pmb2_controller_configuration/CMakeLists.txt
index 3cdf7ad4..0569eab3 100644
--- a/pmb2_controller_configuration/CMakeLists.txt
+++ b/pmb2_controller_configuration/CMakeLists.txt
@@ -1,11 +1,16 @@
-cmake_minimum_required(VERSION 2.8.3)
+cmake_minimum_required(VERSION 3.5)
project(pmb2_controller_configuration)
-find_package(catkin REQUIRED)
+find_package(ament_cmake_auto REQUIRED)
-catkin_package()
+# PAL Robotics stricter build flags, other developers should not worry about this
+find_package(ament_cmake_pal QUIET)
-foreach(dir config launch)
- install(DIRECTORY ${dir}/
- DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir})
-endforeach()
+ament_auto_find_build_dependencies()
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+ament_auto_package(INSTALL_TO_SHARE config launch)
diff --git a/pmb2_controller_configuration/config/gazebo_controller_manager_cfg.yaml b/pmb2_controller_configuration/config/gazebo_controller_manager_cfg.yaml
new file mode 100644
index 00000000..f560a885
--- /dev/null
+++ b/pmb2_controller_configuration/config/gazebo_controller_manager_cfg.yaml
@@ -0,0 +1,3 @@
+controller_manager:
+ ros__parameters:
+ update_rate: 100 # Hz
diff --git a/pmb2_controller_configuration/config/joint_state_broadcaster.yaml b/pmb2_controller_configuration/config/joint_state_broadcaster.yaml
new file mode 100644
index 00000000..68823f70
--- /dev/null
+++ b/pmb2_controller_configuration/config/joint_state_broadcaster.yaml
@@ -0,0 +1,6 @@
+/joint_state_broadcaster:
+ ros__parameters:
+ type: joint_state_broadcaster/JointStateBroadcaster
+ use_sim_time: True
+ publish_rate: 50.0
+ extra_joints: ['caster_back_left_1_joint', 'caster_back_left_2_joint', 'caster_front_left_1_joint', 'caster_front_left_2_joint', 'caster_back_right_1_joint', 'caster_back_right_2_joint', 'caster_front_right_1_joint', 'caster_front_right_2_joint', 'suspension_left_joint', 'suspension_right_joint']
diff --git a/pmb2_controller_configuration/config/mobile_base_controller.yaml b/pmb2_controller_configuration/config/mobile_base_controller.yaml
index c5c24ca3..e3d62ab2 100644
--- a/pmb2_controller_configuration/config/mobile_base_controller.yaml
+++ b/pmb2_controller_configuration/config/mobile_base_controller.yaml
@@ -1,46 +1,62 @@
-mobile_base_controller:
- type : "diff_drive_controller/DiffDriveController"
- left_wheel : 'wheel_left_joint'
- right_wheel : 'wheel_right_joint'
- publish_rate: 50.0
- pose_covariance_diagonal : [0.001, 0.001, 1.0e-3, 1.0e-3, 1.0e-3, 0.01]
- twist_covariance_diagonal: [0.001, 0.001, 1.0e-3, 1.0e-3, 1.0e-3, 0.01]
-
- enable_pose_covariance_update: true
- error_constant_left : 0.001
- error_constant_right: 0.001
-
- # Velocity commands timeout [s]
- cmd_vel_timeout: 0.25
-
- # Base frame_id
- base_frame_id: base_footprint
-
- # Preserve turning radius when limiting speed/acceleration/jerk
- preserve_turning_radius: true
-
- # Publish limited velocity
- publish_cmd: true
-
- # Publish wheel data
- publish_wheel_data: true
-
- # Velocity and acceleration limits
- # Whenever a min_* is unspecified, default to -max_*
- linear:
- x:
- has_velocity_limits : true
- max_velocity : 1.0 # m/s
- min_velocity : -0.2 # m/s
- has_acceleration_limits: true
- max_acceleration : 1.0 # m/s^2
- has_jerk_limits : false
- max_jerk : 5.0 # m/s^3
- angular:
- z:
- has_velocity_limits : true
- max_velocity : !degrees 120.0
- has_acceleration_limits: true
- max_acceleration : !degrees 120.0
- has_jerk_limits : false
- max_jerk : !degrees 600.0
+/mobile_base_controller:
+ ros__parameters:
+ use_sim_time: True
+ type: diff_drive_controller/DiffDriveController
+ use_stamped_vel: False
+ left_wheel_names : ['wheel_left_joint']
+ right_wheel_names : ['wheel_right_joint']
+ #wheels_per_side: 1
+
+ # In ROS1 these physical properties were parsed from the URDF
+ wheel_radius: 0.0985
+ wheel_separation: 0.4044
+
+ wheel_separation_multiplier: 1.0
+ left_wheel_radius_multiplier: 1.0
+ right_wheel_radius_multiplier: 1.0
+
+ # The params below were used in ROS1 but not yet in ROS2
+
+ publish_rate: 50.0
+ pose_covariance_diagonal : [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]
+ twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]
+
+ enable_pose_covariance_update: true
+ error_constant_left : 0.001
+ error_constant_right: 0.001
+
+ # Velocity commands timeout [s]
+ cmd_vel_timeout: 0.25
+
+ # Base frame_id
+ base_frame_id: base_footprint
+
+ # Preserve turning radius when limiting speed/acceleration/jerk
+ preserve_turning_radius: true
+
+ # Publish limited velocity
+ publish_cmd: true
+
+ # Publish wheel data
+ publish_wheel_data: true
+
+ # Velocity and acceleration limits
+ # Whenever a min_* is unspecified, default to -max_*
+ linear:
+ x:
+ has_velocity_limits : true
+ max_velocity : 1.0 # m/s
+ min_velocity : -0.2 # m/s
+ has_acceleration_limits: true
+ max_acceleration : 1.0 # m/s^2
+ has_jerk_limits : false
+ max_jerk : 5.0 # m/s^3
+ angular:
+ z:
+ has_velocity_limits : true
+ max_velocity : 2.09 # 120.0º
+ has_acceleration_limits: true
+ max_acceleration : 2.09 # 120.0º
+ has_jerk_limits : false
+ max_jerk : 10.47 # 600.0º
+
diff --git a/pmb2_controller_configuration/launch/default_controllers.launch b/pmb2_controller_configuration/launch/default_controllers.launch
deleted file mode 100644
index 7ba449a0..00000000
--- a/pmb2_controller_configuration/launch/default_controllers.launch
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pmb2_controller_configuration/launch/default_controllers.launch.py b/pmb2_controller_configuration/launch/default_controllers.launch.py
new file mode 100644
index 00000000..b358e18a
--- /dev/null
+++ b/pmb2_controller_configuration/launch/default_controllers.launch.py
@@ -0,0 +1,29 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from launch import LaunchDescription
+from launch_pal.include_utils import include_launch_py_description
+
+
+def generate_launch_description():
+
+ return LaunchDescription([
+ include_launch_py_description(
+ 'pmb2_controller_configuration', ['launch', 'mobile_base_controller.launch.py']),
+ include_launch_py_description(
+ 'pmb2_controller_configuration', ['launch', 'joint_state_broadcaster.launch.py']),
+ # imu_sensor_controller not migrated to ROS2 yet
+ # include_launch_py_description(
+ # 'imu_sensor_controller', ['launch', 'imu_sensor_controller.launch.py']),
+ ])
diff --git a/pmb2_controller_configuration/launch/joint_state_broadcaster.launch.py b/pmb2_controller_configuration/launch/joint_state_broadcaster.launch.py
new file mode 100644
index 00000000..f742f3ef
--- /dev/null
+++ b/pmb2_controller_configuration/launch/joint_state_broadcaster.launch.py
@@ -0,0 +1,28 @@
+# Copyright (c) 2021 PAL Robotics S.L. All rights reserved.
+#
+# 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.
+
+from ament_index_python.packages import get_package_share_directory
+
+from controller_manager.launch_utils import generate_load_controller_launch_description
+
+import os
+
+
+def generate_launch_description():
+ return generate_load_controller_launch_description(
+ controller_name='joint_state_broadcaster',
+ controller_type='joint_state_broadcaster/JointStateBroadcaster',
+ controller_params_file=os.path.join(
+ get_package_share_directory('pmb2_controller_configuration'),
+ 'config', 'joint_state_broadcaster.yaml'))
diff --git a/pmb2_controller_configuration/launch/mobile_base_controller.launch.py b/pmb2_controller_configuration/launch/mobile_base_controller.launch.py
new file mode 100644
index 00000000..5ef51ae3
--- /dev/null
+++ b/pmb2_controller_configuration/launch/mobile_base_controller.launch.py
@@ -0,0 +1,28 @@
+# Copyright (c) 2021 PAL Robotics S.L. All rights reserved.
+#
+# 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.
+
+from ament_index_python.packages import get_package_share_directory
+
+from controller_manager.launch_utils import generate_load_controller_launch_description
+
+import os
+
+
+def generate_launch_description():
+ return generate_load_controller_launch_description(
+ controller_name='mobile_base_controller',
+ controller_type='diff_drive_controller/DiffDriveController',
+ controller_params_file=os.path.join(
+ get_package_share_directory('pmb2_controller_configuration'),
+ 'config', 'mobile_base_controller.yaml'))
diff --git a/pmb2_controller_configuration/package.xml b/pmb2_controller_configuration/package.xml
index 3df90fb0..4870609d 100644
--- a/pmb2_controller_configuration/package.xml
+++ b/pmb2_controller_configuration/package.xml
@@ -1,19 +1,25 @@
-
+pmb2_controller_configuration
- 3.0.14
+ 4.0.4Launch files and scripts needed to configure
the controllers of the PMB2 robot.
- Procopio Stein
- Jeremie Deray
+ Victor Lopez
+ Federico NardiApache License 2.0Enrique Fernandez
- catkin
+ ament_cmake_autocontroller_managerdiff_drive_controllerjoint_state_controller
- imu_sensor_controller
+ imu_sensor_broadcaster
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
diff --git a/pmb2_description/CHANGELOG.rst b/pmb2_description/CHANGELOG.rst
index 5e9e8c1d..b2421edc 100644
--- a/pmb2_description/CHANGELOG.rst
+++ b/pmb2_description/CHANGELOG.rst
@@ -2,6 +2,56 @@
Changelog for package pmb2_description
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+4.0.4 (2021-10-19)
+------------------
+* Add missing exec dependency
+* Contributors: Victor Lopez
+
+4.0.3 (2021-10-19)
+------------------
+* Update to new transmission format
+* Cleanup
+* Contributors: Victor Lopez
+
+4.0.2 (2021-07-15)
+------------------
+* Fix typo
+* Contributors: Victor Lopez
+
+4.0.1 (2021-07-15)
+------------------
+* Fix missing dependencies
+* Contributors: Victor Lopez
+
+4.0.0 (2021-07-12)
+------------------
+* Set back old version number before release
+* Restructuring code and add description test
+* No laser value is 'no-laser', change rgbd_sensors to courier_rgbd_sensors
+* Tune a bit physics to avoid joint slippage, specially in TIAGo
+* Correct physic property names for newer gazebo
+* Add ROS2 control imu
+* Add imu plugin
+* Migrate rest of lasers to ROS2
+* Renamed end_effector argument
+* Format
+* Fixed some tiago arguments
+* Add linters to pmb2_description and apply fixes
+* Move param utils to launch_pal
+* Add show.launch.py
+* Remove gazebo laser plugin namespace
+* Merge branch 'single_ros2_control_system' into 'foxy-devel'
+ Single ROS2 control system
+ See merge request robots/pmb2_robot!65
+* All joints now form part of a single ros2_control system
+* Fixes to gazebo ros2 control param changes
+* Update how ros2 gazebo plugin is loaded
+* Add wheel ros2_control file
+* First working version
+* Remove comments to workaround https://github.com/ros2/launch_ros/issues/214
+* First WIP of upload.py
+* Contributors: Jordan Palacios, Victor Lopez, victor
+
3.0.14 (2021-01-18)
-------------------
* Merge branch 'fix_wheel_slippage' into 'erbium-devel'
diff --git a/pmb2_description/CMakeLists.txt b/pmb2_description/CMakeLists.txt
index 1b1d7a88..6ae9b849 100644
--- a/pmb2_description/CMakeLists.txt
+++ b/pmb2_description/CMakeLists.txt
@@ -1,24 +1,35 @@
-cmake_minimum_required(VERSION 2.8.3)
+cmake_minimum_required(VERSION 3.5)
project(pmb2_description)
-find_package(catkin REQUIRED)
+find_package(ament_cmake_auto REQUIRED)
-catkin_package()
+# PAL Robotics stricter build flags, other developers should not worry about this
+find_package(ament_cmake_pal QUIET)
+
+ament_auto_find_build_dependencies()
-foreach(dir config gazebo Media meshes robots urdf)
- install(DIRECTORY ${dir}/
- DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir})
-endforeach()
#############
## Testing ##
#############
-if(CATKIN_ENABLE_TESTING)
- find_package(rostest REQUIRED)
- foreach(laser_model false hokuyo sick-551 sick-561 sick-571)
- foreach(rgbd_sensors false true)
- add_rostest(test/test_pmb2.test ARGS laser_model:=${laser_model} rgbd_sensors:=${rgbd_sensors})
- endforeach(rgbd_sensors)
- endforeach(laser_model)
+if(BUILD_TESTING)
+
+ find_package(ament_lint_auto REQUIRED)
+ ament_lint_auto_find_test_dependencies()
+
+ foreach(laser_model no-laser hokuyo sick-551 sick-561 sick-571)
+ foreach(courier_rgbd_sensors False True)
+ add_launch_test(
+ test/test_description.launch.py
+ TARGET "pmb2_description_${laser_model}_${courier_rgbd_sensors}"
+ ARGS "laser_model:=${laser_model}" "courier_rgbd_sensors:=${courier_rgbd_sensors}"
+ )
+ endforeach()
+ endforeach()
endif()
+
+# Install Python modules
+ament_python_install_package(${PROJECT_NAME})
+
+ament_auto_package(INSTALL_TO_SHARE config gazebo launch Media meshes robots ros2_control urdf)
diff --git a/pmb2_description/gazebo/gazebo.urdf.xacro b/pmb2_description/gazebo/gazebo.urdf.xacro
index 97e8b3c0..20be91cc 100644
--- a/pmb2_description/gazebo/gazebo.urdf.xacro
+++ b/pmb2_description/gazebo/gazebo.urdf.xacro
@@ -16,22 +16,21 @@
name="pmb2">
-
-
- pal_hardware_gazebo/PalHardwareGazebo
-
- /${nsp}
-
-
-
-
- 0.001
-
+
+
+ $(find pmb2_controller_configuration)/config/gazebo_controller_manager_cfg.yaml
+
+
+
+
+
+
+
-
+
+ worldbase_footprintground_truth_odom
- true100.0/${nsp}
@@ -40,32 +39,12 @@
-
-
1
- 1000.0
+ 10.0gaussian
-
0.02e-4
diff --git a/pmb2_description/launch/robot_state_publisher.launch.py b/pmb2_description/launch/robot_state_publisher.launch.py
new file mode 100644
index 00000000..b00b2e19
--- /dev/null
+++ b/pmb2_description/launch/robot_state_publisher.launch.py
@@ -0,0 +1,71 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from launch import LaunchDescription, Substitution, LaunchContext
+from launch_pal.arg_utils import read_launch_argument
+from launch_ros.actions import Node
+from launch_ros.substitutions import FindPackageShare, ExecutableInPackage
+from launch.substitutions import Command, PathJoinSubstitution
+from typing import List
+from typing import Text
+
+from pmb2_description.pmb2_launch_utils import get_tiago_base_hw_arguments
+
+
+class Pmb2XacroConfigSubstitution(Substitution):
+ """Extract the pmb2 hardware args and passes them as xacro variables."""
+
+ def __init__(self) -> None:
+ super().__init__()
+
+ @property
+ def name(self) -> List[Substitution]:
+ """Getter for name."""
+ return "PMB2 Xacro Config"
+
+ def describe(self) -> Text:
+ """Return a description of this substitution as a string."""
+ return 'Parses pmb2 hardware launch arguments into xacro arguments potat describe'
+
+ def perform(self, context: LaunchContext) -> Text:
+ """Generate the robot description and return it as a string."""
+ laser_model = read_launch_argument("laser_model", context)
+ courier_rgbd_sensors = read_launch_argument(
+ "courier_rgbd_sensors", context)
+ return " laser_model:=" + laser_model + " courier_rgbd_sensors:=" + courier_rgbd_sensors
+
+
+def generate_launch_description():
+
+ parameters = {'robot_description': Command(
+ [
+ ExecutableInPackage(package='xacro', executable="xacro"),
+ ' ',
+ PathJoinSubstitution(
+ [FindPackageShare('pmb2_description'), 'robots', 'pmb2.urdf.xacro']),
+ Pmb2XacroConfigSubstitution()
+ ])
+ }
+
+ rsp = Node(package='robot_state_publisher',
+ executable='robot_state_publisher',
+ output='both',
+ parameters=[parameters])
+ return LaunchDescription([
+ *get_tiago_base_hw_arguments(laser_model=True,
+ courier_rgbd_sensors=True,
+ default_laser_model="sick-571",
+ default_courier_rgbd_sensors="False"),
+ rsp
+ ])
diff --git a/pmb2_description/launch/show.launch.py b/pmb2_description/launch/show.launch.py
new file mode 100644
index 00000000..847d66ec
--- /dev/null
+++ b/pmb2_description/launch/show.launch.py
@@ -0,0 +1,43 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from launch import LaunchDescription
+from launch_ros.actions import Node
+
+from launch_pal.include_utils import include_launch_py_description
+
+
+def generate_launch_description():
+
+ robot_state_publisher = include_launch_py_description(
+ 'pmb2_description', ['launch', 'robot_state_publisher.launch.py'])
+
+ start_joint_pub_gui = Node(
+ package='joint_state_publisher_gui',
+ executable='joint_state_publisher_gui',
+ name='joint_state_publisher_gui',
+ output='screen')
+
+ start_rviz_cmd = Node(
+ package='rviz2',
+ executable='rviz2',
+ name='rviz2',
+ # arguments=['-d', rviz_config_file],
+ output='screen')
+
+ return LaunchDescription([
+ robot_state_publisher,
+ start_joint_pub_gui,
+ start_rviz_cmd
+ ])
diff --git a/pmb2_description/package.xml b/pmb2_description/package.xml
index e0d3c133..3b8ae41f 100644
--- a/pmb2_description/package.xml
+++ b/pmb2_description/package.xml
@@ -1,24 +1,35 @@
-
+pmb2_description
- 3.0.14
+ 4.0.4
Mechanical, kinematic, visual, etc. description of the PMB2 robot.
The files in this package are parsed and used by
a variety of other components. Most users will not interact directly
with this package.
- Procopio Stein
- Jeremie Deray
+ Victor LopezApache License 2.0Bence MagyarEnrique Fernandez
- catkin
+ ament_cmake_auto
+ ament_cmake_pythonxacro
+ launch
+ launch_ros
+ launch_pal
+ joint_state_publisher_gui
+ pmb2_controller_configuration
- rostest
+ ament_lint_auto
+ ament_lint_common
+ launch_testing_ament_cmakeurdf_test
+
+ ament_cmake
+
+
diff --git a/pmb2_description/pmb2_description/__init__.py b/pmb2_description/pmb2_description/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pmb2_description/pmb2_description/pmb2_launch_utils.py b/pmb2_description/pmb2_description/pmb2_launch_utils.py
new file mode 100644
index 00000000..cd942b46
--- /dev/null
+++ b/pmb2_description/pmb2_description/pmb2_launch_utils.py
@@ -0,0 +1,57 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from launch.actions import DeclareLaunchArgument
+
+
+def get_tiago_base_hw_arguments(
+ wheel_model=False,
+ laser_model=False,
+ courier_rgbd_sensors=False,
+ default_wheel_model="moog",
+ default_laser_model="sick-571",
+ default_courier_rgbd_sensors="False"):
+ """
+ Return TIAGo Base Hardware arguments.
+
+ Returns a list of the requested hardware LaunchArguments for tiago base
+ The default value can be configured passing an argument called default
+ NAME_OF_ARGUMENT
+
+ example:
+ LaunchDescription([*get_tiago_base_hw_arguments(
+ wheel_model=True, laser_model=True,
+ default_laser_model='sick-571')])
+ """
+ args = []
+ if wheel_model:
+ args.append(DeclareLaunchArgument(
+ 'wheel_model',
+ default_value=default_wheel_model,
+ description='Wheel model, ', choices=["nadia", "moog"]))
+ if laser_model:
+ args.append(
+ DeclareLaunchArgument(
+ 'laser_model',
+ default_value=default_laser_model,
+ description='Base laser model. ',
+ choices=["no-laser", "sick-571", "sick-561", "sick-551", "hokuyo"]))
+ if courier_rgbd_sensors:
+ args.append(
+ DeclareLaunchArgument(
+ 'courier_rgbd_sensors',
+ default_value=default_courier_rgbd_sensors,
+ description='Whether the base has RGBD sensors or not. ',
+ choices=["True", "False"]))
+ return args
diff --git a/pmb2_description/robots/pmb2.urdf.xacro b/pmb2_description/robots/pmb2.urdf.xacro
index 3602b502..179dd52a 100644
--- a/pmb2_description/robots/pmb2.urdf.xacro
+++ b/pmb2_description/robots/pmb2.urdf.xacro
@@ -11,11 +11,11 @@
-
-
+
+
-
-
+
+
@@ -28,6 +28,10 @@
+
+
+
+
@@ -35,7 +39,7 @@
-
+
diff --git a/pmb2_description/robots/show.launch b/pmb2_description/robots/show.launch
deleted file mode 100644
index d2f2edeb..00000000
--- a/pmb2_description/robots/show.launch
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/pmb2_description/robots/upload.launch b/pmb2_description/robots/upload.launch
deleted file mode 100644
index d16f604c..00000000
--- a/pmb2_description/robots/upload.launch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pmb2_description/ros2_control/ros2_control.urdf.xacro b/pmb2_description/ros2_control/ros2_control.urdf.xacro
new file mode 100644
index 00000000..d231332c
--- /dev/null
+++ b/pmb2_description/ros2_control/ros2_control.urdf.xacro
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+ gazebo_ros2_control/GazeboSystem
+
+
+
+
+
+
+
+
+
diff --git a/pmb2_description/test/test_description.launch.py b/pmb2_description/test/test_description.launch.py
new file mode 100644
index 00000000..76dab24b
--- /dev/null
+++ b/pmb2_description/test/test_description.launch.py
@@ -0,0 +1,28 @@
+# Copyright (c) 2021 PAL Robotics S.L.
+#
+# 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.
+
+from urdf_test.description_test import (generate_urdf_test_description,
+ TestDescriptionPublished, TestSuccessfulExit)
+from launch_pal.include_utils import include_launch_py_description
+
+# Ignore unused import warnings for the Test Classes
+__all__ = ('TestDescriptionPublished', 'TestSuccessfulExit')
+
+
+def generate_test_description():
+ return generate_urdf_test_description(
+ include_launch_py_description(
+ 'pmb2_description', ['launch', 'robot_state_publisher.launch.py']),
+
+ )
diff --git a/pmb2_description/test/test_pmb2.test b/pmb2_description/test/test_pmb2.test
deleted file mode 100644
index 55d7abba..00000000
--- a/pmb2_description/test/test_pmb2.test
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pmb2_description/urdf/base/base.urdf.xacro b/pmb2_description/urdf/base/base.urdf.xacro
index 4995c09f..f82ef5bb 100644
--- a/pmb2_description/urdf/base/base.urdf.xacro
+++ b/pmb2_description/urdf/base/base.urdf.xacro
@@ -97,7 +97,6 @@
-
diff --git a/pmb2_description/urdf/sensors/hokuyo_urg_04lx_ug01_laser.gazebo.xacro b/pmb2_description/urdf/sensors/hokuyo_urg_04lx_ug01_laser.gazebo.xacro
index 44c0d689..6f3f35ce 100644
--- a/pmb2_description/urdf/sensors/hokuyo_urg_04lx_ug01_laser.gazebo.xacro
+++ b/pmb2_description/urdf/sensors/hokuyo_urg_04lx_ug01_laser.gazebo.xacro
@@ -34,13 +34,18 @@
5.60.001
+
+ gaussian
+ 0.0
+ 0.03
+
-
- 0.03
- true
- ${update_rate}
- ${ros_topic}
- ${name}_link
+
+
+ ~/out:=${ros_topic}
+
+ sensor_msgs/LaserScan
+ ${name}_linkGazebo/DarkGrey
diff --git a/pmb2_description/urdf/sensors/range.gazebo.xacro b/pmb2_description/urdf/sensors/range.gazebo.xacro
index f723877c..26dbf212 100644
--- a/pmb2_description/urdf/sensors/range.gazebo.xacro
+++ b/pmb2_description/urdf/sensors/range.gazebo.xacro
@@ -37,17 +37,20 @@
${maxRange}0.01
+
+ gaussian
+ 0.0
+ 0.005
+
-
- 0.005
- true
- ${update_rate}
- ${ros_topic}
- ${name}_link
- ${minRange}
- ${maxRange}
- ${fov}
- ${radiation}
+
+
+ distance
+ ~/out:=${ros_topic}
+
+ sensor_msgs/Range
+ ${radiation}
+ ${name}_linkGazebo/DarkGrey
diff --git a/pmb2_description/urdf/sensors/sensors.ros2_control.xacro b/pmb2_description/urdf/sensors/sensors.ros2_control.xacro
new file mode 100644
index 00000000..96b6e951
--- /dev/null
+++ b/pmb2_description/urdf/sensors/sensors.ros2_control.xacro
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pmb2_description/urdf/sensors/sick_tim551_laser.gazebo.xacro b/pmb2_description/urdf/sensors/sick_tim551_laser.gazebo.xacro
index a08a7f59..25f5ddfe 100644
--- a/pmb2_description/urdf/sensors/sick_tim551_laser.gazebo.xacro
+++ b/pmb2_description/urdf/sensors/sick_tim551_laser.gazebo.xacro
@@ -34,13 +34,18 @@
10.00.001
+
+ gaussian
+ 0.0
+ 0.06
+
-
- 0.06
- true
- ${update_rate}
- ${ros_topic}
- ${name}_link
+
+
+ ~/out:=${ros_topic}
+
+ sensor_msgs/LaserScan
+ ${name}_linkGazebo/DarkGrey
diff --git a/pmb2_description/urdf/sensors/sick_tim561_laser.gazebo.xacro b/pmb2_description/urdf/sensors/sick_tim561_laser.gazebo.xacro
index 06f3b2a6..dbab81ff 100644
--- a/pmb2_description/urdf/sensors/sick_tim561_laser.gazebo.xacro
+++ b/pmb2_description/urdf/sensors/sick_tim561_laser.gazebo.xacro
@@ -34,13 +34,18 @@
10.00.001
+
+ gaussian
+ 0.0
+ 0.06
+
-
- 0.06
- true
- ${update_rate}
- ${ros_topic}
- ${name}_link
+
+
+ ~/out:=${ros_topic}
+
+ sensor_msgs/LaserScan
+ ${name}_linkGazebo/DarkGrey
diff --git a/pmb2_description/urdf/sensors/sick_tim571_laser.gazebo.xacro b/pmb2_description/urdf/sensors/sick_tim571_laser.gazebo.xacro
index 539961ad..3b1e4cc3 100644
--- a/pmb2_description/urdf/sensors/sick_tim571_laser.gazebo.xacro
+++ b/pmb2_description/urdf/sensors/sick_tim571_laser.gazebo.xacro
@@ -8,7 +8,7 @@
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to
Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
- Laser configuration according with the SICK TiM 551 product specification:
+ Laser configuration according with the SICK TiM 571 product specification:
https://www.sick.com/media/pdf/4/44/444/dataSheet_TiM571-2050101_1075091_en.pdf
-->
@@ -34,13 +34,18 @@
25.00.001
+
+ gaussian
+ 0.0
+ 0.06
+
-
- 0.06
- true
- ${update_rate}
- ${ros_topic}
- ${name}_link
+
+
+ ~/out:=${ros_topic}
+
+ sensor_msgs/LaserScan
+ ${name}_linkGazebo/DarkGrey
diff --git a/pmb2_description/urdf/wheels/caster.gazebo.xacro b/pmb2_description/urdf/wheels/caster.gazebo.xacro
index d75b0e04..30d753ca 100644
--- a/pmb2_description/urdf/wheels/caster.gazebo.xacro
+++ b/pmb2_description/urdf/wheels/caster.gazebo.xacro
@@ -16,31 +16,47 @@
100000000.0
- 10.0
- 0.1
- 0.1
+ 100000.0
+
+
+ 1.0
+ 1.0
+
+
- 10.0
- 0.0005
+ 1.0
+ 0.005Gazebo/DarkGrey
- 10000000.0
- 10.0
- 0.1
- 0.1
+ 100000000.0
+ 100000.0
+
+
+ 1.0
+ 1.0
+
+
- 10.0
- 0.0005
+ 1.0
+ 0.005Gazebo/DarkGrey
- 0
+
+
+ 0
+
+
- 0
+
+
+ 0
+
+
diff --git a/pmb2_description/urdf/wheels/caster.urdf.xacro b/pmb2_description/urdf/wheels/caster.urdf.xacro
index 9a7a3675..bee44a3d 100644
--- a/pmb2_description/urdf/wheels/caster.urdf.xacro
+++ b/pmb2_description/urdf/wheels/caster.urdf.xacro
@@ -64,7 +64,7 @@
-
+
@@ -72,6 +72,7 @@
+
diff --git a/pmb2_description/urdf/wheels/wheel.gazebo.xacro b/pmb2_description/urdf/wheels/wheel.gazebo.xacro
index c4d024a3..3efd7efa 100644
--- a/pmb2_description/urdf/wheels/wheel.gazebo.xacro
+++ b/pmb2_description/urdf/wheels/wheel.gazebo.xacro
@@ -16,19 +16,23 @@
1000000.0100.0
-
- 100000000000000.0
- 100000000000000.0
+
+
+ 1.0
+ 1.0
+
+
- 1.0
- 0.002
+ 1.0
+ 0.002Gazebo/DarkGrey
- 1
+
+
+ 1
+
+
diff --git a/pmb2_description/urdf/wheels/wheel.transmission.xacro b/pmb2_description/urdf/wheels/wheel.ros2_control.xacro
similarity index 59%
rename from pmb2_description/urdf/wheels/wheel.transmission.xacro
rename to pmb2_description/urdf/wheels/wheel.ros2_control.xacro
index e0dcf427..49ac9308 100644
--- a/pmb2_description/urdf/wheels/wheel.transmission.xacro
+++ b/pmb2_description/urdf/wheels/wheel.ros2_control.xacro
@@ -1,7 +1,6 @@
+
+
+
+ -1
+ 1
+
+
+
-
-
- transmission_interface/SimpleTransmission
-
+ transmission_interface/SimpleTransmission
+ 1.0
-
+ hardware_interface/VelocityJointInterfacehardware_interface/JointStateInterface
-
diff --git a/pmb2_description/urdf/wheels/wheel.urdf.xacro b/pmb2_description/urdf/wheels/wheel.urdf.xacro
index 25811dcf..25397fe2 100644
--- a/pmb2_description/urdf/wheels/wheel.urdf.xacro
+++ b/pmb2_description/urdf/wheels/wheel.urdf.xacro
@@ -11,7 +11,6 @@ Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041
-
@@ -37,7 +36,7 @@ Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041
-
+
@@ -65,7 +64,7 @@ Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041
soft_lower_limit="-0.005"
soft_upper_limit="0.005" />
-
+
@@ -73,11 +72,9 @@ Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041
+
-
-
-
diff --git a/pmb2_robot/CHANGELOG.rst b/pmb2_robot/CHANGELOG.rst
index 831899d0..59d27502 100644
--- a/pmb2_robot/CHANGELOG.rst
+++ b/pmb2_robot/CHANGELOG.rst
@@ -2,6 +2,26 @@
Changelog for package pmb2_robot
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+4.0.4 (2021-10-19)
+------------------
+
+4.0.3 (2021-10-19)
+------------------
+
+4.0.2 (2021-07-15)
+------------------
+
+4.0.1 (2021-07-15)
+------------------
+
+4.0.0 (2021-07-12)
+------------------
+* Set back old version number before release
+* Cleanup unused files
+* First working version
+* First WIP of upload.py
+* Contributors: Victor Lopez
+
3.0.14 (2021-01-18)
-------------------
diff --git a/pmb2_robot/CMakeLists.txt b/pmb2_robot/CMakeLists.txt
index 3d096cbe..d5a625a5 100644
--- a/pmb2_robot/CMakeLists.txt
+++ b/pmb2_robot/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8.3)
+cmake_minimum_required(VERSION 3.5)
project(pmb2_robot)
-find_package(catkin REQUIRED)
-catkin_metapackage()
+find_package(ament_cmake REQUIRED)
+ament_package()
diff --git a/pmb2_robot/package.xml b/pmb2_robot/package.xml
index c6f9b30b..94c42178 100644
--- a/pmb2_robot/package.xml
+++ b/pmb2_robot/package.xml
@@ -1,20 +1,19 @@
-
+pmb2_robot
- 3.0.14
+ 4.0.4PMB2 robot description and launch files
- Procopio Stein
- Jeremie Deray
+ Victor LopezApache License 2.0Enrique Fernandez
- catkin
+ ament_cmakepmb2_descriptionpmb2_bringuppmb2_controller_configuration
-
+ ament_cmake