Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions micro_ros_setup/config/zephyr/generic/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ pushd $FW_TARGETDIR >/dev/null
rm -rf mcu_ws/build mcu_ws/install mcu_ws/log
fi


# Set platform for Zephyr
# Platform renaming for Zephyr
if [ "$PLATFORM" = "discovery_l475_iot1" ]; then
export BOARD="disco_l475_iot1"
elif [ "$PLATFORM" = "olimex-stm32-e407" ]; then
Expand All @@ -44,6 +43,24 @@ pushd $FW_TARGETDIR >/dev/null
exit 1
fi

# Use transport specific conf if given and exists.
if [ -z "$TRANSPORT" ];then
export CONF_FILE="prj.conf"
else
if [ ! -f "$UROS_APP_FOLDER/$TRANSPORT.conf" ]; then
echo "Specific config for transport not found. Using prj.conf."
export CONF_FILE="prj.conf"
else
export CONF_FILE="$TRANSPORT.conf"
fi
fi

if [ "$PLATFORM" = "host" ]; then
echo "Zephyr native-posix detected. Using host-udp.conf."

export CONF_FILE="host-udp.conf"
fi

# Build Zephyr + app
west build -b $BOARD -p auto $UROS_APP_FOLDER -- -G'Unix Makefiles' -DCMAKE_VERBOSE_MAKEFILE=ON
west build -b $BOARD -p auto $UROS_APP_FOLDER -- -DCONF_FILE=$UROS_APP_FOLDER/$CONF_FILE -G'Unix Makefiles' -DCMAKE_VERBOSE_MAKEFILE=ON
popd >/dev/null
5 changes: 5 additions & 0 deletions micro_ros_setup/config/zephyr/generic/client-colcon.meta
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
"-DRCUTILS_AVOID_DYNAMIC_ALLOCATION=ON"
]
},
"tracetools": {
"cmake-args": [
"-DTRACETOOLS_DISABLED=ON"
]
},
"microxrcedds_client": {
"cmake-args": [
"-DUCLIENT_PIC=OFF"
Expand Down
30 changes: 30 additions & 0 deletions micro_ros_setup/config/zephyr/generic/configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,36 +19,66 @@ if [ "$UROS_TRANSPORT" == "udp" ]; then
update_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_UDP_IP=$UROS_AGENT_IP"
update_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_UDP_PORT=$UROS_AGENT_PORT"

update_meta "microxrcedds_client" "UCLIENT_PROFILE_UDP=ON"

update_meta "microxrcedds_client" "UCLIENT_PROFILE_DISCOVERY=OFF"
update_meta "microxrcedds_client" "UCLIENT_PROFILE_TCP=OFF"
update_meta "microxrcedds_client" "UCLIENT_EXTERNAL_SERIAL=OFF"

remove_meta "microxrcedds_client" "UCLIENT_EXTERNAL_SERIAL"

echo "Configured $UROS_TRANSPORT mode with agent at $UROS_AGENT_IP:$UROS_AGENT_PORT"

echo $UROS_TRANSPORT > $FW_TARGETDIR/TRANSPORT

elif [ "$UROS_TRANSPORT" == "serial" ]; then
echo "Using serial device."

cp -f $EXTENSIONS_DIR/microros_extensions/zephyr_serial_transport.c $FW_TARGETDIR/mcu_ws/eProsima/Micro-XRCE-DDS-Client/src/c/profile/transport/serial/serial_transport_external.c
cp -f $EXTENSIONS_DIR/microros_extensions/zephyr_serial_transport.h $FW_TARGETDIR/mcu_ws/eProsima/Micro-XRCE-DDS-Client/include/uxr/client/profile/transport/serial/serial_transport_external.h

update_meta "microxrcedds_client" "UCLIENT_PROFILE_SERIAL=ON"
update_meta "microxrcedds_client" "UCLIENT_EXTERNAL_SERIAL=ON"

update_meta "microxrcedds_client" "UCLIENT_PROFILE_DISCOVERY=OFF"
update_meta "microxrcedds_client" "UCLIENT_PROFILE_UDP=OFF"
update_meta "microxrcedds_client" "UCLIENT_PROFILE_TCP=OFF"

update_meta "rmw_microxrcedds" "RMW_UXRCE_TRANSPORT=custom_serial"

if [ ! -z "$UROS_AGENT_DEVICE" ];then
update_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_SERIAL_DEVICE=$UROS_AGENT_DEVICE"
fi

remove_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_UDP_IP"
remove_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_UDP_PORT"

echo $UROS_TRANSPORT > $FW_TARGETDIR/TRANSPORT

elif [ "$UROS_TRANSPORT" == "serial-usb" ]; then
echo "Using USB serial device."

cp -f $EXTENSIONS_DIR/microros_extensions/zephyr_usb_serial_transport.c $FW_TARGETDIR/mcu_ws/eProsima/Micro-XRCE-DDS-Client/src/c/profile/transport/serial/serial_transport_external.c
cp -f $EXTENSIONS_DIR/microros_extensions/zephyr_usb_serial_transport.h $FW_TARGETDIR/mcu_ws/eProsima/Micro-XRCE-DDS-Client/include/uxr/client/profile/transport/serial/serial_transport_external.h

update_meta "microxrcedds_client" "UCLIENT_PROFILE_SERIAL=ON"
update_meta "microxrcedds_client" "UCLIENT_EXTERNAL_SERIAL=ON"

update_meta "microxrcedds_client" "UCLIENT_PROFILE_DISCOVERY=OFF"
update_meta "microxrcedds_client" "UCLIENT_PROFILE_UDP=OFF"
update_meta "microxrcedds_client" "UCLIENT_PROFILE_TCP=OFF"

update_meta "rmw_microxrcedds" "RMW_UXRCE_TRANSPORT=custom_serial"

remove_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_UDP_IP"
remove_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_UDP_PORT"
remove_meta "rmw_microxrcedds" "RMW_UXRCE_DEFAULT_SERIAL_DEVICE"


echo "Configured $UROS_TRANSPORT mode with agent at USB serial"

echo $UROS_TRANSPORT > $FW_TARGETDIR/TRANSPORT

else
help
fi
10 changes: 7 additions & 3 deletions micro_ros_setup/config/zephyr/generic/create.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,15 @@ pushd $FW_TARGETDIR >/dev/null

pip3 install -r zephyrproject/zephyr/scripts/requirements.txt

export TOOLCHAIN_VERSION=zephyr-sdk-0.11.3-setup.run
if [ "$PLATFORM" = "host" ]; then
export TOOLCHAIN_VERSION=zephyr-sdk-0.11.2-setup.run
else
export TOOLCHAIN_VERSION=zephyr-toolchain-arm-0.11.2-setup.run
fi

wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.11.3/$TOOLCHAIN_VERSION
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.11.2/$TOOLCHAIN_VERSION
chmod +x $TOOLCHAIN_VERSION
echo "n" | ./$TOOLCHAIN_VERSION -- -d $(pwd)/zephyr-sdk -y -norc
./$TOOLCHAIN_VERSION -- -d $(pwd)/zephyr-sdk -y

rm -rf $TOOLCHAIN_VERSION

Expand Down
3 changes: 3 additions & 0 deletions micro_ros_setup/scripts/build_firmware.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ export UROS_FAST_BUILD
if [ -d $FW_TARGETDIR ]; then
RTOS=$(head -n1 $FW_TARGETDIR/PLATFORM)
PLATFORM=$(head -n2 firmware/PLATFORM | tail -n1)
if [ -f $FW_TARGETDIR/TRANSPORT ]; then
TRANSPORT=$(head -n1 firmware/TRANSPORT)
fi
else
echo "Firmware folder not found. Please use ros2 run micro_ros_setup create_firmware_ws.sh to create a new project."
exit 1
Expand Down