Skip to content

Commit 72e6141

Browse files
authored
Refactor (#1)
* Initial Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Add boards Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update Signed-off-by: Pablo Garrido <pablogs9@gmail.com> * Update portenta Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
1 parent 96d707f commit 72e6141

46 files changed

Lines changed: 890 additions & 4152 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: 'platformio-env'
2+
description: 'Install Platform.IO environment'
3+
runs:
4+
using: "composite"
5+
steps:
6+
- id: install-platformio-env
7+
shell: bash
8+
run: |
9+
apt update
10+
export DEBIAN_FRONTEND=noninteractive
11+
apt install -y git curl python3 python3-pip git cmake
12+
python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"
13+
echo 'export PATH=$PATH:~/.platformio/penv/bin' >> ~/.bashrc
14+

.github/workflows/ci.yml

Lines changed: 14 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -7,81 +7,24 @@ on:
77

88
jobs:
99

10-
micro_ros_arduino:
10+
micro_ros_platformio:
1111
runs-on: ubuntu-20.04
1212
container: ubuntu:20.04
1313

14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
platform: [teensy41, teensy40, teensy36, teensy35, teensy31, due, zero, olimex_e407, esp32dev, nanorp2040connect, portenta_h7_m7, teensy41_eth, nanorp2040connect_eth, portenta_h7_m7_wifi, esp32dev_wifi]
18+
1419
steps:
15-
- uses: actions/checkout@v2
20+
- uses: actions/checkout@v3
1621
with:
17-
path: checkout/
18-
22+
path: repo
23+
- name: Install environment
24+
uses: ./repo/.github/actions/platformio-env
1925
- name: Build
26+
shell: bash
2027
run: |
21-
apt update
22-
apt install -y git curl lib32z1 wget libfontconfig libxft2 xz-utils rsync python-is-python3 python3-pip
23-
pip3 install pyserial
24-
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
25-
mkdir -p /github/home/Arduino/libraries/micro_ros_arduino/
26-
cp -R checkout/* /github/home/Arduino/libraries/micro_ros_arduino/
27-
echo '''board_manager:
28-
additional_urls:
29-
- https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
30-
- https://github.com/espressif/arduino-esp32/releases/download/2.0.2/package_esp32_index.json''' > arduino-cli.yaml
31-
export PATH=$PATH:/github/workspace/bin:/__w/micro_ros_arduino/micro_ros_arduino/bin
32-
arduino-cli core install OpenCR:OpenCR -v
33-
arduino-cli core install arduino:samd -v
34-
arduino-cli core install arduino:sam -v
35-
arduino-cli core install arduino:mbed -v
36-
arduino-cli core install esp32:esp32 -v
37-
#
38-
# INSTALLING TEENSY SUPPORT
39-
wget https://downloads.arduino.cc/arduino-1.8.19-linux64.tar.xz
40-
tar -xf arduino-1.8.19-linux64.tar.xz
41-
wget https://www.pjrc.com/teensy/td_156/TeensyduinoInstall.linux64
42-
chmod 755 TeensyduinoInstall.linux64
43-
./TeensyduinoInstall.linux64 --dir=arduino-1.8.19
44-
# Faking Teensy loader
45-
TRUE_PATH=$(which true)
46-
rm -rf arduino-1.8.19/hardware/tools/teensy_post_compile
47-
cp $TRUE_PATH arduino-1.8.19/hardware/tools/teensy_post_compile
48-
cp -R arduino-1.8.19/hardware/teensy/ /github/home/.arduino15/packages/
49-
rsync -a arduino-1.8.19/hardware/tools/ /github/home/.arduino15/packages/tools/
50-
rm -rf arduino-1.8.19 arduino-1.8.19-linux64.tar.xz
51-
#
52-
# PATCHING TEENSY AND SAM
53-
cat checkout/extras/patching_boards/platform_teensy.txt > /github/home/.arduino15/packages/teensy/avr/platform.txt
54-
# remove when https://github.com/arduino/ArduinoCore-sam/pull/115 merged
55-
cat checkout/extras/patching_boards/platform_arduinocore_sam.txt > /github/home/.arduino15/packages/arduino/hardware/sam/1.6.12/platform.txt
56-
#
57-
# BUILDING EXAPLE FOR EACH PLATFORM
58-
arduino-cli core update-index
59-
arduino-cli lib update-index
60-
arduino-cli lib install WiFiNINA
61-
arduino-cli lib install "STM32duino X-NUCLEO-IKS01A3"
62-
# Build all demos
63-
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
64-
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_addtwoints_service -v
65-
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_reconnection_example -v
66-
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_subscriber -v
67-
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_subscriber_twist -v
68-
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_tf_publisher -v
69-
arduino-cli compile --fqbn teensy:avr:teensy41 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_time_sync -v
70-
arduino-cli compile --fqbn teensy:avr:teensy41 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_types_handling -v
71-
# Build one demo for each platform
72-
arduino-cli compile --fqbn arduino:mbed:nanorp2040connect /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
73-
arduino-cli compile --fqbn arduino:mbed:nanorp2040connect /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_decibels -v
74-
arduino-cli compile --fqbn arduino:mbed:nanorp2040connect /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_IMU_ML -v
75-
arduino-cli compile --fqbn arduino:mbed:nanorp2040connect /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher_wifi -v
76-
arduino-cli compile --fqbn teensy:avr:teensy31 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
77-
arduino-cli compile --fqbn teensy:avr:teensy35 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
78-
arduino-cli compile --fqbn teensy:avr:teensy36 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
79-
arduino-cli compile --fqbn teensy:avr:teensy41 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
80-
arduino-cli compile --fqbn teensy:avr:teensy40 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
81-
arduino-cli compile --fqbn arduino:samd:arduino_zero_native /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
82-
arduino-cli compile --fqbn arduino:sam:arduino_due_x /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
83-
# arduino-cli compile --fqbn arduino:mbed:envie_m4 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
84-
arduino-cli compile --fqbn arduino:mbed:envie_m7 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
85-
arduino-cli compile --fqbn arduino:mbed:envie_m7 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher_wifi -v
86-
arduino-cli compile --fqbn esp32:esp32:esp32 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
87-
arduino-cli compile --fqbn esp32:esp32:esp32 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher_wifi -v
28+
export PATH=$PATH:~/.platformio/penv/bin
29+
cd repo/ci
30+
pio run -e ${{ matrix.platform }}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
platformio_toolchain.cmake
2+
13
#################
24
## Eclipse
35
#################

.images/arduino_logo.png

-68.8 KB
Binary file not shown.

.images/microros_logo.png

-93.7 KB
Binary file not shown.

ci/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.pio

ci/custom.meta

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"names": {
3+
"rmw_microxrcedds": {
4+
"cmake-args": [
5+
"-DRMW_UXRCE_MAX_NODES=1",
6+
"-DRMW_UXRCE_MAX_PUBLISHERS=1",
7+
"-DRMW_UXRCE_MAX_SUBSCRIPTIONS=1",
8+
"-DRMW_UXRCE_MAX_SERVICES=0",
9+
"-DRMW_UXRCE_MAX_CLIENTS=0",
10+
"-DRMW_UXRCE_MAX_HISTORY=1",
11+
"-DRMW_UXRCE_TRANSPORT=custom"
12+
]
13+
}
14+
}
15+
}

ci/platformio.ini

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
; Serial platforms
2+
3+
[env:portenta_h7_m7]
4+
platform = ststm32
5+
board = portenta_h7_m7
6+
framework = arduino
7+
microros_transport = serial
8+
lib_deps =
9+
../
10+
11+
[env:teensy41]
12+
platform = teensy
13+
board = teensy41
14+
framework = arduino
15+
microros_transport = serial
16+
lib_deps =
17+
../
18+
19+
[env:teensy40]
20+
platform = teensy
21+
board = teensy40
22+
framework = arduino
23+
microros_transport = serial
24+
lib_deps =
25+
../
26+
27+
[env:teensy36]
28+
platform = teensy
29+
board = teensy36
30+
framework = arduino
31+
microros_transport = serial
32+
lib_deps =
33+
../
34+
35+
[env:teensy35]
36+
platform = teensy
37+
board = teensy35
38+
framework = arduino
39+
microros_transport = serial
40+
lib_deps =
41+
../
42+
43+
[env:teensy31]
44+
platform = teensy
45+
board = teensy31
46+
framework = arduino
47+
microros_transport = serial
48+
lib_deps =
49+
../
50+
51+
[env:due]
52+
platform = atmelsam
53+
board = due
54+
framework = arduino
55+
microros_transport = serial
56+
lib_deps =
57+
../
58+
59+
[env:zero]
60+
platform = atmelsam
61+
board = zero
62+
framework = arduino
63+
microros_transport = serial
64+
lib_deps =
65+
../
66+
67+
[env:olimex_e407]
68+
platform = ststm32
69+
board = olimex_e407
70+
framework = arduino
71+
microros_transport = serial
72+
lib_deps =
73+
../
74+
75+
[env:esp32dev]
76+
platform = espressif32
77+
board = esp32dev
78+
framework = arduino
79+
microros_transport = serial
80+
lib_deps =
81+
../
82+
83+
[env:nanorp2040connect]
84+
platform = raspberrypi
85+
board = nanorp2040connect
86+
framework = arduino
87+
microros_transport = serial
88+
lib_deps =
89+
../
90+
91+
; Ethernet platforms
92+
93+
[env:teensy41_eth]
94+
platform = teensy
95+
board = teensy41
96+
framework = arduino
97+
microros_transport = native_ethernet
98+
lib_deps =
99+
../
100+
arduino-libraries/Ethernet@^2.0.0
101+
SPI
102+
103+
[env:nanorp2040connect_eth]
104+
platform = raspberrypi
105+
board = nanorp2040connect
106+
framework = arduino
107+
microros_transport = native_ethernet
108+
lib_deps =
109+
../
110+
arduino-libraries/Ethernet@^2.0.0
111+
SPI
112+
113+
; WiFi platforms
114+
115+
[env:portenta_h7_m7_wifi]
116+
platform = ststm32
117+
board = portenta_h7_m7
118+
framework = arduino
119+
microros_transport = wifi
120+
build_flags =
121+
-DF_CPU=16000000L
122+
lib_deps =
123+
../
124+
arduino-libraries/WiFi@^1.2.7
125+
SPI
126+
127+
[env:esp32dev_wifi]
128+
platform = espressif32
129+
board = esp32dev
130+
framework = arduino
131+
microros_transport = wifi
132+
lib_deps =
133+
../
134+
arduino-libraries/WiFi@^1.2.7
135+
SPI

examples/micro-ros_publisher/micro-ros_publisher.ino renamed to ci/src/main.cpp

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
#include <micro_ros_arduino.h>
1+
#include <Arduino.h>
2+
3+
#include <micro_ros_platformio.h>
24

35
#include <stdio.h>
46
#include <rcl/rcl.h>
@@ -30,20 +32,40 @@ void error_loop(){
3032
}
3133

3234
void timer_callback(rcl_timer_t * timer, int64_t last_call_time)
33-
{
35+
{
3436
RCLC_UNUSED(last_call_time);
3537
if (timer != NULL) {
3638
RCSOFTCHECK(rcl_publish(&publisher, &msg, NULL));
37-
msg.data++;
39+
msg.data = 555;
3840
}
3941
}
4042

4143
void setup() {
42-
set_microros_transports();
43-
44+
45+
#if defined(MICRO_ROS_TRANSPORT_SERIAL)
46+
set_microros_serial_transports();
47+
#elif defined(MICRO_ROS_TRANSPORT_NATIVE_ETHERNET)
48+
byte local_mac[] = { 0xAA, 0xBB, 0xCC, 0xEE, 0xDD, 0xFF };
49+
IPAddress local_ip(192, 168, 1, 177);
50+
IPAddress agent_ip(192, 168, 1, 113);
51+
size_t agent_port = 8888;
52+
53+
set_microros_native_ethernet_transports(local_mac, local_ip, agent_ip, agent_port);
54+
#elif defined(MICRO_ROS_TRANSPORT_WIFI)
55+
IPAddress agent_ip(192, 168, 1, 113);
56+
size_t agent_port = 8888;
57+
58+
char ssid[] = "WIFI_SSID";
59+
char psk[]= "WIFI_PSK";
60+
61+
set_microros_wifi_transports(ssid, psk, agent_ip, agent_port);
62+
#else
63+
#error "No transport defined"
64+
#endif
65+
4466
pinMode(LED_PIN, OUTPUT);
45-
digitalWrite(LED_PIN, HIGH);
46-
67+
digitalWrite(LED_PIN, HIGH);
68+
4769
delay(2000);
4870

4971
allocator = rcl_get_default_allocator();
@@ -62,7 +84,7 @@ void setup() {
6284
"micro_ros_arduino_node_publisher"));
6385

6486
// create timer,
65-
const unsigned int timer_timeout = 1000;
87+
const unsigned int timer_timeout = 1;
6688
RCCHECK(rclc_timer_init_default(
6789
&timer,
6890
&support,
@@ -77,6 +99,5 @@ void setup() {
7799
}
78100

79101
void loop() {
80-
delay(100);
81102
RCSOFTCHECK(rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)));
82-
}
103+
}

0 commit comments

Comments
 (0)