micro-ROS / micro_ros_setup

Support macros for building micro-ROS-based firmware.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issues building with Nuttx + Olimex-stm32-e407

jayanthendo opened this issue · comments

Hello! I am trying to run an example on the Olimex-stm32-e407 by following the micro-ROS application tutorial for RTOS and getting some errors while building.
i am doing on ubuntu 18
setup is Dashing Diademata and crystal also
when creating the framework with the following command
ros2 run micro_ros_setup create_firmware_ws.sh nuttx
the following error appears

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
micro_ros_agent: Cannot locate rosdep definition for [microxrcedds_agent]

i have installed the following package
ros-crystal-micro-xrce-dds-agent
ros-crystal-microxrcedds-agent-cmake-module
ros-crystal-microxrcedds-agent

and installed Micro-XRCE-DDS-Agent using https://micro-xrce-dds.docs.eprosima.com/en/latest/installation.html
but still i am getting the same error

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
micro_ros_agent: Cannot locate rosdep definition for [microxrcedds_agent]

is there any package i am missing? or any other steps to follow?
Thank you very much.

Jayanth kandregula

Hello, try to continue with the tutorial. These rosdep errors can be taken as warning for now. Please check if you micro-ROS workspace builds correctly.

We are working on fixing them.

yes its build correctly for the linux example and worked properly. But when creating this for stm32f4 nuttx rtos this rosdep dependency error is coming and can't flash to Development board

Could you please copy here the error you are having?

the same error as mentioned above
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
micro_ros_agent: Cannot locate rosdep definition for [microxrcedds_agent]

This error seems to be in the micro-ROS Agent installation.

Are you running ros2 run micro_ros_setup create_firmware_ws.sh nuttx olimex-stm32-e407 or are you running ros2 run micro_ros_setup create_agent_ws.sh ?

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

can you continue with the configuration step ignoring this dependencies errors?

is it going to work like that? without first creating firmware?

do you have a firmware folder with other folders (dev_ws, mcu_ws, NuttX, etc) inside of it?

no just firmware folder

when i have created firmware for the host machine then the firmware folder containing dev_ws
but for the nuttx i have removed firmware folder and creating a new firmware creating the error

Well, on this docker I have done:

sudo apt update
source /opt/ros/dashing/setup.bash
mkdir uros_ws && cd uros_ws
git clone -b dashing https://github.com/micro-ROS/micro-ros-build.git src/micro-ros-build
rosdep update && rosdep install --from-path src --ignore-src -y
colcon build
source install/local_setup.bash 

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

And I obtain:

root@pgarrido:/uros_ws# tree -L 2 .
.
├── build
│   ├── COLCON_IGNORE
│   └── micro_ros_setup
├── firmware
│   ├── COLCON_IGNORE
│   ├── NuttX
│   ├── PLATFORM
│   ├── apps
│   ├── dev_ws
│   ├── drive_base
│   ├── mcu_ws
│   └── uclibc
├── install
│   ├── COLCON_IGNORE
│   ├── _local_setup_util_ps1.py
│   ├── _local_setup_util_sh.py
│   ├── local_setup.bash
│   ├── local_setup.ps1
│   ├── local_setup.sh
│   ├── local_setup.zsh
│   ├── micro_ros_setup
│   ├── setup.bash
│   ├── setup.ps1
│   ├── setup.sh
│   └── setup.zsh
├── log
│   ├── COLCON_IGNORE
│   ├── build_2020-06-23_10-27-01
│   ├── latest -> latest_build
│   └── latest_build -> build_2020-06-23_10-27-01
└── src
    └── micro-ros-build

Could you please replicate these steps in a clean ROS 2 Dashing environment?

ok with clean ROS2 error microxrcedds_agent is gone now
Thank you

but configuring with
ros2 run micro_ros_setup configure_firmware.sh uros_pingpong
gives
Configuration configs/olimex-stm32-e407/uros_pingpong (expanded from uros_pingpong) not found
and with
ros2 run micro_ros_setup configure_firmware.sh pingpong --transport serial --dev 3
gives
--- stderr: firmware
CMake Error: The source directory "/home/jayanth/uros_ws/firmware/apps" does not appear to contain CMakeLists.txt.

