Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
5aeea3f
Updated readme
NoahR-ATC Jul 2, 2025
51d6e3b
Removed ROS package structure since this will be a monorepo
NoahR-ATC Jul 2, 2025
a4d9806
Added Project Perry description files from umrt-arm-ros-firmware expe…
NoahR-ATC Jul 2, 2025
715a037
Converted umrt-project-perry-description to standard CMake setup
NoahR-ATC Jul 2, 2025
1fbae21
Added Project Perry MoveIt config package generated from the MoveIt S…
NoahR-ATC Jul 2, 2025
5ee19df
Renamed project to umrt-project-perry-moveit-config
NoahR-ATC Jul 2, 2025
cfbda5b
Set up CMake for umrt-project-perry-moveit-config to parse version nu…
NoahR-ATC Jul 2, 2025
71991a3
Added Project Perry IKFast plugin from my sim experimentation
NoahR-ATC Jul 2, 2025
94c0a16
Set up CMake for IKFast plugin to parse version number like other pro…
NoahR-ATC Jul 2, 2025
2c3f858
Experimenting with running build job on a subdirectory
NoahR-ATC Jul 2, 2025
43035fb
Switched build workflow to be hit by initial_configs branch for testing
NoahR-ATC Jul 2, 2025
9696324
Fixed branch name
NoahR-ATC Jul 2, 2025
3303f2b
Experimenting with workflow
NoahR-ATC Jul 2, 2025
7b26071
Experimenting with new version of ros-build workflow
NoahR-ATC Jul 2, 2025
594639a
Switched to using symlinks to version file for packages in order to a…
NoahR-ATC Jul 2, 2025
dcf7f2f
Switched back to only running workflow for main branch now that this …
NoahR-ATC Jul 2, 2025
0144755
Added build jobs for all packages
NoahR-ATC Jul 3, 2025
2795451
Moved top-level URDF xacro here from umrt-arm-ros-firmware
NoahR-ATC Jul 7, 2025
eebfb2d
Set up URDF xacro for package split
NoahR-ATC Jul 7, 2025
06ba48e
Solidified version for build image
NoahR-ATC Jul 7, 2025
2036d64
Version bump
NoahR-ATC Jul 7, 2025
4a00794
Merge pull request #1 from UMRoboticsTeam/initial-configs
NoahR-ATC Jul 7, 2025
621af94
Split build workflow into one workflow for each package to avoid arti…
NoahR-ATC Jul 19, 2025
dd0d8e4
Removed umrt-arm-ros-firmware exec dependency because then bloom requ…
NoahR-ATC Jul 19, 2025
53a8001
Version bump
NoahR-ATC Jul 19, 2025
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
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
name: Build package
name: Build umrt-project-perry-description package

on:
push:
branches:
- main

jobs:
build:
build-description:
permissions:
contents: write
packages: read

uses: UMRoboticsTeam/umrt-ci-cd/.github/workflows/ros-build.yaml@main
with:
build_image: ghcr.io/umroboticsteam/umrt-build:v0.0.16
build_image: ghcr.io/umroboticsteam/umrt-build:v0.0.26
publish_image: ghcr.io/umroboticsteam/umrt-apt-image:latest
publish_repo: UMRoboticsTeam/umrt-apt-repo
working_directory: umrt-project-perry-description
secrets:
APT_SIGNING_PUBKEY: ${{ secrets.APT_SIGNING_PUBKEY }}
APT_SIGNING_KEY: ${{ secrets.APT_SIGNING_KEY }}
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/ikfast-plugin-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Build project_perry_project_perry_ikfast_plugin package

on:
push:
branches:
- main

jobs:
build-ikfast-plugin:
permissions:
contents: write
packages: read

uses: UMRoboticsTeam/umrt-ci-cd/.github/workflows/ros-build.yaml@main
with:
build_image: ghcr.io/umroboticsteam/umrt-build:v0.0.26
publish_image: ghcr.io/umroboticsteam/umrt-apt-image:latest
publish_repo: UMRoboticsTeam/umrt-apt-repo
working_directory: project_perry_project_perry_ikfast_plugin
secrets:
APT_SIGNING_PUBKEY: ${{ secrets.APT_SIGNING_PUBKEY }}
APT_SIGNING_KEY: ${{ secrets.APT_SIGNING_KEY }}
APT_DEPLOY_KEY: ${{ secrets.APT_DEPLOY_KEY }}
23 changes: 23 additions & 0 deletions .github/workflows/moveit-config-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Build umrt-project-perry-moveit-config package

on:
push:
branches:
- main

jobs:
build-moveit-config:
permissions:
contents: write
packages: read

uses: UMRoboticsTeam/umrt-ci-cd/.github/workflows/ros-build.yaml@main
with:
build_image: ghcr.io/umroboticsteam/umrt-build:v0.0.26
publish_image: ghcr.io/umroboticsteam/umrt-apt-image:latest
publish_repo: UMRoboticsTeam/umrt-apt-repo
working_directory: umrt-project-perry-moveit-config
secrets:
APT_SIGNING_PUBKEY: ${{ secrets.APT_SIGNING_PUBKEY }}
APT_SIGNING_KEY: ${{ secrets.APT_SIGNING_KEY }}
APT_DEPLOY_KEY: ${{ secrets.APT_DEPLOY_KEY }}
52 changes: 27 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
# UMRT ROS Template
ROS project repository template for the University of Manitoba Robotics Team.

