micro-ROS / micro-ROS/micro_ros_arduino

Communication with a simple publisher code with ARDUINO DUE and micro ros

Open
#1,868 1 comment 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: Arduino DUE
- RTOS:
- Installation type: Arduino IDE
- Version or commit hash: humble on ubuntu 22.04

#### Steps to reproduce the issue

#### Expected behavior
i'm running an agent with docker. `sudo docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:humble serial --dev /dev/ttyACM0 -v6
`
I have a publisher code, I'm running this code with python. I'm waiting for the data I put on the Arduino to arrive.
#### Actual behavior
I'm getting error from Arduino `"/home/mina/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gcc" -mcpu=cortex-m3 -mthumb -Os -Wl,--gc-sections "-T/home/mina/.arduino15/packages/arduino/hardware/sam/1.6.12/variants/arduino_due_x/linker_scripts/gcc/flash.ld" "-Wl,-Map,/tmp/arduino_build_390385/basic.ino.ino.map" -o "/tmp/arduino_build_390385/basic.ino.ino.elf" "-L/tmp/arduino_build_390385" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group -u _sbrk -u link -u _close -u _fstat -u _isatty -u _lseek -u _read -u _write -u _exit -u kill -u _getpid "/tmp/arduino_build_390385/sketch/basic.ino.ino.cpp.o" "/tmp/arduino_build_390385/libraries/micro_ros_arduino-2.0.7-humble/default_transport.cpp.o" "/tmp/arduino_build_390385/libraries/micro_ros_arduino-2.0.7-humble/native_ethernet_transport.cpp.o" "/tmp/arduino_build_390385/libraries/micro_ros_arduino-2.0.7-humble/wifi_transport.cpp.o" "/tmp/arduino_build_390385/core/variant.cpp.o" "/home/mina/.arduino15/packages/arduino/hardware/sam/1.6.12/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a" "/tmp/arduino_build_390385/../arduino_cache_577918/core/core_arduino_sam_arduino_due_x_7e293e264b1e0312c8d5597ef3b45ebf.a" -Wl,--end-group -lm -lgcc
/tmp/arduino_build_390385/sketch/basic.ino.ino.cpp.o: In function `loop':
/home/mina/Arduino/basic.ino/basic.ino.ino:54: undefined reference to `rclc_executor_spin_some'
/tmp/arduino_build_390385/sketch/basic.ino.ino.cpp.o: In function `set_microros_transports':
/home/mina/Arduino/libraries/micro_ros_arduino-2.0.7-humble/src/micro_ros_arduino.h:40: undefined reference to `rmw_uros_set_custom_transport'
/tmp/arduino_build_390385/sketch/basic.ino.ino.cpp.o: In function `setup':
/home/mina/Arduino/basic.ino/basic.ino.ino:33: undefined reference to `rclc_support_init'
/home/mina/Arduino/basic.ino/basic.ino.ino:36: undefined reference to `rclc_node_init_default'
/home/mina/Arduino/basic.ino/basic.ino.ino:43: undefined reference to `rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float32'
/home/mina/Arduino/basic.ino/basic.ino.ino:43: undefined reference to `rclc_subscription_init_default'
/home/mina/Arduino/basic.ino/basic.ino.ino:46: undefined reference to `rclc_executor_init'
/home/mina/Arduino/basic.ino/basic.ino.ino:47: undefined reference to `rclc_executor_add_subscription'
collect2: error: ld returned 1 exit status
Using library micro_ros_arduino-2.0.7-humble at version 2.0.7-humble in folder: /home/mina/Arduino/libraries/micro_ros_arduino-2.0.7-humble
exit status 1
Error compiling for board Arduino Due (Native USB Port).`
#### Additional information
My python code =
`
import rclpy
from rclpy.node import Node

from std_msgs.msg import Float32


class MinimalPublisher(Node):

def __init__(self):
super().__init__('minimal_publisher')
self.publisher_ = self.create_publisher(Float32, 'topic', 10)
timer_period = 0.5 # seconds
self.timer = self.create_timer(timer_period, self.timer_callback)
self.i = 0

def timer_callback(self):
msg = Float32()
msg.data = 4.1
self.publisher_.publish(msg)
self.get_logger().info('Publishing: "%s"' % msg.data)
self.i += 1


def main(args=None):
rclpy.init(args=args)

minimal_publisher = MinimalPublisher()

rclpy.spin(minimal_publisher)

# Destroy the node explicitly
# (optional - otherwise it will be done automatically
# when the garbage collector destroys the node object)
minimal_publisher.destroy_node()
rclpy.shutdown()


if __name__ == '__main__':
main()
`

My Arduino code

`
#include
#include
#include
#include
#include

rcl_subscription_t subscriber;
std_msgs__msg__Float32 received_msg;
rclc_executor_t executor;
rcl_node_t node;
rclc_support_t support;

void subscription_callback(const void *msgin)
{
const std_msgs__msg__Float32 *msg = (const std_msgs__msg__Float32 *)msgin;
Serial.print("Alınan Değer: ");
Serial.println(msg->data);
}


void setup()
{
Serial.begin(115200);
delay(2000);

set_microros_transports();

const char * arguments[] = {"arduino_due_subscriber"};
rclc_support_init(&support, 0, arguments, NULL);
// Node başlatma
rclc_node_init_default(&node, "arduino_due_subscriber", nullptr, &support);

rclc_subscription_init_default(
&subscriber,
&node,
ROSIDL_GET_MSG_TYPE_SUPPORT(std_msgs, msg, Float32),
"topic");

rclc_executor_init(&executor, &support.context, 1, NULL);
rclc_executor_add_subscription(&executor, &subscriber, &received_msg, &subscription_callback, ON_NEW_DATA);
}


void loop()
{
rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100));
}

`

THANK YOU!

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

Begin by reproducing the Arduino Due build using the provided Arduino code, micro_ros_arduino-2.0.7-humble version, and Humble environment, then inspect the reported undefined references during linking. Done means the sketch compiles and the Arduino subscriber receives the Float32 messages published on topic.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.