动手学ros2第5章进阶篇-控制OLED-自定义消息接口
-
@小鱼 删除重新编译后还不行
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.
-
@842145248 需要重新构建microros库,按照你之前的流程,或者把extra_pkgs 替换下
-
@小鱼 鱼哥,还是不行 ,
libmicroros
删除了,重新编译,终端打印编译过程没报错,也通过了,但是中间报这种影响吗?看
libmicroros
目录下也有那个fishbot_interfaces
了
执行
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'
-
@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'
-
@小鱼
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'
-
-
@小鱼 一样的报错,那个是我测试加上的,刚刚我删了重新编译了下,还是上面报错 ,人都要麻了
-
@842145248 我环境跟教程一样的22.04,humble
-
@842145248 我在我这里测试了一下,没有问题:
测试指令:
cd ~ git clone git@github.com:fishros/example_micoros_board.git cd example_micoros_board/example14_custom_interface/extra_packages/ 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'}"
-
-
@842145248 这demo也没啥什么环境变量影响啊,咋就不行了呢
-
@842145248 代码一样你的系统是多少的,不幸就换个系统试试
-
@小鱼
嗯嗯,我再找找看,非常感谢大佬的支持No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy Linux lenovo 5.15.0-82-generic #91-Ubuntu SMP Mon Aug 14 14:14:14 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
-
@小鱼
大佬,你电脑编完后的这个目录下的文件能截个图给我吗
extra_packages/install/fishbot_interfaces/local/lib/python3.10/dist-packages/fishbot_interfaces
-
fishros@fishros-linux:~/example_micoros_board/example14_custom_interface/extra_packages/install/fishbot_interfaces/local/lib/python3.10/dist-packages/fishbot_interfaces$ ll --- 总计 136 drwxr-xr-x 4 fishros fishros 4096 10月 14 16:44 ./ drwxrwxr-x 4 fishros fishros 4096 10月 14 16:44 ../ -rw-r--r-- 1 fishros fishros 11776 10月 14 16:44 _fishbot_interfaces_s.ep.rosidl_typesupport_c.c -rw-r--r-- 1 fishros fishros 11785 10月 14 16:44 _fishbot_interfaces_s.ep.rosidl_typesupport_fastrtps_c.c -rw-r--r-- 1 fishros fishros 11790 10月 14 16:44 _fishbot_interfaces_s.ep.rosidl_typesupport_introspection_c.c -rw-r--r-- 1 fishros fishros 17632 10月 14 16:44 fishbot_interfaces_s__rosidl_typesupport_c.cpython-310-x86_64-linux-gnu.so -rw-r--r-- 1 fishros fishros 17648 10月 14 16:44 fishbot_interfaces_s__rosidl_typesupport_fastrtps_c.cpython-310-x86_64-linux-gnu.so -rw-r--r-- 1 fishros fishros 17664 10月 14 16:44 fishbot_interfaces_s__rosidl_typesupport_introspection_c.cpython-310-x86_64-linux-gnu.so -rw-r--r-- 1 fishros fishros 0 10月 14 16:44 __init__.py -rw-r--r-- 1 fishros fishros 21392 10月 14 16:44 libfishbot_interfaces__rosidl_generator_py.so drwxrwxr-x 2 fishros fishros 4096 10月 14 16:44 __pycache__/ drwxr-xr-x 3 fishros fishros 4096 10月 14 16:44 srv/
-
果然,我编译出来的是
*cpython-36m-x86_64-*.so
大佬,你系统里面还有python3.6吗,我尝试卸载,卸不干净 ,为什么会编python3.6啊,humble明明自带的python3.10total 136 drwxr-xr-x 4 nzb nzb 4096 10月 15 13:40 ./ drwxrwxr-x 4 nzb nzb 4096 10月 15 13:40 ../ -rw-r--r-- 1 nzb nzb 11776 10月 15 13:40 _fishbot_interfaces_s.ep.rosidl_typesupport_c.c -rw-r--r-- 1 nzb nzb 11785 10月 15 13:40 _fishbot_interfaces_s.ep.rosidl_typesupport_fastrtps_c.c -rw-r--r-- 1 nzb nzb 11790 10月 15 13:40 _fishbot_interfaces_s.ep.rosidl_typesupport_introspection_c.c -rw-r--r-- 1 nzb nzb 17632 10月 15 13:40 fishbot_interfaces_s__rosidl_typesupport_c.cpython-36m-x86_64-linux-gnu.so -rw-r--r-- 1 nzb nzb 17648 10月 15 13:40 fishbot_interfaces_s__rosidl_typesupport_fastrtps_c.cpython-36m-x86_64-linux-gnu.so -rw-r--r-- 1 nzb nzb 17664 10月 15 13:40 fishbot_interfaces_s__rosidl_typesupport_introspection_c.cpython-36m-x86_64-linux-gnu.so -rw-r--r-- 1 nzb nzb 0 10月 15 13:40 __init__.py -rw-r--r-- 1 nzb nzb 21392 10月 15 13:40 libfishbot_interfaces__rosidl_generator_py.so drwxrwxr-x 2 nzb nzb 4096 10月 15 13:40 __pycache__/ drwxr-xr-x 3 nzb nzb 4096 10月 15 13:40 srv/
-
@842145248 python --verion 你的显示什么
python3 --version
-
@小鱼
显示的python3.10
刚刚我又卸载了一遍,卸载成功了,之前还剩个
python3.6-minimal
没卸载掉,显示的可执行文件是/usr/bin/python3.6m
, 疑惑我半天,卸载的时候没用通配符,我还以为系统自带的卸载不了。终于可以正常编译了跑起来了 ,非常感谢大佬的支持