Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/workflows/compile.yml
Original file line number Diff line number Diff line change
@@ -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+
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Expand All @@ -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
Expand Down
15 changes: 9 additions & 6 deletions amr_description/xacro/ld250.urdf.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -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
-->

<xacro:macro name="ld250" params="prefix:='' parent:='' xyz:='0 0 0' rpy:='0 0 0' mesh_pkg:='amr_description'">
Expand All @@ -19,13 +19,15 @@
</link>

<!-- Main body with mesh -->
<link name="${prefix}main_body">
<link name="${prefix}amr_base">
<visual>
<origin rpy="0 0 3.141582654" xyz="0 0 0"/>
<geometry>
<mesh filename="package://${mesh_pkg}/meshes/LD250.obj"/>
</geometry>
<material name="${prefix}white"/>
<material name="grey">
<color rgba="0.5 0.5 0.5 1.0"/>
</material>
</visual>
<collision>
<origin rpy="0 0 3.141592654" xyz="0 0 0"/>
Expand All @@ -39,10 +41,10 @@
</inertial>
</link>

<!-- Base to main body fixed joint -->
<joint name="${prefix}main_body_to_base" type="fixed">
<!-- Base link to main body fixed joint -->
<joint name="${prefix}amr_base_to_base_link" type="fixed">
<parent link="${prefix}base_link"/>
<child link="${prefix}main_body"/>
<child link="${prefix}amr_base"/>
<origin xyz="0 0 0"/>
</joint>

Expand Down Expand Up @@ -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
Expand Down
77 changes: 20 additions & 57 deletions amr_nav2/config/ld250_nav2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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"]

Expand Down Expand Up @@ -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
Expand All @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion docs/original_readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Loading