重要提示
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
ganyuanzhen 发布的帖子
-
RE: 8.1.3 cmake找不到源文件
@43996173 在 8.1.3 cmake找不到源文件 中说:
spin_motion_cotroller.cpp
文件名:spin_motion_cotroller.cpp CMake里的文件名:src/spin_motion_controller.cpp
是你的CMake文件名错了
-
RE: 大佬们,我想把小鱼小车的代码换到另一个车上,我要改什么呢
@515261725 哈哈,昨天就在群里看到这个问题了。
这个需要看移植那一部分。如果是从头(机械+电控+上层的ROS等等)就有些多了。我们假设从电控部分开始。
首先,需要知道你的机器人是如何控制的。
其次,需要修改运动学解算。毕竟你的新车不太可能是两轮模型。
然后,与之对应的,里程计的计算也需要修改。选用何种里程计,就要看你的需求。
最后,你需要逆运动学计算使得你可以通过导航给出的信息移动你的机器人。
我的理解是这样的,欢迎各位大佬批评指正!谢谢啦·~
-
RE: 容器未满足VS Code服务器的所有要求
@1213112157 在 容器未满足VS Code服务器的所有要求 中说:
https://aka.ms/vscode-remote/faq/old-linux for additional information.
看看能否升级容器内的libc版本
-
RE: 虚拟机里按视频里安装的VS Code输入不了中文怎么解决
这是由于在Wayland下,electron和Chrome对于输入法的支持不完全。
将桌面后端服务器改成xorg或者将Ubuntu自带的ibus输入法换成fcitx5输入法
如果选择的是第二个方案,在启动vscode的命令行后面添加
--gtk-version=4 --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
-
RE: [教程]自动化编译microROS的github仓库
@472795832 哈哈,我的问题,教程里少了一个配置Git仓库权限的步骤。少了这个步骤,就没法上传到Release
我这就去补上
-
RE: 亲爱的鱼香ros
@moon_and_star2022 在 亲爱的鱼香ros 中说:
英伟达nxc
看起来是 /sbin/init 这个初始化用的程序执行错误。
还有似乎是pca953x的通信错误,https://casparting.github.io/embedded system/RPi_CM4_pca953x_failed_writing_register/
再向上看,是imx219的错误,是不是没有链接这个摄像头。
https://forums.developer.nvidia.com/t/imx219-board-setup-error-during-i2c-read-probe-121/160230
-
[教程]自动化编译microROS的github仓库
接前文:https://fishros.org.cn/forum/topic/2085/自动化编译microros的github仓库?_=1705806395279
仓库链接:https://github.com/ganyuanzhen/microROSF407BinrayBuilder
STM32 系列芯片 microROS 自动化编译库
这个repo可以帮助大家使用
Github Actions
来自动化编译microROS
库。不再需要在本地搭建Docker
编译环境!目录结构
repo ├── Core ├── Drivers ├── micro_ros_stm32cubemx_utils └── Middlewares
其中,
Core
,Drivers
, 和Middlewares
都是由CubeMX
自动化生成的。而micro_ros_stm32cubemx_utils
则是microROS的核心库,我们之后编译的静态库就是基于这个的。使用方法
0. fork 并 克隆本仓库
但是,克隆下来的仓库是根据我的需求配置的,不符合你的需求,需要按照下面的步骤修改哦~
1. 获取
microROS
代码由于
microROS
代码是区分ROS2
的版本的,因此需要根据你的需求选择不同的版本。仓库地址为:https://github.com/micro-ROS/micro_ros_stm32cubemx_utils
注意不要直接克隆,下载压缩包就可以了!
用你下载下来的版本替换本仓库中的
micro_ros_stm32cubemx_utils
文件夹。注意要保持文件夹名字相同!2. 修改
.ioc
文件并生成代码这里需要根据你的芯片型号来修改
.ioc
文件。在修改和重新生成代码的过程中,需要注意一下几点:1. 使用
FreeRTOS
中间件,microROS
需要使用FreeRTOS
作为中间件,因此需要修改.ioc
文件,将FreeRTOS
中间件添加到 项目中。2. 修改
FreeRTOS
中的Stack Size
microROS
需要大于10kb
的Stack Size
,因此需要修改FreeRTOS
中的Stack Size
。具体配置选项在
FreeRTOS
->Tasks and Queues
中,双击defaultTask
进行修改。3. 按需要设置通信协议,比如使用
USART + DMA
- 初始化USART并启用其DMA请求功能。
- 创建并配置两个DMA通道,一个用于Tx(传输),一个用于Rx(接收)。
- 对于每个DMA通道,将优先级设置为非常高(DMA_PRIORITY_VERY_HIGH)。
- 对于Rx通道,将其配置为循环模式(DMA_CIRCULAR)。
- 开启串口的
UARTx global interrupt
4. 在
Project Manager
选项卡中,配置Toolchain
为Makefile
5. 生成代码,注意
.ioc
的保存位置是否正确。6. 如果第一步复制好的文件夹不见了,请再复制一遍。
3. 修改
microROS
生成脚本1. 修改
Makefile
在
Makefile
中找到build the application
部分,在上方插入以下内容:####################################### # micro-ROS addons ####################################### LDFLAGS += micro_ros_stm32cubemx_utils/microros_static_library/libmicroros/libmicroros.a C_INCLUDES += -Imicro_ros_stm32cubemx_utils/microros_static_library/libmicroros/microros_include # Add micro-ROS utils C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/custom_memory_manager.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_allocators.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_time.c # Set here the custom transport implementation C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_transports/dma_transport.c print_cflags: @echo $(CFLAGS)
注意,
@echo $(CFLAGS)
前面的是tab
而不是空格,如果复制下来是空格,请手动修改为tab
。2. 修改
library_generation.sh
默认的编译脚本是需要人机交互的,我们将其去掉以实现自动编译。
打开
micro_ros_stm32cubemx_utils\microros_static_library\library_generation\library_generation.sh
文件,按照如下方式修改:将:
if [ $RET_CODE = "0" ]; then echo "Found CFLAGS:" echo "-------------" echo $RET_CFLAGS echo "-------------" read -p "Do you want to continue with them? (y/n)" -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then echo "Continuing..." else echo "Aborting" exit 0; fi else echo "Please read README.md to update your Makefile" exit 1; fi
修改为:
if [ $RET_CODE = "0" ]; then echo "Found CFLAGS:" echo "-------------" echo $RET_CFLAGS echo "-------------" # read -p "Do you want to continue with them? (y/n)" -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then echo "Continuing..." else echo "Aborting"; # exit 0; fi else echo "Please read README.md to update your Makefile" exit 1; fi
修改前后差异如下:
3. 将代码推送到
GitHub
4. 开始编译
1. 配置权限
Github 默认是不允许在Actions中读写仓库的,我们需要先配置一下权限,让它可以上传Release。
-
首先前往 Settings 界面
-
然后,前往 Actions -> General
-
在页面下方,选择
Read and write permissions
选项
2. 开始编译
- 前往你的仓库的
Actions
页面,点击 左边的CI
按钮,再点击右边的Run worlflow
就可以开始编译了!。
- 编译完成后的结果,可以在仓库的
Release
页面直接下载。