Giter Club home page Giter Club logo

micro-ros.github.io's Introduction

micro-ROS web site

pipeline status

This is the source for the micro-ROS website, available at https://micro-ros.github.io/

Editing

See editing instructions

License

The content of this repository and the generated website is open-sourced under the Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) license. You are free to:

  • Share — copy and redistribute the material in any medium or format for any purpose, even commercially. The licensor cannot revoke these freedoms as long as you follow the license terms.

Under the following terms:

  • Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • NoDerivatives — If you remix, transform, or build upon the material, you may not distribute the modified material.
  • No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.

See the LICENSE file for details.

Please note the following third-party elements and content:

  • The website is based on the MIT-licensed template Jekyll Doc Theme by Can Güney Aksakalli and contributors. The template files and source code can be identified by the commits by his user name aksakalli and by the user names of the contributors in the git history. Starting point for the development of this website was the version as of 23 September 2018, cf. commit 3cc3f49.

  • All logos and product names are property of their respective owners. All company names, logos and product names used in this website are for identification purposes only. Their use does not imply endorsement.

For details on the open source components included in the micro-ros.github.io repository, see the file 3rd-party-licenses.txt.

Running locally

To test locally, you need a local version of Jekyll, the site-generation engine used by GitHub Pages. See Jekyll Quickstart for installation instructions.

After installing Jekyll, install all dependencies by running

bundle install

Then, you may launch Jekyll to build and serve the website continuously by

bundle exec jekyll serve

For the includes of README.md files on the micro-ROS demos (in the tutorials chapter) from the corresponding repositories, please init and update the corresponding git submodules (i.e. git submodule init ; git submodule update).

Testing generated site

To test the generated HTML site, you can use html-proofer gem. This Ruby gem checks and validates the jekyll generated HTML files. It checks a broad set of points: internal and external links existence (alerting of possible 404 errors), HTML attributes of the images and so on.

To install it, It has been incorporated in the Gemfile so the previous dependency install command would have already installed it.

You can run bundle exec jekyll build followed by bundle exec htmlproofer ./_site to build and test the generated site. However, note that a comprehensive configuration is required for the htmlproofer. Therefore, we strongly suggest to run the utility script at

./scripts/cibuild

which is also used for CI.

micro-ros.github.io's People

Contributors

acuadros95 avatar aksakalli avatar amx-piap avatar avibrown avatar borjaouterelo avatar christophebedard avatar coliff avatar dependabot[bot] avatar franfin avatar gavanderhoorn avatar github-actions[bot] avatar iluetkeb avatar imuguruza avatar jamoralp avatar janstaschulat avatar jayhou avatar julionce avatar kohei306 avatar lein1013 avatar mamerlan avatar mwleeds avatar norro avatar pablogs9 avatar ralph-lange avatar robertwilbrandt avatar rpcme avatar svaichu avatar thecranston avatar tkolcon avatar vmayoral avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

micro-ros.github.io's Issues

Nuttx: XBEE: performance issue

When compiling the xbee driver using no optimisation, the she shell over USB (USB-ACM) will not work properly.

Full optimisation must be enable to make it work.

Rework webpage

