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

    fishros上调xTaskCreate会返回1. 并panic

    已定时 已固定 已锁定 已移动
    FishBot二驱机器人
    xtaskcreate panic fishros
    2
    4
    34
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • H
      hury
      最后由 hury 编辑

      在使用wifi连接本地主机。我已确认wifi连接正常。

      [1750239748.194450] info     | UDPv4AgentLinux.cpp | init                     | running...             | port: 8000
      [1750239748.194722] info     | Root.cpp           | set_verbose_level        | logger setup           | verbose_level: 4
      [1750239748.379031] info     | Root.cpp           | create_client            | create                 | client_key: 0x0BE4F9B2, session_id: 0x81
      [1750239748.379170] info     | SessionManager.hpp | establish_session        | session established    | client_key: 0x0BE4F9B2, address: 192.168.31.244:16415
      

      fishbot上调xTaskCreate会返回1. 并panic. 这个是主板出问题了吗?

      #include "pidcontroller.h"
      #include "kinematics.h"
      #include <Arduino.h>
      #include <WiFi.h>
      #include <rcl/rcl.h>
      #include <rclc/rclc.h>
      #include <rclc/executor.h>
      #include <micro_ros_platformio.h>
      #include <Esp32PcntEncoder.h>
      #include <Esp32McpwmMotor.h>
      #include <geometry_msgs/msg/twist.h>
      
      
      rcl_allocator_t allocator;
      rclc_support_t support;
      rclc_executor_t executor;
      rcl_node_t node;
      
      void micro_ros_task(void* parameter)
      {
        IPAddress agent_ip;
        agent_ip.fromString("192.168.31.100");
        set_microros_wifi_transports((char*)"*****", (char*)"*****", agent_ip, 8000);
        delay(2000);
      
        Serial.printf("micro_ros_task after set_microros_wifi_transports\n");
        allocator = rcl_get_default_allocator();
        rclc_support_init(&support, 0, nullptr, &allocator);
        rclc_node_init_default(&node, "fishbot_control", "", &support);
      
        unsigned int num_handles = 0;
        rclc_executor_init(&executor, &support.context, num_handles, &allocator);
        rclc_executor_spin(&executor);
      }
       
      void setup() {
        Serial.begin(115200);
        auto ret = xTaskCreate(micro_ros_task, "micro_ros_task", 10240, nullptr, 1, nullptr);
        Serial.printf("xTaskCreate : %d\n", ret);
      }
      
      void loop() {
        Serial.printf("in loop\n");
        delay(100);
      }
      

      ==============================

      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      Guru Meditation Error: Core  1 panic'ed (IllegalInstruction). Exception was unhandled.
      Memory dump at 0x400d2af0: 6a352520 04adf01d 65201110
      Core  1 register dump:
      PC      : 0x400d2af4  PS      : 0x00060730  A0      : 0x00000000  A1      : 0x3ffb4a70  
      A2      : 0x3ffc3bc0  A3      : 0x3ffc3b38  A4      : 0x3ffc3bf4  A5      : 0x00000000  
      A6      : 0x00000000  A7      : 0x00000000  A8      : 0x800d2af4  A9      : 0x3ffb4a50  
      A10     : 0x00000001  A11     : 0xfffffffd  A12     : 0x00000000  A13     : 0x00000000  
      A14     : 0x00000001  A15     : 0x3ffc3b38  SAR     : 0x00000019  EXCCAUSE: 0x00000000  
      EXCVADDR: 0x00000000  LBEG    : 0x40089ad8  LEND    : 0x40089ae3  LCOUNT  : 0x00000000  
      
      
      Backtrace: 0x400d2af1:0x3ffb4a70
      
      
      
      
      ELF file SHA256: e2d1d2acd881461d
      
      Rebooting...
      ets Jul 29 2019 12:21:46
      
      rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
      configsip: 0, SPIWP:0xee
      clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
      mode:DIO, clock div:1
      load:0x3fff0030,len:1184
      load:0x40078000,len:13260
      load:0x40080400,len:3028
      entry 0x400805e4
      xTaskCreate : 1
      in loop
      in loop
      micro_ros_task after set_microros_wifi_transports
      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      in loop
      Guru Meditation Error: Core  1 panic'ed (IllegalInstruction). Exception was unhandled.
      Memory dump at 0x400d2af0: 6a352520 04adf01d 65201110
      Core  1 register dump:
      PC      : 0x400d2af4  PS      : 0x00060b30  A0      : 0x00000000  A1      : 0x3ffb4a70  
      A2      : 0x3ffc3bc0  A3      : 0x3ffc3b38  A4      : 0x3ffc3bf4  A5      : 0x00000000  
      A6      : 0x00000000  A7      : 0x00000000  A8      : 0x800d2af4  A9      : 0x3ffb4a50  
      A10     : 0x00000001  A11     : 0xfffffffd  A12     : 0x00000000  A13     : 0x00000000  
      A14     : 0x00000001  A15     : 0x3ffc3b38  SAR     : 0x00000019  EXCCAUSE: 0x00000000  
      EXCVADDR: 0x00000000  LBEG    : 0x40089ad8  LEND    : 0x40089ae3  LCOUNT  : 0x00000000  
      
      
      Backtrace: 0x400d2af1:0x3ffb4a70
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @hury
        最后由 编辑

        @hury 一定是程序问题

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

        H 2 条回复 最后回复 回复 引用 0
        • H
          hury @小鱼
          最后由 hury 编辑

          @小鱼
          可以看下,上面代码,都是空实现。程序应该是没有问题。
          setup里只调了micro_ros_task。
          micro_ros_task只是连了wifi,初始化了executor.
          executor的num_handles=0
          loop也只是做了printf.

          1 条回复 最后回复 回复 引用 0
          • H
            hury @小鱼
            最后由 hury 编辑

            @小鱼
            我也用了书中的示例代码:fishbot_motion_control_9.4.1, 也会出现同样的问题。定位了下:rclc_support_init(&support,0,NULL,&allocator); 返回的是1, support初始化就失败了。

            // 单独创建一个任务运行 micro-ROS 相当于一个线程
            void microros_task(void* args)
            {
                // 1.设置传输协议并延迟一段时间等待设置的完成
                IPAddress agent_ip;
                agent_ip.fromString("192.168.31.100"); // 设置agent的IP地址
                set_microros_wifi_transports((char*)"******",(char*)"******",agent_ip,8000); // 设置传输协议
                delay(3000); // 等待2秒,等待WIFI连接
                // 2.初始化内存分配器
                allocator = rcl_get_default_allocator(); // 获取默认的内存分配器
                // 3.初始化支持
                rclc_support_init(&support,0,NULL,&allocator); // 初始化支持
                // 4.初始化节点
                rclc_node_init_default(&node,"fishbot_motion_control","",&support); // 初始化节点
                // 5.初始化执行器
                unsigned int num_handles = 0; // 订阅和计时器的回调数量,注意这是一个要改的参数
                rclc_executor_init(&executor,&support.context,num_handles,&allocator); // 初始化执行器
                // 循环执行器
                rclc_executor_spin(&executor);
            }
            
            1 条回复 最后回复 回复 引用 0
            • 第一个帖子
              最后一个帖子
            皖ICP备16016415号-7
            Powered by NodeBB | 鱼香ROS