try with pingpong-eth configuration

with pingpong-eth configuration the same error

Starting >>> firmware
--- stderr: firmware                         
CMake Error: The source directory "/home/jayanth/uros_ws/firmware/apps" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
---
Failed   <<< firmware	[ Exited with code 1 ]

with drive_base configuration

Failed   <<< rclc	[ Exited with code 1 ]
Aborted  <<< shape_msgs                                 
Aborted  <<< trajectory_msgs                            
Aborted  <<< visualization_msgs

Summary: 44 packages finished [1min 27s]
  1 package failed: rclc
  3 packages aborted: shape_msgs trajectory_msgs visualization_msgs
  3 packages had stderr output: rclc rcutils rmw_microxrcedds
  8 packages not processed

I'm not sure if the RCLC layer is working currently on dashing. Could you create a file named COLCON_IGNORE in firmware/mcu_ws/uros/rclc ?

We are fixing all these issues on foxy release, it would be released in a week hopefully

in crystal also i am getting dependency issues
ros2 run micro_ros_setup create_agent_ws.sh
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
microxrcedds_agent_cmake_module: Cannot locate rosdep definition for [microxrcedds_agent]
rosidl_typesupport_fastrtps_cpp: Cannot locate rosdep definition for [fastrtps]
rcl_logging_noop: Cannot locate rosdep definition for [launch_testing]
rmw_implementation: Cannot locate rosdep definition for [poco_vendor]
rosidl_typesupport_fastrtps_c: Cannot locate rosdep definition for [fastrtps]
rcl_action: Cannot locate rosdep definition for [osrf_testing_tools_cpp]
rcl_yaml_param_parser: Cannot locate rosdep definition for [launch_testing]
rcl_logging_log4cxx: Cannot locate rosdep definition for [launch_testing]
rcl_lifecycle: Cannot locate rosdep definition for [osrf_testing_tools_cpp]
rcl: Cannot locate rosdep definition for [osrf_testing_tools_cpp]
rosidl_typesupport_cpp: Cannot locate rosdep definition for [poco_vendor]
rmw_fastrtps_dynamic_cpp: Cannot locate rosdep definition for [fastrtps]
rcutils: Cannot locate rosdep definition for [osrf_testing_tools_cpp]
rmw_fastrtps_shared_cpp: Cannot locate rosdep definition for [fastrtps]
micro_ros_agent: Cannot locate rosdep definition for [fastrtps]
rmw_fastrtps_cpp: Cannot locate rosdep definition for [fastrtps]
rosidl_typesupport_c: Cannot locate rosdep definition for [poco_vendor]

and
colcon build
Summary: 1 package finished [2.52s]
1 package failed: rcutils
3 packages aborted: fastrtps_cmake_module rmw_implementation_cmake rosidl_adapter
1 package had stderr output: rcutils
52 packages not processed

so is there any working version of micro-ROS present now so i can try it.

please target ROS 2 dashing installation in order to use micro-ROS

yes i have done that before with ROS 2 dashing and just trying with crystal checking if it is working or not.

can i manually configure the nuttx for dashing and flash the micro-ROS to development board?
so is there any working version of micro-ROS present now, so i can try it?
is there any alternative to micro-ROS that i can use ROS2 on development board?

can i use "freeRTPS" or "Embedded_nuttx" or "riot_ROS2" to use on development board and ROS2 on linux to communicate ?
which is better?

@pablogs9 please tell the solution as soon as possible, as i was struggling to make it work from past few days.

Well, on this docker I have done:

sudo apt update
source /opt/ros/dashing/setup.bash
mkdir uros_ws && cd uros_ws
git clone -b dashing https://github.com/micro-ROS/micro-ros-build.git src/micro-ros-build
rosdep update && rosdep install --from-path src --ignore-src -y
colcon build
source install/local_setup.bash 

ros2 run micro_ros_setup create_firmware_ws.sh nuttx olimex-stm32-e407
ros2 run micro_ros_setup configure_firmware.sh pingpong-eth