Tasks regarding the webpage restructuring as discussed during the OFERA f2f meeting of 14.10.2020

  • Landing Page: Add a list of main features @ralph-lange

  • Overview section

    • Architecture
      • Update/rework Architecture diagram @ralph-lange
      • Link each layer to associated features, according to this document @ralph-lange
      • Remove ‘Source Code Repositories’ part, and move it to the ‘Docker and CI status’ @FranFin
    • Feature Status
      • Now meant to represent comparison with features of ROS 2: change name accordingly @ralph-lange
      • Update/add/delete features. Missing: @ralph-lange
        • Actions
        • Graphs
        • Parameters
        • Discovery
        • QoS?
        • p2p (or explain difference between new p2p and CED middleware)
        • Operations within a ROS 2 node
        • Support for RT code - add sentence regarding rclpy and rclcpp
      • Add third column for symbols that encode features status [Done; Done partially; WIP; Not done but envisioned in the very near future; Not done and not planned] + Legend @FranFin
      • Split table into sub-tables: group features by category that +- represent the features list presented in 'Landing page' and ‘Architecture’. Small headings in bold between categories. @FranFin
    • Supported Hardware @pablogs9 ---> #241
      • Change appearance: only logos, and then you get the info when clicking on the logo
      • Add sentence explaining that more boards have been ported by users and link to table in micro_ros_setup README
    • Supported RTOSes [page to be created]: Add RTOSes in the same form as the hardware, with clickable logos with short description (while removing them from ‘Concepts’ page) @FranFin
    • Transport and Data Links: Change the table to be more similar (or even equal) to the one that is found in the micro_ros_setup README (specifying which transports are allowed for each available combination of HW and RTOS) ---> #243 @pablogs9
    • Docker and CI status @jamoralp -> #248
      • Rename as ‘Repositories, Dockers and CI status’
      • Add ‘Source Code Repositories’ part from ‘Architecture’, and update it
      • Update Docker and CI status part
    • Members, partners and users @FranFin
      • Add new partners and MW users
      • Add 'Collaborators' section
    • Licensing [page to be created]: Add category explaining micro-ROS' licenses @ralph-lange
  • Concepts section

    • Client library @ralph-lange
      • Intro to Client library
        • Rewrite text and Rework diagram
        • Reduce importance of rclcpp and specify that we don’t use it much
        • Introduce the rclc
        • rcl and rcutils: explain differences with respect to that of ROS 2
        • Link ‘Programming with rcl and rclc’ in the Tutorials section
      • Embedded Transform: remove
      • Decision paper -> moved to a PDF (as discussed in later OFERA meeting)
    • Middleware
      • Micro XRCE-DDS @FranFin
        • Update text (e. g. mention FreeRTOS and Zephyr)
        • Link ‘Middleware Configuration’ in the Tutorials section
        • Mention rmw and link rmw_microxrcedds readme
        • Link to ‘custom QoS’ tutorials
        • Add memory profiling of Micro XRCE-DDS
      • micro-ROS and FIWARE: move it to standalone section, under the name "Interoperability with FIWARE" @jamoralp -> #249
      • micro-ROS compared to rosserial: change name to "Micro XRCE-DDS compared to rosserial" @FranFin
    • RTOS @FranFin
      • Why a Real-Time Operating System?: Add RTOSes logos at the end, that redirect to new pages in the Overview Section
      • FreeRTOS/NuttX/Zephyr: Remove and pass descriptions to Overview section
      • Integration with colon: Remove. The sentence can be added to the only section that will be left (Why a Real-Time Operating System?)
    • micro-ROS' build system [page to be added] ---> #244 @pablogs9
      • Section dedicated to standard build system
      • Section dedicated to micro-ROS as a component in external development environments
    • Benchmarking: Rework in order to provide results of benchmarking @amx-piap
    • micro-ROS memory profiling [page to be added]: material here @FranFin
  • Tutorials section: NuttX-specific tutorials: Add a disclaimer specifying that they are currently unmaintained. ---> #242 @pablogs9

  • Demos section:

    • Rewrite overview page
    • Add MoveIt demo @FranFin
    • Add ROS 2 to micro-ROS TCP tunneling over WAN via IS demo @FranFin
    • Add PIAP demo @amx-piap

Update instructions for running jekyll locally

Please update instructions in README.md for running jekyll locally with the new includes for the crazyflie and the sensor demo.

      Generating... 
       Jekyll Feed: Generating feed for posts
  Liquid Exception: Could not locate the included file 'crazyflie_demo/README.md' in any of ["/home/user/micro-ROS.github.io/_includes", "/home/user/gems/gems/jekyll-theme-primer-0.5.4/_includes"]. Ensure it exists in one of those directories and is not a symlink as those are not allowed in safe mode. in /home/user/micro-ROS.github.io/_docs/tutorials/demos/crazyflie_demo/index.md
jekyll 3.8.5 | Error:  Could not locate the included file 'crazyflie_demo/README.md' in any of ["/home/user/micro-ROS.github.io/_includes", "/home/user/gems/gems/jekyll-theme-primer-0.5.4/_includes"]. Ensure it exists in one of those directories and is not a symlink as those are not allowed in safe mode.

microros service bridge to ROS1

  • Hardware description: ESP32 DevKitC
  • RTOS: FreeRTOS
  • Installation type: micro_ros_setup
  • Version: Foxy for ROS2 and Noetic for ROS1

The ros1_bridge doesn't bridge services coming from micro-ros.

Steps to reproduce the issue

-build the bridge following these instructions: https://github.com/ros2/ros1_bridge/blob/master/doc/index.rst
-compile/build/flash the server node
-run the agent
-run the bridge: ros2 run ros1_bridge dynamic_bridge --bridge-all-topics

Expected behavior

The bridge should detect the micro-ros service, and I should be able to call it from ROS1.

Actual behavior

The bridge doesn't seem to detect services coming from micro-ros.

Additional information

