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
.env
addMASTER_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 ubuntu
to make the user root (see Lessons Learned). -
Add your network to the
/etc/netplan/50-cloud-init.yaml
or 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 ~/.bashrc
to 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=Burger
to 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
ubuntu
on the Turtlebot image does not have the propertty
permissions. The problem could be solved by addingubuntu
toroot
user group, by executing:sudo usermod -aG root ubuntu
, as the normal group used for that calleddialout
was 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