micro-ROS / nuttx_apps

Other
10 stars 13 forks source link

micro-ROS serial configuration fail at build time #21

Closed jfm92 closed 4 years ago

jfm92 commented 4 years ago

I'm trying to use the uros defconfing with serial communications instead of ethernet. To do so, I went to the menuconfig and did the next modification: Application configuration->micro-ROS->Transport, and set Serial Transport.

When I try to build it, with micro-ROS build system using the next command: ros2 run micro_ros_setup build_firmware.sh

I get the next error:

juan@juan-GL65-9SEK:~/uros_pinpong$ ros2 run micro_ros_setup build_firmware.sh
Crosscompiled environment: cleaning path
Building firmware for nuttx platform olimex-stm32-e407
LN: include/arch to arch/arm/include
LN: include/arch/board to /home/juan/uros_pinpong/firmware/NuttX/configs/olimex-stm32-e407/include
LN: include/arch/chip to arch/arm/include/stm32
LN: arch/arm/src/board to /home/juan/uros_pinpong/firmware/NuttX/configs/olimex-stm32-e407/src
LN: arch/arm/src/chip to arch/arm/src/stm32
make[1]: Entering directory '/home/juan/uros_pinpong/firmware/NuttX/configs'
make[1]: Leaving directory '/home/juan/uros_pinpong/firmware/NuttX/configs'
make[1]: Entering directory '/home/juan/uros_pinpong/firmware/apps'
make[2]: Entering directory '/home/juan/uros_pinpong/firmware/apps/platform'
LN: platform/board to /home/juan/uros_pinpong/firmware/apps/platform/dummy
make[2]: Leaving directory '/home/juan/uros_pinpong/firmware/apps/platform'
make[1]: Leaving directory '/home/juan/uros_pinpong/firmware/apps'
make[1]: Entering directory '/home/juan/uros_pinpong/firmware/NuttX/configs'
make[2]: Entering directory '/home/juan/uros_pinpong/firmware/NuttX/configs/olimex-stm32-e407/src'
make[2]: Nothing to be done for 'context'.
make[2]: Leaving directory '/home/juan/uros_pinpong/firmware/NuttX/configs/olimex-stm32-e407/src'
make[1]: Leaving directory '/home/juan/uros_pinpong/firmware/NuttX/configs'
make[1]: Entering directory '/home/juan/uros_pinpong/firmware/apps'
make[2]: Entering directory '/home/juan/uros_pinpong/firmware/apps/builtin'
make[3]: Entering directory '/home/juan/uros_pinpong/firmware/apps/builtin/registry'
make[3]: Leaving directory '/home/juan/uros_pinpong/firmware/apps/builtin/registry'
make[2]: Leaving directory '/home/juan/uros_pinpong/firmware/apps/builtin'
make[2]: Entering directory '/home/juan/uros_pinpong/firmware/apps'
make[3]: Entering directory '/home/juan/uros_pinpong/firmware/apps/uros'
cat arm_toolchain.cmake.in | \
    sed "s/@CROSSDEV@/arm-none-eabi-/g" | \
    sed "s/@NUTTX_TOPDIR@/\/home\/juan\/uros_pinpong\/firmware\/NuttX/g" |\
    sed "s/@ARCH_CPU_FLAGS@/\"-mcpu=cortex-m4 -mthumb -mfloat-abi=soft\"/g" |\
    sed "s/@ARCH_OPT_FLAGS@/\"-g\"/g" \
    > arm_toolchain.cmake
cat rmw_config.meta.in | \
    sed "s/@MAX_NODES@/2/g" | \
    sed "s/@MAX_PUBLISHERS@/2/g" | \
    sed "s/@MAX_SUBSCRIPTIONS@/1/g" | \
    sed "s/@MAX_SERVICES@/1/g" | \
    sed "s/@MAX_CLIENTS@/1/g" | \
    sed "s/@MAX_HISTORY@/2/g" | \
    sed "s/@TRANSPORT@/serial/g" | \
    sed "s/@AGENT_IP@//g" | \
    sed "s/@AGENT_PORT@//g" |\
    sed "s/@SERIAL_PORT@/"/dev/ttyS1"/g" \
    > rmw_config.meta
sed: -e expression #1, char 18: unknown option to `s'
Makefile:40: recipe for target 'rmw_config.meta' failed
make[3]: *** [rmw_config.meta] Error 1
make[3]: Leaving directory '/home/juan/uros_pinpong/firmware/apps/uros'
Makefile:106: recipe for target 'uros_context' failed
make[2]: *** [uros_context] Error 2
make[2]: Leaving directory '/home/juan/uros_pinpong/firmware/apps'
Makefile:179: recipe for target 'context_serialize' failed
make[1]: *** [context_serialize] Error 2
make[1]: Leaving directory '/home/juan/uros_pinpong/firmware/apps'
tools/Makefile.unix:345: recipe for target 'context' failed
make: *** [context] Error 2

Note: The name of the folder it doesn't has relation with the defconfig.

pablogs9 commented 4 years ago

Take care about bash quotes and escapping characters in sed, this works:

echo "hola@SERIAL_PORT@" | sed "s/@SERIAL_PORT@/\/dev\/ttyS1/g"

but this will crash:

sed "s/@SERIAL_PORT@/"/dev/ttyS1"/g" \