The bridge works when I'm running a server node on ros2.
The bridge works when I'm running publishers on micro-ros.
The bridge doesn't work when the server node is on micro-ros event though I can access the service from ROS2 without issue.

Trouble building micro-ROS agent

Hello,

I have followed the instructions for NuttX getting started. Everything goes well until attempting to build the micro-ROS agent.

Download micro-ROS-Agent packages

ros2 run micro_ros_setup create_agent_ws.sh

Build micro-ROS-Agent packages, this may take a while.

colcon build --metas src

The last command attempts to build but returns "error: 'ucdrBuffer' has no member named 'offset'"
This returns "Failed <<< microxrcedds_agent [Exited with code 2]

I have tried several things including downloading the microROS agent from its github page but it has not worked. Any suggestion?

ISOLATION from different systems

HI, i am working with ros2 and micro-ros but I don't want to share my topics within the same network so I kept ROS_DOMAIN_ID=10 in my bashrc but while running micro ros agent I am not getting my topics. its because of ros_domain_id is not allowing to communicate between micro-ros and ros2 .

so i want a solution to communicate between ros2 and micro-ros and also i don't want to share my instances within the same network.

can anyone help me in this?
Thankyou.

Concept Section Rework

Overview Section Rework

Call service in Micro-ROS while using custom QOS settings

  • Hardware description: Portenta H7 & Ubuntu 22.04 PC
  • Version or commit hash: humble with custom ros2 packages

While using custom QOS Settings as described in https://micro.ros.org/docs/tutorials/advanced/create_dds_entities_by_ref/, creating a client for a service using Micro-ROS fails with an error:
[XMLPARSER Error] Error parsing XML buffer -> Function loadXML

The MicroRos Arduino library has been re-compiled to include custom ROS2 message and service types, and also configured to use custom QOS via references, as explained in the previous link.

The same code can run without that service client, while using different topics and message types, as they have been correctly defined in the "custom_qos.refs". The problem comes in when trying to add a service, as I haven't found a way to set up the QOS for a service and its request/response.

If the MicroRos Arduino library is compiled without the QOS reference setting, the client also works as expected.

So far, I tried to include the service as if it were a topic but using "rs" instead of "rt", according to the ROS Specific Namespace Prefixes standard here. I also tried to replicate the configuration laid out in this ROS2 tutorial, but using a similar approach for the "custom_qos.refs" file did not work.

What's the way moving forward? Is there a way to use both custom QOS settings and ROS2 services in Micro-ROS? Or should I choose only the custom QOS or the services?

Thanks!

Ubuntu 22.04 bundle install errors

Issue template

  • Hardware description: N/A
  • RTOS: N/A
  • Installation type: docs
  • Version or commit hash: master 192c1b3

Steps to reproduce the issue

Follow jekyll instructions to and try to build the site. First install ruby:
https://wiki.openstack.org/wiki/RubyGems#:~:text=5%20SuSE%20Linux-,Ubuntu,'Install'%2C%20thats%20it.

Then, try to install the bundle

ryan@ryan-sp3:~/Development/ardu_ws/src/micro-ROS.github.io$ bundle install
Bundler 2.4.10 is running, but your lockfile was generated with 2.1.4. Installing Bundler 2.1.4 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.1.4
Installing bundler 2.1.4
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Fetching gem metadata from https://rubygems.org/.........
nokogiri-1.13.6-x86_64-linux requires ruby version < 3.2.dev, >= 2.6, which is incompatible with the current version, ruby 3.2.2p53

When downgrading, there was also this error

ERROR:  Error installing jekyll:
        The last version of sass-embedded (~> 1.54) to support your Ruby & RubyGems was 1.61.0. Try installing it with `gem install sass-embedded -v 1.61.0` and then running the current command again
        sass-embedded requires RubyGems version >= 3.3.22. The current RubyGems version is 3.1.6. Try 'gem update --system' to update RubyGems itself.

Expected behavior

No errors during bundle install

Actual behavior

There are many dependency errors

Additional information

Here is my workaround:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc
source ~/.bashrc
# Now, add the rbenv installer
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
rbenv install 2.7.8
rbenv global 2.7.8
# Install jekyll and bundler
gem install jekyll bundler
# Install the dependencies for the site
bundle install
# Build and serve the site locally
bundle exec jekyll serve

Futher Info

If you need exact versions to bring about this conflict, I can reproduce it in Ubuntu 22.04 docker conrtainer

script location for mciroROS agent and rclc ping_pong

Dear @pablogs9

I would like to know the script location inside microros code for the following commands. If you know , can you guide me please.

  1. $ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 -v 6
  2. $ros2 run micro_ros_demos_rclc ping_pong

