{"id":22744578,"url":"https://github.com/goseind/ball-schubser","last_synced_at":"2026-05-06T14:31:24.088Z","repository":{"id":37428176,"uuid":"484001320","full_name":"goseind/ball-schubser","owner":"goseind","description":"A robot that pushes a ball.","archived":false,"fork":false,"pushed_at":"2022-12-29T10:43:29.000Z","size":75494,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-30T05:11:24.366Z","etag":null,"topics":["objectrecognition","python","raspberry-pi","robot","robotics","ros","ros-noetic","ubuntu","yolo","yolo5"],"latest_commit_sha":null,"homepage":"https://gosein.de/autonomous-robot.html","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goseind.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-21T10:10:55.000Z","updated_at":"2023-08-12T21:21:49.000Z","dependencies_parsed_at":"2023-01-31T08:45:45.296Z","dependency_job_id":null,"html_url":"https://github.com/goseind/ball-schubser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/goseind/ball-schubser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goseind%2Fball-schubser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goseind%2Fball-schubser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goseind%2Fball-schubser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goseind%2Fball-schubser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goseind","download_url":"https://codeload.github.com/goseind/ball-schubser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goseind%2Fball-schubser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32698090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["objectrecognition","python","raspberry-pi","robot","robotics","ros","ros-noetic","ubuntu","yolo","yolo5"],"created_at":"2024-12-11T01:47:10.152Z","updated_at":"2026-05-06T14:31:24.069Z","avatar_url":"https://github.com/goseind.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ball 🥎 Schubser 🤖\n\nA robot 🤖 that pushes a ball 🥎 (into a goal 🥅).\n\n[\u003cimg src=\"media/ball-schubser_front_side_new_desc.jpg\" width=\"400\"/\u003e](media/ball-schubser_front_side_new_desc.jpg)\n\n[![Demo Video - Ball Schubser](https://img.youtube.com/vi/InvO-HXr4YA/0.jpg)](https://www.youtube.com/watch?v=InvO-HXr4YA)\n\nCitation and link to our paper: [Bracke, A., Gosein, D., Kürschner, M., Mayer, J., \u0026 Seefeld, J. (n.d.). Development of an Autonomous Robot for Detecting and Collecting Objects (p. 12) [Working Paper] URN: urn:nbn:de:bsz:953-opus-1006](https://nbn-resolving.org/urn:nbn:de:bsz:953-opus-1006)\n\n## Startup Instructions\n\n1. Clone this repo\n2. Inside `.env` add `MASTER_IP=\u003cyour-ip\u003e`\n3. Run `docker-compose up -d --remove-orphans`\n4. Start Turtlebot and connect to via SSH `ssh ubuntu@\u003cyour-ip\u003e` with default password: `turtlebot`\n5. Set `export ROS_MASTER_URI=\u003cyour-ip\u003e`\n6. Run `sh ~/launch.sh`\n7. Run `sh ~/cam.sh`\n \n### Simplified (beta)\n\n1. Clone this repo\n2. Execute `export BIP=\u003cyour bots ip\u003e \u0026\u0026 export MIP=\u003cyour pc ip\u003e`\n3. Execute `start-everything`\n\n## Raspberry Pi 🐢 bot Preparation\n\nTo prepare the image for the Raspberry Pi follow these instructions: https://emanual.robotis.com/docs/en/platform/turtlebot3/sbc_setup/#sbc-setup\n\nAfter the micro SD card is ready, boot it from your Turtlebot, connect via SSH: `ssh ubuntu@\u003cTURTLEBOT IP\u003e` (default password: `turtlebot`) and do the following:\n\n1. Run: `sudo usermod -aG root ubuntu` to make the user root (see Lessons Learned).\n2. Add your network to the `/etc/netplan/50-cloud-init.yaml` or prepare and copy it via SCP: `scp 50-cloud-init.yaml ubuntu@\u003cTURTLEBOT IP\u003e:/etc/netplan/50-cloud-init.yaml`. Also refer to this [template](turtlebot/50-cloud-init.yaml).\n3. Edit: `nano ~/.bashrc` to add the below variables and: `source ~/.bashrc`.\n   \n   ```bash\n   export ROS_MASTER_URI=http://\u003cREMOTE PC IP\u003e:11311\n   export ROS_HOSTNAME=\u003cTURTLEBOT IP\u003e\n   ```\n\n4. Install Raspberry Pi Cam and dependencies with the following commands:\n   \n   ```bash\n   sudo apt install libraspberrypi-dev libraspberrypi0 libpigpiod-if-dev ros-noetic-compressed-image-transport ros-noetic-camera-info-manager ros-noetic-diagnostic-updater\n   cd ~/catkin/src\n   git clone https://github.com/UbiquityRobotics/raspicam_node\n   catkin_make\n   ```\n\n5. Run: `export TURTLEBOT3_MODEL=Burger` to set the Turtlebot model.\n6. Start without LIDAR sensor: `roslaunch turtlebot3_bringup turtlebot3_core.launch`.\n7. Start the Cam via:\n   \n   ```bash\n   rosparam set cv_camera/device_id 0\n   rosrun cv_camera cv_camera_node\n   ```\n\nFor step 5, 6 and 7 you can also use the provided [Makefile](Makefile) and run `make start-everything`.\n\n## Detection Node\n\nDownload weights for yolov4 from: https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights and move the weights into `detect/yolo_node/weights`.\n\nDependencies:\n* tensorflow\n* pandas\n* opencv-python\n\n## Lessons Learned\n\n* The default user `ubuntu` on the Turtlebot image does not have the proper `tty` permissions. The problem could be solved by adding `ubuntu` to `root` user group, by executing: `sudo usermod -aG root ubuntu`, as the normal group used for that called `dialout` was not set for `tty`.\n* ROS machines must have a resolved DNS name as they communicate with each other, see: http://wiki.ros.org/ROS/NetworkSetup.\n* Router should not be connected to the internet in order to not disturb the connection\n* Running the detection on the Turtlebot causes extrem delays:\n\n```bash\n1/1 [==============================] - 6s 6s/step\nx1                    250\ny1                    256\nx2                    354\ny2                    360\nclass_name    sports ball\nscore            0.693495\nw                     104\nh                     104\nName: 0, dtype: object\n1/1 [==============================] - 6s 6s/step\nx1                    250\ny1                    255\nx2                    354\ny2                    360\nclass_name    sports ball\nscore            0.756736\nw                     104\nh                     105\nName: 0, dtype: object\n```\n\n## Raspi cam\n\n- ui: `rqt`\n- list all packages: `rospack list-names`\n- build packages inside `~/catkin_ws`: catkin_make\n- start master: `roscore`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoseind%2Fball-schubser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoseind%2Fball-schubser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoseind%2Fball-schubser/lists"}