# Make sure that you have kconfig-frontends
git clone https://bitbucket.org/nuttx/tools.git firmware/tools
pushd firmware/tools/kconfig-frontends
./configure --enable-mconf --disable-nconf --disable-gconf --disable-qconf 
LD_RUN_PATH=/usr/local/lib && make && sudo make install && sudo ldconfig
popd

# Enable exception support (we will fix this soon)
pushd firmware/Nuttx
make menuconfig
# Go to Library Routines -> Enable Exception Support (under LLVM C++ Library)
# Hit save and exit
popd

ros2 run micro_ros_setup build_firmware.sh

# Now you have a .bin ready to be flashed

Hi Pablo, instead opening a new issue I will post my log here since it appears a similar issue:

$ ros2 run micro_ros_setup create_firmware_ws.sh nuttx olimex-stm32-e407
Firmware already created. Please delete /home/alan/microros/firmware folder if you want a fresh installation.
alan@dev:/microros$ rm -rf firmware
alan@dev:
/microros$ ros2 run micro_ros_setup create_firmware_ws.sh nuttx olimex-stm32-e407
Creating firmware for nuttx platform olimex-stm32-e407
reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Add distro "dashing"
Add distro "eloquent"
Add distro "foxy"
Skip end-of-life distro "groovy"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Skip end-of-life distro "jade"
Add distro "kinetic"
Skip end-of-life distro "lunar"
Add distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /home/alan/.ros/rosdep/sources.cache
#All required rosdeps installed successfully
/home/alan/microros/install/micro_ros_setup/lib/micro_ros_setup/yaml_filter.py:10: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
repos_info = yaml.load(sys.stdin)
/home/alan/microros/install/micro_ros_setup/lib/micro_ros_setup/yaml_filter.py:11: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
repos_keep = yaml.load(open(sys.argv[1]))['keep'].split()
#All required rosdeps installed successfully
/home/alan/microros/install/micro_ros_setup/lib/micro_ros_setup/yaml_filter.py:10: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
repos_info = yaml.load(sys.stdin)
/home/alan/microros/install/micro_ros_setup/lib/micro_ros_setup/yaml_filter.py:11: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
repos_keep = yaml.load(open(sys.argv[1]))['keep'].split()
Crosscompiled environment: cleaning path
Starting >>> ament_package
Starting >>> ament_lint
Starting >>> ament_cppcheck
Starting >>> gtest_vendor
Starting >>> ament_pep8
Finished <<< gtest_vendor [1.10s]
Starting >>> gmock_vendor
Finished <<< gmock_vendor [0.16s]
Finished <<< ament_cppcheck [1.36s]
Finished <<< ament_pep8 [1.36s]
Starting >>> ament_pyflakes
Finished <<< ament_lint [1.64s]
Finished <<< ament_package [1.66s]
Starting >>> ament_cmake_core
Starting >>> ament_flake8
Finished <<< ament_pyflakes [0.62s]
Finished <<< ament_cmake_core [0.43s]
Starting >>> ament_cmake_libraries
Starting >>> ament_cmake_export_libraries
Starting >>> ament_cmake_include_directories
Starting >>> ament_cmake_python
Starting >>> ament_cmake_export_definitions
Starting >>> ament_cmake_export_include_directories
Starting >>> ament_cmake_export_link_flags
Finished <<< ament_flake8 [0.73s]
Starting >>> ament_pep257
Finished <<< ament_cmake_include_directories [0.85s]
Finished <<< ament_cmake_python [0.87s]
Finished <<< ament_cmake_export_include_directories [0.86s]
Starting >>> ament_cmake_test
Finished <<< ament_cmake_export_link_flags [0.87s]
Finished <<< ament_cmake_export_definitions [0.90s]
Finished <<< ament_cmake_export_libraries [0.93s]
Starting >>> ament_cmake_export_interfaces
Finished <<< ament_cmake_libraries [0.96s]
Starting >>> ament_cmake_export_dependencies
Starting >>> ament_cmake_target_dependencies
Finished <<< ament_pep257 [0.93s]
Starting >>> ament_copyright
Starting >>> ament_index_python
Finished <<< ament_cmake_export_dependencies [0.91s]
Finished <<< ament_cmake_export_interfaces [0.96s]
Finished <<< ament_cmake_target_dependencies [0.93s]
Finished <<< ament_cmake_test [1.07s]
Starting >>> ament_cmake
Starting >>> ament_lint_auto
Starting >>> ament_cmake_gtest
Starting >>> ament_cmake_nose
Starting >>> ament_cmake_pytest
Finished <<< ament_index_python [1.09s]
Finished <<< ament_copyright [1.12s]
Starting >>> ament_lint_cmake
Starting >>> ament_cpplint
Starting >>> ament_xmllint
Finished <<< ament_cmake [1.33s]
Finished <<< ament_cmake_nose [1.31s]
Starting >>> uncrustify_vendor
Starting >>> ament_clang_format
Finished <<< ament_lint_auto [1.38s]
Finished <<< ament_cmake_gtest [1.37s]
Starting >>> ament_clang_tidy
Starting >>> ament_pclint
Finished <<< ament_cmake_pytest [1.39s]
Starting >>> ament_cmake_auto
Finished <<< ament_cpplint [1.89s]
Starting >>> ament_cmake_gmock
Finished <<< ament_lint_cmake [1.94s]
Finished <<< ament_xmllint [1.90s]
Starting >>> ament_cmake_lint_cmake
Finished <<< ament_clang_format [1.48s]
Finished <<< uncrustify_vendor [1.49s]
Starting >>> ament_uncrustify
Finished <<< ament_clang_tidy [1.47s]
Finished <<< ament_pclint [1.73s]
Finished <<< ament_cmake_auto [1.47s]
Finished <<< ament_cmake_lint_cmake [0.91s]
Starting >>> ament_cmake_copyright
Finished <<< ament_cmake_gmock [0.97s]
Finished <<< ament_uncrustify [0.66s]
Finished <<< ament_cmake_copyright [0.43s]
Starting >>> ament_cmake_cppcheck
Starting >>> ament_cmake_cpplint
Starting >>> ament_cmake_flake8
Starting >>> ament_cmake_pep257
Starting >>> ament_cmake_uncrustify
Starting >>> ament_cmake_xmllint
Starting >>> ament_cmake_clang_format
Starting >>> ament_cmake_clang_tidy
Finished <<< ament_cmake_flake8 [0.82s]
Finished <<< ament_cmake_xmllint [0.80s]
Starting >>> ament_cmake_pclint
Starting >>> ament_cmake_pep8
Finished <<< ament_cmake_cpplint [0.86s]
Finished <<< ament_cmake_pep257 [0.86s]
Starting >>> ament_cmake_pyflakes
Finished <<< ament_cmake_clang_tidy [0.84s]
Finished <<< ament_cmake_uncrustify [0.91s]
Finished <<< ament_cmake_cppcheck [0.94s]
Finished <<< ament_cmake_clang_format [0.91s]
Starting >>> ament_lint_common
Finished <<< ament_cmake_pep8 [0.53s]
Finished <<< ament_cmake_pclint [0.54s]
Finished <<< ament_cmake_pyflakes [0.63s]
Finished <<< ament_lint_common [0.57s]
Starting >>> ament_cmake_ros
Starting >>> ament_index_cpp
Starting >>> nuttx_kconfig_vendor
Finished <<< ament_cmake_ros [0.59s]
Finished <<< ament_index_cpp [5.24s]
--- stderr: nuttx_kconfig_vendor
make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
ar: u' modifier ignored since D' is the default (see U') ar: u' modifier ignored since D' is the default (see U')
In file included from libs/parser/yconf.c:2507:
libs/parser/confdata.c: In function ‘conf_write’:
libs/parser/confdata.c:776:20: warning: ‘.tmpconfig.’ directive writing 11 bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
776 | sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
| ^~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:867,
from libs/parser/yconf.c:82:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 13 and 4119 bytes into a destination of size 4097
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.