Best Regards,
Marlar

Refactorization of supported platforms sections

TODO:

  • Add a section in Overview which is: "micro-ROS modules for external platforms"
  • Add STM32CubeMX to external build systems in Concepts page
  • Change boards organization in Supprted HW page in Overview page and add transport/RTOS/external BS info
  • Remove Transports page and absorb info into HW page
  • Reorganize tutorial sections
  • Update Users, collaborators etc section w/ new users

Restructuring of tutorials

  • Some entry page explaining the structure of the tutorials @ralph-lange

Core Tutorials

Advanced Tutorials

  • "NuttX NSH console over USB or UART" @Julibert
    • Merge the two existing tutorials
    • Shorten description how to build the application but refer to core tutorials for these steps.
  • "6LoWPAN with micro-ROS on NuttX" @Julibert
    • Merge the existing two pages on 6LoWPAN
  • "Debugging a NuttX target" @tkolcon
    • Merge the two existing tutorials
  • "Adding Micro-ROS to a NuttX board configuration" @ralph-lange
    • Just move to advanced tutorials section
  • "Zephyr Emulator" @pablogs9 #154
    • State that again the ping-pong app is being used as a running example and that we assume that the reader knows how to build this app for Zephyr from the "First micro-ROS application on an RTOS".
    • Shorten this tutorial and only explain the steps that are different compared with the "First micro-ROS application on an RTOS"
  • "Getting started with ROS 2 tracing" @ralph-lange
    • Just move to advanced tutorials section
  • "Some tutorial on benchmarking" @amx-piap

Further TODOs

Cannot trace pingpong on OlimexE407-_FreeRTOS

I'm so sorry. I don't know a proper repo where to submit this issue.

HOST OS: Ubuntu 20.04.1 LTS

used command for tracing:

ros2 trace

error log:

aero@aero:~/ros/freertos$ ros2 trace
UST tracing enabled (16 events)
kernel tracing enabled (4 events)
context (3 names)
writing tracing session to: /home/aero/.ros/tracing/session-20201021211759
press enter to start...
channel enabling failed: Tracing the kernel requires a root lttng-sessiond daemon, as well as "tracing" group membership or root user ID for the lttng client.

I'v done everything mentioned in the tutorial https://micro-ros.github.io/docs/tutorials/advanced/tracing
but i'm stuck at this step ros2 launch tracetools_launch example.launch.py, which report similar error about Tracing the kernel requires a root lttng-sessiond daemon, as well as "tracing" group membership or root user ID for the lttng client

Create a refs tutorial

There is a requirement for creating a tutorial on how to use DDS entities created by references in the micro-ROS Agent.

Close this issue when this tutorial is merged.

CI-build status for packages hosted at ros2/rclc

@ralph-lange @pablogs9 @FranFin
I would like to have a status page for the releases of the packages in ros2/rclc:
The overview on https://micro-ros.github.io/docs/overview/docker_ci_status/ is only for the complete repository and only for arm64 architecture. I would like to create a table to have an overview, if a bloom release on ROS 2 build farm fails:

packages:

  • rclc

  • rclc_lifecycle

  • rclc_examples

architectures:

  • amd64

  • armhf

  • arm64

releases:

  • Dashing

  • Eloquent

  • Foxy

  • Rolling

Where could I create such a page?

  • at micro-ros.github.org

  • at ros2/rclc

What do you think?

The tutorial for Zephyr RTOS does not work as expected

Issue template

  • Hardware description: docker container run from macOS
  • RTOS: Zephyr
  • Installation type: micro_ros_setup
  • Version or commit hash: jazzy

Steps to reproduce the issue

Follow the instructions from https://micro.ros.org//docs/tutorials/core/first_application_rtos/zephyr/

Actual behavior

When running:

# Create step
ros2 run micro_ros_setup create_firmware_ws.sh zephyr olimex-stm32-e407

got error:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
sphinx-rtd-theme 0.5.2 requires docutils<0.17, but you have docutils 0.17.1 which is incompatible.
Successfully installed Jinja2-3.1.4 MarkupSafe-2.1.5 Pygments-2.18.0 Sphinx-4.2.0 alabaster-0.7.16 babel-2.15.0 certifi-2024.7.4 charset-normalizer-3.3.2 docutils-0.17.1 idna-3.7 imagesize-1.4.1 packaging-24.1 requests-2.32.3 setuptools-71.1.0 snowballstemmer-2.2.0 sphinxcontrib-applehelp-1.0.8 sphinxcontrib-devhelp-1.0.6 sphinxcontrib-htmlhelp-2.0.6 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.8 sphinxcontrib-serializinghtml-1.1.10 urllib3-2.2.2
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

