This study presents a project in which the position of a target object equipped with an AruCo marker is estimated using the Indy7 robot and the IndyEye vision system.
The target object is grasped using a Robotiq 2F-140 gripper, and both path planning and motion planning with obstacle avoidance are performed using the Moveit framework.
The robot then places the object at a designated target location and subsequently returns to the home position while avoiding obstacles, completing a single sequential operation.
The following software needs to be installed:
- ROS1 Noetic
- Neromeka Docs
- Requires Python version 3.6 or higher, but may not function with versions above 3.9.
- IndyDCP3
pip3 install neuromeka pip3 install --upgrade neuromeka
git clone https://github.com/BonHK/Indy7_project.git
cd ~/Indy7_project/
catkin_make
sudo chmod +x src/*source devel/setup.bash- Work table + Indy7 + Realsense d435(instead IndyEye) + Robotiq 2F-140 gripper Rviz model
roslaunch indy_description indy_description.launch
rosrun indy_controller indy7_init_vision_bridge.py
rosrun indy_controller indy7_move_target_grip.py
- This node serves as a bridge that forwards ArUco marker image data acquired from the IndyEye vision system to the pose estimation module.
- This node performs the following sequence of operations.
- The estimated object position is received, and the robot end-effector is alinged with the X and Y coordinates of the object to which the ArUco marker is attached.
- After the X and Y positions are alinged, the end-effector is moved along the Z-axis to approach the target object for grasping.
- Once the Z-axis motion is completed, the Robotiq gripper is actuated via RS-485 communication using the IndyDCP3 interface.
- After the object is successfully grasped, a collision-free path is generated using the Moveit node, and the manipulator moves to the target location while avoiding obstacles.
- Upon reaching the target location, the gripper is opened to release the grasped object.
- After placing the object, another collision-free path is generated using the Moveit node, and the manipulator returns to the home position while avoiding obstacles.
rosrun aruco_pose aruco_pose_node
- The aruco_pose package includes camera intrinsic parameters that are directly measured and calibrated for the IndyEye camera.
- The OpenCV-based algorithm is used the estimate the 3D pose of a 6x6 ArUco marker, and the resulting pose is expressed in the global reference frame defined by the Indy7 base link.
- The dimensions of the target object (box-shaped) with an attached marker are defined based on physical measurements of the real object.
- In addition, underwater image effects are applied to the camera images, and image processing techniques suitable for underwater environments are emploted to ultimately estimate the pose of the target object under underwater conditions.
rosrun moveit_pkg collision_avoid_node
- This node employs the Moveit framework to perform obstacle-avoiding path and motion planning for predefined obstacles.
- The RRT-Connect algorithm, which is the default planner in Moveit, is used for path planning. The planned trajectory is then resampled to generate appropriate waypoings for motion execution, allowing the trajectory to be executed on the real robot.
- The Indy robot must be connected in order to execute the commands.
roslaunch indy_driver indy_bringip.launch indy_ip:=<Indy7 robot ip>
roslaunch indy_moveit moveit_indy.launch
rosrun aruco_pose aruco_pose_node
rosrun moveit_pkg collision_avoid_node
rosrun indy_controller indy7_move_target_grip.py
rosrun indy_controller indy7_init_vision_bridge.py
final_mov.mp4