ROS2-构建 micro-ROS-Agent

参考链接

GitHub - micro-ROS/micro_ros_setup: Support macros for building micro-ROS-based firmware.

一、创建一个 ROS 2 工作区并为给定的 ROS 2 发行版构建这个包

source /opt/ros/$ROS_DISTRO/setup.bash

mkdir uros_ws && cd uros_ws

git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup

rosdep update && rosdep install --from-paths src --ignore-src -y

colcon build

source install/local_setup.bash

二、构建 micro-ROS-Agent

ros2 run micro_ros_setup create_agent_ws.sh
ros2 run micro_ros_setup build_agent.sh
source install/local_setup.sh
ros2 run micro_ros_agent micro_ros_agent [parameters]

主要问题解决:

1.spdlog报错,原因是spdlog的版本不对应。

In file included from /usr/local/include/spdlog/spdlog.h:12,
                 from /home/xc/microros_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/logger/Logger.hpp:23,
                 from /home/xc/microros_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/client/session/stream/OutputStream.hpp:22,
                 from /home/xc/microros_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/client/session/Session.hpp:20,
                 from /home/xc/microros_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/client/ProxyClient.hpp:20,
                 from /home/xc/microros_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/Root.hpp:18,
                 from /home/xc/microros_ws/build/micro_ros_agent/agent/src/xrceagent/src/cpp/processor/Processor.cpp:20:
/usr/local/include/spdlog/common.h: In constructor ‘spdlog::spdlog_ex::spdlog_ex(const string&, int)’:
/usr/local/include/spdlog/common.h:186:54: error: cannot convert ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} to ‘const char*’
  186 |         fmt::format_system_error(outbuf, last_errno, msg);

解决方法:

下载最新的spdlog替换原来的。

下载链接:https://github.com/gabime/spdlog

这里采用编译源码的方式,也可以在Releases中直接下载。

$ git clone https://github.com/gabime/spdlog.git
$ cd spdlog && mkdir build && cd build
$ cmake .. && make -j

最后将新的文件~/spdlog/include/spdlog,替换到/usr/local/include/spdlog。

2.网络问题github下载不了

在/etc/hosts中添加以下代码。

185.199.108.133 raw.githubusercontent.com

192.30.255.112  github.com 
185.31.16.184 github.global.ssl.fastly.net 

3.uxr/agent报错 

直接删除/usr/local/include/uxr/agent文件夹即可,同时删除uros_ws文件,从第一步开始重新构建。

In file included from /home/xc/microros_ws/src/uros/micro-ROS-Agent/micro_ros_agent/include/agent/Agent.hpp:18,
                 from /home/xc/microros_ws/src/uros/micro-ROS-Agent/micro_ros_agent/src/main.cpp:15:
/usr/local/include/uxr/agent/AgentInstance.hpp:18:10: fatal error: uxr/agent/config.hpp: No such file or directory
   18 | #include <uxr/agent/config.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/micro_ros_agent.dir/build.make:76: CMakeFiles/micro_ros_agent.dir/src/main.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
In file included from /home/xc/microros_ws/src/uros/micro-ROS-Agent/micro_ros_agent/include/agent/Agent.hpp:18,
                 from /home/xc/microros_ws/src/uros/micro-ROS-Agent/micro_ros_agent/src/agent/Agent.cpp:18:
/usr/local/include/uxr/agent/AgentInstance.hpp:18:10: fatal error: uxr/agent/config.hpp: No such file or directory
   18 | #include <uxr/agent/config.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~

### micro-ROS Agent 安装配置及使用教程 #### 一、简介 micro-ROSROS 2 的轻量级实现,旨在支持资源受限设备。micro-ROS Agent 起到了桥梁的作用,在主机上运行并与目标嵌入式设备通信[^1]。 #### 二、环境准备 为了顺利安装和配置 micro-ROS Agent ,需要先准备好开发环境。确保已经安装了 Docker 或者按照官方文档说明设置好依赖项。对于网络问题导致无法从 GitHub 下载的情况,可以考虑通过其他镜像源获取所需文件并手动放置到指定位置,例如将 `~/spdlog/include/spdlog` 替换至 `/usr/local/include/spdlog` [^4]。 #### 三、安装过程 访问[micro-ROS-Agent](https://gitcode.com/gh_mirrors/mi/micro-ROS-Agent)项目页面,遵循README中的指导完成编译构建工作。通常情况下会涉及到克隆仓库、创建虚拟环境以及执行特定命令来启动服务端程序。 ```bash # 假设已解决前置条件 cd ~/workspace/ git clone https://gitcode.com/gh_mirrors/mi/micro-ROS-Agent.git cd micro-ROS-Agent colcon build --symlink-install source install/setup.bash ``` #### 四、连接与测试 一旦成功部署完毕之后就可以尝试让其与实际硬件建立联系了。这一步骤可能涉及修改串口参数或是调整 IP 地址等细节设定以便适配不同场景下的需求。 ```python import rclpy from geometry_msgs.msg import Twist def main(args=None): rclpy.init(args=args) node = rclpy.create_node('minimal_publisher') publisher_ = node.create_publisher(Twist, 'cmd_vel', 10) msg = Twist() while True: # 发送控制指令给机器人移动平台 pass if __name__ == '__main__': main() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值