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.4 Launch files and scripts needed to bring up the ROS nodes of a PMB2 robot. - Procopio Stein + Victor Lopez Apache License 2.0 Bence Magyar Enrique Fernandez - catkin + ament_cmake_auto + launch_pal pmb2_controller_configuration pmb2_description robot_state_publisher - robot_pose - tf_lookup - speed_limit_node twist_mux joy joy_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.4 Launch files and scripts needed to configure the controllers of the PMB2 robot. - Procopio Stein - Jeremie Deray + Victor Lopez + Federico Nardi Apache License 2.0 Enrique Fernandez - catkin + ament_cmake_auto controller_manager diff_drive_controller joint_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 + + + + + + + - + + world base_footprint ground_truth_odom - true 100.0 /${nsp} @@ -40,32 +39,12 @@ - - 1 - 1000.0 + 10.0 gaussian - 0.0 2e-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 Lopez Apache License 2.0 Bence Magyar Enrique Fernandez - catkin + ament_cmake_auto + ament_cmake_python xacro + launch + launch_ros + launch_pal + joint_state_publisher_gui + pmb2_controller_configuration - rostest + ament_lint_auto + ament_lint_common + launch_testing_ament_cmake urdf_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.6 0.001 + + gaussian + 0.0 + 0.03 + - - 0.03 - true - ${update_rate} - ${ros_topic} - ${name}_link + + + ~/out:=${ros_topic} + + sensor_msgs/LaserScan + ${name}_link Gazebo/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}_link Gazebo/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.0 0.001 + + gaussian + 0.0 + 0.06 + - - 0.06 - true - ${update_rate} - ${ros_topic} - ${name}_link + + + ~/out:=${ros_topic} + + sensor_msgs/LaserScan + ${name}_link Gazebo/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.0 0.001 + + gaussian + 0.0 + 0.06 + - - 0.06 - true - ${update_rate} - ${ros_topic} - ${name}_link + + + ~/out:=${ros_topic} + + sensor_msgs/LaserScan + ${name}_link Gazebo/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.0 0.001 + + gaussian + 0.0 + 0.06 + - - 0.06 - true - ${update_rate} - ${ros_topic} - ${name}_link + + + ~/out:=${ros_topic} + + sensor_msgs/LaserScan + ${name}_link Gazebo/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.005 Gazebo/DarkGrey - 10000000.0 - 10.0 - 0.1 - 0.1 + 100000000.0 + 100000.0 + + + 1.0 + 1.0 + + - 10.0 - 0.0005 + 1.0 + 0.005 Gazebo/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.0 100.0 - - 100000000000000.0 - 100000000000000.0 + + + 1.0 + 1.0 + + - 1.0 - 0.002 + 1.0 + 0.002 Gazebo/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/VelocityJointInterface hardware_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.4 PMB2 robot description and launch files - Procopio Stein - Jeremie Deray + Victor Lopez Apache License 2.0 Enrique Fernandez - catkin + ament_cmake pmb2_description pmb2_bringup pmb2_controller_configuration - + ament_cmake