11#! /bin/bash
22
3+ PLATFORMS=()
4+ while getopts " p:" o; do
5+ case " $o " in
6+ p)
7+ PLATFORMS+=(${OPTARG} )
8+ ;;
9+ esac
10+ done
11+
12+ if [ $OPTIND -eq 1 ]; then
13+ PLATFORMS+=(" opencr1" )
14+ PLATFORMS+=(" teensy4" )
15+ PLATFORMS+=(" teensy3" )
16+ fi
17+
18+ shift $(( OPTIND- 1 ))
19+
20+ # ####### Init ########
21+
322apt update
423
524cd /uros_ws
@@ -17,50 +36,67 @@ cp /arduino_project/extras/library_generation/arduino_xrce_transports/serial_tra
1736# ####### Adding extra packages ########
1837pushd firmware/mcu_ws > /dev/null
1938
20- git clone -b foxy https://github.com/ros2/geometry2
21- cp -R geometry2/tf2_msgs ros2/tf2_msgs
22- rm -rf geometry2
39+ # Workaround: Copy just tf2_msgs
40+ git clone -b foxy https://github.com/ros2/geometry2
41+ cp -R geometry2/tf2_msgs ros2/tf2_msgs
42+ rm -rf geometry2
43+
44+ # Import user defined packages
45+ mkdir extra_packages
46+ pushd extra_packages > /dev/null
47+ cp -R /arduino_project/extras/library_generation/extra_packages/* .
48+ vcs import --input extra_packages.repos
49+ popd > /dev/null
2350
2451popd > /dev/null
2552
2653# ####### Clean and source ########
2754find /arduino_project/src/ ! -name micro_ros_arduino.h ! -name * .c ! -name * .c.in -delete
2855
2956# ####### Build for OpenCR ########
30- rm -rf firmware/build
57+ if [[ " ${PLATFORMS[@]} " =~ " opencr1 " ]]; then
58+ rm -rf firmware/build
3159
32- export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q2/bin/arm-none-eabi-
33- ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/opencr_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
60+ export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q2/bin/arm-none-eabi-
61+ ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/opencr_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
3462
35- find firmware/build/include/ -name " *.c" -delete
36- cp -R firmware/build/include/* /arduino_project/src/
63+ find firmware/build/include/ -name " *.c" -delete
64+ cp -R firmware/build/include/* /arduino_project/src/
3765
38- mkdir -p /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp
39- cp -R firmware/build/libmicroros.a /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a
66+ mkdir -p /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp
67+ cp -R firmware/build/libmicroros.a /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a
68+ fi
4069
41- # ####### Build for Teensy 4 ########
42- rm -rf firmware/build
43-
44- export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
45-
46- ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy4_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
70+ # ####### Build for Teensy 3.2 ########
71+ if [[ " ${PLATFORMS[@]} " =~ " teensy3 " ]]; then
72+ rm -rf firmware/build
4773
48- mkdir -p /arduino_project/src/imxrt1062/fpv5-d16-hard
49- cp -R firmware/build/libmicroros.a /arduino_project/src/imxrt1062/fpv5-d16-hard/libmicroros.a
74+ export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
75+ ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy32_toolchain.cmake /arduino_project/extras/library_generation/colcon_lowmem.meta
5076
77+ find firmware/build/include/ -name " *.c" -delete
78+ cp -R firmware/build/include/* /arduino_project/src/
5179
52- # ####### Build for Teensy 3.2 ########
53- rm -rf firmware/build
80+ mkdir -p /arduino_project/src/mk20dx256
81+ cp -R firmware/build/libmicroros.a /arduino_project/src/mk20dx256/libmicroros.a
82+ fi
83+ # ####### Build for Teensy 4 ########
84+ if [[ " ${PLATFORMS[@]} " =~ " teensy4 " ]]; then
85+ rm -rf firmware/build
5486
55- export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
87+ export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
88+ ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy4_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
5689
57- ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy32_toolchain.cmake /arduino_project/extras/library_generation/colcon_lowmem.meta
90+ find firmware/build/include/ -name " *.c" -delete
91+ cp -R firmware/build/include/* /arduino_project/src/
5892
59- mkdir -p /arduino_project/src/mk20dx256
60- cp -R firmware/build/libmicroros.a /arduino_project/src/mk20dx256/libmicroros.a
93+ mkdir -p /arduino_project/src/imxrt1062/fpv5-d16-hard
94+ cp -R firmware/build/libmicroros.a /arduino_project/src/imxrt1062/fpv5-d16-hard/libmicroros.a
95+ fi
6196
6297# ####### Generate extra files ########
6398find firmware/mcu_ws/ros2 \( -name " *.srv" -o -name " *.msg" \) | awk -F" /" ' {print $(NF-2)"/"$NF}' > /arduino_project/available_ros2_types
99+ find firmware/mcu_ws/extra_packages \( -name " *.srv" -o -name " *.msg" \) | awk -F" /" ' {print $(NF-2)"/"$NF}' >> /arduino_project/available_ros2_types
64100
65101cd firmware
66102echo " " > /arduino_project/built_packages
0 commit comments