From 299b0afc48cec218e7c3ea81fa3153dd7bc4f961 Mon Sep 17 00:00:00 2001 From: Derek Witcpalek Date: Mon, 20 Apr 2020 18:33:40 -0400 Subject: [PATCH] Working pipeline between model spawning and cv node --- docker_env/gear/Dockerfile | 3 ++ .../src/gazebo_models/model_mappings.txt | 6 +-- .../images/plastic-bottle-1.jpg | Bin 0 -> 14658 bytes .../src/gazebo_models/unit_box/image.png | Bin 0 -> 26522 bytes rrrobot_ws/src/rrrobot/src/cv_model.py | 23 ++++++----- .../src/rrrobot/src/object_spawner_node.cpp | 36 +++++++++++++----- 6 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 rrrobot_ws/src/gazebo_models/plastic_bottle/images/plastic-bottle-1.jpg create mode 100644 rrrobot_ws/src/gazebo_models/unit_box/image.png diff --git a/docker_env/gear/Dockerfile b/docker_env/gear/Dockerfile index 9186ac4..b517adf 100644 --- a/docker_env/gear/Dockerfile +++ b/docker_env/gear/Dockerfile @@ -70,4 +70,7 @@ RUN sudo apt-get update && \ ros-melodic-moveit-ros-visualization \ ros-melodic-moveit-simple-controller-manager +RUN pip3 install pyyaml +RUN pip3 install rospkg + CMD ["/bin/bash"] diff --git a/rrrobot_ws/src/gazebo_models/model_mappings.txt b/rrrobot_ws/src/gazebo_models/model_mappings.txt index 9166897..eb1d1a5 100644 --- a/rrrobot_ws/src/gazebo_models/model_mappings.txt +++ b/rrrobot_ws/src/gazebo_models/model_mappings.txt @@ -1,3 +1,3 @@ -square_trash_can,unit_box/image.jpg,plastic -unit_box,unit_box/image.jpg,plastic -plastic_bottle,plastic_bottle/image.jpg,plastic \ No newline at end of file +square_trash_can,/app/rrrobot_ws/src/gazebo_models/unit_box/image.png,plastic +unit_box,/app/rrrobot_ws/src/gazebo_models/unit_box/image.png,plastic +plastic_bottle,/app/rrrobot_ws/src/gazebo_models/plastic_bottle/images/plastic-bottle-1.jpg,plastic \ No newline at end of file diff --git a/rrrobot_ws/src/gazebo_models/plastic_bottle/images/plastic-bottle-1.jpg b/rrrobot_ws/src/gazebo_models/plastic_bottle/images/plastic-bottle-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e35d58f16b3936c72a6f6bc605f17eccc67633b GIT binary patch literal 14658 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 literal 0 HcmV?d00001 diff --git a/rrrobot_ws/src/gazebo_models/unit_box/image.png b/rrrobot_ws/src/gazebo_models/unit_box/image.png new file mode 100644 index 0000000000000000000000000000000000000000..80827048fd6d4ab33d4a465ea0f7d431badb992d GIT binary patch literal 26522 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 literal 0 HcmV?d00001 diff --git a/rrrobot_ws/src/rrrobot/src/cv_model.py b/rrrobot_ws/src/rrrobot/src/cv_model.py index 22b4898..b02b735 100644 --- a/rrrobot_ws/src/rrrobot/src/cv_model.py +++ b/rrrobot_ws/src/rrrobot/src/cv_model.py @@ -26,6 +26,7 @@ class Model_v1(nn.Module): def call_back(filename): # prepare input file + filename = filename.data input_image = Image.open(filename) input_image = input_image.resize((512, 384)) # print(input_image.size) @@ -49,24 +50,26 @@ def call_back(filename): print('type: ', type_dict[predicted_label]) # publish a message, name of this node is 'cv_model' - ​pub = rospy.Publisher('cv_model', String, queue_size=10) -​ ​rospy.init_node('talker', anonymous=True) -​ ​rate = rospy.Rate(10) # 10hz - - ​garbage_type = type_dict[predicted_label] - ​rospy.loginfo(filename + ':' + garbage_type) - ​pub.publish(filename + ':' + garbage_type) - ​rate.sleep() + pub = rospy.Publisher('cv_model', String, queue_size=10) + # rospy.init_node('talker', anonymous=True) + rate = rospy.Rate(10) # 10hz + + garbage_type = type_dict[predicted_label] + rospy.loginfo(filename + ':' + garbage_type) + pub.publish(filename + ':' + garbage_type) + rate.sleep() def listener(): - rospy.init_node('listener', anonymous=True) - rospy.Subscriber('/ariac/logical_camera_1', String, callback) + # rospy.init_node('listener', anonymous=True) + rospy.Subscriber('/current_image', String, call_back) # spin() simply keeps python from exiting until this node is stopped rospy.spin() if __name__ == '__main__': + rospy.init_node('cv_node') + # prepare pretrained model model = Model_v1() model.load_state_dict(torch.load('v1_0.001.pt', map_location='cpu')) diff --git a/rrrobot_ws/src/rrrobot/src/object_spawner_node.cpp b/rrrobot_ws/src/rrrobot/src/object_spawner_node.cpp index 53096bb..5eacaf2 100644 --- a/rrrobot_ws/src/rrrobot/src/object_spawner_node.cpp +++ b/rrrobot_ws/src/rrrobot/src/object_spawner_node.cpp @@ -8,6 +8,7 @@ #include #include +#include #include "rrrobot/model_insertion.h" #include @@ -25,7 +26,8 @@ public: // DEFAULT_SPAWN_POINT.x = 0.2516105; // DEFAULT_SPAWN_POINT.y = 5.474367; // DEFAULT_SPAWN_POINT.z = 0.935669; - pub = nh.advertise("/object_to_load", 1000); + model_pub = nh.advertise("/object_to_load", 1000); + image_pub = nh.advertise("/current_image", 1000); sub = nh.subscribe("/ariac/arm1/gripper/state", 1000, &ObjectSpawner::objectPlacedCallback, this); srand(time(NULL)); read_in_items(model_file); @@ -51,13 +53,21 @@ public: } private: + struct ObjectMapping + { + std::string model_name; + std::string image_file; + std::string correct_classification; + }; + const KDL::Vector DEFAULT_SPAWN_POINT; const float CONVEYOR_WIDTH; ros::NodeHandle nh; - ros::Publisher pub; + ros::Publisher model_pub; + ros::Publisher image_pub; ros::Subscriber sub; - std::vector models; // TODO: just string? or do we need - //to store the correct classification too? + std::vector models; // TODO: just string? or do we need + //to store the correct classification too? void read_in_items(const std::string &model_file) { @@ -67,10 +77,13 @@ private: { // cout << "cur: " << cur << " cur.find(,): " << cur.find(",") << endl; // line format: model_name, image_file, model_classification - std::string model_name = cur.substr(0, cur.find(",")); - // cur.erase(0, s.find(",") + 1); - // cur.erase(0, s.find(",") + 1); - models.push_back(model_name); + ObjectMapping cur_model; + cur_model.model_name = cur.substr(0, cur.find(",")); + cur.erase(0, cur.find(",") + 1); + cur_model.image_file = cur.substr(0, cur.find(",")); + cur.erase(0, cur.find(",") + 1); + cur_model.correct_classification = cur; + models.push_back(cur_model); } } @@ -79,9 +92,11 @@ private: if (ros::ok()) { rrrobot::model_insertion msg; + std_msgs::String image_file_msg; int rand_idx = rand() % models.size(); - msg.model_name = models[rand_idx]; + msg.model_name = models[rand_idx].model_name; + image_file_msg.data = models[rand_idx].image_file; cout << "Spawning " << msg.model_name << endl; // TODO: Determine position to spawn items @@ -94,7 +109,8 @@ private: msg.pose.position.y = DEFAULT_SPAWN_POINT.y(); msg.pose.position.z = DEFAULT_SPAWN_POINT.z() + 1.0; - pub.publish(msg); + model_pub.publish(msg); + image_pub.publish(image_file_msg); ros::spinOnce(); } }