** Among the above folders, the "최종" folder is the final project source code. **.
- The demand for cooperative robots is increasing due to the risk of injury and the burden of labor costs during logistics work.
- It aims to reduce the risk and burden that humans can feel by moving heavy products using manipulators.
- In other words, the Doosan manipulator M0609 model is used to build a logistics automation system to enable hourly work.
- Through this, it is possible to improve the efficiency of corporate productivity, prevent industrial safety accidents, and reduce errors.
- Doosan Manipulator M0609
- ROS2 humble(ubuntu 22.04)
- Lego blocks
- OnRobot2 Gripper
The size of the product was classified according to the width of the gripper when the object was held using the weblogic within the gripper manufacturer onrobot.
: Store blocks from factory to hub -> Load blocks in the hub area -> Ship blocks when an order is placed from the consumer
a. Block warehousing: When the block approaches with a conveyor belt, the manipulator descends to the z-axis and grabs the object. Then, the block is loaded into the hub through compliance control and external force with task_compliance_ctrl(), set_desired_force().
b. Block loading: When loading blocks, the external force is set to be recognized so that the Lego can fit into the hole well. After that, when the block is stabilized, it is considered a success and the manipulator moves to the initial coordinates. It is set to be able to stack up to 3 floors at a time for each block size, and if the blocks to be loaded are stored even though they are all stacked within the allowable hub area for each size, it is set to load up to 4 blocks regardless of the size of the overflow area.
It can be seen that an external force is instantaneously generated in the z-axis when the block is loaded.
c. Block shipment: When an order comes from a consumer and the product in the hub needs to be shipped, the gripper grabs the product, twists it in the Ry axis, and goes up the z axis. After that, the product is placed as the shipping coordinates and then moved back to the initial coordinates.
d. Defective product handling: If a product is recognized as a defective product when picked up with a gripper from a conveyor belt, it is stored separately in its own area that is treated as a defective product. After that, the height of the defective products piled in the defective product area was measured with get_current_posx()[2], and the move_periodic() function was used so that the defective products could be accumulated a little flat.
a. We tried to use the PyModBus Protocol, which communicates the width of the gripper in real time when an onrobot gripper, not a weblogic, picked up the object, but this was not possible due to the nature of the I/O controller.
https://github.com/ABC-iRobotics/onrobot-ros2/tree/main/onrobot_rg_control/onrobot_rg_control
b. The event of the hardware itself was rejected by using the set_desired_force() external command with the move().
https://drive.google.com/file/d/1TL33fzWuUqNZjs5VRBulr1zoC-3juKPM/view?usp=drive_link
https://drive.google.com/file/d/1JSocWrj2Q6IKqsgr0UJjwAfnmWVmc3tv/view?usp=drive_link
# 1. Launch the M0609 manipulator to bringup
$ cd manage_hub
$ ros2 launch dsr_bringup2 dsr_bringup2_rviz.launch.py mode:=real host:=192.168.1.100 port:=12345 model:=m0609
# 2. Execute the hub_node
$ ros2 run manage_hub hub_node
# 3. Execute the input_hub_node
$ cd project1
$ ros2 run input_hub input_hub_node
