This is a repo of the work in Robothon 2023
# install additional ROS packages
sudo apt-get install ros-noetic-ros-control ros-noetic-ros-controllers
# source ros noetic
source /opt/ros/noetic/setup.bash
# create a catkin workspace and clone the repo
mkdir -p ~/robothon2023/src
cd ~/robothon2023/src
git clone git@github.com:edward9503/CURM1.0_Robothon2023.git
# install dependencies (for flexiv)
cd ~/robothon2023
sudo apt update -qq
rosdep update
rosdep install --from-paths src --ignore-src -y
# build the workspace
catkin build
# source the workspace
source ~/robothon2023/devel/setup.bash
- A vision system consists of an rgbd camera and a rgb camera. Specifically, the RealSense D435i (depth ignored here), and a Daheng imaging device MER-031-860U3C are mounted above the table for localizing the board and perception the slider indicator in screen respectively. Note that these two vision perception task are runned separately to ensure the real-time performance.
- Refer the link for more details.
- Online pose estimation (~45 fps+): we detect the center of red button/red port as the reference to determine the board pose. Traditional computer vision techniques such as contour detection/morphological processing/ color segmentation, etc. are utilized to achieve the robust and steady pose estimation.
- Online visual perception (~50 fps+): we use the similar techniques above and focused on the accurate color segmenation. Specifically, we first use the red color to localize the screen region and detect the four corners of the screen. Then we warped the screen region into the normal rectangular region. We further segment the relevant color such as red/yellow/cyan and use the triangular fitting to find the peak position.
- Install the necessary ros package related to the Arduino/ROS (only neotic is well-tested now)
sudo apt-get install ros-${ROS_DISTRO}-rosserial-arduino
sudo apt-get install ros-${ROS_DISTRO}-rosserial
- Connect the Arduino board with PC and check which port is being used (such as /dev/ttyACM0);
- Run the rosserial node to setup the communication between ROS and Arduino:
rosrun rosserial_arduino serial_node.py [port_name]
, then the gripper control node is in active; - The Arduino subscribe the postion comands of the dual gripper (topic names: [main_gripper_cmd; auxi_gripper_cmd]); Two gripper statuses are also published via topic: [main_gripper_pos_sensor; auxi_gripper_pos_sensor], which are the current gripper positions;
- In the flexbe behavior tree, use the gripper_control_state for the gripper utility. Note that the topic name inside the state should be the same as previous step.