No version for distro humble. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.

odri_master_board_sdk package from odri_master_board repo

odri_master_board_sdk

Package Summary

Tags No category tags.
Version 1.0.6
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 master
Last Updated 2024-04-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

This project contains the sdk for the communication between a computer and the master-board

Additional Links

No additional links.

Maintainers

  • Maximilien Naveau
  • Olivier Stasse
  • Guilhem Saurel

Authors

No additional 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 ifconfig

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 /etc/sysctl.conf

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 the N_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 setting BUILD_PYTHON_INTERFACE to ON and CMAKE_BUILD_TYPE to RELEASE. Then compile and create the bindings: cmake .. then make
    • Directly use cmake -DBUILD_PYTHON_INTERFACE=ON -DCMAKE_BUILD_TYPE=RELEASE .. then make. If you want to run the scripts with Python 3 then use cmake -DBUILD_PYTHON_INTERFACE=ON -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$(which python3) .. instead.
  • Run the control script with the name of your Ethernet interface instead of name_interface (for instance enp1s0):

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 instance enp1s0):

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 instance enp1s0):

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

CHANGELOG

Changelog for package odri_master_board_sdk

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
  • Protocol version added in init_ack packet & version mismatch throw runtime error in sdk
  • Fix sdk examples for python version >=3.8
  • CMake: add unit tests
  • Fix minor build error and update cmake submodule
  • CMake: add unit tests
  • Handle out-of-range motor params without wraparound (#117) Avoid fixed-point overflow
  • Minor CMakelist change and cmake update
  • SDK: fix a few warnings
  • [CMake] set RPATH for executables
  • SDK: fix warnings
  • Add Python bindings for powerboard data
  • add pyton bindings for power baord
  • [SDK][Firmware] Add partial support for power-board, Update protocol version and sdk accordingly
  • Contributors: EtienneAr, Felix Kloss, Guilhem Saurel, Naveau, Olivier Stasse, Thomas Flayols, Trevor Blackwell, odri, thomasfla

1.0.5 (2022-06-30)

  • Merge pull request #110 from open-dynamic-robot-initiative/fwidmaier/version Bump version to 1.0.5 and add changelog
  • Bump version to 1.0.5 and add changelog
  • fix package.xml for catkin build compatibility
  • Merge pull request #109 from open-dynamic-robot-initiative/jviereck/mailbox_only Use mailbox for SPI communication
  • fix example_imu_data_collection
  • Add MasterBoardInterface::get_imu_data() Add method to easily get the full IMU data.
  • Adding CMakeList entry for new example
  • Adding example for collecting and plotting IMU data for 10 seconds
  • SDK: cherry-pick fixes, fix #106 initial commit: 32b0252c64a064c55e8cd07115a003b15c0d0a86
  • Contributors: Felix Widmaier, Guilhem Saurel, Julian Viereck, Maximilien Naveau

1.0.4 (2021-07-21)

  • Merge pull request #99 from paLeziart/add-parse-sensor-data Add parse sensor data
  • Add comment to explain the call to ParseSensorData
  • Add a ParseSensorData in MasterBoardInterface Init function
  • Merge pull request #97 from open-dynamic-robot-initiative/jviereck/fix_regression Fix problem with reference to packed fields in MasterBoardInterface ParseSensorData
  • Fix problem with reference to packed fields in MasterBoardInterface::ParseSensorData
  • Merge pull request #94 from open-dynamic-robot-initiative/jviereck/fix92 Set close to zero velocity to zero. Fixes #92
  • Address review comments
  • Set close to zero velocity to zero. Fixes #92
  • Contributors: Julian Viereck, odri, paLeziart

1.0.3 (2021-06-09)

  • Merge pull request #90 from open-dynamic-robot-initiative/mnaveau/python_bindings_by_default Update CMakeLists.txt
  • Update CMakeLists.txt
  • Contributors: Naveau

1.0.2 (2021-05-11)

1.0.1 (2021-04-16)

  • Merge pull request #82 from open-dynamic-robot-initiative/jviereck/attempt_three Make communication more robust
  • Increase the CONFIG_SPI_N_ATTEMPT from 2 to 3. Add a counter in the example to see number of times an error was reported
  • Merge pull request #78 from open-dynamic-robot-initiative/mnaveau/missing_definition [sdk] fix missing definition from the Motor class
  • Merge pull request #77 from open-dynamic-robot-initiative/jviereck/error_encoder_2 SDK: Adding error code for encoder2 error
  • Merge pull request #75 from open-dynamic-robot-initiative/mbogdanovic/fix_stat_overflow SDK: Fix bug/crash with overflow in statistic computation
  • [sdk] fix missing definition from the Motor class
  • SDK: Adding error code for encoder2 error
  • Update README.md
  • Update README.md
  • SDK: Fix bug/crash with overflow in statistic computation
  • Merge pull request #72 from open-dynamic-robot-initiative/mnaveau/export_library Warning Hunt and CMake export.
  • update target names
  • update the interface to double values
  • remove warning in the example_pd
  • fix a couple of warnings
  • Synchronize.
  • export the includes and install them
  • fix project name
  • add Boost to the package.xml
  • add the license and package.xml
  • export the cmake library
  • Merge pull request #74 from open-dynamic-robot-initiative/jviereck/current_sat [SDK] Add support for current saturation
  • [SDK] Add support for current saturation
  • Merge pull request #71 from thomasfla/master Add local joint impedance control interface + improve python binding packaging
  • Merge pull request #1 from nim65s/master Update CMake
  • CMake: ensure python lib always find c++ lib
  • CMake: fix sdk installation path, fix #45
  • CMake: update submodule and its use
  • Tune data representation in the protocol for usefull gains levels, Fix conevrsion of Kp Kd
  • Add IQ scalling for Kp and Kd values
  • Merge pull request #66 from maximekli/internship-major-refactor [Firmware][SDK][Doc] Major refactor and protocol update;
  • Merge pull request #19 from AlexisPotier/communication Fixed overflow issue in com analyser script
  • Fixed overflow issue on com_analyser
  • Plot graphs even if the script is stopped by a master board timeout
  • Merge pull request #17 from AlexisPotier/communication Better way to get wifi channel
  • Better way to get wifi channel
  • Removed listener mode special case because mb does not send packets in waiting for init anymore
  • Merge pull request #3 from maximekli/master Update fork
  • Merge pull request #15 from AlexisPotier/communication Added communication analyser script to test the network link between PC and MB + channel 14 support
  • Small refactor
  • Replaced latency script by communication analyser script
  • Added getters for wifi channel and protocol version
  • Enable channel 14 for wifi communication
  • Merge pull request #2 from maximekli/master Update fork
  • Merge branch \'AlexisPotier-print\'
  • Merge branch \'print\' of https://github.com/AlexisPotier/master-board into AlexisPotier-print + some formatting
  • Avoid displaying headers when there is no spi connected
  • Merged PrintCmdStats and PrintSensorStats, improved the display of wifi/eth stats
  • Improved the display of IMU, ADC and motors data
  • Revert \"Changing scheduler param to realtime in examples\" This reverts commit beead35848bc759a2ef147b0a68dc79b47e57f74.
  • Improving display of latency test result
  • Changed protocol version from 2 to 3
  • Merge pull request #13 from AlexisPotier/latency Latency script for network link into master branch
  • Changing scheduler param to realtime in examples
  • Documentation update : added informations about the latency calculator script
  • Creation of a python script to compute the latency of the wifi/ethernet communication
  • Changed the protocol to be able to compute the latency for ethernet/wifi communication
  • Initialization of pointer + extra safety when stopping the interface
  • Added member function to check if driver is enabled
  • Fix division by zero
  • git push origin masterMerge branch \'AlexisPotier-master\'
  • Merge branch \'master\' of https://github.com/AlexisPotier/master-board into AlexisPotier-master
  • Fix for command loss feedback reset and overflow
  • Get first packet loss to avoid jump in value
  • Proper getter and setters for a few driver properties
  • git push origin masterMerge branch \'maximekli-master\'
  • Merge branch \'master\' of https://github.com/maximekli/master-board into maximekli-master
  • Merge branch \'memory_leaks\'
  • Merge branch \'signal_handler\'
  • Small fixes after merge
  • git push origin masterMerge branch \'AlexisPotier-signal_handler\'
  • Merge branch \'signal_handler\' of https://github.com/AlexisPotier/master-board into AlexisPotier-signal_handler
  • git push origin masterMerge branch \'AlexisPotier-memory_leaks\'
  • Merge branch \'memory_leaks\' of https://github.com/AlexisPotier/master-board into AlexisPotier-memory_leaks
  • Small refactor when checking drivers
  • Free link_handler when the program is stopped by SIGINT signal
  • Removed \"virtual\" keyword for stop function in ESPNOW_manager
  • Close correctly the pthread to avoid memory leaks
  • Added destructors in the interface to close correctly link_handler_ and avoid memory leaks
  • Small refactor
  • Added extra safety when closing interface
  • Merge pull request #5 from AlexisPotier/master Fix seg fault on stopping the interface
  • Added default argument for listener mode in interface constructor
  • Handling Keyboard Interrupt signal to close threads correctly when the script is interrupted by the user
  • Update doc with listener example
  • Updated outdated doc
  • Added connected status as an attribute in motor_driver class and adapting interface and example with it
  • Small refactor
  • Rework for listener to work in more cases Added getters for session id and reset packet loss stats method
  • Override stop method to stop differently wifi and ethernet connexions
  • Initialization of bpf in ESPNOW_manager
  • Small refactor on shutting down the interface
  • Little fix
  • Merge branch \'feedback_on_packet_loss\'
  • Merge branch \'AlexisPotier-feedback_on_packet_loss\'
  • Merge branch \'feedback_on_packet_loss\' of https://github.com/AlexisPotier/master-board into AlexisPotier-feedback_on_packet_loss
  • Added getters for feedback and changed stats print functions
  • Created listener script that gathers sensor data from any connected mb
  • Adapted both examples for the new listener mode
  • Added listener mode to the interface that allows to get sensor data from any running mb (no session id checking)
  • Updated python example with failed spi transactions support
  • Added failed spi transactions support to example
  • Added protocol version to init msgs in interface
  • Updating interface and examples with the connected spi slaves feedback
  • Removed state machine test example
  • Fixed the error (invalid pointer) occurring at the end of the example
  • Fixed the segmentation fault occurring at the end of the example
  • Merge branch \'AlexisPotier-new_branch\'
  • Merge branch \'new_branch\' of https://github.com/AlexisPotier/master-board into AlexisPotier-new_branch
  • Giving feedback on packet loss
  • update files to merge
  • update feedback packet loss using latest version
  • Merge branch \'master\' of https://github.com/open-dynamic-robot-initiative/master-board
  • Merge pull request #62 from open-dynamic-robot-initiative/fwidmaier/fix-clang-error Using constant value for array length
  • Using constant value for array length Using the value from [this->bpf.len]{.title-ref} for defining the array length seems to be accepted by GCC but resulted in an error with clang. Therefore store the value to a constexpr and use that instead.
  • Merge branch \'master\' of https://github.com/AlexisPotier/master-board
  • add feedback on packet loss
  • Merge pull request #59 from AlexisPotier/master Added setcap solution in the SDK documentation and fixed a problem with the images in the SPI documentation
  • Update README.md
  • Adapting the examples for the new interface timeout (while waiting for acknowledgment)
  • Adding a new timeout to the interface in order to shut it down if we wait for an acknowledgment msg for too long
  • Added session id handling in sdk interface
  • Moving the master board state machine test program to its own folder and editing the CMakeLists and README files to run it
  • New python test file in the sdk to demonstrate every state of the master board state machine
  • Adapting python example for use with new master board state machine. Runs ok but seg fault in the end while stoping interface.
  • Adapting python master board sdk for use with new state machine
  • Small change to match previous commit
  • Small method name change to be more consistent with previous code
  • Adapting the example for use with the new master board firmware that uses init messages
  • Adapting master board interface for the new masterboard firmware that uses init messages. Not adapted for use with python.
  • Merge pull request #55 from open-dynamic-robot-initiative/jviereck/link_manager_destruct LinkManager: Close connection on destruction
  • LinkManager: Close connection on destruction
  • Merge pull request #52 from thomasfla/fix_linacc [sdk] rescale linear acceleration to SI, fix typo in python bindings
  • [sdk] rescale linear acceleration to SI, fix typo in python bindings
  • Merge pull request #35 from paLeziart/guide_python_script [SDK] Small guide on how to compile and launch the Python example
  • Merge pull request #50 from thomasfla/encoders_offset [SDK] Add a settable offset on position reading and reference positio...
  • Merge pull request #49 from open-dynamic-robot-initiative/mnaveau/timeout_send_command Timeout of the SendCommand only after the first command
  • Update the timeout of the SendCommand only after the first command as been set.
  • [SDK] Small guide on how to compile and launch the Python example
  • [SDK] Add a settable offset on position reading and reference position. Usefull for encoder offset calibration routines
  • Merge pull request #46 from thomasfla/tflayols_devel [SDK] [Firmware] Expose estimated linear acceleration from IMU
  • [SDK] expose accelerations in m/s^2 instead of g
  • [Firmware][SDK] Configure IMU to send linear acceleration estimate, adapt protocol and sdk to read it. Warning! Protocol has changed, the Master board needs to be flashed
  • [SDK] Remove N_SLAVE_CONTROLED from the library, use it only in the example; Set default value to 1
  • Merge pull request #34 from nim65s/master [Python] replace getopt by argparse
  • Merge pull request #40 from nim65s/cmake [CMake] PKG_CONFIG_APPEND_BOOST_LIBS has been fixed
  • Merge pull request #42 from open-dynamic-robot-initiative/jviereck/si_velocity_example_py_followup Update example.py as for d gain si unites
  • Update example.py as followup to #39.
  • Merge pull request #39 from open-dynamic-robot-initiative/jviereck/fix38_si_velocity [sdk] Fix velocity si unit conversion. Fixes #38
  • [CMake] PKG_CONFIG_APPEND_BOOST_LIBS has been fixed
  • [Python] replace getopt by argparse Which is cleaner, and comes with more functionnalities
  • [Python] avoid lines > 120 chars
  • [sdk] Fix velocity si unit conversion. Fixes #38
  • Merge pull request #36 from paLeziart/fix_typos_connection [SDK] Fix typos: connection instead of connexion
  • [SDK] Fix typos: connection instead of connexion
  • Merge pull request #33 from nim65s/master [CMake] clean master_board_sdk
  • [CMake] PKG_CONFIG_APPEND_BOOST_LIBS doesn\'t work with boost python for now
  • [CMake] typo
  • [CMake] build python example
  • [CMake] sync submodule
  • remove symlinks build directory could be anywhere
  • [CMake] python .pc is configured in scrcpy/
  • [CMake] build python .so in standard place
  • [CMake] install python .so in PYTHON_SITELIB
    • CMAKE_INSTALL_PREFIX is implied
    • PROJECT_NAME has dashes, so this can\'t work with python import system
  • [CMake] boost python is required for python
  • [CMake] update project definition
  • [CMake] remove end-of-line spaces
  • Merge pull request #29 from paLeziart/IMU_bindings [SDK] Python bindings for IMU data (accelerometer, gyroscope, attitude)
  • Merge pull request #30 from paLeziart/shutdown-timeout [SDK] Timeout of MasterBoardInterface if the master board is not resp...
  • [SDK] Timeout of MasterBoardInterface if the master board is not responding
  • [SDK] Python bindings for IMU data (accelerometer, gyroscope, attitude)
  • Merge pull request #26 from open-dynamic-robot-initiative/tflayols_devel [Firmware] Fix the IMU driver to deal with combined messages from IMU ...
  • [sdk] fix makefile
  • Merge pull request #25 from paLeziart/bindings_adc_and_gains [SDK] Adapting gains for SI units + Python bindings for adc property ...
  • [SDK] Adapting gains for SI units + Python bindings for adc property and printADC function
  • Merge pull request #20 from paLeziart/noprintf [SDK] Option to have no printf when running on realtime loop
  • [SDK] Option to have no printf when running on realtime loop
  • Merge pull request #9 from open-dynamic-robot-initiative/jviereck_adc Add support for reading and printing ADC values from the cards
  • Set SP_QN_ADC and UD_QN_ADC from 14 back to 16
  • Merge branch \'master\' into jviereck_adc
  • Merge pull request #14 from open-dynamic-robot-initiative/jviereck_motor_si_units Changes motor position, velocities, kp and kd to SI units
  • Merge pull request #17 from paLeziart/master [SDK] Python bindings of MasterBoardInterface, MotorDriver and Motor ...
  • [SDK] Python bindings of MasterBoardInterface, MotorDriver and Motor classes with Boost + example.py script
  • Changes motor position, velocities, kp and kd to SI units
  • Add support for reading and printing ADC values from the cards
  • Merge pull request #7 from open-dynamic-robot-initiative/mnaveau/catkin_compatiblity catkin compatiblity
  • fix the move of the sdk include to a sub-folder
  • move the include in a subfolder call master_board_sdk for general packaging consistency
  • moved all the files to clean the sdk folder
  • Contributors: AlexisPotier, Felix Widmaier, Guilhem Saurel, Julian Viereck, Maxime K, Maximilien Naveau, MaximilienNaveau, Miroslav Bogdanovic, Naveau, Pierre-Alexandre Leziart, Thomas Flayols, jviereck@tuebingen.mpg.de, maximekli, paLeziart, thomasfla

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange

odri_master_board_sdk package from odri_master_board repo

odri_master_board_sdk

Package Summary

Tags No category tags.
Version 1.0.6
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 master
Last Updated 2024-04-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

This project contains the sdk for the communication between a computer and the master-board

Additional Links

No additional links.

Maintainers

  • Maximilien Naveau
  • Olivier Stasse
  • Guilhem Saurel

Authors

No additional 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 ifconfig

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 /etc/sysctl.conf

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 the N_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 setting BUILD_PYTHON_INTERFACE to ON and CMAKE_BUILD_TYPE to RELEASE. Then compile and create the bindings: cmake .. then make
    • Directly use cmake -DBUILD_PYTHON_INTERFACE=ON -DCMAKE_BUILD_TYPE=RELEASE .. then make. If you want to run the scripts with Python 3 then use cmake -DBUILD_PYTHON_INTERFACE=ON -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$(which python3) .. instead.
  • Run the control script with the name of your Ethernet interface instead of name_interface (for instance enp1s0):

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 instance enp1s0):

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 instance enp1s0):

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

