鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    动手学ros2第5章进阶篇-控制OLED-自定义消息接口

    已定时 已固定 已锁定 已移动 未解决
    ROS 2相关问题
    ros2 humble ros2 添加接口
    11
    51
    8.6k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 8421452488
      likesingjumprap
      最后由 编辑

      该贴中的方法都试过了还是不行,有兄弟们解决了的吗,
      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
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @842145248
        最后由 编辑

        @842145248 你的报错是什么

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        8421452488 1 条回复 最后回复 回复 引用 0
        • 8421452488
          likesingjumprap @小鱼
          最后由 编辑

          @小鱼 刚刚重新编译了下,好慢,麻烦大佬帮我看看

          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. 
          
          小鱼小 1 条回复 最后回复 回复 引用 0
          • 小鱼小
            小鱼 技术大佬 @842145248
            最后由 编辑

            @842145248 再贴一下完整的代码

            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

            8421452488 1 条回复 最后回复 回复 引用 0
            • 8421452488
              likesingjumprap @小鱼
              最后由 编辑

              @小鱼
              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
              
              小鱼小 1 条回复 最后回复 回复 引用 0
              • 小鱼小
                小鱼 技术大佬 @842145248
                最后由 编辑

                @842145248 是 src/main.cpp ,你的错误在 main函数里不是自定义功能包造成的

                新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                1 条回复 最后回复 回复 引用 0
                • 8421452488
                  likesingjumprap @847718956
                  最后由 编辑

                  @小鱼 感谢大佬的的回复,我补充完整了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));
                  }
                  
                  小鱼小 1 条回复 最后回复 回复 引用 0
                  • 小鱼小
                    小鱼 技术大佬 @842145248
                    最后由 编辑

                    @842145248

                    $ source install/setup.bash && ros2 service call /oled_control fishbot_interfaces/srv/OledControl "{px: 0, py: 0, data: 'nihao'}"

                    这句在哪一个目录下执行的

                    新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                    8421452488 1 条回复 最后回复 回复 引用 0
                    • 8421452488
                      likesingjumprap @小鱼
                      最后由 编辑

                      @小鱼 example14_custom_interfaces/extra_packages 目录下

                      小鱼小 1 条回复 最后回复 回复 引用 0
                      • 小鱼小
                        小鱼 技术大佬 @842145248
                        最后由 编辑

                        @842145248 删除掉build和install ,重新colcon build后测试,还报错就贴一下 CMakeLists.txt 和 srv文件

                        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                        8421452488 1 条回复 最后回复 回复 引用 0
                        • 8421452488
                          likesingjumprap @小鱼
                          最后由 编辑

                          @小鱼 删除重新编译后还不行

                          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
                          
                          小鱼小 1 条回复 最后回复 回复 引用 0
                          • 小鱼小
                            小鱼 技术大佬 @842145248
                            最后由 编辑

                            @842145248 用示例工程的功能包试试:https://github.com/fishros/example_micoros_board

                            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                            8421452488 1 条回复 最后回复 回复 引用 0
                            • 8421452488
                              likesingjumprap @小鱼
                              最后由 编辑

                              @小鱼 示例也不行

                               *  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. 
                              
                              小鱼小 1 条回复 最后回复 回复 引用 0
                              • 小鱼小
                                小鱼 技术大佬 @842145248
                                最后由 编辑

                                @842145248 需要重新构建microros库,按照你之前的流程,或者把extra_pkgs 替换下

                                新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                                8421452488 1 条回复 最后回复 回复 引用 0
                                • 8421452488
                                  likesingjumprap @小鱼
                                  最后由 842145248 编辑

                                  @小鱼 鱼哥,还是不行😭 ,libmicroros 删除了,重新编译,终端打印编译过程没报错,也通过了,但是中间报这种影响吗?

                                  17e49679-1fb1-470c-9c0c-c0092bfdb7eb-image.png

                                  c1fd2f5f-b8d3-4dcb-ba2e-58c8e41f4eb9-image.png

                                  看 libmicroros 目录下也有那个fishbot_interfaces了
                                  026f6e6c-f8bd-4017-9d44-7ea835beffdc-image.png

                                  执行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'
                                  
                                  
                                  小鱼小 1 条回复 最后回复 回复 引用 0
                                  • 小鱼小
                                    小鱼 技术大佬 @842145248
                                    最后由 编辑

                                    @842145248 在 动手学ros2第5章进阶篇-控制OLED-自定义消息接口 中说:

                                    ros2 service call /oled_control fishbot_interfaces/srv/OledControl "{px: 0, py: 0, data: 'nihao'}"

                                    真是奇怪了,你在extra_pkgs下依次运行下面的指令,把结果反馈出来看看

                                    rm -rf build install log
                                    colcon build
                                    source install/setup.bash
                                    ros2 serivice list
                                    ros2 interface list | grep fishbot
                                    ros2 service call /oled_control fishbot_interfaces/srv/OledControl "{px: 0, py: 0, data: 'nihao'
                                    

                                    新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                                    8421452488 1 条回复 最后回复 回复 引用 0
                                    • 8421452488
                                      likesingjumprap @小鱼
                                      最后由 编辑

                                      @小鱼
                                      rm -rf build install log && colcon build --packages-up-to fishbot_interfaces && source install/setup.bash

                                      [0.467s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/home/nzb/vscode_project/cplus_demo/ros2_demo/chat13/example14_custom_interfaces/extra_packages/install/fishbot_interfaces' in the environment variable AMENT_PREFIX_PATH doesn't exist
                                      [0.468s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/home/nzb/vscode_project/cplus_demo/ros2_demo/chat13/example14_custom_interfaces/extra_packages/install/fishbot_interfaces' in the environment variable CMAKE_PREFIX_PATH doesn't exist
                                      Starting >>> fishbot_interfaces
                                      Finished <<< fishbot_interfaces [5.13s]                     
                                      
                                      Summary: 1 package finished [5.37s]
                                      

                                      ros2 service list && ros2 interface list | grep fish

                                      /oled_control
                                      fishbot_interfaces/srv/OledControl
                                      
                                      

                                      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'
                                      
                                      小鱼小 1 条回复 最后回复 回复 引用 0
                                      • 小鱼小
                                        小鱼 技术大佬 @842145248
                                        最后由 编辑

                                        @842145248 在 动手学ros2第5章进阶篇-控制OLED-自定义消息接口 中说:

                                        --packages-up-to fishbot_interfaces

                                        不要加这个

                                        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                                        8421452488 1 条回复 最后回复 回复 引用 0
                                        • 8421452488
                                          likesingjumprap @小鱼
                                          最后由 编辑

                                          @小鱼 一样的报错,那个是我测试加上的,刚刚我删了重新编译了下,还是上面报错😭 ,人都要麻了

                                          8421452488 1 条回复 最后回复 回复 引用 0
                                          • 8421452488
                                            likesingjumprap @842145248
                                            最后由 编辑

                                            @842145248 我环境跟教程一样的22.04,humble

                                            小鱼小 1 条回复 最后回复 回复 引用 0
                                            • 第一个帖子
                                              最后一个帖子
                                            皖ICP备16016415号-7
                                            Powered by NodeBB | 鱼香ROS