CottonSim: A vision-guided autonomous robotic system for cotton harvesting in Gazebo simulation