micro-ROS / micro-ROS/micro-ROS-Agent
Provide branch for ROS 2 Jazzy and update GIT_TAG for xrceagent
還沒有人認領這個 Issue。
- 主要語言
- C++
- 星號
- 201
- 分支
- 111
- 平均合併
- 1 天 6 小時
- 30 天內合併 PR
- 10
描述
## Issue template
This is a feature request. ROS 2 Rolling and [Jazzy depend on Fast-CDR 2.2.x](https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos). [Version 2.4.3 of Micro-XRCE-DDS-Agent](https://github.com/eProsima/Micro-XRCE-DDS-Agent/tree/v2.4.3) supports this but the GIT_TAG in the SuperBuild.cmake in the `rolling` branch refers to `ros2`
#### Steps to reproduce the issue
- Create a `colcon` workspace to build this repo, and source ROS Rolling before building.
#### Expected behavior
- micro-ROS-Agent will build in a `colcon` workspace that has sourced ROS Rolling.
#### Actual behavior
- micro-ROS-Agent will not build in a `colcon` workspace that has sourced ROS Rolling.
#### Additional information
Looks like this will require code changes as well, as micro-ROS-agent will not build against the updated Fast-CDR version. For example:
```bash
/Users/rhys/Code/ros2/rolling/ros2-ardupilot/src/micro_ros_agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:57:33: error: no member named 'DDS_CDR' in 'eprosima::fastcdr::Cdr'
eprosima::fastcdr::Cdr::DDS_CDR);
~~~~~~~~~~~~~~~~~~~~~~~~^
/Users/rhys/Code/ros2/rolling/ros2-ardupilot/src/micro_ros_agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:64:54: error: no member named 'getSerializedDataLength' in 'eprosima::fastcdr::Cdr'; did you mean 'get_serialized_data_length'?
payload->length = static_cast(scdr.getSerializedDataLength());
^~~~~~~~~~~~~~~~~~~~~~~
get_serialized_data_length
/Users/rhys/Code/ros2/rolling/ros2-rolling/install/fastcdr/include/fastcdr/Cdr.h:266:23: note: 'get_serialized_data_length' declared here
Cdr_DllAPI size_t get_serialized_data_length() const;
^
/Users/rhys/Code/ros2/rolling/ros2-ardupilot/src/micro_ros_agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:80:33: error: no member named 'DDS_CDR' in 'eprosima::fastcdr::Cdr'
eprosima::fastcdr::Cdr::DDS_CDR);
~~~~~~~~~~~~~~~~~~~~~~~~^
/Users/rhys/Code/ros2/rolling/ros2-ardupilot/src/micro_ros_agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:149:33: error: no member named 'DDS_CDR' in 'eprosima::fastcdr::Cdr'
eprosima::fastcdr::Cdr::DDS_CDR);
~~~~~~~~~~~~~~~~~~~~~~~~^
/Users/rhys/Code/ros2/rolling/ros2-ardupilot/src/micro_ros_agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:156:54: error: no member named 'getSerializedDataLength' in 'eprosima::fastcdr::Cdr'; did you mean 'get_serialized_data_length'?
payload->length = static_cast(scdr.getSerializedDataLength());
^~~~~~~~~~~~~~~~~~~~~~~
get_serialized_data_length
/Users/rhys/Code/ros2/rolling/ros2-rolling/install/fastcdr/include/fastcdr/Cdr.h:266:23: note: 'get_serialized_data_length' declared here
Cdr_DllAPI size_t get_serialized_data_length() const;
^
/Users/rhys/Code/ros2/rolling/ros2-ardupilot/src/micro_ros_agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:172:33: error: no member named 'DDS_CDR' in 'eprosima::fastcdr::Cdr'
eprosima::fastcdr::Cdr::DDS_CDR);
~~~~~~~~~~~~~~~~~~~~~~~~^
6 errors generated.
make[2]: *** [CMakeFiles/micro_ros_agent.dir/src/agent/graph_manager/graph_typesupport.cpp.o] Error 1
make[1]: *** [CMakeFiles/micro_ros_agent.dir/all] Error 2
```
This branch contains patches to fix the above issue: https://github.com/srmainwaring/micro-ROS-Agent/tree/prs/pr-rolling-fastcdr-2.2.x
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
從 rolling 分支中的 SuperBuild.cmake 開始,檢查 Micro-XRCE-DDS-Agent 的 GIT_TAG。source ROS Rolling 後重現 colcon build,接著檢查 graph_typesupport.cpp 以及所參照的 prs/pr-rolling-fastcdr-2.2.x 分支中的修補程式。完成的條件是 agent 能夠針對所要求的 ROS 2 分支使用 Fast-CDR 2.2.x 建置。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- cpp
- 領域
- build-system, robotics
- Issue 類型
- 功能
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100