小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
动手学ros2第5章进阶篇-控制OLED-自定义消息接口
-
@小伊 报错#include <Adafruit_I2CDevice.h>
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Compiling .pio/build/featheresp32/libfab/Adafruit SSD1306/Adafruit_SSD1306.cpp.o
In file included from .pio/libdeps/featheresp32/Adafruit SSD1306/Adafruit_SSD1306.h:42,
from .pio/libdeps/featheresp32/Adafruit SSD1306/Adafruit_SSD1306.cpp:53:
.pio/libdeps/featheresp32/Adafruit GFX Library/Adafruit_GFX.h:12:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
- Looking for Adafruit_I2CDevice.h dependency? Check our library registry!
- CLI > platformio lib search "header:Adafruit_I2CDevice.h"
- Web > https://registry.platformio.org/search?q=header:Adafruit_I2CDevice.h
#include <Adafruit_I2CDevice.h>
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Compiling .pio/build/featheresp32/libf0a/GFX Library for Arduino/Arduino_DataBus.cpp.o
Compiling .pio/build/featheresp32/libf0a/GFX Library for Arduino/Arduino_G.cpp.o
*** [.pio/build/featheresp32/liba41/Adafruit GFX Library/Adafruit_GFX.cpp.o] Error 1
*** [.pio/build/featheresp32/liba41/Adafruit GFX Library/Adafruit_GrayOLED.cpp.o] Error 1
*** [.pio/build/featheresp32/liba41/Adafruit GFX Library/Adafruit_SPITFT.cpp.o] Error 1
*** [.pio/build/featheresp32/libfab/Adafruit SSD1306/Adafruit_SSD1306.cpp.o] Error 1
=============== [FAILED] Took 6.50 seconds ===============- 终端进程“platformio 'run'”已终止,退出代码: 1。
- 终端将被任务重用,按任意键关闭。
-
从上面的报错信息可以看出,缺少Adafruit_I2CDevice.h文件,可以在PlatformIO库中搜索,然后下载安装对应的库文件,或者在Github上找到对应的文件,然后添加到项目中即可。
以上为生成回答,仅供参考~
-
@小鱼 我根据这篇CSDN的步骤添加Adafruit BusIO依赖库
lib_deps = https://gitee.com/ohhuo/micro_ros_platformio.git adafruit/Adafruit SSD1306@^2.5.7 adafruit/Adafruit BusIO@^1.14.1```
删除.pio/libdeps/featheresp32/micro_ros_platformio/libmicroros文件夹
不是pio/libdeps/featheresp32/micro_ros_platformio文件夹,这样文件会在重新编译后重新生成该文件
重新编译出现下面问题
Processing featheresp32 (platform: espressif32; board: featheresp32; framework: arduino) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Verbose mode can be enabled via `-v, --verbose` option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/featheresp32.html PLATFORM: Espressif 32 (5.2.0) > Adafruit ESP32 Feather HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa) PACKAGES: - framework-arduinoespressif32 @ 3.20005.220925 (2.0.5) - tool-esptoolpy @ 1.40201.0 (4.2.1) - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Installing pyyaml with pip at PlatformIO environment /home/xhy/.platformio/penv/bin/python -m pip install pyyaml Requirement already satisfied: pyyaml in /home/xhy/.platformio/penv/lib/python3.10/site-packages (6.0) [notice] A new release of pip is available: 23.0 -> 23.0.1 [notice] To update, run: pip install --upgrade pip Installing markupsafe==2.0.1 with pip at PlatformIO environment /home/xhy/.platformio/penv/bin/python -m pip install markupsafe==2.0.1 Requirement already satisfied: markupsafe==2.0.1 in /home/xhy/.platformio/penv/lib/python3.10/site-packages (2.0.1) [notice] A new release of pip is available: 23.0 -> 23.0.1 [notice] To update, run: pip install --upgrade pip Configuring featheresp32 with transport serial Downloading micro-ROS dev dependencies - Downloaded ament_cmake - Downloaded ament_lint - Downloaded ament_package - Downloaded googletest - Downloaded ament_cmake_ros - Downloaded ament_index Building micro-ROS dev dependencies Downloading micro-ROS library - Downloaded microcdr - Downloaded microxrcedds_client - Downloaded rcl - Downloaded rcl_yaml_param_parser (ignored) - Downloaded rcl_lifecycle - Downloaded rcl_action - Downloaded rclc - Downloaded rclc_parameter - Downloaded rclc_examples (ignored) - Downloaded rclc_lifecycle - Downloaded micro_ros_utilities - Downloaded rcutils - Downloaded micro_ros_msgs - Downloaded rmw_microxrcedds - Downloaded rosidl_typesupport_cpp (ignored) - Downloaded rosidl_typesupport_c - Downloaded rosidl_typesupport_microxrcedds_cpp_tests - Downloaded rosidl_typesupport_microxrcedds_test_msg - Downloaded rosidl_typesupport_microxrcedds_c_tests - Downloaded rosidl_typesupport_microxrcedds_cpp (ignored) - Downloaded rosidl_typesupport_microxrcedds_c - Downloaded rosidl_parser - Downloaded rosidl_generator_cpp (ignored) - Downloaded rosidl_cmake - Downloaded rosidl_generator_c - Downloaded rosidl_adapter - Downloaded rosidl_typesupport_introspection_cpp (ignored) - Downloaded rosidl_runtime_c - Downloaded rosidl_typesupport_introspection_c - Downloaded rosidl_typesupport_interface - Downloaded rosidl_typesupport_introspection_tests - Downloaded rosidl_cli - Downloaded rosidl_runtime_cpp (ignored) - Downloaded rmw_implementation_cmake - Downloaded rmw - Downloaded rcl_interfaces - Downloaded action_msgs - Downloaded test_msgs - Downloaded lifecycle_msgs - Downloaded rosgraph_msgs - Downloaded builtin_interfaces - Downloaded composition_interfaces - Downloaded statistics_msgs - Downloaded rosidl_default_generators - Downloaded rosidl_default_runtime - Downloaded unique_identifier_msgs - Downloaded std_msgs - Downloaded std_srvs - Downloaded diagnostic_msgs - Downloaded actionlib_msgs - Downloaded nav_msgs - Downloaded sensor_msgs_py - Downloaded sensor_msgs - Downloaded shape_msgs - Downloaded trajectory_msgs - Downloaded stereo_msgs - Downloaded common_interfaces - Downloaded visualization_msgs - Downloaded geometry_msgs - Downloaded test_interface_files - Downloaded rmw_implementation - Downloaded test_rmw_implementation - Downloaded rcl_logging_interface - Downloaded rcl_logging_noop - Downloaded rcl_logging_spdlog (ignored) - Downloaded tracetools_trace - Downloaded test_tracetools - Downloaded test_tracetools_launch - Downloaded tracetools - Downloaded tracetools_launch - Downloaded tracetools_test - Downloaded tracetools_read - Downloaded ros2trace - Downloaded example_interfaces Checking extra packages - Adding fishbot_interfaces Checking extra packages - Adding fishbot_interfaces Building micro-ROS library Build mcu micro-ROS environment failed: --- stderr: rosidl_typesupport_interface CMake Warning: Manually-specified variables were not used by the project: CMAKE_POSITION_INDEPENDENT_CODE THIRDPARTY --- --- stderr: rosidl_cli /home/xhy/.platformio/penv/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( --- --- stderr: rmw_implementation_cmake CMake Warning: Manually-specified variables were not used by the project: BUILD_SHARED_LIBS CMAKE_POSITION_INDEPENDENT_CODE THIRDPARTY --- --- stderr: microcdr CMake Warning: Manually-specified variables were not used by the project: BUILD_TESTING THIRDPARTY --- --- stderr: rosidl_adapter CMake Warning: Manually-specified variables were not used by the project: BUILD_SHARED_LIBS CMAKE_POSITION_INDEPENDENT_CODE THIRDPARTY --- --- stderr: tracetools CMake Warning: Manually-specified variables were not used by the project: THIRDPARTY --- --- stderr: rcutils CMake Warning: Manually-specified variables were not used by the project: ENABLE_TESTING THIRDPARTY In function 'rcutils_char_array_strncat', inlined from 'rcutils_char_array_strcat' at /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/char_array.c:239:10: /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/char_array.c:224:3: warning: 'strncat' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation] strncat(char_array->buffer, src, n); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/char_array.c: In function 'rcutils_char_array_strcat': /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/char_array.c:239:10: note: length computed here return rcutils_char_array_strncat(char_array, src, strlen(src)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c: In function 'rcutils_get_error_string': /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:240:38: warning: initializer-string for array of chars is too long return (rcutils_error_string_t) {"error not set"}; // NOLINT(readability/braces) ^~~~~~~~~~~~~~~ /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:240:38: note: (near initialization for '(anonymous).str') In file included from /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:35: At top level: /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:1: warning: '__rcutils_convert_uint64_t_into_c_str' defined but not used [-Wunused-function] __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:91:1: warning: '__rcutils_reverse_str' defined but not used [-Wunused-function] __rcutils_reverse_str(char * string_in, size_t string_len) ^~~~~~~~~~~~~~~~~~~~~ --- --- stderr: rosidl_parser CMake Warning: Manually-specified variables were not used by the project: BUILD_SHARED_LIBS CMAKE_POSITION_INDEPENDENT_CODE THIRDPARTY --- --- stderr: tracetools_trace /home/xhy/.platformio/penv/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( --- --- stderr: rosidl_cmake CMake Warning: Manually-specified variables were not used by the project: BUILD_SHARED_LIBS CMAKE_POSITION_INDEPENDENT_CODE THIRDPARTY --- --- stderr: rosidl_runtime_c CMake Warning at /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/ament_cmake_export_libraries-extras.cmake:116 (message): Package 'rcutils' exports library 'dl' which couldn't be found Call Stack (most recent call first): /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/rcutilsConfig.cmake:41 (include) CMakeLists.txt:15 (find_package) CMake Warning: Manually-specified variables were not used by the project: THIRDPARTY --- --- stderr: rcl_logging_interface CMake Warning at /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/ament_cmake_export_libraries-extras.cmake:116 (message): Package 'rcutils' exports library 'dl' which couldn't be found Call Stack (most recent call first): /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/rcutilsConfig.cmake:41 (include) CMakeLists.txt:19 (find_package) CMake Warning: Manually-specified variables were not used by the project: THIRDPARTY --- --- stderr: microxrcedds_client CMake Warning: Manually-specified variables were not used by the project: BUILD_TESTING THIRDPARTY --- --- stderr: test_interface_files CMake Warning: Manually-specified variables were not used by the project: BUILD_SHARED_LIBS CMAKE_POSITION_INDEPENDENT_CODE THIRDPARTY --- --- stderr: rcl_logging_noop CMake Warning at /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/ament_cmake_export_libraries-extras.cmake:116 (message): Package 'rcutils' exports library 'dl' which couldn't be found Call Stack (most recent call first): /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/rcutilsConfig.cmake:41 (include) /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcl_logging_interface/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package) /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcl_logging_interface/cmake/rcl_logging_interfaceConfig.cmake:41 (include) CMakeLists.txt:15 (find_package) CMake Warning: Manually-specified variables were not used by the project: THIRDPARTY --- --- stderr: rosidl_typesupport_introspection_c CMake Warning: Manually-specified variables were not used by the project: THIRDPARTY --- --- stderr: rosidl_generator_c CMake Warning: Manually-specified variables were not used by the project: THIRDPARTY --- --- stderr: rmw CMake Warning at /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/ament_cmake_export_libraries-extras.cmake:116 (message): Package 'rcutils' exports library 'dl' which couldn't be found Call Stack (most recent call first): /home/xhy/Documents/PlatformIO/Projects/oled_interface/.pio/libdeps/featheresp32/micro_ros_platformio/build/mcu/install/share/rcutils/cmake/rcutilsConfig.cmake:41 (include) CMakeLists.txt:21 (find_package) CMake Warning: Manually-specified variables were not used by the project: THIRDPARTY --- --- stderr: tracetools_launch /home/xhy/.platformio/penv/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( --- --- stderr: tracetools_read /home/xhy/.platformio/penv/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( --- --- stderr: fishbot_interfaces CMake Error at CMakeLists.txt:26 (find_package): By not providing "Findrosidl_default_generators.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "rosidl_default_generators", but CMake did not find one. Could not find a package configuration file provided by "rosidl_default_generators" with any of the following names: rosidl_default_generatorsConfig.cmake rosidl_default_generators-config.cmake Add the installation prefix of "rosidl_default_generators" to CMAKE_PREFIX_PATH or set "rosidl_default_generators_DIR" to a directory containing one of the above files. If "rosidl_default_generators" provides a separate development package or SDK, be sure it has been installed. --- Failed <<< fishbot_interfaces [3.79s, exited with code 1] =========================================================================== [FAILED] Took 271.51 seconds =========================================================================== * 终端进程“platformio 'run'”已终止,退出代码: 1。 * 终端将被任务重用,按任意键关闭。
-
-
@847718956 这个错误好解决了
@847718956 在 动手学ros2第5章进阶篇-控制OLED-自定义消息接口 中说:
CMake Error at CMakeLists.txt:26 (find_package):
By not providing "Findrosidl_default_generators.cmake" in CMAKE_MODULE_PATH
this project has asked CMake to find a package configuration file provided
by "rosidl_default_generators", but CMake did not find one.Could not find a package configuration file provided by
"rosidl_default_generators" with any of the following names:rosidl_default_generatorsConfig.cmake rosidl_default_generators-config.cmake
Add the installation prefix of "rosidl_default_generators" to
CMAKE_PREFIX_PATH or set "rosidl_default_generators_DIR" to a directory
containing one of the above files. If "rosidl_default_generators" provides
a separate development package or SDK, be sure it has been installed.确认下CMakeList.txt
cmake_minimum_required(VERSION 3.5) project(fishbot_interfaces) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find_package(ament_cmake REQUIRED) # uncomment the following section in order to fill in # further dependencies manually. # find_package(<dependency> REQUIRED) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) # the following line skips the linter which checks for copyrights # uncomment the line when a copyright and license is not present in all source files #set(ament_cmake_copyright_FOUND TRUE) # the following line skips cpplint (only works in a git repo) # uncomment the line when this package is not in a git repo #set(ament_cmake_cpplint_FOUND TRUE) ament_lint_auto_find_test_dependencies() endif() find_package(rosidl_default_generators REQUIRED) rosidl_generate_interfaces(${PROJECT_NAME} "srv/OledControl.srv" ) ament_package()
packages.xml
<?xml version="1.0"?> <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?> <package format="3"> <name>fishbot_interfaces</name> <version>0.0.0</version> <description>TODO: Package description</description> <maintainer email="root@todo.todo">root</maintainer> <license>TODO: License declaration</license> <buildtool_depend>ament_cmake</buildtool_depend> <build_depend>rosidl_default_generators</build_depend> <exec_depend>rosidl_default_runtime</exec_depend> <member_of_group>rosidl_interface_packages</member_of_group> <test_depend>ament_lint_auto</test_depend> <test_depend>ament_lint_common</test_depend> <export> <build_type>ament_cmake</build_type> </export> </package>
-
-
@小鱼 这里下载太慢了。挂梯子也一样
-
有一个问题,用git 克隆代码,编译出现错误: ,请问是什么问题
-
@1991623683 有重新编译过吗,删掉libmicroros
-
该贴中的方法都试过了还是不行,有兄弟们解决了的吗,
platformio.ini,因为报错,根据提示也加了很多依赖,还是不行lib_deps = https://gitee.com/ohhuo/micro_ros_platformio.git adafruit/Adafruit SSD1306@^2.5.7 ; adafruit/Adafruit GFX Library@^1.11.8 ; adafruit/Adafruit BusIO@^1.14.4 ; ; fabiobatsilva/ArduinoFake@^0.4.0
-
@842145248 你的报错是什么
-
@小鱼 刚刚重新编译了下,好慢,麻烦大佬帮我看看
Building micro-ROS library Found 36 compatible libraries Scanning dependencies... Dependency Graph |-- micro_ros_platformio @ 0.0.1+sha.085c5dd |-- Adafruit SSD1306 @ 2.5.7 Building in release mode Compiling .pio/build/featheresp32/src/main.cpp.o Building .pio/build/featheresp32/bootloader.bin Generating partitions .pio/build/featheresp32/partitions.bin esptool.py v4.2.1 Creating esp32 image... Merged 1 ELF section Successfully created esp32 image. Compiling .pio/build/featheresp32/lib1a4/micro_ros_platformio/platform_code/arduino/clock_gettime.cpp.o Compiling .pio/build/featheresp32/lib1a4/micro_ros_platformio/platform_code/arduino/serial/micro_ros_transport.cpp.o Compiling .pio/build/featheresp32/lib2c3/Adafruit SSD1306/Adafruit_SSD1306.cpp.o In file included from .pio/libdeps/featheresp32/Adafruit SSD1306/Adafruit_SSD1306.cpp:53: .pio/libdeps/featheresp32/Adafruit SSD1306/Adafruit_SSD1306.h:42:10: fatal error: Adafruit_GFX.h: No such file or directory ********************************************************************** * Looking for Adafruit_GFX.h dependency? Check our library registry! * * CLI > platformio lib search "header:Adafruit_GFX.h" * Web > https://registry.platformio.org/search?q=header:Adafruit_GFX.h * ********************************************************************** #include <Adafruit_GFX.h> ^~~~~~~~~~~~~~~~ compilation terminated. Compiling .pio/build/featheresp32/FrameworkArduino/Esp.cpp.o Compiling .pio/build/featheresp32/FrameworkArduino/FirmwareMSC.cpp.o *** [.pio/build/featheresp32/lib2c3/Adafruit SSD1306/Adafruit_SSD1306.cpp.o] Error 1 ======================================== [FAILED] Took 658.83 seconds ======================================== * The terminal process "platformio 'run'" terminated with exit code: 1. * Terminal will be reused by tasks, press any key to close it.
-
@842145248 再贴一下完整的代码
-
@小鱼
platformio.ini[env:featheresp32] platform = espressif32 board = featheresp32 framework = arduino lib_deps = https://gitee.com/ohhuo/micro_ros_platformio.git adafruit/Adafruit SSD1306@^2.5.7
CMakeLists.txt
cmake_minimum_required(VERSION 3.5) project(fishbot_interfaces) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find_package(ament_cmake REQUIRED) # uncomment the following section in order to fill in # further dependencies manually. # find_package(<dependency> REQUIRED) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) # the following line skips the linter which checks for copyrights # uncomment the line when a copyright and license is not present in all source files #set(ament_cmake_copyright_FOUND TRUE) # the following line skips cpplint (only works in a git repo) # uncomment the line when this package is not in a git repo #set(ament_cmake_cpplint_FOUND TRUE) ament_lint_auto_find_test_dependencies() endif() find_package(rosidl_default_generators REQUIRED) rosidl_generate_interfaces(${PROJECT_NAME} "srv/OledControl.srv" ) ament_package()
package.xml
<?xml version="1.0"?> <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?> <package format="3"> <name>fishbot_interfaces</name> <version>0.0.0</version> <description>TODO: Package description</description> <maintainer email="root@todo.todo">root</maintainer> <license>TODO: License declaration</license> <buildtool_depend>ament_cmake</buildtool_depend> <build_depend>rosidl_default_generators</build_depend> <exec_depend>rosidl_default_runtime</exec_depend> <member_of_group>rosidl_interface_packages</member_of_group> <test_depend>ament_lint_auto</test_depend> <test_depend>ament_lint_common</test_depend> <export> <build_type>ament_cmake</build_type> </export> </package>
extra_package包
extra_packages/fishbot_interfaces/ ├── CMakeLists.txt ├── include │ └── fishbot_interfaces ├── package.xml ├── src └── srv └── OledControl.srv
-
@842145248 是 src/main.cpp ,你的错误在 main函数里不是自定义功能包造成的
-
@小鱼 感谢大佬的的回复,我补充完整了
main.cpp
后可以编译了,我按照教程还没到编写main.cpp
,我以为不用先写main.cpp
,编译看看是否有错但是命令行调用服务时出现了类似这种导包问题:重新运行代码时出现:UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'village_interfaces',
CMakelist.txt
和packages.xml
,看着好像都没问题,麻烦大佬再帮我看看$ source install/setup.bash && ros2 service call /oled_control fishbot_interfaces/srv/OledControl "{px: 0, py: 0, data: 'nihao'}" Traceback (most recent call last): File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/import_type_support_impl.py", line 46, in import_type_support return importlib.import_module(module_name, package=pkg_name) File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked ModuleNotFoundError: No module named 'fishbot_interfaces.fishbot_interfaces_s__rosidl_typesupport_c' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/opt/ros/humble/bin/ros2", line 33, in <module> sys.exit(load_entry_point('ros2cli==0.18.7', 'console_scripts', 'ros2')()) File "/opt/ros/humble/lib/python3.10/site-packages/ros2cli/cli.py", line 89, in main rc = extension.main(parser=parser, args=args) File "/opt/ros/humble/lib/python3.10/site-packages/ros2service/command/service.py", line 41, in main return extension.main(args=args) File "/opt/ros/humble/lib/python3.10/site-packages/ros2service/verb/call.py", line 58, in main return requester( File "/opt/ros/humble/lib/python3.10/site-packages/ros2service/verb/call.py", line 86, in requester cli = node.create_client(srv_module, service_name) File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/node.py", line 1413, in create_client check_is_valid_srv_type(srv_type) File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/type_support.py", line 51, in check_is_valid_srv_type check_for_type_support(srv_type) File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/type_support.py", line 29, in check_for_type_support msg_or_srv_type.__class__.__import_type_support__() File "/home/nzb/vscode_project/cplus_demo/ros2_demo/chat13/example14_custom_interfaces/extra_packages/install/fishbot_interfaces/local/lib/python3.10/dist-packages/fishbot_interfaces/srv/_oled_control.py", line 303, in __import_type_support__ module = import_type_support('fishbot_interfaces') File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/import_type_support_impl.py", line 48, in import_type_support raise UnsupportedTypeSupport(pkg_name) rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'fishbot_interfaces'
main.cpp
#include <Arduino.h> #include <micro_ros_platformio.h> #include <rcl/rcl.h> #include <rclc/rclc.h> #include <rclc/executor.h> #include <micro_ros_utilities/string_utilities.h> #include "Wire.h" #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <fishbot_interfaces/srv/oled_control.h> rclc_executor_t executor; rclc_support_t support; rcl_allocator_t allocator; rcl_node_t node; rcl_service_t service; fishbot_interfaces__srv__OledControl_Request req; fishbot_interfaces__srv__OledControl_Response res; Adafruit_SSD1306 display; void service_cb(const void *req, void *res) { fishbot_interfaces__srv__OledControl_Request *req_in = (fishbot_interfaces__srv__OledControl_Request *)req; fishbot_interfaces__srv__OledControl_Response *res_in = (fishbot_interfaces__srv__OledControl_Response *)res; display.clearDisplay(); display.setCursor(req_in->px, req_in->py); display.println(req_in->data.data); display.display(); res_in->result = 0; } void setup() { // put your setup code here, to run once: Serial.begin(115200); set_microros_serial_transports(Serial); delay(2000); allocator = rcl_get_default_allocator(); rclc_support_init(&support, 0, NULL, &allocator); rclc_node_init_default(&node, "example14_interfaces", "", &support); rclc_service_init_default(&service, &node, ROSIDL_GET_SRV_TYPE_SUPPORT(fishbot_interfaces, srv, OledControl), "/oled_control"); rclc_executor_init(&executor, &support.context, 1, &allocator); rclc_executor_add_service(&executor, &service, &req, &res, service_cb); req.data = micro_ros_string_utilities_init_with_size(100); Wire.begin(18, 19); display = Adafruit_SSD1306(128, 64, &Wire); display.begin(SSD1306_SWITCHCAPVCC, 0x3c); display.clearDisplay(); display.setTextSize(1); display.setCursor(0, 0); display.setTextColor(SSD1306_WHITE); display.println("hello world!"); display.display(); } void loop() { // put your main code here, to run repeatedly: delay(100); rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)); }
-
$ source install/setup.bash && ros2 service call /oled_control fishbot_interfaces/srv/OledControl "{px: 0, py: 0, data: 'nihao'}"
这句在哪一个目录下执行的
-
@小鱼
example14_custom_interfaces/extra_packages
目录下 -
@842145248 删除掉build和install ,重新colcon build后测试,还报错就贴一下 CMakeLists.txt 和 srv文件
-
@小鱼 删除重新编译后还不行
CMakelists.txt
cmake_minimum_required(VERSION 3.5) project(fishbot_interfaces) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find_package(ament_cmake REQUIRED) # uncomment the following section in order to fill in # further dependencies manually. # find_package(<dependency> REQUIRED) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) # the following line skips the linter which checks for copyrights # uncomment the line when a copyright and license is not present in all source files #set(ament_cmake_copyright_FOUND TRUE) # the following line skips cpplint (only works in a git repo) # uncomment the line when this package is not in a git repo #set(ament_cmake_cpplint_FOUND TRUE) ament_lint_auto_find_test_dependencies() endif() find_package(rosidl_default_generators REQUIRED) rosidl_generate_interfaces(${PROJECT_NAME} "srv/OledControl.srv" ) ament_package()
OledControl.srv
int32 px int32 py string data --- int32 result
-
-
@小鱼 示例也不行
* Executing task: platformio run Processing featheresp32 (platform: espressif32; board: featheresp32; framework: arduino) --------------------------------------------------------------------------------------------------------------------------------------------------- Library Manager: Installing git+https://gitee.com/ohhuo/micro_ros_platformio.git git version 2.34.1 Cloning into '/home/nzb/.platformio/.cache/tmp/pkg-installing-mkfoxl4p'... remote: Enumerating objects: 5773, done. remote: Counting objects: 100% (5773/5773), done. remote: Compressing objects: 100% (2618/2618), done. remote: Total 5773 (delta 2905), reused 5732 (delta 2883), pack-reused 0 Receiving objects: 100% (5773/5773), 19.12 MiB | 5.79 MiB/s, done. Resolving deltas: 100% (2905/2905), done. Library Manager: micro_ros_platformio@0.0.1+sha.085c5dd has been installed! Library Manager: Installing adafruit/Adafruit SSD1306 @ ^2.5.7 Unpacking [####################################] 100% Library Manager: Adafruit SSD1306@2.5.7 has been installed! Library Manager: Resolving dependencies... Library Manager: Installing Adafruit GFX Library Unpacking [####################################] 100% Library Manager: Adafruit GFX Library@1.11.8 has been installed! Library Manager: Resolving dependencies... Library Manager: Installing Adafruit BusIO Unpacking [####################################] 100% Library Manager: Adafruit BusIO@1.14.4 has been installed! Verbose mode can be enabled via `-v, --verbose` option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/featheresp32.html PLATFORM: Espressif 32 (5.2.0) > Adafruit ESP32 Feather HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa) PACKAGES: - framework-arduinoespressif32 @ 3.20005.220925 (2.0.5) - tool-esptoolpy @ 1.40201.0 (4.2.1) - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Installing pyyaml with pip at PlatformIO environment /home/nzb/.platformio/penv/bin/python -m pip install pyyaml Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Requirement already satisfied: pyyaml in /home/nzb/.platformio/penv/lib/python3.10/site-packages (6.0) [notice] A new release of pip available: 22.3.1 -> 23.2.1 [notice] To update, run: pip install --upgrade pip Installing markupsafe==2.0.1 with pip at PlatformIO environment /home/nzb/.platformio/penv/bin/python -m pip install markupsafe==2.0.1 Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Requirement already satisfied: markupsafe==2.0.1 in /home/nzb/.platformio/penv/lib/python3.10/site-packages (2.0.1) [notice] A new release of pip available: 22.3.1 -> 23.2.1 [notice] To update, run: pip install --upgrade pip Configuring featheresp32 with transport serial micro-ROS already built Found 36 compatible libraries Scanning dependencies... Dependency Graph |-- micro_ros_platformio @ 0.0.1+sha.085c5dd |-- Adafruit SSD1306 @ 2.5.7 |-- Wire @ 2.0.0 |-- Adafruit GFX Library @ 1.11.8 Building in release mode Compiling .pio/build/featheresp32/src/main.cpp.o Building .pio/build/featheresp32/bootloader.bin Generating partitions .pio/build/featheresp32/partitions.bin esptool.py v4.2.1 Creating esp32 image... Merged 1 ELF section Successfully created esp32 image. src/main.cpp:13:10: fatal error: fishbot_interfaces/srv/oled_control.h: No such file or directory #include <fishbot_interfaces/srv/oled_control.h> // 添加接口 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. Compiling .pio/build/featheresp32/lib61f/micro_ros_platformio/platform_code/arduino/clock_gettime.cpp.o Compiling .pio/build/featheresp32/lib61f/micro_ros_platformio/platform_code/arduino/serial/micro_ros_transport.cpp.o Compiling .pio/build/featheresp32/lib31c/Wire/Wire.cpp.o Compiling .pio/build/featheresp32/lib271/SPI/SPI.cpp.o Compiling .pio/build/featheresp32/libaae/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o *** [.pio/build/featheresp32/src/main.cpp.o] Error 1 =========================================================== [FAILED] Took 16.30 seconds =========================================================== * The terminal process "platformio 'run'" terminated with exit code: 1. * Terminal will be reused by tasks, press any key to close it.