The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
You first need to identify you interface name. To get a list of the interface on your computer, run ifconfig
A direct connection should me made between the master board and you computer. It is not possible to use the same interface for local network and master board connection.
Some packet will be sent by the OS to the master board. Their are not usefull since the master board only use raw MAC frame. To disable ARP packet run:
sudo ifconfig MY_INTERFACE -arp
where MY_INTERFACE is your lan interface name.
To disable IPV6 trafic, add this line into /etc/sysctl.conf
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
To disable IPV6 and IPV4 you can use
networksetup -listnetworkserviceorder
to have the list of NetworkService (Hardware Port) related to the interface.
It is then possible to switch off IPV6 with:
networksetup -setv6off NetworkService
Your interface should support monitor mode and injection since the procol used by the master board is not a standard wifi. You need to configure your interface. A script is available in the sdk folder. to use it run
sudo ./setup_wifi.sh MY_INTERFACE
where MY_INTERFACE your wlan interface name.
main.cpp is a simple example to test the SDK, tested on ubuntu. It will execute a sinusoid trajectory on the first N_CONTROLLED_SLAVE to compile it go into the sdk folder and run:
make
a bin folder is created. to run the example run:
sudo ./bin/exec MY_INTERFACE
where MY_INTERFACE is the name of the network interface used to connect to the master board.
-
Clone the repository:
git clone --recursive https://github.com/open-dynamic-robot-initiative/master-board.git
-
Get into the repository:
cd master-board
-
Set the number of controlled drivers by opening
sdk/master_board_sdk/example/example.py
and tuning theN_SLAVES_CONTROLED
constant:N_SLAVES_CONTROLED 4
if you are using 4 driver boards (1 per leg) -
Get in
sdk/master_board_sdk/
:cd sdk/master_board_sdk/
-
Create a build folder:
mkdir build
-
Get into the folder:
cd build
-
Two possibilities:
- Using
ccmake ..
turn on Python bindings by settingBUILD_PYTHON_INTERFACE
toON
andCMAKE_BUILD_TYPE
toRELEASE
. Then compile and create the bindings:cmake ..
thenmake
- Directly use
cmake -DBUILD_PYTHON_INTERFACE=ON -DCMAKE_BUILD_TYPE=RELEASE ..
thenmake
. If you want to run the scripts with Python 3 then usecmake -DBUILD_PYTHON_INTERFACE=ON -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$(which python3) ..
instead.
- Using
-
Run the control script with the name of your Ethernet interface instead of
name_interface
(for instanceenp1s0
):
sudo PYTHONPATH=. python example/example.pyc -i name_interface
- Run the listener script with the name of your Ethernet interface instead of
name_interface
(for instanceenp1s0
):
sudo PYTHONPATH=. python example/listener.pyc -i name_interface
- Run the communication analyser script with the name of your Ethernet interface instead of
name_interface
(for instanceenp1s0
):
sudo PYTHONPATH=. python example/com_analyser.pyc -i name_interface
To run an executable named EXECUTABLE_NAME without root permissions, run :
sudo setcap cap_net_admin,cap_net_raw+ep EXECUTABLE_NAME
remember to reset the capabilities on python if you use it other you can get into trouble:
sudo setcap -r /usr/bin/python3.6