Expected behavior

Installation should be completed without errors.

First micro-ROS Application on an RTOS: make menuconfig fails

From a ROS2 installation all micro-ROS Nuttx tutorials fail the make menuconfig step since there are no tutorial steps how to install kconfig-frontends tools.
I have verified this with my own ROS2 installation and the docker "ros:dashing".

The make menuconfig works in the "micro-ROS-Olimex-NuttX:dashing" docker .

It would be helpful to include instructions how to install kconfig-frontends for the Nuttx tutorials where menuconfig will be used.

There is also a typo in the Application development section
"Now we’re going to considerer the folder application the next folder: uros_ws/firmware/apps/examples/uros_ws/firmware/apps/examples"

Should it be ?
"Now we’re going to consider the application folder: uros_ws/firmware/apps/examples/uros_pingpong"

micro_ros_agent package failed

Steps to reproduce the issue

After installing ROS2 I followed the "First application Linux" tutorials as it is and the package failure occurred while building micro ros agent.

Expected behavior

The agent should build successfully

Actual behavior

Starting >>> micro_ros_agent
stderr: micro_ros_agent                                     
/usr/bin/ld: /home/shic/microros_ws/install/microxrcedds_agent/lib/libmicroxrcedds_agent.so.2.0.0: undefined reference to `fmt::v6::internal::basic_data<void>::signs'
/usr/bin/ld: /home/shic/microros_ws/install/microxrcedds_agent/lib/libmicroxrcedds_agent.so.2.0.0: undefined reference to `spdlog::logger::log_it_(spdlog::details::log_msg const&, bool, bool)'
/usr/bin/ld: /home/shic/microros_ws/install/microxrcedds_agent/lib/libmicroxrcedds_agent.so.2.0.0: undefined reference to `int fmt::v6::internal::snprintf_float<double>(double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'
/usr/bin/ld: /home/shic/microros_ws/install/microxrcedds_agent/lib/libmicroxrcedds_agent.so.2.0.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > fmt::v6::internal::grouping_impl<char>(fmt::v6::internal::locale_ref)'
/usr/bin/ld: /home/shic/microros_ws/install/microxrcedds_agent/lib/libmicroxrcedds_agent.so.2.0.0: undefined reference to `int fmt::v6::internal::format_float<long double>(long double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'
/usr/bin/ld: /home/shic/microros_ws/install/microxrcedds_agent/lib/libmicroxrcedds_agent.so.2.0.0: undefined reference to `int fmt::v6::internal::snprintf_float<long double>(long double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'
/usr/bin/ld: /home/shic/microros_ws/install/microxrcedds_agent/lib/libmicroxrcedds_agent.so.2.0.0: undefined reference to `int fmt::v6::internal::format_float<double>(double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/micro_ros_agent.dir/build.make:173: micro_ros_agent] Error 1
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/micro_ros_agent.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

Failed   <<< micro_ros_agent [24.5s, exited with code 2]

Summary: 5 packages finished [5min 28s]
  1 package failed: micro_ros_agent
  2 packages had stderr output: micro_ros_agent microxrcedds_agent

Additional information

I could not find any similar issue, although I tried to pull the eProsima/Micro-XRCE-DDS-Agent repo and building the workspace again using colcon build still the same issue.

I'm relatively new to ROS and do not have much knowledge regarding it, pardon me if I had missed something,
Thanks in advance.

Agent runtime error: undefined symbol: uxr_run_session_until_data

I followed the instructions in the tutorial https://micro-ros.github.io//docs/tutorials/core/first_application_linux/. Everything appeared to build correctly but, when I ran the agent, I received the error message:

$ ros2 run micro_ros_demos_rclc ping_pong
UDP mode => ip: 127.0.0.1 - port: 8888
[INFO] [1601993557.646656111] []: Created a timer with period 2000 ms.

INFO: rcl_wait timeout 1000 ms
/home/build/code/microros_ws/install/micro_ros_demos_rclc/lib/micro_ros_demos_rclc/ping_pong/ping_pong: symbol lookup error: /home/build/code/microros_ws/install/rmw_microxrcedds/lib/librmw_microxrcedds.so: undefined symbol: uxr_run_session_until_data
build@7927c5770415:~/code/microros_ws$ source /opt/ros/foxy/setup.bash
build@7927c5770415:~/code/microros_ws$ source install/local_setup.bash
build@7927c5770415:~/code/microros_ws$
build@7927c5770415:~/code/microros_ws$ # Run a micro-ROS node
build@7927c5770415:~/code/microros_ws$ ros2 run micro_ros_demos_rclc ping_pong
UDP mode => ip: 127.0.0.1 - port: 8888
[INFO] [1601994170.524389384] []: Created a timer with period 2000 ms.

INFO: rcl_wait timeout 1000 ms
/home/build/code/microros_ws/install/micro_ros_demos_rclc/lib/micro_ros_demos_rclc/ping_pong/ping_pong: symbol lookup error: /home/build/code/microros_ws/install/rmw_microxrcedds/lib/librmw_microxrcedds.so: undefined symbol: uxr_run_session_until_data

The error message shows that the function uxr_run_session_until_data is not present in the library librmw_microxrcedds.so.

This problem can be worked around by using two different workspaces, one for the firmware and the other for the agent as suggested by issue #141.

The commands I used to build in two workspaces were:

mkdir -p microros_firmware_ws/src
cd microros_firmware_ws/
. /opt/ros/foxy/setup.bash
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
colcon build
source install/local_setup.bash
ros2 run micro_ros_setup create_firmware_ws.sh host
ros2 run micro_ros_setup build_firmware.sh
source install/local_setup.bash
ros2 run micro_ros_demos_rclc ping_pong
mkdir -p microros_agent_ws/src
cd microros_agent_ws/
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
source /opt/ros/foxy/setup.bash
colcon build
source install/local_setup.bash
ros2 run micro_ros_setup create_agent_ws.sh
ros2 run micro_ros_setup build_agent.sh
source install/local_setup.bash
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888

I have added this issue to help other people resolve the problem until a fix is implemented.

Releases-status of micro-ros/rclc

@ralph-lange @jamoralp

In http://localhost:4000/docs/overview/docker_ci_status/
the rclc repository is listed only with Dashing release.

The master branch or rclc is compliant to Eloquent and Foxy as well.
What do you suggest?

we wanted to avoid multiple branches in rclc repository so far to simplify bug-fixing. So I propose to add

  • line for Eloqent release links to rclc:master
  • line for Foxy release links to rclc:master

I would like to avoid, that people think, that rclc only works for ROS 2 Dashing and does not support Eloquent/Foxy because it is not listed in this table.

Rework Tutorials Section

  • Change "Basic tutorials" to "Core tutorials" with pages on

    • Hello World with micro-ROS (simple echo node with topics /ping and /pong), see #143
    • Programming with rcl and rclc, see #113 and #143
    • rclc Executor, see #143
    • Benchmarking micro-ROS applications (put "Tracing with ROS 2" here inside? Does this make sense?) @amx-piap
    • Setting up the rmw for Micro-XRCE-DDS (incl. best-effort vs reliable) #111 @pablogs9
  • Improve demo subsection. Finally should be five pages on

    • Kobuki Demo (NuttX) @iluetkeb
    • Crazyflie Demo (FreeRTOS) #131 @jfm92
    • ToF Sensor #134 (Zephyr) @Julibert
    • Interfacing with the FIWARE Context Broker (ToF Sensor via Context Broker)
    • Joint Kobuki - Crazyflie - ToF Sensor - FIWARE Context Broker Demo @Julibert
  • Introduce new Advanced Tutorials with NuttX subsection. Organize pages into

    • Rename "Advanced tutorials" to "Advanced Tutorials with NuttX"
    • NuttX in Depth - split existing page up #127 @jfm92
    • Debugging a NuttX target (incl. VS Code) @jfm92
    • 6LoWPAN with NuttX @jfm92
    • Simulator (if possible) (blocked) @jfm92
    • Adding Micro-ROS to a NuttX board configuration (blocked) @jfm92
  • Introduce new empty subsection named "Advanced Tutorials with FreeRTOS" #114 @pablogs9

  • Introduce new subsection named "Advanced Tutorials with Zephyr" @Julibert

    • Create a tutorial page on Zephyr simulator @Julibert

Other issues:

  • Where to put "Tracing with ROS 2" if not integrated into benchmarking page? "Advanced tutorials with Linux" subsection (@ralph-lange)

  • Create empty pages where missing (@ralph-lange, @pablogs9 )

A bug may caused by the gcc version?

about tutorials .
The OS is Ubuntu 20.04.1
The gcc version is 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)

