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

    提交勘误

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    书籍 勘误
    4
    7
    510
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 若
      若离
      最后由 编辑

      书籍代码部分缺失

      书籍P324,P325
      代码清单9-39
      代码中

      ...
      void micro_ros_task(void *parameter){
        //1设置传输协议并等待设置完成
        IPAddress agent_ip;
        agent_ip.fromString("192.168.31.126");
        set_microros_wifi_transports("WIFI_NAME","WIFI_PASSWORD",agent_ip,8888);
        delay(2000);
      }
      ...
      

      WIFI_NAME WIFI_PASSWORD未在前面定义,解决方法

      前面加入
      #define WIFI_NAME xxxx //填你的wifi名字
      #define WIFI_PASSWORD xxx //填你的wifi密码
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        您提到的勘误确实是一个常见的问题,特别是在涉及到硬件编程和配置代码时,硬编码的WiFi名称和密码可能会导致代码在不同环境下无法直接运行。您提出的解决方案是正确的,即在代码中使用宏定义(#define)来提前声明WiFi的名称和密码,这样可以使代码更加灵活和可移植。

        以下是根据您的建议修改后的代码段示例:

        #include <WiFi.h> // 确保已经包含了WiFi库
        
        // 使用宏定义来设置WiFi的名称和密码
        #define WIFI_NAME "你的WiFi名字"
        #define WIFI_PASSWORD "你的WiFi密码"
        
        // 其他必要的包含和全局变量声明...
        
        void micro_ros_task(void *parameter){
          // 1. 设置传输协议并等待设置完成
          IPAddress agent_ip;
          agent_ip.fromString("192.168.31.126");
          // 注意:这里假设set_microros_wifi_transports是一个自定义函数,用于配置WiFi和Micro-ROS的传输
          set_microros_wifi_transports(WIFI_NAME, WIFI_PASSWORD, agent_ip, 8888);
          delay(2000); // 等待连接建立
        
          // 其他任务代码...
        }
        
        // 如果set_microros_wifi_transports是一个未定义的函数,你可能需要实现它
        // 或者确保你有一个库或框架支持这个函数
        // 例如:
        void set_microros_wifi_transports(const char* ssid, const char* password, IPAddress ip, uint16_t port) {
          // 这里是连接WiFi和设置Micro-ROS网络传输的代码
          WiFi.begin(ssid, password);
          while (WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.print(".");
          }
          // 接下来可能是设置Micro-ROS的网络传输部分,这里只是示例
          // ...
        }
        
        // 确保在main函数或某个初始化函数中调用了micro_ros_task
        // 例如,在Arduino的setup()函数中
        void setup() {
          Serial.begin(115200);
          // 其他初始化代码...
          xTaskCreatePinnedToCore(
            (TaskFunction_t)micro_ros_task,    /* Task function. */
            "micro_ros_task",                 /* String with name of task. */
            configMINIMAL_STACK_SIZE * 2,     /* Stack size in words, not bytes. */
            NULL,                             /* Parameter passed as input of the task */
            tskIDLE_PRIORITY + 1,             /* Priority of the task. */
            NULL);                            /* Task handle to keep track of created task */
        }
        
        void loop() {
          // 空的loop函数,因为所有的工作都在micro_ros_task中处理
        }
        

        请注意,上面的代码示例中包含了一些假设,比如set_microros_wifi_transports函数的存在和它如何工作的。在实际应用中,您可能需要根据您使用的具体库或框架来调整这部分代码。另外,请确保您的开发环境已经包含了必要的库(如WiFi库),并且已经正确配置了Arduino IDE或您正在使用的任何其他开发环境。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

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

          @若离 兄弟没错,我用了双引号,这不是个宏定义,只是提示用户改成自己的:

          "WIFI_NAME","WIFI_PASSWORD"

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

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

            @小鱼 哦哦好吧,是我误解了。不过这里书上就上面的agentip用注释提示了下,这里的wifiname和wifipassword也没标明用自己的替换,直接误解成宏定义了

            小鱼小 1 条回复 最后回复 回复 引用 0
            • 3
              3028647549
              最后由 编辑

              标题:使用一键安装过程中遇到程序崩溃

              Traceback (most recent call last):
                File "/tmp/fishinstall/install.py", line 134, in <module>
                  main()
                File "/tmp/fishinstall/install.py", line 68, in main
                  importlib.import_module("tools.translation.translator").Linguist()
              AttributeError: module 'tools.translation.translator' has no attribute 'Linguist'
              1 条回复 最后回复 回复 引用 0
              • 3
                3028647549
                最后由 编辑

                标题:使用一键安装过程中遇到程序崩溃

                Traceback (most recent call last):
                  File "/tmp/fishinstall/install.py", line 134, in <module>
                    main()
                  File "/tmp/fishinstall/install.py", line 68, in main
                    importlib.import_module("tools.translation.translator").Linguist()
                AttributeError: module 'tools.translation.translator' has no attribute 'Linguist'
                

                本次运行详细日志文件已保存至 /tmp/fishros_install.log

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

                  @若离 我下次修订下

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

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