micro-ROS / micro-ROS/micro_ros_arduino

Error when compiling micro-ros_publisher example

Open
#1,634 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
576
Forks
146
PR merge metrics
No merged PRs in 30d

Description

## Issue template

- Hardware description: Teensy 4.1, Arduino 2.2.1, Teenseyduino 1.58.1
- Installation type: Humble (reinstalled today)
- Version or commit hash:

#### Steps to reproduce the issue

1. Install Humble
2. Follow micro ros installation steps
3. Install Arduino 2.2.1 and Teensyduino 1.58.1
4. Follow "Patch Teensyduino" (tried and "Patch Sam" option as well) -- under ` /.arduino15/packages/teensy/hardware/avr/1.58.1 `
5. Download zip and add folder .zip folder from https://github.com/micro-ROS/micro_ros_arduino/releases
6. Compile on Arduino IDE

#### Expected behavior

Expecting data writing in example shown (https://micro.ros.org/docs/tutorials/core/teensy_with_arduino/)

#### Actual behavior
Two things: mainly believe #1 is the core issue

1.Compiling the micro-ros_publisher example on the Arduino IDE and getting the following errors. The first is when tring to compile for the first time and second error is anytime trying to upload thereafter.

First error:
```
Using precompiled library in /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/NativeEthernet/src/NativeEthernetServer.cpp: In member function 'EthernetClient EthernetServer::available()':
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/NativeEthernet/src/NativeEthernetServer.cpp:119:103: warning: enum constant in boolean context [-Wint-in-bool-context]
119 | if(socket_poll.events_occurred & (FNET_SOCKET_EVENT_OUT || FNET_SOCKET_EVENT_IN)) {
| ^~~~~~~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/service/llmnr/fnet_llmnr.c:60:30: warning: 'fnet_llmnr_ip6_multicast_addr' defined but not used [-Wunused-const-variable=]
60 | static const fnet_ip6_addr_t fnet_llmnr_ip6_multicast_addr = FNET_IP6_ADDR_INIT(0xFF, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01, 0x00, 0x03);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:1062:83: warning: argument 2 of type 'unsigned char[36]' with mismatched bound [-Warray-parameter=]
1062 | MBEDTLSFLASHMEM void ssl_calc_verify_tls( mbedtls_ssl_context *ssl, unsigned char hash[36] )
| ~~~~~~~~~~~~~~^~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:483:73: note: previously declared as 'unsigned char *'
483 | MBEDTLSFLASHMEM static void ssl_calc_verify_tls( mbedtls_ssl_context *, unsigned char * );
| ^~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:1090:90: warning: argument 2 of type 'unsigned char[32]' with mismatched bound [-Warray-parameter=]
1090 | MBEDTLSFLASHMEM void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *ssl, unsigned char hash[32] )
| ~~~~~~~~~~~~~~^~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:490:79: note: previously declared as 'unsigned char *'
490 | MBEDTLSFLASHMEM static void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *,unsigned char * );
| ^~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:1111:90: warning: argument 2 of type 'unsigned char[48]' with mismatched bound [-Warray-parameter=]
1111 | MBEDTLSFLASHMEM void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *ssl, unsigned char hash[48] )
| ~~~~~~~~~~~~~~^~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:496:80: note: previously declared as 'unsigned char *'
496 | MBEDTLSFLASHMEM static void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *, unsigned char * );
| ^~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c: In function 'ssl_calc_verify_tls_sha384':
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:1120:5: warning: 'mbedtls_sha512_finish_ret' accessing 64 bytes in a region of size 48 [-Wstringop-overflow=]
1120 | mbedtls_sha512_finish_ret( &sha512, hash );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:1120:5: note: referencing argument 2 of type 'unsigned char *'
In file included from /home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/mbedtls/ssl_internal.h:43,
from /home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:48:
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/mbedtls/sha512.h:128:21: note: in a call to function 'mbedtls_sha512_finish_ret'
128 | MBEDTLSFLASHMEM int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c: In function 'ssl_calc_finished_tls_sha384':
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:5376:5: warning: 'mbedtls_sha512_finish_ret' accessing 64 bytes in a region of size 48 [-Wstringop-overflow=]
5376 | mbedtls_sha512_finish_ret( &sha512, padbuf );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:5376:5: note: referencing argument 2 of type 'unsigned char *'
In file included from /home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/mbedtls/ssl_internal.h:43,
from /home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/ssl_tls.c:48:
/home/amangan/.arduino15/packages/teensy/hardware/avr/1.58.1/libraries/FNET/src/third_party/mbedtls-2.12.0/src/mbedtls/sha512.h:128:21: note: in a call to function 'mbedtls_sha512_finish_ret'
128 | MBEDTLSFLASHMEM int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard/libmicroros.a(librmw-validate_full_topic_name.c.obj): in function `rmw_validate_full_topic_name':
validate_full_topic_name.c:(.text.rmw_validate_full_topic_name+0xbe): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard/libmicroros.a(librmw-validate_node_name.c.obj): in function `rmw_validate_node_name':
validate_node_name.c:(.text.rmw_validate_node_name+0x5e): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard/libmicroros.a(librcl-validate_topic_name.c.obj): in function `rcl_validate_topic_name':
validate_topic_name.c:(.text.rcl_validate_topic_name+0x46): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: validate_topic_name.c:(.text.rcl_validate_topic_name+0xb6): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: validate_topic_name.c:(.text.rcl_validate_topic_name+0x164): undefined reference to `__locale_ctype_ptr'
collect2: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1
```

Second error:

```
WARNING: library micro_ros_arduino claims to run on stm32, OpenCR, Teensyduino, samd, sam, mbed, esp32, mbed_portenta architecture(s) and may be incompatible with your current board which runs on avr architecture(s).
Library micro_ros_arduino has been declared precompiled:
Using precompiled library in /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard/libmicroros.a(librmw-validate_full_topic_name.c.obj): in function `rmw_validate_full_topic_name':
validate_full_topic_name.c:(.text.rmw_validate_full_topic_name+0xbe): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard/libmicroros.a(librmw-validate_node_name.c.obj): in function `rmw_validate_node_name':
validate_node_name.c:(.text.rmw_validate_node_name+0x5e): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: /home/amangan/Arduino/libraries/micro_ros_arduino/src/imxrt1062/fpv5-d16-hard/libmicroros.a(librcl-validate_topic_name.c.obj): in function `rcl_validate_topic_name':
validate_topic_name.c:(.text.rcl_validate_topic_name+0x46): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: validate_topic_name.c:(.text.rcl_validate_topic_name+0xb6): undefined reference to `__locale_ctype_ptr'
/home/amangan/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: validate_topic_name.c:(.text.rcl_validate_topic_name+0x164): undefined reference to `__locale_ctype_ptr'
collect2: error: ld returned 1 exit status
```

2. I am able to run the docker, but it does not get past logger setup:

```
amangan@amangan-XPS-15-7590:~/microros_ws$ sudo docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:humble serial --dev /dev/ttyACM0 -v6
[1705205523.023869] info | TermiosAgentLinux.cpp | init | running... | fd: 3
[1705205523.024098] info | Root.cpp | set_verbose_level | logger setup | verbose_level: 6
```

#### Additional information

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the micro_ros_publisher build in Arduino IDE using the stated Teensy 4.1, Arduino 2.2.1, Teensyduino 1.58.1, and Humble setup. Inspect the reported linker errors from the precompiled micro_ros_arduino library and then run the documented Docker agent command. Done means the example compiles and the agent proceeds beyond logger setup so the expected data is written.

Written by the indexing model from the issue text.

Assessment

Tech stack
arduino, c, docker
Domain
devops, embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.