小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
docker按串口通讯方式启动后连接上硬件但是一直没有节点信息
-
环境
- Linux:Ubuntu 的ros2 humble
- esp32硬件:micro-ros
- esp32软件开发平台:platformio
- agent:dockers
问题描述
想实现: esp32主控发布节点,通过docker的串口通讯方式被安装了ros2的上位机查询。
esp32烧录代码:#include <Arduino.h> #include <micro_ros_platformio.h> #include <rcl/rcl.h> #include <rclc/rclc.h> #include <rclc/executor.h> rclc_executor_t executor; rclc_support_t support; rcl_allocator_t allocator; rcl_node_t node; void setup() { Serial.begin(115200); // 设置通过串口进行MicroROS通信 set_microros_serial_transports(Serial); // 延时时一段时间,等待设置完成 delay(2000); // 初始化内存分配器 allocator = rcl_get_default_allocator(); // 创建初始化选项 rclc_support_init(&support, 0, NULL, &allocator); // 创建节点 hello_microros rclc_node_init_default(&node, "hello_microros", "", &support); // 创建执行器 rclc_executor_init(&executor, &support.context, 1, &allocator); } void loop() { delay(100); // 循环处理数据 rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)); }
终端输入:
sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO serial --dev /dev/ttyUSB0 -v6
应实现:
实际效果:
问题总结
docker虽然识别到micro-ros设备,但是一直卡在了日志打印,而没有create client,且按下rst键都没有用,更不用说node信息也查询不到。
-
@1402364022 1.使用串口调试工具打开串口,按下RST检查是否看到XRCE输出,若无则检查是否正确写入代码,若有则关闭串口检查2
2.尝试使用手动构建版本的microros,排除docker问题:https://fishros.org.cn/forum/topic/1295/agent-手动编译-不用docker-以及树莓派上使用micros-agent的方法/8 -
串口监视器查看结果:
显示按下rst是有对应输出的:
安装新的agent:
安装完后还是只是打印两条信息,有重启还是没用:
我安装是按照https://github.com/ZhaoXiangBox/esp32_ros2_robot/blob/foxy/02-install_micro_ros/chapter_02.pdf
的步骤(因为之前尝试安装但由于网络不好无法下载micro_ros_agent包而作罢,这次是用了您的路径单独下载micro_ros_agent包),包编译时有如下的警告:--- stderr: micro_ros_agent 正克隆到 'xrceagent'... 切换到一个新分支 'ros2' HEAD 目前位于 c25243c Enable Domain Override on Reference and XML Participant (#351) CMake Warning (dev) at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message): The package name passed to `find_package_handle_standard_args` (tinyxml2) does not match the name of the calling package (TinyXML2). This can lead to problems in calling code that expects `find_package` result variables (e.g., `_FOUND`) to follow a certain pattern. Call Stack (most recent call first): cmake/modules/FindTinyXML2.cmake:40 (find_package_handle_standard_args) /opt/ros/humble/share/fastrtps/cmake/fastrtps-config.cmake:51 (find_package) CMakeLists.txt:153 (find_package) This warning is for project developers. Use -Wno-dev to suppress it. Finished <<< micro_ros_agent [1min 39s] Summary: 2 packages finished [1min 51s] 1 package had stderr output: micro_ros_agent
-
@1402364022 你好,你的问题解决了么,我的也是同样的问题。之前用配置助手烧录的程序都能启动,现在启动不了
-
@1402364022
1.你是humble系统,应该使用humble版本的microros
2.看打印是有上传的数据的,问题估计出在agent上
3.波特率指定115200即可
4.一定确保串口没有被多个设备打开(只有agent使用)
5.如果以上都不行,请更换虚拟机,从板子串口日志看,板子这边应该没有什么问题 -
@小鱼
我的micro-ros是像您的humble版动手学教程一样,是在ini文件里加了这个依赖,这个应该是humble版的micro-ros吧 -
@1402364022 是humble版本的
-
@3107926719 不好意思还没有,请问烧录助手是什么
-
@1402364022 天啊这个东西这么摸不透的吗
-
@小鱼 鱼哥,我试过了,首先用配置助手烧录主板后,用串口的方式通信不了,很奇怪,但是用upd4的方式就可以。sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6。这段命令可以。用串口或者是下载了mirocros_ws包,用miroros_agent方式启动也不行。
当在pio里面编写了第一个节点的程序烧录后,直接upd4或者串口甚至是mircroros_agent都启动不了,但是pio串口助手确实可以输出xrcl类的信息 -
@小鱼 每次用pio'串口的方式烧录了节点程序,不管是udp4还是串口,还是你说的那个树梅派的agent方式都启动不了。
每次都不得不重新在之前在配置助手上烧录的带有wifif,ip的那个完整的底板系统 -
@1402364022 感觉是串口的问题
-
@1402364022 配置助手
-
@3107926719 这个东西去哪里下
-
@1402364022 fishbot配套的一个资料,找客服要。兄弟你的这个问题解决了没有,解决了是怎么解决的,我也遇到这样问题了,现在还没有解决
-
@3107926719 我已经解决了 发现是esp32供电有问题 之前是用市面上自带的底板供电 换了ch340供电就可以了
-
@1402364022 是ch340的usb转ttl电平进行供电么?没用手机数据线了?
-
@1402364022 如果是如上图的情况,能识别但卡死的情况,可以尝试一下,Linux先运行命令后再连接开发版,最好开发板是断电状态,如果是开饭开机连接的话,大概率会出现agent卡死的情况