diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml new file mode 100644 index 00000000..7a6c527c --- /dev/null +++ b/.github/workflows/compile.yml @@ -0,0 +1,51 @@ +name: Compile Check + +on: + workflow_dispatch: + + push: + branches: + - main + - develop + + pull_request: + branches: + - main + - develop + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-24.04 + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up ROS 2 Jazzy + uses: ros-tooling/setup-ros@v0.7 + with: + required-ros-distributions: jazzy + + - name: Install system tooling + run: | + sudo apt-get update + sudo apt-get install -y python3-colcon-common-extensions python3-rosdep + + - name: Initialize rosdep + run: | + sudo rosdep init || true + rosdep update + + - name: Install package dependencies + run: | + rosdep install --from-paths . --ignore-src --rosdistro jazzy -r -y + + - name: Build workspace + shell: bash + run: | + source /opt/ros/jazzy/setup.bash + colcon build --event-handlers console_direct+ diff --git a/README.md b/README.md index 2230ec24..9fa1dbcf 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,17 @@ -# Omron Base package +# Omron AMR package To view the original Readme.md [click here](./docs/original_readme.md) This package is a restructuring of [OmronAPAC/Omron_AMR_ROS2](https://github.com/OmronAPAC/Omron_AMR_ROS2) -View [New Developer's Guide](https://github.com/CollaborativeRoboticsLab/omron_base/blob/master/docs/DeveloperGuide_updated.adoc). -View [Old Developer's Guide](https://github.com/CollaborativeRoboticsLab/omron_base/blob/master/docs/DeveloperGuide.adoc). +View [New Developer's Guide](https://github.com/CollaborativeRoboticsLab/omron_amr/blob/master/docs/DeveloperGuide_updated.adoc). +View [Old Developer's Guide](https://github.com/CollaborativeRoboticsLab/omron_amr/blob/master/docs/DeveloperGuide.adoc). + +| Branch | ROS2 Version | Compile | +|--------|--------------|---------| +| main | Jazzy | [![main](https://github.com/CollaborativeRoboticsLab/omron_amr/actions/workflows/compile.yml/badge.svg?branch=main)](https://github.com/CollaborativeRoboticsLab/omron_amr/actions/workflows/compile.yml?query=branch%3Amain) | +| develop | Jazzy | [![develop](https://github.com/CollaborativeRoboticsLab/omron_amr/actions/workflows/compile.yml/badge.svg?branch=develop)](https://github.com/CollaborativeRoboticsLab/omron_amr/actions/workflows/compile.yml?query=branch%3Adevelop) | +| humble | Humble | [![humble](https://github.com/CollaborativeRoboticsLab/omron_amr/actions/workflows/compile.yml/badge.svg?branch=humble)](https://github.com/CollaborativeRoboticsLab/omron_amr/actions/workflows/compile.yml?query=branch%3Ahumble) | ## Setup @@ -24,7 +30,7 @@ sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-slam- Clone the repositories into the `src` folder by ```sh -git clone https://github.com/CollaborativeRoboticsLab/omron_base.git +git clone https://github.com/CollaborativeRoboticsLab/omron_amr.git ``` Build by @@ -38,9 +44,9 @@ colcon build ### Initialization -1. [Establish Remote connection to AMR Robot](https://github.com/CollaborativeRoboticsLab/omron_base/blob/main/docs/DeveloperGuide.adoc#231-set-up-user-ethernet) +1. [Establish Remote connection to AMR Robot](https://github.com/CollaborativeRoboticsLab/omron_amr/blob/main/docs/DeveloperGuide.adoc#231-set-up-user-ethernet) -2. [Configure AMR robot via Mobile Planner](https://github.com/CollaborativeRoboticsLab/omron_base/blob/main/docs/DeveloperGuide_updated.adoc#332-set-up-arcl) +2. [Configure AMR robot via Mobile Planner](https://github.com/CollaborativeRoboticsLab/omron_amr/blob/main/docs/DeveloperGuide_updated.adoc#332-set-up-arcl) ### Connect with the robot base diff --git a/amr_description/xacro/ld250.urdf.xacro b/amr_description/xacro/ld250.urdf.xacro index 18ce32ba..3ff9de2c 100644 --- a/amr_description/xacro/ld250.urdf.xacro +++ b/amr_description/xacro/ld250.urdf.xacro @@ -5,7 +5,7 @@ Updated to match LD250.urdf: - Adds laser_frame link - Adds base_link_to_laser_frame fixed joint at xyz="0.45 0 0.195" - - Keeps main_body mesh, inertial, and fixed joints + - Keeps amr_base mesh, inertial, and fixed joints --> @@ -19,13 +19,15 @@ - + - + + + @@ -39,10 +41,10 @@ - - + + - + @@ -70,6 +72,7 @@ Dimensions (from LD250.urdf comments): - length: 950 mm - width: 696 mm + - base height: 340 mm - laser glass offset front: 20 mm - laser glass offset back: 120 mm - laser glass bottom height: 180 mm diff --git a/amr_nav2/config/ld250_nav2.yaml b/amr_nav2/config/ld250_nav2.yaml index 21273612..a3ff3dd9 100644 --- a/amr_nav2/config/ld250_nav2.yaml +++ b/amr_nav2/config/ld250_nav2.yaml @@ -48,58 +48,17 @@ bt_navigator: bt_loop_duration: 10 default_server_timeout: 20 wait_for_service_timeout: 1000 + action_server_result_timeout: 900.0 + navigators: ["navigate_to_pose", "navigate_through_poses"] + navigate_to_pose: + plugin: "nav2_bt_navigator::NavigateToPoseNavigator" + navigate_through_poses: + plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator" + error_code_names: ["compute_path_error_code", "follow_path_error_code"] # 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults: # nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml # nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml # They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2. - plugin_lib_names: - - nav2_compute_path_to_pose_action_bt_node - - nav2_compute_path_through_poses_action_bt_node - - nav2_smooth_path_action_bt_node - - nav2_follow_path_action_bt_node - - nav2_spin_action_bt_node - - nav2_wait_action_bt_node - - nav2_assisted_teleop_action_bt_node - - nav2_back_up_action_bt_node - - nav2_drive_on_heading_bt_node - - nav2_clear_costmap_service_bt_node - - nav2_is_stuck_condition_bt_node - - nav2_goal_reached_condition_bt_node - - nav2_goal_updated_condition_bt_node - - nav2_globally_updated_goal_condition_bt_node - - nav2_is_path_valid_condition_bt_node - - nav2_initial_pose_received_condition_bt_node - - nav2_reinitialize_global_localization_service_bt_node - - nav2_rate_controller_bt_node - - nav2_distance_controller_bt_node - - nav2_speed_controller_bt_node - - nav2_truncate_path_action_bt_node - - nav2_truncate_path_local_action_bt_node - - nav2_goal_updater_node_bt_node - - nav2_recovery_node_bt_node - - nav2_pipeline_sequence_bt_node - - nav2_round_robin_node_bt_node - - nav2_transform_available_condition_bt_node - - nav2_time_expired_condition_bt_node - - nav2_path_expiring_timer_condition - - nav2_distance_traveled_condition_bt_node - - nav2_single_trigger_bt_node - - nav2_goal_updated_controller_bt_node - - nav2_is_battery_low_condition_bt_node - - nav2_navigate_through_poses_action_bt_node - - nav2_navigate_to_pose_action_bt_node - - nav2_remove_passed_goals_action_bt_node - - nav2_planner_selector_bt_node - - nav2_controller_selector_bt_node - - nav2_goal_checker_selector_bt_node - - nav2_controller_cancel_bt_node - - nav2_path_longer_on_approach_bt_node - - nav2_wait_cancel_bt_node - - nav2_spin_cancel_bt_node - - nav2_back_up_cancel_bt_node - - nav2_assisted_teleop_cancel_bt_node - - nav2_drive_on_heading_cancel_bt_node - - nav2_is_battery_charging_condition_bt_node bt_navigator_navigate_through_poses_rclcpp_node: ros__parameters: @@ -117,7 +76,7 @@ controller_server: min_y_velocity_threshold: 0.5 min_theta_velocity_threshold: 0.001 failure_tolerance: 0.3 - progress_checker_plugin: "progress_checker" + progress_checker_plugins: ["progress_checker"] goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker" controller_plugins: ["FollowPath"] @@ -296,21 +255,24 @@ smoother_server: behavior_server: ros__parameters: - costmap_topic: local_costmap/costmap_raw - footprint_topic: local_costmap/published_footprint + local_costmap_topic: local_costmap/costmap_raw + global_costmap_topic: global_costmap/costmap_raw + local_footprint_topic: local_costmap/published_footprint + global_footprint_topic: global_costmap/published_footprint cycle_frequency: 10.0 behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"] spin: - plugin: "nav2_behaviors/Spin" + plugin: "nav2_behaviors::Spin" backup: - plugin: "nav2_behaviors/BackUp" + plugin: "nav2_behaviors::BackUp" drive_on_heading: - plugin: "nav2_behaviors/DriveOnHeading" + plugin: "nav2_behaviors::DriveOnHeading" wait: - plugin: "nav2_behaviors/Wait" + plugin: "nav2_behaviors::Wait" assisted_teleop: - plugin: "nav2_behaviors/AssistedTeleop" - global_frame: odom + plugin: "nav2_behaviors::AssistedTeleop" + global_frame: map + local_frame: odom robot_base_frame: base_link transform_tolerance: 0.1 use_sim_time: true @@ -328,6 +290,7 @@ waypoint_follower: use_sim_time: True loop_rate: 20 stop_on_failure: false + action_server_result_timeout: 900.0 waypoint_task_executor_plugin: "wait_at_waypoint" wait_at_waypoint: plugin: "nav2_waypoint_follower::WaitAtWaypoint" diff --git a/docs/original_readme.md b/docs/original_readme.md index e90ae5ff..2618ff7c 100644 --- a/docs/original_readme.md +++ b/docs/original_readme.md @@ -26,7 +26,7 @@ On information pertaining to robot to camera calibration, see [Here](https://git * Go to a specified point on RViz map * Localize to a specified point on RViz map -**For details on the packages' inner workings, see the [Developer's Guide](https://github.com/CollaborativeRoboticsLab/omron_base/blob/master/docs/DeveloperGuide.adoc).** +**For details on the packages' inner workings, see the [Developer's Guide](https://github.com/CollaborativeRoboticsLab/omron_amr/blob/master/docs/DeveloperGuide.adoc).** ## Limitations ROS is not able to have access to robot hardware, therefore this package does not have full access to all AMR's capabilities. This package uses ARCL to communicate and control the AMR and thus the limitations of this package is defined by ARCL's limitations.