@zjr 您好,请问您解决了这个问题了吗
84414692-272e-485c-b357-8ceb77c4b527-image.png
失败信息如图
求助
报错消息:
CMake Error at /usr/local/share/cmake-4.0/Modules/FindPackageHandleStandardArgs.cmake:227 (message):
Could NOT find PythonExtra (missing: PythonExtra_EXTENSION_EXTENSION
PythonExtra_INCLUDE_DIRS PythonExtra_LIBRARIES PYTHON_SOABI
PythonExtra_EXTENSION_SUFFIX)
Call Stack (most recent call first):
/usr/local/share/cmake-4.0/Modules/FindPackageHandleStandardArgs.cmake:591 (_FPHSA_FAILURE_MESSAGE)
/opt/ros/humble/share/python_cmake_module/cmake/Modules/FindPythonExtra.cmake:224 (find_package_handle_standard_args)
/opt/ros/humble/share/rosidl_generator_py/cmake/rosidl_generator_py_generate_interfaces.cmake:23 (find_package)
/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
/opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
CMakeLists.txt:27 (rosidl_generate_interfaces)
如题,ROS2的python调用.so,在import的时候提示找不到,但是其实已经存在,并且直接使用python调用.so是成功的。
例子很简单,参考https://blog.csdn.net/qq_42108414/article/details/122865374
我的test_publisher.py,在import example的时候报错,使用的库的名字是:example.cpython-312-x86_64-linux-gnu.so
老师,这里构建完成之后,代码部分是照着视频原封不动敲的,然后一运行仿真,坐标系和那个机器人一个都没有,课程前面的那个包也是安装了的
e2d6c2f8-4de5-4bc6-8fa4-97b70b25120f-b7204992-008e-49c2-a82f-68d851fe7266.png
26efd6a7-f2e1-4df4-9db4-724e5800e8ef-865af7ab-f2ad-4466-b91a-82f2657b49ff.png
9e16b8a6-9cc2-4f01-a13c-ab94fe5952fb-ab0adfd9-76c0-4507-8a99-32a80ba7d740.png
使用pid控制轮子速度时,设置的值一致,检测的当前速度值一致,但是输出的pid值差了30左右,导致两个轮子的实际转速左轮比右轮慢
以下为main文件代码,头文件与小鱼老师的一致。
以下为部分串口数据
dt: 10.000000ms
Left Wheel:
Current: 22567
Last: 22528
Delta: 39
Speed: 403.34mm/s
PID Out: 54.30
dt: 10.000000ms
Right Wheel:
Current: 44701
Last: 44662
Delta: 39
Speed: 403.34mm/s
PID Out: 88.05
dt: 10.000000ms
Left Wheel:
Current: 22606
Last: 22568
Delta: 38
Speed: 393.00mm/s
PID Out: 58.57
dt: 10.000000ms
Right Wheel:
Current: 44779
Last: 44740
Delta: 39
Speed: 403.34mm/s
PID Out: 87.72
dt: 10.000000ms
Left Wheel:
Current: 22646
Last: 22607
Delta: 39
Speed: 403.34mm/s
PID Out: 54.20
dt: 10.000000ms
Right Wheel:
Current: 44857
Last: 44818
Delta: 39
Speed: 403.34mm/s
PID Out: 87.38
出现上面报错
屏幕截图 2025-05-28 154012.png
只启动了 /cartographer_occupancy_grid_node 节点
鱼哥,为啥这里的全局插件报错啊,是需要安装啥东西吗,我一直都是跟着你的课程来的,也没少装东西啊,而且我rqt这里没有TF的选项
1.关于仿真软件
fe526f31-0fc4-47cb-bf00-ed1fdf3c7a18-988ff795-eca2-45c0-8363-4a16d26e4f75.png
2.关于rqt的,相关插件装了,然后相关目标也删除了
fe6b7b45-559d-40fa-906b-b11e611b9bfc-9de21c83daf34ff70b7bc3e7612559e1.jpg
d9c70be2-bd8e-4f4e-8c39-9d2c1118f1a3-image.png
9.0.5 单独配置雷达转接板,没有任何问题,可以用nc -l 8889 接口收到信号。到了9.0.6 ,不能驱动。第一步就不行。提示雷达是不是坏了什么的。需要帮忙
a7f44578-f241-4a1c-8f0d-6976f31981d6-image.png
关键信息如下:-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 12 packages in topological order:
-- ~~ - turtlebot3 (plain cmake)
-- ~~ - turtlebot3_bringup (plain cmake)
-- ~~ - turtlebot3_cartographer (plain cmake)
-- ~~ - turtlebot3_msgs (plain cmake)
-- ~~ - turtlebot3_navigation2 (plain cmake)
-- ~~ - turtlebot3_simulations (plain cmake)
-- ~~ - turtlebot3_teleop (unknown)
CMake Warning at /opt/ros/noetic/share/catkin/cmake/catkin_workspace.cmake:89 (message):
Unknown build type 'ament_python' for package 'turtlebot3_teleop'
Call Stack (most recent call first):
CMakeLists.txt:69 (catkin_workspace)
-- ~~ - turtlebot3_example (unknown)
CMake Warning at /opt/ros/noetic/share/catkin/cmake/catkin_workspace.cmake:89 (message):
Unknown build type 'ament_python' for package 'turtlebot3_example'
Call Stack (most recent call first):
CMakeLists.txt:69 (catkin_workspace)
-- ~~ - turtlebot3_fake_node (plain cmake)
-- ~~ - turtlebot3_gazebo (plain cmake)
-- ~~ - turtlebot3_node (plain cmake)
-- ~~ - turtlebot3_description (plain cmake)
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkin_workspace.cmake:100 (message):
This workspace contains non-catkin packages in it, and catkin cannot build
a non-homogeneous workspace without isolation. Try the
'catkin_make_isolated' command instead.
Call Stack (most recent call first):
CMakeLists.txt:69 (catkin_workspace)
求助如何解决
e318947b-9abc-4901-bf8b-45dd7fab702a-图片.png 4c30bb00-7f5f-404e-9865-4ffc75b98f18-图片.png
Cartographer 在请求 odom 和 base 之间的变换时,时间戳不匹配,且请求的时间戳早于变换数据的可用时间。
[cartographer_node-1] [WARN] [1748252628.567376902] [cartographer logger]: W0526 17:43:48.000000 61917 tf_bridge.cpp:53] Lookup would require extrapolation into the past. Requested time 1748250957.654525 but the earliest data is at time 1748252620.653753, when looking up transform from frame [odom] to frame [base]
有没有大佬指导一下
局域网,2.4G ,双频合一关闭,网络延迟4ms以内,开始建图时正常,建图结果能看到房间轮廓,几秒钟后,代表雷达或者小车的坐标轴突然飘走,(此时小车是静止的)。建图结果看不出房间轮廓,失败。 另一种情况是rviz中代表小车的坐标轴突然转个方向(此时小车是静止的),地图突然换个方向,建图结果看不出房间轮廓,建图失败。微信图片_20250526111116.png 微信图片_20250526111129.jpg
7c9e9ad9b4f76c15cdf3509e617865e.png
如何使用hc-12无线串口,实现小车与电脑的无线通讯,串口的矩阵映射如何实现?```
#include <Arduino.h>
#include <Esp32McpwmMotor.h>
#include <Esp32PcntEncoder.h>
#include "PidController.h"
#include <HardwareSerial.h>
// #define HC_RX 37 // UART2的RX引脚
// #define HC_TX 38 // UART2的TX引脚
// HardwareSerial HC12(2);
Esp32McpwmMotor motor;
Esp32PcntEncoder encoders[4];
PidController pid_controller[4];
// 运动控制参数
const float wheel_diameter = 0.065;
const float pulses_per_rev = 1978.0f;
const float wheel_circumference = PI * wheel_diameter;
const float pulse_distance = wheel_circumference / pulses_per_rev;
const float wheel_base = 0.188f;
enum MotionState { STOPPED, MOVING_FORWARD, MOVING_BACKWARD, ROTATING }; // 新增后退状态
MotionState currentState = STOPPED;
unsigned long stopStartTime = 0;
int currentCommand = 0;
int taskStep = 0;
int64_t initial_ticks[4] = {0};
float target_distance = 0;
float target_angle = 0;
void setup() {
// Serial.begin(115200);
Serial.begin(9600,SERIAL_8N1,37,38);
// HC12.begin(9600, SERIAL_8N1, HC_RX, HC_TX);
如何通过hc-12无线串口建立小车与电脑的无线通讯,矩阵映射串口如何使用?
怎么才能在vip专区发帖呢
hzx@hzx:~/catkin_ws$ catkin_make
Base path: /home/hzx/catkin_ws
Source space: /home/hzx/catkin_ws/src
Build space: /home/hzx/catkin_ws/build
Devel space: /home/hzx/catkin_ws/devel
Install space: /home/hzx/catkin_ws/install
[ 50%] Building CXX object learning_communication/CMakeFiles/talker.dir/src/talker.cpp.o
[100%] Linking CXX executable /home/hzx/catkin_ws/devel/lib/learning_communication/talker
[100%] Built target talker
hzx@hzx:~/catkin_ws$ source ./devel/setup.bash
hzx@hzx:~/catkin_ws$ rosrun learning_communication talker
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
[ERROR] [1748073702.812459570]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying...
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Error in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
^CError in XmlRpcClient::writeRequest: write error (Connection refused).
Error in XmlRpcDispatch::work: couldn't find source iterator
Desktop Screenshot 2025.05.24 - 16.00.23.35.png Desktop Screenshot 2025.05.24 - 15.59.47.54.png Desktop Screenshot 2025.05.24 - 16.00.37.94.png
更新:更加自由的构建STM32 Microros静态库的方法(适用于linux X86 arm64本文只讲述x86,arm64流程一致,不过需要将arm64系统中的编译器补全部分库即可)
一.使用 micro_ros_setup 生成Microros静态链接库 Ubuntu x86环境:前提 ,需要下载交叉编译器,若已安装可以跳过 sudo apt-get install -y gcc-arm-none-eabi下面为从创建工作空间到生成静态库的所有命令,一步一步运行即可:
source /opt/ros/$ROS_DISTRO/setup.bash mkdir uros_ws && cd uros_ws git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup #若不能使用rosdep,可以使用rosdepc rosdep update && rosdep install --from-paths src --ignore-src -y colcon build source install/local_setup.bash ros2 run micro_ros_setup create_firmware_ws.sh generate_lib generic407d70c5-db3b-4400-bda3-a1878d5cde9d-image.png
到此,基础构建完成目录如上图所示,但还需要配置两个配置文件 toolchain.cmake和colcon.meta才能生成静态链接库
toolchain.cmake配置如下
注意:在toolchain.cmake中的 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard 部分最好根据生成的工程中cmake配置文件保持一致,此配置对stm32同意系列生效(一般同一系列内核保持一致,例如F1系列内核为M3,F4系列内核为M4)如下图所示
af7fe6b2-584e-490e-b35d-710339e9d790-image.png
colcon.meta配置如下,此配置摘抄自 micro_ros_stm32cubemx_utils 配置文件如下图所示路径
e4d5e2d0-7792-41c4-b111-9976e12f4707-image.png
{ "names": { "tracetools": { "cmake-args": [ "-DTRACETOOLS_DISABLED=ON", "-DTRACETOOLS_STATUS_CHECKING_TOOL=OFF" ] }, "rosidl_typesupport": { "cmake-args": [ "-DROSIDL_TYPESUPPORT_SINGLE_TYPESUPPORT=ON" ] }, "rcl": { "cmake-args": [ "-DBUILD_TESTING=OFF", "-DRCL_COMMAND_LINE_ENABLED=OFF", "-DRCL_LOGGING_ENABLED=OFF" ] }, "rcutils": { "cmake-args": [ "-DENABLE_TESTING=OFF", "-DRCUTILS_NO_FILESYSTEM=ON", "-DRCUTILS_NO_THREAD_SUPPORT=ON", "-DRCUTILS_NO_64_ATOMIC=ON", "-DRCUTILS_AVOID_DYNAMIC_ALLOCATION=ON" ] }, "microxrcedds_client": { "cmake-args": [ "-DUCLIENT_PIC=OFF", "-DUCLIENT_PROFILE_UDP=OFF", "-DUCLIENT_PROFILE_TCP=OFF", "-DUCLIENT_PROFILE_DISCOVERY=OFF", "-DUCLIENT_PROFILE_SERIAL=OFF", "-UCLIENT_PROFILE_STREAM_FRAMING=ON", "-DUCLIENT_PROFILE_CUSTOM_TRANSPORT=ON" ] }, "rmw_microxrcedds": { "cmake-args": [ "-DRMW_UXRCE_MAX_NODES=1", "-DRMW_UXRCE_MAX_PUBLISHERS=10", "-DRMW_UXRCE_MAX_SUBSCRIPTIONS=5", "-DRMW_UXRCE_MAX_SERVICES=1", "-DRMW_UXRCE_MAX_CLIENTS=1", "-DRMW_UXRCE_MAX_HISTORY=4", "-DRMW_UXRCE_TRANSPORT=custom" ] } } }上述两个文件(toolchain.cmake colcon.meta)放入如下图所示的路径中 ~/uros_ws/firmware/mcu_ws
88c1c1d3-f1cd-4ef9-9817-28c3b1ef1f01-image.png
最后编译静态库
最后生成文件在firmware/build目录下,如下图所示
b59283e9-50de-46aa-b7ab-0a0d87a258ef-image.png
将inclue目录和静态库文件移植到stm32工程文件中即可使用
6e4a20bd-4db6-4067-b0cc-ff323fb5cdf8-image.png
在STM32 CMakeLists.txt文件中需要加入以下内容
编译C文件
如下图所示
67577c43-4754-489a-9201-03ce9bd6270d-image.png set(extera_source ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/custom_memory_manager.c ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/microros_allocators.c ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/microros_time.c ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/microros_transports/dma_transport.c )
并在如下图位置加入即可
cbbba782-a7db-42e5-8a37-b21c8c1aa48b-image.png
添加静态库文件
并在如下图位置加入即可
368ae08c-5295-44ae-b79a-04b857ef7a0d-image.png
cmake内容如下,但由于该工程有其他库内容,读者只需看个模板即可,具体内容还是根据读者工程目录进行修改
cmake_minimum_required(VERSION 3.22) # # This file is generated only once, # and is not re-generated if converter is called multiple times. # # User is free to modify the file as much as necessary # # Setup compiler settings set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) # Define the build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug") endif() # Set the project name set(CMAKE_PROJECT_NAME MicroROSF4_Cmake) # Include toolchain file include("cmake/gcc-arm-none-eabi.cmake") # Enable compile command to ease indexing with e.g. clangd set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) # Core project settings project(${CMAKE_PROJECT_NAME}) message("Build type: " ${CMAKE_BUILD_TYPE}) # Enable CMake support for ASM and C languages enable_language(C ASM) # Create an executable object type add_executable(${CMAKE_PROJECT_NAME}) # Add STM32CubeMX generated sources add_subdirectory(cmake/stm32cubemx) # Link directories setup target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE # Add user defined library search paths ) # # 3rd-party lib start # # set(THIRD_PARTY_LIB "${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/lib/libmicroros.a") set(extera_source_control ${PROJECT_SOURCE_DIR}/Third-party/control/Src/control.c ${PROJECT_SOURCE_DIR}/Third-party/control/Src/Encoder.c ${PROJECT_SOURCE_DIR}/Third-party/oled/Src/I2C_Fun.c ${PROJECT_SOURCE_DIR}/Third-party/imu/Src/ICM20948.c ${PROJECT_SOURCE_DIR}/Third-party/oled/Src/oled.c ${PROJECT_SOURCE_DIR}/Third-party/delay/Src/Delay.c ${PROJECT_SOURCE_DIR}/Third-party/robot_sys/Src/sys_struct.c ${PROJECT_SOURCE_DIR}/Third-party/MadgwickAHRS/Src/MadgwickAHRS.c ) set(extera_source ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/custom_memory_manager.c ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/microros_allocators.c ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/microros_time.c ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Src/microros_transports/dma_transport.c ) message(STATUS "dir is = ${PROJECT_SOURCE_DIR}") add_library(LibMicroros_app ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microrosapp/Src/microrosclass_agent.cpp ) target_include_directories(LibMicroros_app PRIVATE ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Inc/microros_include ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microrosapp/Inc ) target_sources(LibMicroros_app PRIVATE # Add user sources here ${extera_source} Third-party/Lib_Microrosapp/Src/microros_class.cpp ) target_link_libraries(LibMicroros_app PRIVATE stm32cubemx ${THIRD_PARTY_LIB} ) # # 3rd-party lib end # # # Add sources to executable target_sources(${CMAKE_PROJECT_NAME} PRIVATE # Add user sources here ${extera_source} ${extera_source_control} ) # Add include paths target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE # Add user defined include paths ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microros/Inc/microros_include ${PROJECT_SOURCE_DIR}/Third-party/Lib_Microrosapp/Inc ${PROJECT_SOURCE_DIR}/Third-party/MadgwickAHRS/Inc ${PROJECT_SOURCE_DIR}/Third-party/control/Inc ${PROJECT_SOURCE_DIR}/Third-party/oled/Inc ${PROJECT_SOURCE_DIR}/Third-party/imu/Inc ${PROJECT_SOURCE_DIR}/Third-party/robot_sys/Inc ${PROJECT_SOURCE_DIR}/Third-party/delay/Inc ) # Add project symbols (macros) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE # Add user defined symbols ) # Add linked libraries target_link_libraries(${CMAKE_PROJECT_NAME} stm32cubemx # Add user defined libraries LibMicroros_app # 自己生成的静态库 ${THIRD_PARTY_LIB} # 第三方静态库 )5d1e469f-84e0-4211-b7c2-80dbd10c13c0-image.png
剩下的内容可以查看我上一章节内容,主要是microros agent的构建与使用AGENT使用
由于激光雷达发送的消息类型为PointCloud2,所以我将消息转为LaserScan类型发布到话题/scan,然后用slam_toolbox去订阅这个话题来建图,启动launch脚本后使用rviz2订阅/map无任何显示,可以确定的是/scan话题有消息,且能在rviz2上展示。
launch脚本内容为
微信图片_20250523201553.png
配置文件内容为
微信图片_20250523201612.png
rviz2显示
微信图片_20250523201603.png
版块
-
1.3k
主题4.8k
帖子 -
428
主题2.9k
帖子 -
43
主题191
帖子 -
1.0k
主题4.2k
帖子 -
980
主题3.6k
帖子 -
5
主题11
帖子 -
355
主题1.6k
帖子