When I followed the tutorials 'First micro-ROS Application on Linux', and tried to create the micro-ROS agent , an error happened.

.../microros_ws/src/eProsima/Micro-XRCE-DDS-Agent/src/cpp/utils/ArgumentParser.cpp:24:14: error: ‘bool eprosima::uxr::agent::parser::utils::usage(const char*, bool)’ should have been declared inside ‘eprosima::uxr::agent::parser::utils’
   24 |  bool no_help)
      |              ^
make[2]: *** [CMakeFiles/microxrcedds_agent.dir/build.make:310: CMakeFiles/microxrcedds_agent.dir/src/cpp/utils/ArgumentParser.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/microxrcedds_agent.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

So I checked the cpp and the hpp,and I'm sure that the function named usage have been declared inside the namespace.

bool eprosima::uxr::agent::parser::utils::usage(
	const char* executable_name,
	bool no_help)
{
    std::stringstream ss;
    ss << "Usage: '" << executable_name << " <udp4|udp6|tcp4|tpc6";
#ifndef _WIN32
    ss << "|serial|pseudoterminal";
#endif // _WIN32
    ss << "> <<args>>'" << std::endl;
    if (no_help)
    {
        ss << "For a more detailed description about all the available arguments, ";
        ss << "please execute the agent with '-h/--help' option." << std::endl;
    }
    std::cout << ss.str();
    return false;
}
bool usage(
        char* executable_name,
        bool no_help = true);

TransportKind check_transport(
        const char* transport);

Middleware::Kind get_mw_kind(
        const std::string& kind);
} // namespace utils