CHANGELOG

Changelog for package odri_master_board_sdk

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
  • Protocol version added in init_ack packet & version mismatch throw runtime error in sdk
  • Fix sdk examples for python version >=3.8
  • CMake: add unit tests
  • Fix minor build error and update cmake submodule
  • CMake: add unit tests
  • Handle out-of-range motor params without wraparound (#117) Avoid fixed-point overflow
  • Minor CMakelist change and cmake update
  • SDK: fix a few warnings
  • [CMake] set RPATH for executables
  • SDK: fix warnings
  • Add Python bindings for powerboard data
  • add pyton bindings for power baord
  • [SDK][Firmware] Add partial support for power-board, Update protocol version and sdk accordingly
  • Contributors: EtienneAr, Felix Kloss, Guilhem Saurel, Naveau, Olivier Stasse, Thomas Flayols, Trevor Blackwell, odri, thomasfla

1.0.5 (2022-06-30)

  • Merge pull request #110 from open-dynamic-robot-initiative/fwidmaier/version Bump version to 1.0.5 and add changelog
  • Bump version to 1.0.5 and add changelog
  • fix package.xml for catkin build compatibility
  • Merge pull request #109 from open-dynamic-robot-initiative/jviereck/mailbox_only Use mailbox for SPI communication
  • fix example_imu_data_collection
  • Add MasterBoardInterface::get_imu_data() Add method to easily get the full IMU data.
  • Adding CMakeList entry for new example
  • Adding example for collecting and plotting IMU data for 10 seconds
  • SDK: cherry-pick fixes, fix #106 initial commit: 32b0252c64a064c55e8cd07115a003b15c0d0a86
  • Contributors: Felix Widmaier, Guilhem Saurel, Julian Viereck, Maximilien Naveau

1.0.4 (2021-07-21)

  • Merge pull request #99 from paLeziart/add-parse-sensor-data Add parse sensor data
  • Add comment to explain the call to ParseSensorData
  • Add a ParseSensorData in MasterBoardInterface Init function
  • Merge pull request #97 from open-dynamic-robot-initiative/jviereck/fix_regression Fix problem with reference to packed fields in MasterBoardInterface ParseSensorData
  • Fix problem with reference to packed fields in MasterBoardInterface::ParseSensorData
  • Merge pull request #94 from open-dynamic-robot-initiative/jviereck/fix92 Set close to zero velocity to zero. Fixes #92
  • Address review comments
  • Set close to zero velocity to zero. Fixes #92
  • Contributors: Julian Viereck, odri, paLeziart

1.0.3 (2021-06-09)

  • Merge pull request #90 from open-dynamic-robot-initiative/mnaveau/python_bindings_by_default Update CMakeLists.txt
  • Update CMakeLists.txt
  • Contributors: Naveau

1.0.2 (2021-05-11)

1.0.1 (2021-04-16)

  • Merge pull request #82 from open-dynamic-robot-initiative/jviereck/attempt_three Make communication more robust
  • Increase the CONFIG_SPI_N_ATTEMPT from 2 to 3. Add a counter in the example to see number of times an error was reported
  • Merge pull request #78 from open-dynamic-robot-initiative/mnaveau/missing_definition [sdk] fix missing definition from the Motor class
  • Merge pull request #77 from open-dynamic-robot-initiative/jviereck/error_encoder_2 SDK: Adding error code for encoder2 error
  • Merge pull request #75 from open-dynamic-robot-initiative/mbogdanovic/fix_stat_overflow SDK: Fix bug/crash with overflow in statistic computation
  • [sdk] fix missing definition from the Motor class
  • SDK: Adding error code for encoder2 error
  • Update README.md
  • Update README.md
  • SDK: Fix bug/crash with overflow in statistic computation
  • Merge pull request #72 from open-dynamic-robot-initiative/mnaveau/export_library Warning Hunt and CMake export.
  • update target names
  • update the interface to double values
  • remove warning in the example_pd
  • fix a couple of warnings
  • Synchronize.
  • export the includes and install them
  • fix project name
  • add Boost to the package.xml
  • add the license and package.xml
  • export the cmake library
  • Merge pull request #74 from open-dynamic-robot-initiative/jviereck/current_sat [SDK] Add support for current saturation
  • [SDK] Add support for current saturation
  • Merge pull request #71 from thomasfla/master Add local joint impedance control interface + improve python binding packaging
  • Merge pull request #1 from nim65s/master Update CMake
  • CMake: ensure python lib always find c++ lib
  • CMake: fix sdk installation path, fix #45
  • CMake: update submodule and its use
  • Tune data representation in the protocol for usefull gains levels, Fix conevrsion of Kp Kd
  • Add IQ scalling for Kp and Kd values
  • Merge pull request #66 from maximekli/internship-major-refactor [Firmware][SDK][Doc] Major refactor and protocol update;
  • Merge pull request #19 from AlexisPotier/communication Fixed overflow issue in com analyser script
  • Fixed overflow issue on com_analyser
  • Plot graphs even if the script is stopped by a master board timeout
  • Merge pull request #17 from AlexisPotier/communication Better way to get wifi channel
  • Better way to get wifi channel
  • Removed listener mode special case because mb does not send packets in waiting for init anymore
  • Merge pull request #3 from maximekli/master Update fork
  • Merge pull request #15 from AlexisPotier/communication Added communication analyser script to test the network link between PC and MB + channel 14 support
  • Small refactor
  • Replaced latency script by communication analyser script
  • Added getters for wifi channel and protocol version
  • Enable channel 14 for wifi communication
  • Merge pull request #2 from maximekli/master Update fork
  • Merge branch \'AlexisPotier-print\'
  • Merge branch \'print\' of https://github.com/AlexisPotier/master-board into AlexisPotier-print + some formatting
  • Avoid displaying headers when there is no spi connected
  • Merged PrintCmdStats and PrintSensorStats, improved the display of wifi/eth stats
  • Improved the display of IMU, ADC and motors data
  • Revert \"Changing scheduler param to realtime in examples\" This reverts commit beead35848bc759a2ef147b0a68dc79b47e57f74.
  • Improving display of latency test result
  • Changed protocol version from 2 to 3
  • Merge pull request #13 from AlexisPotier/latency Latency script for network link into master branch
  • Changing scheduler param to realtime in examples
  • Documentation update : added informations about the latency calculator script
  • Creation of a python script to compute the latency of the wifi/ethernet communication
  • Changed the protocol to be able to compute the latency for ethernet/wifi communication
  • Initialization of pointer + extra safety when stopping the interface
  • Added member function to check if driver is enabled
  • Fix division by zero
  • git push origin masterMerge branch \'AlexisPotier-master\'
  • Merge branch \'master\' of https://github.com/AlexisPotier/master-board into AlexisPotier-master
  • Fix for command loss feedback reset and overflow
  • Get first packet loss to avoid jump in value
  • Proper getter and setters for a few driver properties
  • git push origin masterMerge branch \'maximekli-master\'
  • Merge branch \'master\' of https://github.com/maximekli/master-board into maximekli-master
  • Merge branch \'memory_leaks\'
  • Merge branch \'signal_handler\'
  • Small fixes after merge
  • git push origin masterMerge branch \'AlexisPotier-signal_handler\'
  • Merge branch \'signal_handler\' of https://github.com/AlexisPotier/master-board into AlexisPotier-signal_handler
  • git push origin masterMerge branch \'AlexisPotier-memory_leaks\'
  • Merge branch \'memory_leaks\' of https://github.com/AlexisPotier/master-board into AlexisPotier-memory_leaks
  • Small refactor when checking drivers
  • Free link_handler when the program is stopped by SIGINT signal
  • Removed \"virtual\" keyword for stop function in ESPNOW_manager
  • Close correctly the pthread to avoid memory leaks
  • Added destructors in the interface to close correctly link_handler_ and avoid memory leaks
  • Small refactor
  • Added extra safety when closing interface
  • Merge pull request #5 from AlexisPotier/master Fix seg fault on stopping the interface
  • Added default argument for listener mode in interface constructor
  • Handling Keyboard Interrupt signal to close threads correctly when the script is interrupted by the user
  • Update doc with listener example
  • Updated outdated doc
  • Added connected status as an attribute in motor_driver class and adapting interface and example with it
  • Small refactor
  • Rework for listener to work in more cases Added getters for session id and reset packet loss stats method
  • Override stop method to stop differently wifi and ethernet connexions
  • Initialization of bpf in ESPNOW_manager
  • Small refactor on shutting down the interface
  • Little fix
  • Merge branch \'feedback_on_packet_loss\'
  • Merge branch \'AlexisPotier-feedback_on_packet_loss\'
  • Merge branch \'feedback_on_packet_loss\' of https://github.com/AlexisPotier/master-board into AlexisPotier-feedback_on_packet_loss
  • Added getters for feedback and changed stats print functions
  • Created listener script that gathers sensor data from any connected mb
  • Adapted both examples for the new listener mode
  • Added listener mode to the interface that allows to get sensor data from any running mb (no session id checking)
  • Updated python example with failed spi transactions support
  • Added failed spi transactions support to example
  • Added protocol version to init msgs in interface
  • Updating interface and examples with the connected spi slaves feedback
  • Removed state machine test example
  • Fixed the error (invalid pointer) occurring at the end of the example
  • Fixed the segmentation fault occurring at the end of the example
  • Merge branch \'AlexisPotier-new_branch\'
  • Merge branch \'new_branch\' of https://github.com/AlexisPotier/master-board into AlexisPotier-new_branch
  • Giving feedback on packet loss
  • update files to merge
  • update feedback packet loss using latest version
  • Merge branch \'master\' of https://github.com/open-dynamic-robot-initiative/master-board
  • Merge pull request #62 from open-dynamic-robot-initiative/fwidmaier/fix-clang-error Using constant value for array length
  • Using constant value for array length Using the value from [this->bpf.len]{.title-ref} for defining the array length seems to be accepted by GCC but resulted in an error with clang. Therefore store the value to a constexpr and use that instead.
  • Merge branch \'master\' of https://github.com/AlexisPotier/master-board
  • add feedback on packet loss
  • Merge pull request #59 from AlexisPotier/master Added setcap solution in the SDK documentation and fixed a problem with the images in the SPI documentation
  • Update README.md
  • Adapting the examples for the new interface timeout (while waiting for acknowledgment)
  • Adding a new timeout to the interface in order to shut it down if we wait for an acknowledgment msg for too long
  • Added session id handling in sdk interface
  • Moving the master board state machine test program to its own folder and editing the CMakeLists and README files to run it
  • New python test file in the sdk to demonstrate every state of the master board state machine
  • Adapting python example for use with new master board state machine. Runs ok but seg fault in the end while stoping interface.
  • Adapting python master board sdk for use with new state machine
  • Small change to match previous commit
  • Small method name change to be more consistent with previous code
  • Adapting the example for use with the new master board firmware that uses init messages
  • Adapting master board interface for the new masterboard firmware that uses init messages. Not adapted for use with python.
  • Merge pull request #55 from open-dynamic-robot-initiative/jviereck/link_manager_destruct LinkManager: Close connection on destruction
  • LinkManager: Close connection on destruction
  • Merge pull request #52 from thomasfla/fix_linacc [sdk] rescale linear acceleration to SI, fix typo in python bindings
  • [sdk] rescale linear acceleration to SI, fix typo in python bindings
  • Merge pull request #35 from paLeziart/guide_python_script [SDK] Small guide on how to compile and launch the Python example
  • Merge pull request #50 from thomasfla/encoders_offset [SDK] Add a settable offset on position reading and reference positio...
  • Merge pull request #49 from open-dynamic-robot-initiative/mnaveau/timeout_send_command Timeout of the SendCommand only after the first command
  • Update the timeout of the SendCommand only after the first command as been set.
  • [SDK] Small guide on how to compile and launch the Python example
  • [SDK] Add a settable offset on position reading and reference position. Usefull for encoder offset calibration routines
  • Merge pull request #46 from thomasfla/tflayols_devel [SDK] [Firmware] Expose estimated linear acceleration from IMU
  • [SDK] expose accelerations in m/s^2 instead of g
  • [Firmware][SDK] Configure IMU to send linear acceleration estimate, adapt protocol and sdk to read it. Warning! Protocol has changed, the Master board needs to be flashed
  • [SDK] Remove N_SLAVE_CONTROLED from the library, use it only in the example; Set default value to 1
  • Merge pull request #34 from nim65s/master [Python] replace getopt by argparse
  • Merge pull request #40 from nim65s/cmake [CMake] PKG_CONFIG_APPEND_BOOST_LIBS has been fixed
  • Merge pull request #42 from open-dynamic-robot-initiative/jviereck/si_velocity_example_py_followup Update example.py as for d gain si unites
  • Update example.py as followup to #39.
  • Merge pull request #39 from open-dynamic-robot-initiative/jviereck/fix38_si_velocity [sdk] Fix velocity si unit conversion. Fixes #38
  • [CMake] PKG_CONFIG_APPEND_BOOST_LIBS has been fixed
  • [Python] replace getopt by argparse Which is cleaner, and comes with more functionnalities
  • [Python] avoid lines > 120 chars
  • [sdk] Fix velocity si unit conversion. Fixes #38
  • Merge pull request #36 from paLeziart/fix_typos_connection [SDK] Fix typos: connection instead of connexion
  • [SDK] Fix typos: connection instead of connexion
  • Merge pull request #33 from nim65s/master [CMake] clean master_board_sdk
  • [CMake] PKG_CONFIG_APPEND_BOOST_LIBS doesn\'t work with boost python for now
  • [CMake] typo
  • [CMake] build python example
  • [CMake] sync submodule
  • remove symlinks build directory could be anywhere
  • [CMake] python .pc is configured in scrcpy/
  • [CMake] build python .so in standard place
  • [CMake] install python .so in PYTHON_SITELIB
    • CMAKE_INSTALL_PREFIX is implied
    • PROJECT_NAME has dashes, so this can\'t work with python import system
  • [CMake] boost python is required for python
  • [CMake] update project definition
  • [CMake] remove end-of-line spaces
  • Merge pull request #29 from paLeziart/IMU_bindings [SDK] Python bindings for IMU data (accelerometer, gyroscope, attitude)
  • Merge pull request #30 from paLeziart/shutdown-timeout [SDK] Timeout of MasterBoardInterface if the master board is not resp...
  • [SDK] Timeout of MasterBoardInterface if the master board is not responding
  • [SDK] Python bindings for IMU data (accelerometer, gyroscope, attitude)
  • Merge pull request #26 from open-dynamic-robot-initiative/tflayols_devel [Firmware] Fix the IMU driver to deal with combined messages from IMU ...
  • [sdk] fix makefile
  • Merge pull request #25 from paLeziart/bindings_adc_and_gains [SDK] Adapting gains for SI units + Python bindings for adc property ...
  • [SDK] Adapting gains for SI units + Python bindings for adc property and printADC function
  • Merge pull request #20 from paLeziart/noprintf [SDK] Option to have no printf when running on realtime loop
  • [SDK] Option to have no printf when running on realtime loop
  • Merge pull request #9 from open-dynamic-robot-initiative/jviereck_adc Add support for reading and printing ADC values from the cards
  • Set SP_QN_ADC and UD_QN_ADC from 14 back to 16
  • Merge branch \'master\' into jviereck_adc
  • Merge pull request #14 from open-dynamic-robot-initiative/jviereck_motor_si_units Changes motor position, velocities, kp and kd to SI units
  • Merge pull request #17 from paLeziart/master [SDK] Python bindings of MasterBoardInterface, MotorDriver and Motor ...
  • [SDK] Python bindings of MasterBoardInterface, MotorDriver and Motor classes with Boost + example.py script
  • Changes motor position, velocities, kp and kd to SI units
  • Add support for reading and printing ADC values from the cards
  • Merge pull request #7 from open-dynamic-robot-initiative/mnaveau/catkin_compatiblity catkin compatiblity
  • fix the move of the sdk include to a sub-folder
  • move the include in a subfolder call master_board_sdk for general packaging consistency
  • moved all the files to clean the sdk folder
  • Contributors: AlexisPotier, Felix Widmaier, Guilhem Saurel, Julian Viereck, Maxime K, Maximilien Naveau, MaximilienNaveau, Miroslav Bogdanovic, Naveau, Pierre-Alexandre Leziart, Thomas Flayols, jviereck@tuebingen.mpg.de, maximekli, paLeziart, thomasfla

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged odri_master_board_sdk at Robotics Stack Exchange

No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.