Skip to content

Collecting first sample using a single antenna method

ninja-hu edited this page Dec 31, 2022 · 2 revisions

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.

Workflow diagram for using toolbox with multiple robots

Workflow

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

2. To log CSI data to a file run the following on all the robots.

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.

4. The packet transmission runs for the receiving robot's short displacement between (50 - 100 cm).

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.

5. Fetch the logged .dat files logged on the transmitting robot to the receiving robot (over SSH).

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