However the first param of the function declared in the namespace is "char*" not the "const char*".So I solve it by add the 'const' before the 'char* executable_name' in the namespace.
So is it a bug caused by the gcc version?
This is my first time to have an issue.I hope I didn't bother you.
Thank you

Procedure for porting micro-ROS to new boards?

I was not sure where to ask this question, I apologize if this is the wrong place.

Do you have any more detailed instructions for porting micro-ROS to new boards? In the documentation you have some links to porting NuttX. Do you have more general instructions for porting to other another RTOS as well? Do you have a list of all the repositories that would need modification? I am happy to help with time and effort to this port, but I need a little guidance first on how to best contribute.

I would like to run a micro-ROS Dashing client on a Teensy 4. It uses a NXP iMXRT1062 processor which you list as a support MCU. Does that just mean it is supported by NuttX?

Someone has ported FreeRTOS to run on the Teensy 4 FreeRTOS-Teensy4.

Is it possible to port it in such a way that Arduino libraries and C++ code will work with rclcpp as a micro-ROS client on the Teensy board? Is this relatively quick and easy or would that take significant effort to make it work? Thanks!

Creating Firmware WS for zephyr olimex-stm32-e407 failed due to python3-pip dependency

Inside the First micro-ROS Application on Zephyr the following command for creating firmware workspace for olimex-stm32-e407 on a clean ROS 2 Foxy FitzRoy docker image

ros2 run micro_ros_setup create_firmware_ws.sh zephyr olimex-stm32-e407

is not successful with an error about pythoon3-pip installation

......
Setting up openocd (0.10.0-6build1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
/usr/bin/python3: No module named pip
executing command [python3 -m pip install -U west]
/usr/bin/python3: No module named pip
ERROR: the following rosdeps failed to install
  pip: command [python3 -m pip install -U west] failed
....

Maybe it is good to mention inside the Tutorial to install pip before creating the firmware ws.

sudo apt-get install python3-pip

First micro-ROS Application on Linux don't work me

I'm running the First micro-ROS Application on Linux, everything works well until I run :

  1. ros2 run topic list:
    The topic /microROS/does not appear.

before I have executed, source /opt/ros/$ROS_DISTRO/setup.bash.

I'm working with ROS2 Humble on Ubuntu 22.04

Thanks in advance.

Refactor 'First micro-ROS Application on an RTOS' tutorial

  • Create separate pages (urls) for each RTOS (NuttX, FreeRTOS, and Zephyr)
  • Ensure redirect from '/docs/tutorials/advanced/zephyr/zephyr_getting_started/'
  • Avoid three completely separate pages but use includes to generate the pages from common sections
  • Introduce a nice overview page to ask the reader to decide for one RTOS for this tutorial.

microros foxy - Documentation

Dear,

I have been testing microros - foxy release with stm32f4discovery board, stm32f429i-disco board. Both are failed to produce the results according to tutorial.

The issue is due to lack of documentation. I have tried to understand about MICROROS. But I still cannot make it work.

Currently OLIMEX-STM32-E407 works well with FOXY. But MICROROS team doesn't release any document about hardware implementation based on OLIMEX-STM32-E407 board. It is a biggest problem for me.

If MICROROS team releases the document about the important points to take note during microsros testing, it will be good for us.

Now stm32f4discovery board doesn't work even though STM32 chip is still the same.

I did check and test with a lot of various configuration but it still fails. It means some hidden configurations are required to make it work. But I don't know where to look for it.

I suggest MICROROS team to release an implementation procedure document for the opensource developers. Then our MIROROS developers can help you to test with various hardwares and report back the test results. Thus our community will grow faster.

Now I want to contribute a lot to Microros development but I feel that there is no complete information required by developers.

Thank you.

Regards,
Thiha Kyaw

Video Demonstrations for all Ros2 Tutorials

Concept


For all the tutorials we must have a video at the bottom of the page that show
how you can perform the above tutorial.

Previous Experience


I saw a lot of beginners show resistance to linux/terminal . I posted a video in ROS1 Noetic Nodes tutorial , People really loved it and even reached out to me to produce more .

Process


It would be great for starters to have a video to follow by utilizing contents of written tutorials + some additional explanation .

Who will do it ?


I can do it , I mean i will be really happy to give back to ROS2 for what good it has brought in to my career.
If any one would like to join in -> I will be great full .

Changing Webpage License from Apache 2.0 to Creative-Commons

Hello contributors to the micro-ROS webpage!

We are migrating the license to Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0), which is fitter to the content of the page than the previously employed Apache license 2.0. We kindly ask all external people that contributed to the webpage development to confirm that they agree with this change of license terms: @aksakalli @rpcme @coliff @rjhcnf @jayhou @andre-nguyen @alsaibie.

