Skip to content

Trying to connect with udp4 (rmw_uros_discover_agent missing ?) #827

Description

@DaFray31

Hello,

I am trying to connect my pi pico w, with the docker agent in udp4 (using micro-ros + pico sdk).

Unfortunately using :
rmw_uros_options_set_udp_address(), it fails to reach the agent (I run the container from wsl 2)

So I try to use the rmw_uros_discover_agent() function as in the example here

Unfortunately this function does not exist.
Is this normal?

Thanks in advance

Here are my different codes:
Docker agent :
docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:humble udp4 -p 9999 -d

file.cpp with trying to use rmw_uros_discover_agent()

#include <stdio.h>

#include <rcl/rcl.h>
#include <rcl/error_handling.h>
#include <rclc/rclc.h>
#include <rclc/executor.h>
#include <std_msgs/msg/int32.h>
#include <rmw_microros/rmw_microros.h>

#include "pico/stdlib.h"
#include "pico_uart_transports.h"
#include "pico/cyw43_arch.h"
[...]
    rcl_init_options_t init_options = rcl_get_zero_initialized_init_options();
    rmw_init_options_t* rmw_options = rcl_init_options_get_rmw_init_options(&init_options);
    if(rmw_uros_discover_agent(rmw_options) != RCL_RET_OK){
	printf("micro-ROS agent not found\n");
	return 1;
}
    printf("Agent found");

CMakeLists.txt :

cmake_minimum_required(VERSION 3.12)

include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

project(pico_micro_ros_example C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(PICO_BOARD "pico_w")

pico_sdk_init()

link_directories(libmicroros)
add_executable(pico_micro_ros_example
    pico_micro_ros_example.c
    pico_uart_transport.c
)
target_link_libraries(pico_micro_ros_example
    pico_stdlib
    microros
    pico_cyw43_arch_lwip_poll
    
    )
    

target_include_directories(pico_micro_ros_example PUBLIC
    libmicroros/include
)

SET(CMAKE_C_FLAGS  "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections")
SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections")

# Configure Pico
pico_enable_stdio_usb(pico_micro_ros_example 1)
pico_enable_stdio_uart(pico_micro_ros_example 0)
add_compile_definitions(PICO_UART_ENABLE_CRLF_SUPPORT=0)
add_compile_definitions(PICO_STDIO_ENABLE_CRLF_SUPPORT=0)
add_compile_definitions(PICO_STDIO_DEFAULT_CRLF=0)

# Generate UF2
pico_add_extra_outputs(pico_micro_ros_example)

file.cpp trying to use rmw_uros_options_set_udp_address() :

[...]
    rcl_init_options_t init_options = rcl_get_zero_initialized_init_options();
    rmw_init_options_t* rmw_options = rcl_init_options_get_rmw_init_options(&init_options);
	if(rmw_uros_options_set_udp_address("172.16.180.236","9999", rmw_options) != RMW_RET_OK){
		printf("micro-ROS agent not found\n");
        cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1);
        sleep_ms(1000);
        cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0);
        sleep_ms(1000);
        cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1);
        sleep_ms(1000);
        cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0);
		return 1;
	}
    printf("Agent found");

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions