-
Notifications
You must be signed in to change notification settings - Fork 3
Collecting first sample using a single antenna method
Steps explaining how the data pipeline was structured for our hardware experiments to collect displacement and CSI data for robots. We note that an additional backbone communication network is required to enable file transfer between robots via ssh (or to a remote computer). Note that the CSI data collection steps pertain specifically to using Intel 5300 WiFi card and might be different for other cards.
For the sake of simplicity we assume that there is one receiving robot (or a remote computer) on which the WSR-Toolbox-cpp core library has been been installed. The WiFi Driver needs to be configured for all the robots (both transmitting and receiving).
Steps
1. Load the network interface (using the same channel) and set to monitor mode for all the robots. This is required everytime a robot is rebooted.
On signal receiving robot
sudo ./WSR-WifiDriver/setup.sh 57 108 HT20
On signal transmitting robot
sudo ./WSR-WifiDriver/setup.sh 59 108 HT20
sudo ~/WSR-Toolbox-linux-80211n-csitool-supplementary/netlink/log_to_file csi.dat
For our experiments, we remotely trigger shell scripts to run this command on the transmitting robot when the receiving robot needs to obtain relative bearing. To remotely run code that requires sudo access, the suoders file need to be edited.
3. The receiving robot initiates a packet broadcast whenever it needs to get relative bearing to other robots. Start packet transmission as follows:
sudo ./WSR-Toolbox-linux-80211n-csitool-supplementary/injection/random_packets <total_packets to send> <packet_size> 1 <frequency>
e.g. To send 10000 packets, each of size 59 with 1000 packets sent every 100 ms
sudo ./linux-80211n-csitool-supplementary/injection/random_packets 100000 59 1 1000
The random_packets code is internally modified to broadcast packets of different lengths in a round-robin fashion so as to avoid packet contention leading to error in CSI data collected from the Intel 5300 card. The modifications to WiFi driver enables automatic re-transmission of packets from the transmitting robots.
We use the ROS to control our robot and the pose data stored in a vector using a callback function is dumped to a csv file once the robot displacement is completed. In our experiments, we start the receiving robot from a stationary position, but the experiment pipeline can be structured so as to capture the displacement of a moving robot when the packet transmission starts like show for one instance here.
The location of the input files need to be updated in the configuration file parameters.
6. The core library running on the receiving robot can now calculate relative bearing to each of the transmitting robot by reading all the necessary input data.
Refer the code execution step in the WSR-Toolbox-cpp readme.
cd wsr_build
./test_wsr gt