Finished <<< nuttx_kconfig_vendor [14.3s]

Summary: 55 packages finished [23.9s]
1 package had stderr output: nuttx_kconfig_vendor
#All required rosdeps installed successfully

Installing uClibc++ in the NuttX source tree
Installation succeeded

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rcl_logging_noop: No definition of [launch_testing] for OS version [focal]
rcl: No definition of [osrf_testing_tools_cpp] for OS version [focal]
rosidl_default_runtime: No definition of [rosidl_generator_py] for OS version [focal]
rosidl_typesupport_c: No definition of [poco_vendor] for OS version [focal]
rclc: No definition of [osrf_testing_tools_cpp] for OS version [focal]
rcutils: No definition of [osrf_testing_tools_cpp] for OS version [focal]
rosidl_typesupport_cpp: No definition of [poco_vendor] for OS version [focal]
rcl_lifecycle: No definition of [osrf_testing_tools_cpp] for OS version [focal]
rmw_implementation: No definition of [poco_vendor] for OS version [focal]

Do you have some idea why these dependence are reported?

Are you using Ubuntu 18.04?

@pablogs9 do we have an stable update for ROS2 foxy released?

not yet, the stable version is dashing until next week or so.

Well, on this docker I have done:

sudo apt update
source /opt/ros/dashing/setup.bash
mkdir uros_ws && cd uros_ws
git clone -b dashing https://github.com/micro-ROS/micro-ros-build.git src/micro-ros-build
rosdep update && rosdep install --from-path src --ignore-src -y
colcon build
source install/local_setup.bash 

