The following compilation errors occur when I create a new PIO (PlatformIO) project for the first time in VSCode:
I am using ESP32 to communicate through microROS with ROS2 in an Ubuntu 20 virtual machine. The first time, following the tutorial, I encountered this issue after configuring dependencies and compiling.
Any ideas?
The stack trace definitely shows that the micro_ros_platformio/extra_script.py
script from that library is causing issues. Specifically, it seems to think that clean_microros
is already registered as a custom target (__PIO_TARGETS
), and PlatformIO doesn’t allow double-registering.
I’ll take a look.
For future reference though: It’s preferable to text the stack traces and platformio.ini
as text so that it’s easily copy-pastable for other people’s reproduction.
AssertionError: :
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/main.py", line 173:
env.SConscript("$BUILD_SCRIPT")
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 598:
return _SConscript(self.fs, *files, **subst_kw)
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 285:
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
File "/home/sou/.platformio/platforms/espressif32/builder/main.py", line 312:
target_elf = env.BuildProgram()
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
return self.method(*nargs, **kwargs)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piobuild.py", line 62:
env.ProcessProjectDeps()
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
return self.method(*nargs, **kwargs)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piobuild.py", line 147:
plb = env.ConfigureProjectLibBuilder()
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
return self.method(*nargs, **kwargs)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 1180:
project.install_dependencies()
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 965:
if _is_builtin(spec):
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 957:
for lb in self.env.GetLibBuilders():
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
return self.method(*nargs, **kwargs)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 1093:
lb = LibBuilderFactory.new(env, lib_dir)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 60:
obj = globals()[clsname](env, path, verbose=verbose)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 153:
self.process_extra_options()
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 301:
self.env.SConscript(
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 598:
return _SConscript(self.fs, *files, **subst_kw)
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 285:
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
File "/home/sou/Documents/PlatformIO/Projects/test/.pio/libdeps/upesy_wroom/micro_ros_platformio/extra_script.py", line 64:
global_env.AddCustomTarget("clean_microros", None, clean_microros_callback, title="Clean Micro-ROS", description="Clean Micro-ROS build environment")
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
return self.method(*nargs, **kwargs)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piotarget.py", line 91:
return env.AddTarget(group="Custom", *args, **kwargs)
File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
return self.method(*nargs, **kwargs)
File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piotarget.py", line 76:
assert name not in env["__PIO_TARGETS"]
========================= [FAILED] Took 25.37 seconds =========================
[env:upesy_wroom]
platform = espressif32
board = upesy_wroom
framework = espidf
lib_deps = https://gitee.com/ohhuo/micro_ros_platformio.git
- Are you sure you want to use ESP-IDF with this library? The
library.json
explicitly says Arduino, not ESP-IDF. - The quickes way to move forward would be to edit
.pio/libdeps/upesy_wroom/micro_ros_platformio/extra_script.py
the line
global_env.AddCustomTarget("clean_microros", None, clean_microros_callback, title="Clean Micro-ROS", description="Clean Micro-ROS build environment")
to instead
if "clean_microros" not in global_env["__PIO_TARGETS"]:
global_env.AddCustomTarget("clean_microros", None, clean_microros_callback, title="Clean Micro-ROS", description="Clean Micro-ROS build environment")
Edit: The project https://gitee.com/ohhuo/micro_ros_platformio/tree/main/examples/micro-ros_publisher builds just fine for me. Code also looks very Arduino focused.
The problem has been resolved.
Thanks.
Hi
is there any lib repo for espidf framework microros, i have seen this is for arduino but i want to use espidf framework, or if there is any alternate way to add please guide me
Thanks in advance