micro-ROS / micro_ros_arduino

micro-ROS library for Arduino
Apache License 2.0
427 stars 106 forks source link

micro-Ros issue installing for Arduino Portenta H7 #1740

Open gabbylancs opened 2 months ago

gabbylancs commented 2 months ago

- Hardware description: I'm using and Arduino Portenta H7 - Software: I'm running it on Arduino IDE 1.8.19, with the micro-ros Humble library (I've tried both 2.0.5 and 2.0.7)

Steps to reproduce the issue

I'm literally trying to run any of the ROS examples. When I run the publisher I get a load of errors relating to libraries/functions not being found. When I go through my files I can find most of them. I suspect it might be a compatibility issue but I have no idea how to resolve it.

Here are the error messages:

_Build options changed, rebuilding all
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/src/native_ethernet_transport.cpp: In function 'size_t arduino_native_ethernet_udp_transport_read(uxrCustomTransport*, uint8_t*, size_t, int, uint8_t*)':
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/src/native_ethernet_transport.cpp:74:21: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
   return (available < 0) ? 0 : available;
           ~~~~~~~~~~^~~
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/src/wifi_transport.cpp: In function 'size_t arduino_wifi_transport_read(uxrCustomTransport*, uint8_t*, size_t, int, uint8_t*)':
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/src/wifi_transport.cpp:53:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(millis() - start_time < timeout && udp_client.parsePacket() == 0){
           ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/src/wifi_transport.cpp:59:20: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
     return (readed < 0) ? 0 : readed;
             ~~~~~~~^~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/Ethernet/src/Ethernet.cpp: In member function 'int arduino::EthernetClass::begin(uint8_t*, long unsigned int, long unsigned int)':
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/Ethernet/src/Ethernet.cpp:13:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/MbedClient.cpp: In member function 'size_t arduino::MbedClient::write(const uint8_t*, size_t)':
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/MbedClient.cpp:219:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   } while ((ret != size && ret == NSAPI_ERROR_WOULD_BLOCK) && connected());
             ~~~~^~~~~~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/MbedUdp.cpp: In member function 'virtual int arduino::MbedUDP::endPacket()':
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/MbedUdp.cpp:76:22: warning: variable length array 'buffer' is used [-Wvla]
   uint8_t buffer[size];
                      ^
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/MbedUdp.cpp:77:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < size; i++) {
                   ~~^~~~~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/MbedUdp.cpp: In member function 'virtual size_t arduino::MbedUDP::write(const uint8_t*, size_t)':
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/MbedUdp.cpp:97:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i<size; i++) {
                   ~^~~~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/SocketHelpers.cpp: In member function 'int arduino::MbedSocketClass::download(const char*, bool, mbed::Callback<void(const char*, long unsigned int)>)':
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/SocketHelpers.cpp:187:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<header_fields.size(); i++) {
                ~^~~~~~~~~~~~~~~~~~~~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/utility/http_parser/http_parser.c: In function 'http_parser_execute':
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/utility/http_parser/http_parser.c:1817:31: warning: this statement may fall through [-Wimplicit-fallthrough=]
               parser->upgrade = 1;
               ~~~~~~~~~~~~~~~~^~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/utility/http_parser/http_parser.c:1819:13: note: here
             case 1:
             ^~~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/utility/http_parser/http_parser.c: In function 'http_parser_parse_url':
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/utility/http_parser/http_parser.c:2376:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
         found_at = 1;
         ~~~~~~~~~^~~
/home/robot2/.arduino15/packages/arduino/hardware/mbed_portenta/4.1.1/libraries/SocketWrapper/src/utility/http_parser/http_parser.c:2379:7: note: here
       case s_req_server:
       ^~~~
sketch/micro-ros_publisher.ino.cpp.o: In function `timer_callback(rcl_timer_s*, long long)':
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:36: undefined reference to `rcl_publish'
sketch/micro-ros_publisher.ino.cpp.o: In function `set_microros_transports':
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/src/micro_ros_arduino.h:33: undefined reference to `rmw_uros_set_custom_transport'
sketch/micro-ros_publisher.ino.cpp.o: In function `setup':
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:49: undefined reference to `rcutils_get_default_allocator'
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:52: undefined reference to `rclc_support_init'
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:55: undefined reference to `rclc_node_init_default'
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:58: undefined reference to `rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int32'
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:58: undefined reference to `rclc_publisher_init_default'
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:66: undefined reference to `rclc_timer_init_default'
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:73: undefined reference to `rclc_executor_init'
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:74: undefined reference to `rclc_executor_add_timer'
sketch/micro-ros_publisher.ino.cpp.o: In function `loop':
/home/robot2/Arduino/libraries/micro_ros_arduino-2.0.5-humble/examples/micro-ros_publisher/micro-ros_publisher.ino:81: undefined reference to `rclc_executor_spin_some'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Portenta H7._ 

Additional information

If anyone could also suggest a way I can use micro-ros without using the arduino library, i dont mind switching hardware. I'll also take it.

Thanks :)

aistehoo commented 1 month ago

I do also have the same error prompts in the bottom half. I've tried tons of fix based on other similar issues including patching and building meta file.