ros2 run micro_ros_setup create_firmware_ws.sh nuttx olimex-stm32-e407
ros2 run micro_ros_setup configure_firmware.sh pingpong-eth

# Make sure that you have kconfig-frontends
git clone https://bitbucket.org/nuttx/tools.git firmware/tools
pushd firmware/tools/kconfig-frontends
./configure --enable-mconf --disable-nconf --disable-gconf --disable-qconf 
LD_RUN_PATH=/usr/local/lib && make && sudo make install && sudo ldconfig
popd

# Enable exception support (we will fix this soon)
pushd firmware/Nuttx
make menuconfig
# Go to Library Routines -> Enable Exception Support (under LLVM C++ Library)
# Hit save and exit
popd

ros2 run micro_ros_setup build_firmware.sh

# Now you have a .bin ready to be flashed

i have downloaded this docker and yet end up with errors, not able to create firmware in dashing

Are you using Ubuntu 18.04?

Hi Pablo,
No, I'm using Ubuntu 20.04. BTW, the compilation of ROS2 happened correctly.
I think there is only some minor issues to get it working correctly. Do you have some idea how to fix it or debug it?

Well, on this docker I have done:

sudo apt update
source /opt/ros/dashing/setup.bash
mkdir uros_ws && cd uros_ws
git clone -b dashing https://github.com/micro-ROS/micro-ros-build.git src/micro-ros-build
rosdep update && rosdep install --from-path src --ignore-src -y
colcon build
source install/local_setup.bash 

ros2 run micro_ros_setup create_firmware_ws.sh nuttx olimex-stm32-e407
ros2 run micro_ros_setup configure_firmware.sh pingpong-eth

# Make sure that you have kconfig-frontends
git clone https://bitbucket.org/nuttx/tools.git firmware/tools
pushd firmware/tools/kconfig-frontends
./configure --enable-mconf --disable-nconf --disable-gconf --disable-qconf 
LD_RUN_PATH=/usr/local/lib && make && sudo make install && sudo ldconfig
popd

# Enable exception support (we will fix this soon)
pushd firmware/Nuttx
make menuconfig
# Go to Library Routines -> Enable Exception Support (under LLVM C++ Library)
# Hit save and exit
popd

ros2 run micro_ros_setup build_firmware.sh

# Now you have a .bin ready to be flashed

i have downloaded this docker and yet end up with errors, not able to create firmware in dashing

Hi @pablogs9 in fact the issue appears related to Ubuntu 20.04 and CMake version. Also there are tons of warning messages during the compilation. I submitted a patch to rmw_microxrcedds_c fixing some of these warnings.

My complete compilation log is here:
https://pastebin.com/0tgV6ZvS

Let us check this. We are not in 20.04 yet.

@jayanthendo @acassis Hi! Thank you for your interest in micro-ROS. Notice that we’ll discuss the recent contributions and developments in the next Embedded WG meeting. You’re invited to bring your micro-ROS related issue to this platform. We’ll be very happy to have you join us and discuss your questions with the community.