New projects should be **forked** from this repo (not using this as a template, as that prevents template changes from
trickling down). Each new project must:
1. Fill in missing fields in package.in.xml
2. Fill in project name in CMakeLists.txt and Doxyfile
3. Go into `umrt-build` package settings and give the new repo read permission
4. Go into `umrt-apt-image` package settings and give the new repo read permission
5. Go into `UMRoboticsTeam` organisation secrets and add the new repo to:
- `APT_DEPLOY_KEY`
- `APT_SIGNING_KEY`
6. Copy the rulesets (branch protection rules) from a mature repository like
[umrt-arm-firmware-lib](https://github.com/UMRoboticsTeam/umrt-arm-firmware-lib/)
7. Remove this notice and fill in below README template
8. Write something in mainpage.dox
9. Replace example files with real code, add source files to CMake targets, document it with Doxygen, and proceed

---
# Project Name

This library/executable/project implements XYZ functionality for the University of Manitoba Robotics Team's
rover/robotic arm.

[See the documentation](https://umroboticsteam.github.io/********** project-name **********/)
# UMRT Project Perry Config
Monorepo of ROS packages for configuring the University of Manitoba Robotics Team's software to work with Project Perry.

Unlike most UMRT projects, this one deviates from the norm of one-package-per-repo.
This is because of how tightly coupled the packages here are.
Whenever a change is made to one config, it is likely to propagate into other configs, which becomes tedious to manage when they are all individually controlled and versioned.

For example, if a URDF is changed, that would affect the ros2_control configuration, the IKFast configuration, and the MoveIt configuration.
If each of these lived in separate repos, that is 4 PRs to create, 4 new versions which have to be deployed, and if one doesn't get updated somewhere it will cause major problems.
Thus, by organising these into a monorepo this is condensed to 1 PR, and 1 version to deploy/manage.

One unusual technique used in this project, which is used to avoid complicating the ros-build workflow with additional parameters, is to symlink the version file into each of the packages.

# UMRT Project Perry Description

This is the URDF and RViz files for the Project Perry robotics arm model.

# UMRT Project Perry MoveIt Config

This is the MoveIt2 config for interacting with the Project Perry robotic arm.
It was generated using the MoveIt Setup Assistant.

# UMRT Project Perry IKFast Plugin

This is the IKFast plugin MoveIt2 uses for computing inverse kinematic solutions for the Project Perry robotic arm.
Unlike other UMRT packages, the package name is separated with underscores instead of hyphens because the package is auto-generated and the generator uses underscores.
The package is generated using the moveit_kinematics auto_create_ikfast_moveit_plugin script according to the instructions [here](https://moveit.picknik.ai/main/doc/examples/ikfast/ikfast_tutorial.html).
23 changes: 0 additions & 23 deletions include/project-name/example_node.hpp

This file was deleted.

21 changes: 0 additions & 21 deletions launch/example.launch.py

This file was deleted.

3 changes: 0 additions & 3 deletions launch/example.yaml

This file was deleted.

5 changes: 5 additions & 0 deletions project_perry_project_perry_ikfast_plugin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/cmake-build-*/
/.idea/
/output-doxygen/
# We ignore package.xml because it is generated from package.in.xml
package.xml
60 changes: 60 additions & 0 deletions project_perry_project_perry_ikfast_plugin/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
cmake_minimum_required(VERSION 3.22)
project(project_perry_project_perry_ikfast_plugin)

if(NOT "${CMAKE_CXX_STANDARD}")
set(CMAKE_CXX_STANDARD 14)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

find_package(ament_cmake REQUIRED)
find_package(moveit_core REQUIRED)
find_package(pluginlib REQUIRED)
find_package(rclcpp REQUIRED)
find_package(tf2_kdl REQUIRED)
find_package(tf2_eigen REQUIRED)
find_package(LAPACK REQUIRED)

include_directories(include)

set(IKFAST_LIBRARY_NAME project_perry_project_perry_moveit_ikfast_plugin)
add_library(${IKFAST_LIBRARY_NAME} SHARED src/project_perry_project_perry_ikfast_moveit_plugin.cpp)
ament_target_dependencies(${IKFAST_LIBRARY_NAME}
rclcpp
moveit_core
pluginlib
tf2_kdl
orocos_kdl
tf2_eigen
LAPACK
)
# suppress warnings about unused variables in OpenRave's solver code
target_compile_options(${IKFAST_LIBRARY_NAME} PRIVATE -Wno-unused-variable -Wno-unused-parameter)

install(TARGETS ${IKFAST_LIBRARY_NAME}
EXPORT export_${PROJECT_NAME}
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin)

pluginlib_export_plugin_description_file(moveit_core project_perry_project_perry_moveit_ikfast_plugin_description.xml)

ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
ament_export_dependencies(moveit_core)
ament_export_dependencies(pluginlib)
ament_export_dependencies(rclcpp)
ament_export_dependencies(tf2_kdl)
ament_export_dependencies(tf2_eigen)

# Parse version number from the file
file(READ "version" version_input)
string(REGEX MATCH "([0-9]+)\.([0-9]+)\.([0-9]+)" _ ${version_input})

# Fill version number into package.xml
configure_file(
package.in.xml
${CMAKE_CURRENT_SOURCE_DIR}/package.xml
@ONLY
)

ament_package()
Loading