micro-ROS / micro-ROS/micro_ros_arduino
Error when compiling micro-ros_publisher example
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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