Thank you @pablogs9 i think this issue is in my local configuration as it was working on other system.

Hi, @jayanthendo and @acassis have you solved these issues? I also got similar errors. I am using Dashing to bulid micro_ROS, it appers error as @jayanthendo showed.
When I use Foxy, these errors shows like @acassis's.
@pablogs9 do you have any suggestions? I am using Ubuntu 18.04, but updating to 20.04.

@zivy90 i still don't know why this error's are coming on my system. i am using lenovo with ubuntu 18 but i have tested on dell system with same ubuntu and its working with same libraries as mine.

We are merging the new Ubuntu 20.04 + micro-ROS Foxy tutorials in this PR: micro-ROS/micro-ROS.github.io#187

I would suggest that you try the new tutorials + Foxy release when they are merged.

Sorry for the inconvenience.

Hello again! Please check this new tutorial for micro-ROS Foxy + Ubuntu 20.04 + Nuttx + Olimex: https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/nuttx/

I would also suggest you use a docker container using ros:foxy image.

@jayanthendo, @pablogs9 Thanks for the reply, I am going to try docker container. Thanks again for the help!

Hi, @pablogs9, one more question, I am using host to bulid micro-ros on Foxy branch, but after ros2 run micro_ros_setup configure_firmware.sh pingpong-eth
it got an error:

cd /microros_ws/firmware/apps/; colcon build --cmake-target clean --cmake-target-skip-unavailable
Starting >>> firmware
--- stderr: firmware
CMake Error: The source directory "/microros_ws/firmware/apps" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
---
Failed   <<< firmware [0.07s, exited with code 1]

run ros2 run micro_ros_setup configure_firmware.sh drive_base, shows

--- stderr: microxrcedds_client                                     
CMake Error at CMakeLists.txt:106 (find_package):
  By not providing "Findmicrocdr.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "microcdr",
  but CMake did not find one.

  Could not find a package configuration file provided by "microcdr"
  (requested version 1.2.0) with any of the following names:

    microcdrConfig.cmake
    microcdr-config.cmake

  Add the installation prefix of "microcdr" to CMAKE_PREFIX_PATH or set
  "microcdr_DIR" to a directory containing one of the above files.  If
  "microcdr" provides a separate development package or SDK, be sure it has
  been installed.

Do you have any idea? Thank you!

PS: I cannot use docker container, since there are some network issues, i.e., some sources cannot be accessed in Chain and I failed to let container use VPN.

Update (26/07):
Runnning ros2 run micro_ros_setup create_firmware_ws.sh nuttx *** , has below stderr

--- stderr: nuttx_kconfig_vendor                                  
make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
In file included from libs/parser/yconf.c:2507:
libs/parser/confdata.c: In function ‘conf_write’:
libs/parser/confdata.c:776:20: warning: ‘.tmpconfig.’ directive writing 11 bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
  776 |   sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
      |                    ^~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:867,
                 from libs/parser/yconf.c:82:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 13 and 4119 bytes into a destination of size 4097
   36 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   37 |       __bos (__s), __fmt, __va_arg_pack ());
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
---
Finished <<< nuttx_kconfig_vendor [18.3s]

Summary: 60 packages finished [28.0s]
  1 package had stderr output: nuttx_kconfig_vendor

Update (27/07):
I configured the network of docker container (ros:foxy) successfully by using the host VPN .
But the above errors still exit.

@zivy90 which system are you using?
its better to switch system and try because i also got the same problem using normal ubuntu and docker also, when i switched to dell system its not showing these errors
i don't know why these error are causing

@zivy90 which system are you using?
its better to switch system and try because i also got the same problem using normal ubuntu and docker also, when i switched to dell system its not showing these errors
i don't know why these error are causing

@jamoralp I am using Ubuntu 20.04, my computer is Dell XPS. It is weird, I used Ubuntu 18.04 before, and showed these errors, while I upgraded the system to 20.04, same errors showed again.
BTW, dell system means using dell computer? Thank you!

i am using lenovo, its weird it's working on some system's and but not on other systems