![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange
![]() |
odri_master_board_sdk package from odri_master_board repoodri_master_board_sdk |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.7 |
License | BSD 3-Clause |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stack-of-tasks/odri_master_board_sdk_release.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-07-05 |
Dev Status | MAINTAINED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maximilien Naveau
- Olivier Stasse
- Guilhem Saurel
Authors
SDK
The SDK provide a simple C++ class interface to send command to the masterboard via Ethernet or Wifi.
Prepare you interface
You first need to identify you interface name. To get a list of the interface on your computer, run
Ethernet
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.
Optional configuration:
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
net.ipv6.conf.MY_INTERFACE.disable_ipv6 = 1
where MY_INTERFACE is your lan interface name.
Optional configuration (macOS):
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
Wifi
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.
How to run the C++ example
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.
How to run the Python examples
-
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
How to run an executable based on the SDK without root permissions
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
File truncated at 100 lines see the full file
Changelog for package odri_master_board_sdk
1.0.7 (2024-06-24)
- Fix header to have the package working on Noble (@olivier-stasse)
- Fix building Python bindings on Mac (@ManifoldFR)
- Remove fetching Catch2 v3 and detect automatically the installed version. (@olivier-stasse)
- Add Rolling github action (@olivier-stasse)
1.0.6 (2023-11-15)
- Makes cmake-format happy !
- [CMakeList.txt] Fix CMakeLists.txt to install the header.
- Add cmake-format.
- Change name of the package to make it release in ROS-2.
- CMake: update submodule use
- CMake: bump catch2
- Partial support of the new Power-Board hardware
- Fix two bugs (FLOAT_TO_D8QN and compiling issue) + remove warnings on the core library.
- [master_board_sdk] Fix compilation error on master_board_interface.cpp l.263 Introduced by commit 782c348 it fails because %s is expecting char * and not std::string. This fails on clang.
- [master_board_sdk] Fix warnings. There are still some warnings wih Catch2 and clang. But Catch2 is a dependency and should be fixed upstream.
- [protocol] FLOAT_TO_D8QN has a wrong bracket. This commit fix this.
- [cmake] Synchronize to remove error during install process.
- Add error, thrown by sdk, for protocol version mismatch (during init)
- Add ament_cmake build_type export in package.xml and install package.xml file
- Update sdk/master_board_sdk/CMakeLists.txt
- [master_board_sdk/CMakeLists.txt] Remove useless CMAKE_PREFIX_INSTALL specification.
- [master_board_sdk/package.xml] Remove ament_cmake dependency and buildtool dependency.
- [CMakeLists.txt] Remove dependency to ament_cmake and generates files for Colcon underlays.
- [package.xml] Add dependence to ament_cmake if ROS-2 is detected.
- [CMakeLists.txt] Uses ROS-2 if the environment is compatible.
- [package.xml] Add ament_cmake export for colcon support.
- [cmake] Add install procedure for file package.xml
- Adding ROS-2 rolling CI to the repository and some changes to have it working.
- [sdk/master_board_sdk/tests/test_protocol.cpp] Commented the test on NaN which is failing.
- [sdk/master_board_sdk/package.xml] Fix package dependency. Update version to 3. Add dependencies to libboost-python. Add git for dependencies.
- [cmake/sdk_master_board/CMakeLists.txt] Improve CMakeLists.txt.
- [cmake/master_board_sdk/CMakeLists.txt] Removing components
- [cmake] Change again python detection place.
- [cmake] Change place for python detection
- [sdk/master_board_sdk/CMakeLists.txt] Update Find Python detection. Update message when detection is failing.
- [Cmake] remove python components.
- [master_board_sdk/CMakeLists.txt] Provides better Python detection
- [cmake] Synchronize
- [package.xml] XML version 1.0
- [package.xml] Remove Boost depend.
- Cmake
- pre-commit run -a
- sync submodule
- (Small) Fix for sdk examples with python >=3.8
- Apple support for wired connection.
- [Link_manager] Fix message when the priority is not set correctly and fails using assert.
- [cmake] Switch back the default to ON if this is not an APPLE platform
- Add Python bindings for SetKp/Kd/SaturationCurrent and fix example.py
- Zero-initialise all members of Motor
- Change macro name for platform from UNIX to linux. Include net/if_arp.h only for APPLE.
- Fix missing header.
- Fix wrong elif condition and missing brackets.
- Apple support for wired connection.
- example.py: Initialise all reference values and gains to zero This should not really be needed anymore since values are already zero-initialised in [Motor]{.title-ref} but better be safe than sorry.
- fix example.py: time.clock() has been removed [time.clock()]{.title-ref} has been deprecated in Python 3.3 and does not exist anymore in newer versions. Use [perf_counter]{.title-ref} instead.
- Add Python bindings for Motor::SetKp/Kd/SaturationCurrent At least by now they are implemented in motor.cpp, so there's no reason to not add bindings for them.
- Zero-initialise all members of Motor This should fix an issue that was likely caused by [kp]{.title-ref} being set to some random non-zero value, resulting in the motor unintentionally being held at some position.
- Missing include
- plateform and distro modules optionnal for sdk example com_analyser.py
- Swap process_time and clock for better intelligibility
File truncated at 100 lines see the full file