diff --git a/Drone/client_setup.sh b/Drone/client_setup.sh
old mode 100644
new mode 100755
index 0a279a4e..88d19088
--- a/Drone/client_setup.sh
+++ b/Drone/client_setup.sh
@@ -1,27 +1,31 @@
#!/bin/bash
# $1 - ssid, $2 - password of wifi router
-# $3 - hostname of rpi
+# $3 - hostname of rpi
+# $4 - server ip
# check if enough arguments
-if [[ $# -ne 3 ]] ; then
- echo -e "\nPlease, enter arguments: ssid, password of wifi and hostname."
- echo -e "\nExample: sudo $0 clever-swarm swarmwifi clever-1\n"
+if [[ $# -ne 4 ]] ; then
+ echo -e "\nPlease, enter arguments: router ssid, wifi password, copter id and server ip"
+ echo -e "\nExample: sudo $0 clever-swarm swarmwifi clever-1 192.168.1.100"
+ echo -e "\nWarning: this script requires wifi router to be connected to internet!\n"
exit 0
fi
-# stop and disable dnsmasq service
+# stop and disable dnsmasq service (to set wifi in client mode)
systemctl stop dnsmasq
systemctl disable dnsmasq
-# enable get auto ip
+# enable getting auto ip
sed -i 's/interface wlan0//' /etc/dhcpcd.conf
sed -i 's/static ip_address=192.168.11.1\/24//' /etc/dhcpcd.conf
# make backup of wpa_supplicant.conf
-cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.OLD
+if ! [ -f "/etc/wpa_supplicant/wpa_supplicant.conf.OLD" ] ; then
+ cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.OLD
+fi
-# ssid and password of the router
+# set ssid and password of the router
cat << EOF | tee /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
@@ -33,6 +37,9 @@ network={
}
EOF
+# restart dhcpcd to connect to wifi as a client
+systemctl restart dhcpcd
+
# set hostname for linux
cat << EOF | tee /etc/hostname
$3
@@ -43,16 +50,54 @@ sed -i "/127.0.1.1/c 127.0.1.1 $3" /etc/hosts
sed -i "/ROS_HOSTNAME/c ROS_HOSTNAME=\'$3\'" /home/pi/.bashrc
sed -i "/ROS_HOSTNAME/c ROS_HOSTNAME=$3" /lib/systemd/system/roscore.env
-# set sudoers variables to make sudo works with ros: TODO
+# add sudoers variables to make sudo works with ros (for led strip)
+grep -qxF 'Defaults env_keep += "ROS_LOG_DIR"' /etc/sudoers || cat << EOT >> /etc/sudoers
+
+Defaults env_keep += "PYTHONPATH"
+Defaults env_keep += "PATH"
+Defaults env_keep += "ROS_ROOT"
+Defaults env_keep += "ROS_MASTER_URI"
+Defaults env_keep += "ROS_PACKAGE_PATH"
+Defaults env_keep += "ROS_LOCATIONS"
+Defaults env_keep += "ROS_HOME"
+Defaults env_keep += "ROS_LOG_DIR"
+EOT
-# copy aruco.launch and clever.launch: TODO???
+# configure aruco.launch and clever.launch (for positioning with aruco map)
+sed -i '/' /home/pi/catkin_ws/src/clever/clever/launch/aruco.launch
+sed -i '/' /home/pi/catkin_ws/src/clever/clever/launch/aruco.launch
+sed -i '/' /home/pi/catkin_ws/src/clever/clever/launch/aruco.launch
+sed -i '/' /home/pi/catkin_ws/src/clever/clever/launch/clever.launch
+
+# copy office map to animation map if there is no animation map file
+if ! [ -f "/home/pi/catkin_ws/src/clever/aruco_pose/map/animation_map.txt" ] ; then
+ sudo -u pi cp /home/pi/catkin_ws/src/clever/aruco_pose/map/office.txt /home/pi/catkin_ws/src/clever/aruco_pose/map/animation_map.txt
+fi
-# install samba and winbind
+# install samba and winbind (for hostname resolving)
apt-get -y install samba
apt-get -y install winbind
# set /etc/nsswitch.conf
sed -i '/hosts:/c hosts: files dns wins' /etc/nsswitch.conf
+# install chrony (for time syncing)
+apt-get -y install chrony
+
+# configure chrony as client
+cat << EOF | tee /etc/chrony/chrony.conf
+server $4 iburst
+driftfile /var/lib/chrony/drift
+makestep 1.0 3
+rtcsync
+EOF
+
+# change server ip in client_config
+sed -i "0,/^host/s/\(^h.*\)/host = $4/" client_config.ini
+
+# set roscore service to restart on-failure
+sed -i '/Restart=/c Restart=on-failure\
+RestartSec=3' /lib/systemd/system/roscore.service
+
# restart clever
reboot
\ No newline at end of file