micro_ros_ArduinoのArduinoIDEでのビルドエラー

実現したいこと

micro_ros_Arduinoのサンプルコード(micro_ros_publisher)をビルドしたい

前提

使用PCはMacBookProでcpuはintel製です
ArduinoIDEでサンプルコード(下に載せます)をビルドしたいのですがエラーが出てしまいビルドできませんでした

発生している問題・エラーメッセージ

Library micro_ros_arduino has been declared precompiled: Using precompiled library in /Users/tsukuru/Documents/Arduino/libraries/micro_ros_arduino/src/cortex-m3 The platform does not support 'compiler.libraries.ldflags' for precompiled libraries. /private/var/folders/37/l0cx5m1d2g9gf9w_b0tnf8vw0000gn/T/arduino/sketches/514755F0C14299C5A7E60B96AA4AF0A8/sketch/micro-ros_publisher.ino.cpp.o: In function `timer_callback(rcl_timer_s*, long long)': /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:37: undefined reference to `rcl_publish' /private/var/folders/37/l0cx5m1d2g9gf9w_b0tnf8vw0000gn/T/arduino/sketches/514755F0C14299C5A7E60B96AA4AF0A8/sketch/micro-ros_publisher.ino.cpp.o: In function `set_microros_transports': /Users/tsukuru/Documents/Arduino/libraries/micro_ros_arduino/src/micro_ros_arduino.h:40: undefined reference to `rmw_uros_set_custom_transport' /private/var/folders/37/l0cx5m1d2g9gf9w_b0tnf8vw0000gn/T/arduino/sketches/514755F0C14299C5A7E60B96AA4AF0A8/sketch/micro-ros_publisher.ino.cpp.o: In function `setup': /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:50: undefined reference to `rcutils_get_default_allocator' /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:53: undefined reference to `rclc_support_init' /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:56: undefined reference to `rclc_node_init_default' /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:59: undefined reference to `rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int32' /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:59: undefined reference to `rclc_publisher_init_default' /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:67: undefined reference to `rclc_timer_init_default' /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:74: undefined reference to `rclc_executor_init' /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:75: undefined reference to `rclc_executor_add_timer' /private/var/folders/37/l0cx5m1d2g9gf9w_b0tnf8vw0000gn/T/arduino/sketches/514755F0C14299C5A7E60B96AA4AF0A8/sketch/micro-ros_publisher.ino.cpp.o: In function `loop': /Users/tsukuru/Code/micro-ros_publisher/micro-ros_publisher.ino:82: undefined reference to `rclc_executor_spin_some' collect2: error: ld returned 1 exit status exit status 1 Compilation error: exit status 1

該当のソースコード

Arduino

1#include <micro_ros_arduino.h>2#include <std_msgs/msg/int32.h>3#include <stdio.h>4#include <rcl/rcl.h>5#include <rcl/error_handling.h>6#include <rclc/rclc.h>7#include <rclc/executor.h>8 9rcl_publisher_t publisher;10std_msgs__msg__Int32 msg;11rclc_executor_t executor;12rclc_support_t support;13rcl_allocator_t allocator;14rcl_node_t node;15rcl_timer_t timer;16 17#define LED_PIN 1318 19#define RCCHECK(fn) { rcl_ret_t temp_rc = fn; if((temp_rc != RCL_RET_OK)){error_loop();}}20#define RCSOFTCHECK(fn) { rcl_ret_t temp_rc = fn; if((temp_rc != RCL_RET_OK)){}}21 22 23void error_loop(){24 while(1){25 digitalWrite(LED_PIN, !digitalRead(LED_PIN));26 delay(100);27 }28}29 30void timer_callback(rcl_timer_t * timer, int64_t last_call_time)31{ 32 RCLC_UNUSED(last_call_time);33 if (timer != NULL) {34 RCSOFTCHECK(rcl_publish(&publisher, &msg, NULL));35 msg.data++;36 }37}38 39void setup() {40 set_microros_transports();41 42 pinMode(LED_PIN, OUTPUT);43 digitalWrite(LED_PIN, HIGH); 44 45 delay(2000);46 47 allocator = rcl_get_default_allocator();48 49 //create init_options50 RCCHECK(rclc_support_init(&support, 0, NULL, &allocator));51 52 // create node53 RCCHECK(rclc_node_init_default(&node, "micro_ros_arduino_node", "", &support));54 55 // create publisher56 RCCHECK(rclc_publisher_init_default(57 &publisher,58 &node,59 ROSIDL_GET_MSG_TYPE_SUPPORT(std_msgs, msg, Int32),60 "micro_ros_arduino_node_publisher"));61 62 // create timer,63 const unsigned int timer_timeout = 1000;64 RCCHECK(rclc_timer_init_default(65 &timer,66 &support,67 RCL_MS_TO_NS(timer_timeout),68 timer_callback));69 70 // create executor71 RCCHECK(rclc_executor_init(&executor, &support.context, 1, &allocator));72 RCCHECK(rclc_executor_add_timer(&executor, &timer));73 74 msg.data = 0;75}76 77void loop() {78 delay(100);79 RCSOFTCHECK(rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)));80}

試したこと

・ArduinoIDEの再インストール
・異なるバージョンでのビルド

補足情報(FW/ツールのバージョンなど)

https://github.com/micro-ROS/micro_ros_arduino

コメントを投稿

0 コメント