If not notified otherwise within a two-weeks time slot, we will proceed to the change of license.

Best regards and thanks,
Francesca Finocchiaro

How to use ROS parameters with microROS ?

Hello,

I have read the microROS tutorial Programming with rcl and rclc, but it does not mention parameters.
I would like to use ROS parameter in order to pass them to the microROS application. Is there a way to do that ?

Here are the parameters tutorial in ROS2 that I would like to use with my microROS application.
https://index.ros.org/doc/ros2/Tutorials/Parameters/Understanding-ROS2-Parameters/
https://index.ros.org/doc/ros2/Tutorials/Using-Parameters-In-A-Class-CPP/

Regards,
Cocodmdr

Tutorials Section Rework

  • Basic Tutorials → Getting Started with Your Computer [EPROS/ALR]
    - Remove “(WIP)” from page title
    - Shorten the lengthy headings to one line
    - Revise and complete texts or link to instructions in the corresponding repo
    - I prefer having the instructions in the repo and have a short, generic description on the webpage only.
    - Move examples at the end of the page to separate page (or in case of the executor to the corresponding page in the concepts section)

  • Basic Tutorials → Getting Started with an Embedded Board [EPROS/ALR]
    - Remove “(WIP)” from page title
    - ToC not needed for this short page.
    - Remove “Introduction” heading and start with text directly.
    - Complete the text, cf. “To be completed at the end”
    - Add screenshot or photo?

  • Basic Tutorials → Getting Started with simulator [ALR]
    - Remove “(WIP)” from page title
    - Complete the page
    - Add screenshot or photo?

  • Advanced Tutorials → NuttX Getting Started [ALR]
    - Add ToC at beginning of page

  • Advanced Tutorials → Benchmarking [PIAP]
    - Create new page.

  • Create new page for TB2 demo @ralph-lange
    - Should we create a separate “demo submenu”? Yes.

Rework Overview Section

  • Architecture page: Add FreeRTOS and Zephyr to diagram (@ralph-lange)
  • Architecture page: Change Micro XRCE DDS Middleware to Client in diagram (@ralph-lange)
  • Add new page "Feature list" from Malaga meeting minutes (@ralph-lange)
  • Add new page "Repos and CI status" with link to Docker files (@jfm92)
  • Supported hardware page: Add Link to tutorial how to integrate new board in NuttX (@jfm92)
  • Extend page on comparison with other approaches or make title more specific (@jfm92)

Cannot find the proper launch file

according to Callback duration analysis (Callback duration analysis) I should edit launch file in the path ros2_ws/src/ros2/tracing/tracetools_launch/launch/
I've finished previous steps, but I cannot find the directory ros2_ws/src/ros2. There are only two directories, ros-tracing and tracetools_analysis , in the path ros2_ws/src/
By the way, does the launch file refer to example.launch.py ? I've found multiple example.launch.py :

./install/tracetools_launch/share/tracetools_launch/launch/example.launch.py
./build/tracetools_launch/launch/example.launch.py
./src/ros-tracing/ros2_tracing/tracetools_launch/launch/example.launch.py

which one is used for the cmd ros2 launch tracetools_launch example.launch.py

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.