Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate package to Humble #5

Merged
merged 6 commits into from
Jan 16, 2024
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
5 changes: 5 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
* @mateusmenezes95
19 changes: 19 additions & 0 deletions .github/workflows/humble-source-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Humble Source Build

on:
pull_request:
branches:
- humble

jobs:
humble_source_build:
runs-on: ubuntu-22.04
steps:
- uses: ros-tooling/[email protected]
with:
rosdistro: humble
- uses: ros-tooling/[email protected]
with:
ref: ${{ github.event.pull_request.head.sha }}
target-ros2-distro: humble
skip-tests: true
30 changes: 19 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@

The Axebot is an omnidirectional robot with three wheels that was initially developed by students at Universidade Federal da Bahia for robot soccer competitions. However, it was later used by the LaR UFBA for academic research in mobile robotics and control. This repository provides a simulation version of the robot to make it easier for researchers to validate algorithms.

## Build status

ROS2 Distro | Branch | Build status |
:---------: | :----: | :----------: |
**Humble** | [`humble`](https://github.com/mateusmenezes95/axebot/tree/humble) | [![Humble Source Build](https://github.com/mateusmenezes95/axebot/actions/workflows/humble-source-build.yaml/badge.svg)](https://github.com/mateusmenezes95/axebot/actions/workflows/humble-source-build.yaml)

## Table of Contents

- [Axebot Simulation](#axebot-simulation)
Expand All @@ -22,9 +28,9 @@ The Axebot is an omnidirectional robot with three wheels that was initially deve

## Installation Premises

1. This repository has been tested on [ROS2 Foxy] and with [Classic Gazebo 11];
1. This repository has been tested on [ROS2 Version] with [Classic Gazebo 11];

2. These instructions assume that you have already installed ROS2 Foxy Fitzroy on your machine. If not, please follow the recommended [recommended ubuntu installation tutorial];
2. These instructions assume that you have already installed ROS2 Humble Hawskbill on your machine. If not, please follow the recommended [recommended ubuntu installation tutorial];

3. Before installing the package, you will need to have an ament workspace set up. If you don't have one, follow the instructions in the [Creating a workspace tutorial]. Once you have created the workspace, clone this repository in the source folder of your workspace.

Expand Down Expand Up @@ -52,7 +58,7 @@ cd ~/ros_ws
rosdep init
rosdep update
sudo apt update
rosdep install --from-paths src/axebot --ignore-src -r -y --rosdistro foxy
rosdep install --from-paths src/axebot --ignore-src -r -y --rosdistro humble
```

If all dependencies are already installed, you should see the message "All required rosdeps installed successfully."
Expand All @@ -61,7 +67,7 @@ Now, install the omnidirectional controller packager running:

```
cd ~/ros_ws/src
vcs import < axebot/axebot.foxy.repos
vcs import < axebot/axebot.humble.repos
```

## Building
Expand All @@ -78,7 +84,7 @@ colcon build --symlink-install --event-handlers console_direct+
After building the package, open a new terminal and navigate to your workspace. Then, source the overlay by running the following command:

```
source /opt/ros/foxy/setup.bash
source /opt/ros/humble/setup.bash
cd ~/ros_ws
. install/local_setup.bash
```
Expand Down Expand Up @@ -166,12 +172,14 @@ For more information about nodes, topics, services, and other elements of the Ax

## Contributing

To contribute to this package, you can either [open an issue](https://github.com/mateusmenezes95/axebot/issues) describing the desired subject or develop the feature yourself and [submit a pull request](https://github.com/mateusmenezes95/axebot/pulls) to the main branch (in this case, foxy).
To contribute to this package, you can either [open an issue](https://github.com/mateusmenezes95/axebot/issues) describing the desired subject or develop the feature yourself and [submit a pull request](https://github.com/mateusmenezes95/axebot/pulls) to the main branch (in this case, humble).

If you choose to develop the feature yourself, please adhere to the [ROS 2 Code style and language] guidelines to improve code readability and maintainability.

## Developed Researches

M. S. Meneses, B. S. S. Pereira and T. L. M. Santos, "Robust reference tracking control subject to time-varying delay with future reference anticipation," 2023 Latin American Robotics Symposium (LARS), 2023 Brazilian Symposium on Robotics (SBR), and 2023 Workshop on Robotics in Education (WRE), Salvador, Brazil, 2023, pp. 367-372, doi: 10.1109/LARS/SBR/WRE59448.2023.10333024. [[link]](https://ieeexplore.ieee.org/document/10333024)

J. Santos, A. Conceição, T. Santos, and H. Ara ujo, “Remote control of an omnidirectional mobile robot with time-varying delay and noise attenuation,” *Mechatronics*, vol. 52, pp. 7–21, 2018, ISSN: 0957-4158. DOI: 10.1016/j.mechatronics.2018.04.003. [Online](https://www.sciencedirect.com/science/article/abs/pii/S0957415818300606).

J. Santos, A. G. Conceição, and T. L. Santos, “Trajectory tracking of omni-directional mobile robots via predictive control plus a filtered smith predictor,” IFAC- PapersOnLine, vol. 50, no. 1, pp. 10 250–10 255, 2017, 20th IFAC World Congress, ISSN: 2405-8963. DOI: 10.1016/j.ifacol.2017.08.1286. [Online](https://www.sciencedirect.com/science/article/pii/S2405896317318013).
Expand All @@ -180,11 +188,11 @@ J. C. L. Barreto S., A. G. S. Conceição, C. E. T. Dórea, L. Martinez and E. R

A. G. S. Conceicao, M. D. Correia, and L. Martinez, “Modeling and friction estimation for wheeled omnidirectional mobile robots,” *Robotica*, vol. 34, no. 9, pp. 2140–2150, 2016. [[link]](https://www.cambridge.org/core/journals/robotica/article/abs/modeling-and-friction-estimation-for-wheeled-omnidirectional-mobile-robots/85796F5CF60310022D35CB792EF80254)

[Creating a workspace tutorial]: https://docs.ros.org/en/foxy/Tutorials/Beginner-Client-Libraries/Creating-A-Workspace/Creating-A-Workspace.html#creating-a-workspace
[recommended ubuntu installation tutorial]: https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html
[Creating a workspace tutorial]: https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Creating-A-Workspace/Creating-A-Workspace.html
[recommended ubuntu installation tutorial]: https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html
[Source the overlay]: https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Creating-A-Workspace/Creating-A-Workspace.html#source-the-overlay
[ROS 2 Code style and language]: https://docs.ros.org/en/foxy/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html#code-style-and-language-versions
[ROS2 Foxy]: https://docs.ros.org/en/foxy/index.html
[ROS 2 Code style and language]: https://docs.ros.org/en/humble/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html#code-style-and-language-versions
[ROS2 Version]: https://docs.ros.org/en/humble/index.html
[Classic Gazebo 11]: https://classic.gazebosim.org/
[ChatGPT]: https://openai.com/blog/chatgpt/
[CLI Tools Tutorial]: https://docs.ros.org/en/foxy/Tutorials/Beginner-CLI-Tools.html#
[CLI Tools Tutorial]: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html#
5 changes: 5 additions & 0 deletions axebot.humble.repos
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
repositories:
omnidirectional_controllers:
type: git
url: https://github.com/mateusmenezes95/omnidirectional_controllers.git
version: fix-interfaces-bug
3 changes: 3 additions & 0 deletions axebot_control/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ set(THIS_PACKAGE_INCLUDE_DEPENDS
nav_msgs
rclcpp
tf2
tf2_msgs
tf2_ros
tf2_geometry_msgs
)

foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
Expand Down
5 changes: 5 additions & 0 deletions axebot_control/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@
<depend>nav_msgs</depend>
<depend>rclcpp</depend>
<depend>tf2</depend>
<depend>tf2_msgs</depend>
<depend>tf2_ros</depend>
<depend>tf2_geometry_msgs</depend>

<exec_depend>controller_manager</exec_depend>
<exec_depend>plotjuggler_ros</exec_depend>
<exec_depend>ros2_control</exec_depend>
<exec_depend>ros2_controllers</exec_depend>

Expand Down
1 change: 1 addition & 0 deletions axebot_control/src/go_to_goal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

#include "tf2/utils.h"
#include "tf2/LinearMath/Vector3.h"
#include "tf2_geometry_msgs/tf2_geometry_msgs.hpp"

using std::placeholders::_1;

Expand Down
1 change: 1 addition & 0 deletions axebot_description/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

<exec_depend>ament_index_python</exec_depend>
<exec_depend>joint_state_publisher_gui</exec_depend>
<exec_depend>gazebo_ros_pkgs</exec_depend>
<exec_depend>launch_ros</exec_depend>
<exec_depend>launch</exec_depend>
<exec_depend>robot_state_publisher</exec_depend>
Expand Down
20 changes: 11 additions & 9 deletions axebot_gazebo/launch/axebot.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@

import xacro


def generate_launch_description():
pkg_name = 'axebot_description'

launch_rviz = LaunchConfiguration('launch_rviz')

launch_rviz_arg = DeclareLaunchArgument(
Expand Down Expand Up @@ -74,14 +75,14 @@ def generate_launch_description():
)

spawn_entity = Node(package='gazebo_ros', executable='spawn_entity.py',
arguments=['-topic', 'robot_description',
'-entity', 'axebot'],
output='screen'
)
arguments=['-topic', 'robot_description',
'-entity', 'axebot'],
output='screen'
)

joint_state_broadcaster_spawner = Node(
package="controller_manager",
executable="spawner.py",
executable="spawner",
arguments=["joint_state_broadcaster"],
)

Expand All @@ -94,13 +95,13 @@ def generate_launch_description():

omni_base_controller_spawner = Node(
package="controller_manager",
executable="spawner.py",
executable="spawner",
arguments=["omnidirectional_controller"],
)

omni_base_controller_event_handler = RegisterEventHandler(
event_handler=OnProcessExit(
target_action=spawn_entity,
target_action=joint_state_broadcaster_spawner,
on_exit=[omni_base_controller_spawner]
)
)
Expand All @@ -114,7 +115,8 @@ def generate_launch_description():

gazebo = IncludeLaunchDescription(
PythonLaunchDescriptionSource([os.path.join(
get_package_share_directory('gazebo_ros'), 'launch'), '/gazebo.launch.py']),
get_package_share_directory('gazebo_ros'), 'launch'),
'/gazebo.launch.py']),
)

return LaunchDescription([
Expand Down
Loading