micro-ROS / micro_ros_setup

Support macros for building micro-ROS-based firmware.
Apache License 2.0
363 stars 132 forks source link

Issues building with Nuttx + Olimex-stm32-e407 #138

Closed jayanthendo closed 4 years ago

jayanthendo commented 4 years ago

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

pablogs9 commented 4 years ago

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.

jayanthendo commented 4 years ago

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

pablogs9 commented 4 years ago

Could you please copy here the error you are having?

jayanthendo commented 4 years ago

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]

pablogs9 commented 4 years ago

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 ?

jayanthendo commented 4 years ago

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

pablogs9 commented 4 years ago

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

jayanthendo commented 4 years ago

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

pablogs9 commented 4 years ago

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

jayanthendo commented 4 years ago

no just firmware folder

jayanthendo commented 4 years ago

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

pablogs9 commented 4 years ago

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?

jayanthendo commented 4 years ago

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.

pablogs9 commented 4 years ago

try with pingpong-eth configuration

jayanthendo commented 4 years ago

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
pablogs9 commented 4 years ago

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 ?

pablogs9 commented 4 years ago

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

jayanthendo commented 4 years ago

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.

pablogs9 commented 4 years ago

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

jayanthendo commented 4 years ago

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?

jayanthendo commented 4 years ago

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

jayanthendo commented 4 years ago

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

pablogs9 commented 4 years ago

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
acassis commented 4 years ago

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 sinceD' is the default (see U') ar:u' modifier ignored since D' is the default (seeU') 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?

pablogs9 commented 4 years ago

Are you using Ubuntu 18.04?

jayanthendo commented 4 years ago

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

pablogs9 commented 4 years ago

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

jayanthendo commented 4 years ago

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

acassis commented 4 years ago

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?

acassis commented 4 years ago

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

pablogs9 commented 4 years ago

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

FranFin commented 4 years ago

@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.

jayanthendo commented 4 years ago

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

zivy90 commented 4 years ago

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.

jayanthendo commented 4 years ago

@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.

pablogs9 commented 4 years ago

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

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

Sorry for the inconvenience.

pablogs9 commented 4 years ago

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.

zivy90 commented 4 years ago

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

zivy90 commented 4 years ago

Hi, @pablogs9, one more question, I am using host to bulid micro-ros on Foxy branch, but afterros2 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.

jayanthendo commented 4 years ago

@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 commented 4 years ago

@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!

jayanthendo commented 4 years ago

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