A robot 🤖 that pushes a ball 🥎 (into a goal 🥅).
Citation and link to our paper: Bracke, A., Gosein, D., Kürschner, M., Mayer, J., & 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
- Clone this repo
- Inside
.envaddMASTER_IP=<your-ip> - Run
docker-compose up -d --remove-orphans - Start Turtlebot and connect to via SSH
ssh ubuntu@<your-ip>with default password:turtlebot - Set
export ROS_MASTER_URI=<your-ip> - Run
sh ~/launch.sh - Run
sh ~/cam.sh
- Clone this repo
- Execute
export BIP=<your bots ip> && export MIP=<your pc ip> - Execute
start-everything
To prepare the image for the Raspberry Pi follow these instructions: https://emanual.robotis.com/docs/en/platform/turtlebot3/sbc_setup/#sbc-setup
After the micro SD card is ready, boot it from your Turtlebot, connect via SSH: ssh ubuntu@<TURTLEBOT IP> (default password: turtlebot) and do the following:
-
Run:
sudo usermod -aG root ubuntuto make the user root (see Lessons Learned). -
Add your network to the
/etc/netplan/50-cloud-init.yamlor prepare and copy it via SCP:scp 50-cloud-init.yaml ubuntu@<TURTLEBOT IP>:/etc/netplan/50-cloud-init.yaml. Also refer to this template. -
Edit:
nano ~/.bashrcto add the below variables and:source ~/.bashrc.export ROS_MASTER_URI=http://<REMOTE PC IP>:11311 export ROS_HOSTNAME=<TURTLEBOT IP>
-
Install Raspberry Pi Cam and dependencies with the following commands:
sudo apt install libraspberrypi-dev libraspberrypi0 libpigpiod-if-dev ros-noetic-compressed-image-transport ros-noetic-camera-info-manager ros-noetic-diagnostic-updater cd ~/catkin/src git clone https://github.com/UbiquityRobotics/raspicam_node catkin_make
-
Run:
export TURTLEBOT3_MODEL=Burgerto set the Turtlebot model. -
Start without LIDAR sensor:
roslaunch turtlebot3_bringup turtlebot3_core.launch. -
Start the Cam via:
rosparam set cv_camera/device_id 0 rosrun cv_camera cv_camera_node
For step 5, 6 and 7 you can also use the provided Makefile and run make start-everything.
Download 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.
Dependencies:
- tensorflow
- pandas
- opencv-python
- The default user
ubuntuon the Turtlebot image does not have the properttypermissions. The problem could be solved by addingubuntutorootuser group, by executing:sudo usermod -aG root ubuntu, as the normal group used for that calleddialoutwas not set fortty. - ROS machines must have a resolved DNS name as they communicate with each other, see: http://wiki.ros.org/ROS/NetworkSetup.
- Router should not be connected to the internet in order to not disturb the connection
- Running the detection on the Turtlebot causes extrem delays:
1/1 [==============================] - 6s 6s/step
x1 250
y1 256
x2 354
y2 360
class_name sports ball
score 0.693495
w 104
h 104
Name: 0, dtype: object
1/1 [==============================] - 6s 6s/step
x1 250
y1 255
x2 354
y2 360
class_name sports ball
score 0.756736
w 104
h 105
Name: 0, dtype: object- ui:
rqt - list all packages:
rospack list-names - build packages inside
~/catkin_ws: catkin_make - start master:
roscore

