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

    docker按串口通讯方式启动后连接上硬件但是一直没有节点信息

    已定时 已固定 已锁定 已移动
    MicroROS
    microros humble dockers
    4
    18
    1.9k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1
      小黄小黄触底反弹ت
      最后由 1402364022 编辑

      环境

      • 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
      

      应实现:

      b90d22ad-adda-41da-b60a-33e032ca0a4a-image.png
      8e19a68e-f524-42e4-b12e-1efdd297cfac-image.png

      实际效果:

      e0abdb40-e281-4e07-a07f-cb8558fc1264-image.png

      问题总结

      docker虽然识别到micro-ros设备,但是一直卡在了日志打印,而没有create client,且按下rst键都没有用,更不用说node信息也查询不到。

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

        @1402364022 1.使用串口调试工具打开串口,按下RST检查是否看到XRCE输出,若无则检查是否正确写入代码,若有则关闭串口检查2
        2.尝试使用手动构建版本的microros,排除docker问题:https://fishros.org.cn/forum/topic/1295/agent-手动编译-不用docker-以及树莓派上使用micros-agent的方法/8

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

        1 1 条回复 最后回复 回复 引用 0
        • 1
          小黄小黄触底反弹ت @小鱼
          最后由 编辑

          @小鱼

          串口监视器查看结果:

          显示按下rst是有对应输出的:
          6141ed85-a8fc-4383-8d3b-44bd1e608a10-image.png

          安装新的agent:

          安装完后还是只是打印两条信息,有重启还是没用:
          092d297f-b3a8-4b6d-bbe8-4545295f450b-image.png
          我安装是按照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
          
          31079267193 小鱼小 24758873092 3 条回复 最后回复 回复 引用 0
          • 31079267193
            ᥫ朱容君 @1402364022
            最后由 编辑

            @1402364022 你好,你的问题解决了么,我的也是同样的问题。之前用配置助手烧录的程序都能启动,现在启动不了

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

              @1402364022
              1.你是humble系统,应该使用humble版本的microros
              2.看打印是有上传的数据的,问题估计出在agent上
              3.波特率指定115200即可
              4.一定确保串口没有被多个设备打开(只有agent使用)
              5.如果以上都不行,请更换虚拟机,从板子串口日志看,板子这边应该没有什么问题

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

              1 31079267193 2 条回复 最后回复 回复 引用 0
              • 1
                小黄小黄触底反弹ت @小鱼
                最后由 编辑

                @小鱼
                我的micro-ros是像您的humble版动手学教程一样,是在ini文件里加了这个依赖,这个应该是humble版的micro-ros吧

                5f05c53f-5db9-4bd1-a961-5757c0a7582e-image.png

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

                  @1402364022 是humble版本的

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

                  31079267193 1 条回复 最后回复 回复 引用 0
                  • 1
                    小黄小黄触底反弹ت @3107926719
                    最后由 编辑

                    @3107926719 不好意思还没有,请问烧录助手是什么

                    31079267193 1 条回复 最后回复 回复 引用 0
                    • 1
                      小黄小黄触底反弹ت @1402364022
                      最后由 编辑

                      @1402364022 天啊这个东西这么摸不透的吗

                      31079267193 1 条回复 最后回复 回复 引用 0
                      • 31079267193
                        ᥫ朱容君 @小鱼
                        最后由 编辑

                        @小鱼 鱼哥,我试过了,首先用配置助手烧录主板后,用串口的方式通信不了,很奇怪,但是用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类的信息

                        1 条回复 最后回复 回复 引用 0
                        • 31079267193
                          ᥫ朱容君 @小鱼
                          最后由 编辑

                          @小鱼 每次用pio'串口的方式烧录了节点程序,不管是udp4还是串口,还是你说的那个树梅派的agent方式都启动不了。
                          每次都不得不重新在之前在配置助手上烧录的带有wifif,ip的那个完整的底板系统

                          1 条回复 最后回复 回复 引用 0
                          • 31079267193
                            ᥫ朱容君 @1402364022
                            最后由 编辑

                            @1402364022 感觉是串口的问题

                            1 条回复 最后回复 回复 引用 0
                            • 31079267193
                              ᥫ朱容君 @1402364022
                              最后由 编辑

                              @1402364022 配置助手

                              1 1 条回复 最后回复 回复 引用 0
                              • 1
                                小黄小黄触底反弹ت @3107926719
                                最后由 编辑

                                @3107926719 这个东西去哪里下

                                31079267193 1 条回复 最后回复 回复 引用 0
                                • 31079267193
                                  ᥫ朱容君 @1402364022
                                  最后由 编辑

                                  @1402364022 fishbot配套的一个资料,找客服要。兄弟你的这个问题解决了没有,解决了是怎么解决的,我也遇到这样问题了,现在还没有解决

                                  1 1 条回复 最后回复 回复 引用 0
                                  • 1
                                    小黄小黄触底反弹ت @3107926719
                                    最后由 编辑

                                    @3107926719 我已经解决了 发现是esp32供电有问题 之前是用市面上自带的底板供电 换了ch340供电就可以了

                                    31079267193 1 条回复 最后回复 回复 引用 0
                                    • 31079267193
                                      ᥫ朱容君 @1402364022
                                      最后由 编辑

                                      @1402364022 是ch340的usb转ttl电平进行供电么?没用手机数据线了?

                                      1 条回复 最后回复 回复 引用 0
                                      • 24758873092
                                        Mona Darling @1402364022
                                        最后由 编辑

                                        @1402364022 如果是如上图的情况,能识别但卡死的情况,可以尝试一下,Linux先运行命令后再连接开发版,最好开发板是断电状态,如果是开饭开机连接的话,大概率会出现agent卡死的情况

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