Repo for ROS2 packages related to Robossembler
- Removed `assembly_config_service.py` node from launch configuration. - Added default `goal.duration` setting to `MoveToPose` and `MoveToPoseArray`. - Replaced `timeout_seconds` with `duration` in action definitions for `MoveitSendJointStates` and `MoveitSendPose`. - Removed dependencies on TinyXML2 and Gazebo/SDFormat, adding `controller_manager_msgs` and `control_msgs` to CMake configuration. - Added new action servers `cartesian_move_to_pose` and `move_to_joint_states`, registering them in CMakeLists file. - Introduced `SkillBase`, a template class for managing action-based skills, providing essential ROS 2 action server support and functionalities for handling goals, cancels, accepted actions, and controller management. - Implemented methods to load, configure, and switch required controllers with conflict detection for active controllers, along with parameter checking and asynchronous handling for required parameters. - Enhanced error handling for missing controllers, parameters, and resource conflicts. - Updated `skills.launch.py` to utilize `ComposableNodeContainer` for skill nodes, incorporating `MoveToJointStateActionServer` and `CartesianMoveToPose` as composable nodes. - Changed the executable name in `cartesian_move_to_pose_action_server` node configuration. - Added `cartesian_move_to_pose.cpp`, implementing the `CartesianMoveToPose` action server, including trajectory interpolation, pose adjustment, and controller management. - Updated `package.xml` to include `rclcpp_components` dependency. - Refactored `MoveToJointStateActionServer` to extend `SkillBase`, leveraging `FollowJointTrajectory` for joint trajectory execution, while removing redundant code and dependencies. - Implemented trajectory generation based on initial and target joint positions with parameterized interpolation for smoother execution, enhancing joint state handling to dynamically align current and target joint values. |
||
---|---|---|
doc | ||
env_manager | ||
rbs_bringup | ||
rbs_bt_executor | ||
rbs_perception | ||
rbs_simulation | ||
rbs_skill_interfaces | ||
rbs_skill_servers | ||
rbs_task_planner | ||
rbs_utils | ||
rbss_movetopose | ||
rbss_objectdetection | ||
rbss_poseestimation | ||
repos | ||
robonomics | ||
.gitignore | ||
.gitlab-ci.yml | ||
Dockerfile | ||
LICENSE | ||
README.md |
Robossembler ROS2
Repo for ROS2 packages related to Robossembler
Packages List
env_manager
- virtual environment switching manager and related packagesenv_interface
- base class for creating a specific environment based on the ROS 2 LifeCycle Nodeenv_manager
- main package of the virtual environment switching managerenv_manager_interfaces
- ROS 2 interfaces for env_manager, describe messages about the state of the environment, services for configuring/loading/enabling/unloading the environmentgz_environment
- a specific instance ofenv_interface
for the Gazebo simulatorplanning_scene_manager
- sync env with planning scene for MoveIt 2rbs_gym
- training module with reinforcement: management of the learning process, formation of simulation environments, management of action spaces (actions) and perception (observation), task management, utilities
rbs_bringup
- package for launching different launch scenarios: simulation, real robot, different hardware configurations (multi-robot)rbs_bt_executor
- module for launching behavior trees on Behavior Tree CPP v4rbs_interface
- package for linking trees with skill serversrbs_perception
- machine perception module, where different versions are implementedrbs_simulation
- models for simulationrbs_skill_interfaces
- commonly used (common) interfaces for interacting with Skill Servers and the Behavior Tree (specific interfaces are placed in Skill Server packages)rbs_skill_servers
- Skill Server packages: Move, Object Detection, 6D Pose Estimationrbs_task_planner
- PDDL-based task schedulerrbs_utils
- working with a config containing capture positions for detailsrbss_objectdetection
- Object Detection Skill Server using YOLOv8
Instructions
Requirements
- OS: Ubuntu 22.04
- ROS 2 Humble
Dependencies
These are the primary dependencies required to use this project.
- MoveIt 2
Install/build a version based on the selected ROS 2 release
- Gazebo Fortress
Build
- Clone the repository
- Build packages
colcon build
Prepare workspace & install dependencies (So far only tested with UR robot arm)
mkdir -p ~/robossembler_ws/src && cd ~/robossembler_ws/src
git clone https://gitlab.com/robosphere/robossembler-ros2
vcs import . < robossembler-ros2/repos/sim.rbs.repos
cd ..
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro humble
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --symlink-install
Additionally, if you want to use Cartesian controllers, such as stiffness or others, you need to execute the following:
# in directory robossembler_ws/src
vcs import . < robossembler-ros2/repos/cartesian_controllers.repos
This will also install ros2_control
and gz_ros2_control
as packages, so it is recommended to delete global packages if they have been installed.
Set Gazebo enviroment variables
Replace [WS_FOLDER]
with your workspace folder
echo "export IGN_GAZEBO_RESOURCE_PATH=${IGN_GAZEBO_RESOURCE_PATH}:~/[WS_FOLDER]/install/rbs_simulation/share/rbs_simulation/" >> ~/.bashrc
# or if you have alredy built the workspace
echo "export IGN_GAZEBO_RESOURCE_PATH=${IGN_GAZEBO_RESOURCE_PATH}:~/$(ros2 pkg prefix rbs_simulation)/share/rbs_simulation/" >> ~/.bashrc
Examples
Activate current ROS2 enviroment:
. install/setup.bash
Launch MoveIt2, Gazebo, RViz:
ros2 launch rbs_bringup bringup.launch.py
Start BT node in another terminal
ros2 launch rbs_bt_executor rbs_executor.launch.py