Releases: Robots4Sustainability/Finite-State-Machine
Milestone-4
Overview
This release introduces the Door Disassembly workflow to the Finite State Machine. It significantly expands the system's capabilities with new workflow definition, sub nodes ,integrated safety mechanisms like collision detection, pose capture utilities, fsm diagram generation and a new centralized interfaces package for perception.
Key Features & Changes
-
Door Disassembly FSM (
door_disassemble.fsm)(@ashleshp ):- Implemented a new comprehensive FSM definition explicitly for the door disassembly task.
- Integrates seamlessly with other nodes like perception , raster scanner , collision detector , screwdriver handler , slip detector.
- Wrench support currently disabled @jetcanine
- Testing and Integration (@ashleshp and @jetcanine )
-
Screwdriver Manipulation (
screwdriver_pick.py)(@jetcanine ):- Added dedicated ROS 2 nodes and routines to handle complex tool-picking.
- Manages the precise manipulation logic required to grasp, probe, and utilize the screwdriver for disassembly operations.
-
Control Panel & Execution Management:(@jetcanine )
- Introduced a new Control Panel interface.
- Allows human operators to actively monitor the FSM execution state, with manual pause, resume, and abort controls.
-
Slip Detector(@jetcanine ) & Safety Guardian:(@ashleshp )
- Implemented an Object Slip Detector to continuously monitor the grasp state during manipulation tasks.
- Integrated a
tf_collision_guardian.pynode that automatically detects imminent collisions or slips and instantly triggers a safety halt via the Control Panel.
-
Pose Capturer Utility(@ashleshp ):
- Added a new
pose_capturer.pytool. - Allows operators to dynamically capture, save, and manage reference poses (home poses, pre-grasp poses) directly from the robot's current TF data, streamlining the setup of new workflows.
- Added a new
-
my_robot_interfacesPackage:(@ashleshp )- Created a new dedicated
my_robot_interfacesROS 2 package to centralize custom action and service definitions. - Introduced the
RunVisionaction interface, which the FSM and raster scanner now use to communicate uniformly with perception nodes.
- Created a new dedicated
-
Documentation(Readme and wiki) and Presentation: (@ashleshp and @jetcanine )
Contributors
Assets
Milestone-3
Release Notes - Pick Place FSM v0.0.3 (release-3)
Overview
This release consolidates the FSM logic into a Python implementation, integrates DSL-based FSM generation, complete pick place sequence tested with perception nodes
Key Features & Changes
1. Python Package
- Removed C++ build targets (
pick_place_fsm_mock,mock_servers_only) and dependencies (rclcpp,rclcpp_action) fromCMakeLists.txtandpackage.xml. - The package now installs the Python scripts
pick_place.py,error_handling.py, and the FSM definition modules directly.
2. DSL-Based FSM Integration
- Integrated the auto-generated FSM logic from
coord-dsl. - FSM definitions (
pick_place_py.fsm) and generated Python code (fsm_pick_place.py) are now core parts of the package.
3. Pick-Place Error Handling Case 1 : Object slip detection
- Object slip detection from the gripper during pick and place
Contributors and Discussions
Milestone 2
- Developed an FSM flow diagram.
- Implemented a functional pick and place FSM based on the diagram.
- Built a mock server to enable testing without hardware.
- Verified functionality on the actual robot, successfully operates with the real hardware.
- Future Plan : Integrate with 'Perception' to receive real poses from the camera instead of the mock topic.
Contributions
@jetcanine
@ashleshp