diff --git a/.github/workflows/ci_msbuild.yaml b/.github/workflows/ci_msbuild.yaml index e12a8d34..83e84cde 100644 --- a/.github/workflows/ci_msbuild.yaml +++ b/.github/workflows/ci_msbuild.yaml @@ -63,6 +63,7 @@ jobs: { release: 20241211, codename: foxy }, { release: 20241211, codename: galactic }, { release: 20241211, codename: humble }, + { release: 20250113, codename: jazzy }, ] steps: diff --git a/.gitignore b/.gitignore index 4dbb8f52..8fe86c1b 100644 --- a/.gitignore +++ b/.gitignore @@ -349,6 +349,9 @@ healthchecksdb .vscode/ # M+ libmicroros distribution directories +libmicroros_yrc1000_jazzy/ +libmicroros_yrc1000u_jazzy/ +libmicroros_dx200_jazzy/ libmicroros_yrc1000_humble/ libmicroros_yrc1000u_humble/ libmicroros_dx200_humble/ @@ -361,4 +364,3 @@ libmicroros_dx200_foxy/ # M+ build output *.out -/libmicroros_yrc1000_iron diff --git a/MotoROS2.sln b/MotoROS2.sln index 85b4d384..3e4ff57a 100644 --- a/MotoROS2.sln +++ b/MotoROS2.sln @@ -10,12 +10,15 @@ Global DX200_foxy|x86 = DX200_foxy|x86 DX200_galactic|x86 = DX200_galactic|x86 DX200_humble|x86 = DX200_humble|x86 + DX200_jazzy|x86 = DX200_jazzy|x86 YRC1000_foxy|x86 = YRC1000_foxy|x86 YRC1000_galactic|x86 = YRC1000_galactic|x86 YRC1000_humble|x86 = YRC1000_humble|x86 + YRC1000_jazzy|x86 = YRC1000_jazzy|x86 YRC1000u_foxy|x86 = YRC1000u_foxy|x86 YRC1000u_galactic|x86 = YRC1000u_galactic|x86 YRC1000u_humble|x86 = YRC1000u_humble|x86 + YRC1000u_jazzy|x86 = YRC1000u_jazzy|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {64C31524-A3C4-49D4-AD04-955D44202226}.DX200_foxy|x86.ActiveCfg = DX200_foxy|Win32 @@ -24,18 +27,24 @@ Global {64C31524-A3C4-49D4-AD04-955D44202226}.DX200_galactic|x86.Build.0 = DX200_galactic|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.DX200_humble|x86.ActiveCfg = DX200_humble|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.DX200_humble|x86.Build.0 = DX200_humble|Win32 + {64C31524-A3C4-49D4-AD04-955D44202226}.DX200_jazzy|x86.ActiveCfg = DX200_jazzy|Win32 + {64C31524-A3C4-49D4-AD04-955D44202226}.DX200_jazzy|x86.Build.0 = DX200_jazzy|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_foxy|x86.ActiveCfg = YRC1000_foxy|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_foxy|x86.Build.0 = YRC1000_foxy|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_galactic|x86.ActiveCfg = YRC1000_galactic|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_galactic|x86.Build.0 = YRC1000_galactic|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_humble|x86.ActiveCfg = YRC1000_humble|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_humble|x86.Build.0 = YRC1000_humble|Win32 + {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_jazzy|x86.ActiveCfg = YRC1000_jazzy|Win32 + {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000_jazzy|x86.Build.0 = YRC1000_jazzy|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_foxy|x86.ActiveCfg = YRC1000u_foxy|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_foxy|x86.Build.0 = YRC1000u_foxy|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_galactic|x86.ActiveCfg = YRC1000u_galactic|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_galactic|x86.Build.0 = YRC1000u_galactic|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_humble|x86.ActiveCfg = YRC1000u_humble|Win32 {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_humble|x86.Build.0 = YRC1000u_humble|Win32 + {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_jazzy|x86.ActiveCfg = YRC1000u_jazzy|Win32 + {64C31524-A3C4-49D4-AD04-955D44202226}.YRC1000u_jazzy|x86.Build.0 = YRC1000u_jazzy|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/README.md b/README.md index 41daa98c..cc3a0893 100644 --- a/README.md +++ b/README.md @@ -100,8 +100,8 @@ The following general requirements must be met in order to be able to use MotoRO - the controller must have a correctly configured network connection: - DX200 and YRC1000micro: `LAN` - YRC1000: either `LAN2` or `LAN3` -- ROS 2 version: Foxy, Galactic or Humble. - MotoROS2 does not support ROS 2 Iron Irwini, nor Jazzy nor Rolling Ridley. +- ROS 2 version: Foxy, Galactic, Humble, or Jazzy. + MotoROS2 does not support ROS 2 Iron Irwini nor Rolling Ridley. - Docker or a from-source build of the micro-ROS Agent - FastDDS as RMW (even when using ROS 2 Galactic) @@ -159,8 +159,8 @@ To calculate the MD5 hash on Debian/Ubuntu for the main MotoROS2 binary, run the ```shell $ cd /path/to/where/the/binary/was/saved -$ md5sum -b mr2_yrc1_h.out -e2d088b765a0bfed501aa213a1be1de0 mr2_yrc1_h.out +$ md5sum -b mr2_yrc1_j.out +[TODO] mr2_yrc1_j.out ``` Compare the output of `md5sum` when run against the binary downloaded in the previous section ([Downloading the files](#downloading-the-files)) with the values listed in the following table. @@ -171,12 +171,15 @@ The values must match *exactly*. | DX200 | Foxy | `mr2_dx2_f.out` | `0.1.3` | `a9a9e10403f726062c25d97654fad316` | | DX200 | Galactic | `mr2_dx2_g.out` | `0.1.3` | `e8db7512215da240b28b985f2f2af98b` | | DX200 | Humble | `mr2_dx2_h.out` | `0.1.3` | `611bda537655cf8a60d85600da6043f4` | +| DX200 | Jazzy | `mr2_dx2_j.out` | `TODO` | `TODO` | | YRC1000 | Foxy | `mr2_yrc1_f.out` | `0.1.3` | `84bfb44e2043372127d9dfc1157a79b5` | | YRC1000 | Galactic | `mr2_yrc1_g.out` | `0.1.3` | `866e090b6c724429ce03117712c951f4` | | YRC1000 | Humble | `mr2_yrc1_h.out` | `0.1.3` | `e2d088b765a0bfed501aa213a1be1de0` | +| YRC1000 | Jazzy | `mr2_yrc1_j.out` | `TODO` | `TODO` | | YRC1000micro | Foxy | `mr2_yrc1m_f.out` | `0.1.3` | `027e77b427a212aa63e5d7962d48ad92` | | YRC1000micro | Galactic | `mr2_yrc1m_g.out` | `0.1.3` | `042d753a7729784fec8c5c23bef3e685` | | YRC1000micro | Humble | `mr2_yrc1m_h.out` | `0.1.3` | `c0e61adbf5bf6fd6a734211f15bb0f0a` | +| YRC1000micro | Jazzy | `mr2_yrc1m_j.out` | `TODO` | `TODO` | If the hash matches, proceed with the next section, [Configuration](#configuration). @@ -423,11 +426,12 @@ Choose one or the other. ### Using Docker (Linux Only) -The command shown here starts the `humble` version of the `micro-ros-agent` Docker image. +The command shown here starts the `jazzy` version of the `micro-ros-agent` Docker image. However, always make sure to use a version of the Agent image which corresponds to the version of ROS 2 that is being used. With ROS 2 Foxy, use `microros/micro-ros-agent:foxy`. With ROS 2 Humble, use `microros/micro-ros-agent:humble`. +With ROS 2 Jazzy, use `microros/micro-ros-agent:jazzy`. To start the Agent (on a machine with Docker already installed and setup to allow non-root access): @@ -437,7 +441,7 @@ docker run \ --rm \ --net=host \ --user=$(id -u):$(id -g) \ - microros/micro-ros-agent:humble \ + microros/micro-ros-agent:jazzy \ udp4 \ --port 8888 ``` @@ -449,11 +453,12 @@ docker run \ The micro-ROS Agent can also be built as a ROS 2 package in a Colcon workspace. This procedure is rather involved, so only do this if the pre-configured Docker image can not be used. -The following sections show how to build the Humble version of the Agent in a dedicated workspace (adapt the paths used below if a different workspace should be used instead). +The following sections show how to build the Jazzy version of the Agent in a dedicated workspace (adapt the paths used below if a different workspace should be used instead). Note: always make sure to use a version of the Agent which corresponds to the version of ROS 2 that is being used. For ROS 2 Foxy, checkout the `foxy` branch. For ROS 2 Humble, checkout the `humble` branch. +For ROS 2 Jazzy, checkout the `jazzy` branch. #### Linux (Debian/Ubuntu) @@ -462,12 +467,12 @@ This requires a working ROS 2 development environment (compiler, CMake, Git, Col In a terminal: ```shell -source /opt/ros/humble/setup.bash +source /opt/ros/jazzy/setup.bash sudo apt update rosdep update --rosdistro=$ROS_DISTRO mkdir -p $HOME/micro_ros_agent_ws/src git clone \ - -b humble \ + -b jazzy \ https://github.com/micro-ROS/micro_ros_setup.git \ $HOME/micro_ros_agent_ws/src/micro_ros_setup rosdep install \ @@ -486,7 +491,7 @@ The Agent application will only need to be built *once*, unless it needs to be u Finally, to run the Agent: ```shell -source /opt/ros/humble/setup.bash +source /opt/ros/jazzy/setup.bash source $HOME/micro_ros_agent_ws/install/local_setup.bash ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888 ``` @@ -505,14 +510,14 @@ If you are using a different version of Visual Studio, update the path to match. Now execute the following commands: ```batch -call "C:\path\to\ros2-humble\local_setup.bat" +call "C:\path\to\ros2-jazzy\local_setup.bat" mkdir "%USERPROFILE%\micro_ros_agent_ws\src" git clone ^ - -b humble ^ + -b jazzy ^ https://github.com/micro-ROS/micro_ros_msgs.git ^ "%USERPROFILE%\micro_ros_agent_ws\src\micro_ros_msgs" git clone ^ - -b humble ^ + -b jazzy ^ https://github.com/micro-ROS/micro-ROS-Agent.git ^ "%USERPROFILE%\micro_ros_agent_ws\src\micro-ROS-Agent" cd "%USERPROFILE%\micro_ros_agent_ws" @@ -543,7 +548,7 @@ After the final reboot of the controller, and after [starting the micro-ROS Agen Note: if you are using ROS 2 Galactic, please first read [Only FastDDS is supported](#only-fastdds-is-supported). -On a PC with a supported ROS 2 installation (ie: Foxy, Galactic (with FastDDS) or Humble): +On a PC with a supported ROS 2 installation (ie: Foxy, Galactic (with FastDDS), Humble, or Jazzy): 1. open a new terminal 1. `source` the ROS 2 installation @@ -562,7 +567,7 @@ Note: if you are using ROS 2 Galactic, please first read [Only FastDDS is suppor As MotoROS2 uses micro-ROS, you must always make sure to first [start the micro-ROS Agent](#the-micro-ros-agent). After registration with the Agent, MotoROS2 behaves like any other ROS 2 node. -For initial discovery of the ROS API, we recommend using the [ros2 node](https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.html), [ros2 topic](https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.html), [ros2 service](https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.html) and [ros2 action](https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.html) commandlets. +For initial discovery of the ROS API, we recommend using the [ros2 node](https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.html), [ros2 topic](https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.html), [ros2 service](https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.html) and [ros2 action](https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.html) commandlets. Refer also to the [ROS API](#ros-api) section for more information on the various topics, services and actions MotoROS2 supports. In order to be able to interact with MotoROS2 (either using the command line tools or from ROS 2 nodes), the message, service and action definitions must first be made available. @@ -674,7 +679,7 @@ The default QoS profiles used for the topics MotoROS2 publishes to are listed in | `robot_status` | *Sensor data* | Same | | `tf` | *Default* | *Reliable* reliability | -Please refer to [About Quality of Service settings: QoS profiles](https://docs.ros.org/en/humble/Concepts/About-Quality-of-Service-Settings.html#qos-profiles) in the general ROS 2 documentation for more information about these default profiles. +Please refer to [About Quality of Service settings: QoS profiles](https://docs.ros.org/en/jazzy/Concepts/About-Quality-of-Service-Settings.html#qos-profiles) in the general ROS 2 documentation for more information about these default profiles. These values are based on tests with other ROS 2 components and applications and analyses of implementations of subscribers by the authors of MotoROS2 (examples include RViz2 and MoveIt2). But these profiles can not be compatible with all possible combinations of subscribers, and thus have been made configurable. @@ -731,7 +736,7 @@ None of the other RMWs are supported, including Cyclone DDS, which is the defaul Symptoms of this incompatibility are seemingly functional ROS 2 network connections, where topics are succesfully published and subscribed to, but service invocations and action goal submissions appear to *hang*. -**Note**: ROS 2 Foxy, ROS 2 Humble and ROS 2 Rolling all use FastDDS by default. +**Note**: ROS 2 Foxy, ROS 2 Humble, ROS 2 Jazzy, and ROS 2 Rolling all use FastDDS by default. If you haven't changed your default RMW, you should not need to change anything for MotoROS2. **Work-around**: unfortunately, this limitation is caused by a middleware-layer incompatibility with respect to how service requests are (de)serialised by the respective RMWs ([ros2/rmw_cyclonedds#184](https://github.com/ros2/rmw_cyclonedds/issues/184)), and without significant changes to the way MotoROS2 operates, has no known work-around. @@ -742,7 +747,7 @@ Note that the `RMW_IMPLEMENTATION` environment variable must be `export`ed to al Please note that the `ros-galactic-rmw-fastrtps-cpp` package must be install *prior* to building the client application workspace. If the workspace has already been built, it must be rebuilt after installing the package. -Refer to [Working with multiple ROS 2 middleware implementations](https://docs.ros.org/en/humble/How-To-Guides/Working-with-multiple-RMW-implementations.html) in the ROS 2 documentation for more information about configuring different RMWs with ROS 2. +Refer to [Working with multiple ROS 2 middleware implementations](https://docs.ros.org/en/jazzy/How-To-Guides/Working-with-multiple-RMW-implementations.html) in the ROS 2 documentation for more information about configuring different RMWs with ROS 2. ### Maximum length of trajectories diff --git a/doc/build_from_source.md b/doc/build_from_source.md index ecf60430..54487bbd 100644 --- a/doc/build_from_source.md +++ b/doc/build_from_source.md @@ -21,7 +21,7 @@ The MotoPlus SDK is not compatible with Visual Studio Code. - **MotoPlus SDK for Visual Studio v1.5.1 or higher**. This is not the same as MotoPlus IDE. Users in Asian regions will need to purchase this software from [Yaskawa America directly](https://www.motoman.com/en-us/products/robots/sales-quote). If you already have a license for an older version of the MotoPlus SDK, please contact `techsupport@motoman.com` or `ccs@yaskawa.eu` for assistance obtaining a newer edition. -- **libmicroros library and headers** that corresponds to your target edition of ROS 2 (Foxy, Humble, etc) and the Yaskawa controller series you are building MotoROS2 for +- **libmicroros library and headers** that corresponds to your target edition of ROS 2 (Humble, Jazzy, etc) and the Yaskawa controller series you are building MotoROS2 for Although `libmicroros` as used by MotoROS2 is derived from the open-source [micro-ROS](https://micro.ros.org) project, various patches were needed to make it compatible with MotoPlus. As of writing, these patches can not be made open-source yet. Because of this, we distribute the `libmicroros` dependency as a closed-source library. These can be found on the [micro_ros_motoplus/Releases](https://github.com/yaskawa-global/micro_ros_motoplus/releases) page. @@ -35,19 +35,19 @@ These are provided as separate downloads and can be found on the [micro_ros_moto When downloading `libmicroros` from the repo, the folder will be named with a unique identifier corresponding to the time stamp of the build. Rename the folder to `libmicroros__`. -E.g. `libmicroros_yrc1000_humble`. +E.g. `libmicroros_yrc1000_jazzy`. Move the folder containing `libmicroros` and the headers inside the folder with the Visual Studio solution (ie: `MotoROS2.sln`). -Example showing where `libmicroros_yrc1000_humble` should be moved for a Humble build of MotoROS2 targetting a YRC1000 controller: +Example showing where `libmicroros_yrc1000_jazzy` should be moved for a Jazzy build of MotoROS2 targetting a YRC1000 controller: ```text motoros2 -|-- libmicroros_yrc1000_humble +|-- libmicroros_yrc1000_jazzy | |-- include | | `-- ... | |-- build_info.yaml -| `-- libmicroros.yrcLib_humble +| `-- libmicroros.yrcLib_jazzy |-- src | |-- ... | `-- MotoROS2_AllControllers.vcxproj @@ -82,7 +82,7 @@ This procedure will also allow you to verify the Visual Studio project configura This can be a relative path, using MSBuild macros. Copy this path, as it will be used again in the next step. - Example: `$(ProjectDir)..\libmicroros_yrc1000_humble\include;` + Example: `$(ProjectDir)..\libmicroros_yrc1000_jazzy\include;` NOTE: Do not use the `$(SolutionDir)` macro in this step. The path should be either relative to the project file or absolute. @@ -90,7 +90,7 @@ This procedure will also allow you to verify the Visual Studio project configura 1. Choose `NMake` from the left tree view. Ensure the start of the `Include Search Path` includes the path to the `libmicroros` headers. - Example: `$(ProjectDir)..\libmicroros_yrc1000_humble\include;` + Example: `$(ProjectDir)..\libmicroros_yrc1000_jazzy\include;` ![intellisense_search_path.png](img/intellisense_search_path.png) diff --git a/doc/troubleshooting.md b/doc/troubleshooting.md index 1785e891..6371a049 100644 --- a/doc/troubleshooting.md +++ b/doc/troubleshooting.md @@ -620,7 +620,7 @@ These alarms are often caused by version incompatibilities between ROS 2 (on the Ensure only compatible versions are used. -As an example: the *Humble* version of MotoROS2 should only be used with ROS 2 *Humble* on the client PC and with the *Humble* version of the micro-ROS Agent. +As an example: the *Jazzy* version of MotoROS2 should only be used with ROS 2 *Jazzy* on the client PC and with the *Jazzy* version of the micro-ROS Agent. Please also verify the client PC uses a version of ROS 2 that is [supported by MotoROS2](https://github.com/Yaskawa-Global/motoros2#general-requirements). If the behavior persists, save a copy of the output of the [debug-listener script](#debug-log-client) and the `PANELBOX.LOG` from the robot's teach pendant. diff --git a/src/CommunicationExecutor.c b/src/CommunicationExecutor.c index 42a292c9..d79da0c0 100644 --- a/src/CommunicationExecutor.c +++ b/src/CommunicationExecutor.c @@ -310,6 +310,22 @@ void Ros_Communication_StartExecutors(SEM_ID semCommunicationExecutorStatus) //--------------------------------- //Create timers + // rclc_timer_init_default(..) was replaced with rclc_timer_init_default2(..) + // in Jazzy, which has a different set of parameters. Call the correct version + // based on what this is being compiled for +#ifdef MOTOPLUS_LIBMICROROS_ROS2_IS_JAZZY + rc = rclc_timer_init_default2(&timerPingAgent, &g_microRosNodeInfo.support, RCL_MS_TO_NS(PERIOD_COMMUNICATION_PING_AGENT_MS), Ros_Communication_PingAgentConnection, true); + motoRosAssert_withMsg(rc == RCL_RET_OK, SUBCODE_FAIL_TIMER_INIT_PING, "Failed creating rclc timer (%d)", (int)rc); + + rc = rclc_timer_init_default2(&timerPublishActionFeedback, &g_microRosNodeInfo.support, RCL_MS_TO_NS(g_nodeConfigSettings.action_feedback_publisher_period), Ros_Communication_PublishActionFeedback, true); + motoRosAssert_withMsg(rc == RCL_RET_OK, SUBCODE_FAIL_TIMER_INIT_ACTION_FB, "Failed creating rclc timer (%d)", (int)rc); + + rc = rclc_timer_init_default2(&timerMonitorUserLanState, &g_microRosNodeInfo.support, + RCL_MS_TO_NS(PERIOD_COMMUNICATION_USERLAN_LINK_CHECK_MS), + Ros_Communication_MonitorUserLanState, true); + motoRosAssert_withMsg(rc == RCL_RET_OK, SUBCODE_FAIL_TIMER_INIT_USERLAN_MONITOR, + "Failed creating rclc timer (%d)", (int)rc); +#else rc = rclc_timer_init_default(&timerPingAgent, &g_microRosNodeInfo.support, RCL_MS_TO_NS(PERIOD_COMMUNICATION_PING_AGENT_MS), Ros_Communication_PingAgentConnection); motoRos_RCLAssertOK_withMsg(rc, SUBCODE_FAIL_TIMER_INIT_PING, "Failed creating rclc timer (%d)", (int)rc); @@ -321,7 +337,7 @@ void Ros_Communication_StartExecutors(SEM_ID semCommunicationExecutorStatus) Ros_Communication_MonitorUserLanState); motoRos_RCLAssertOK_withMsg(rc, SUBCODE_FAIL_TIMER_INIT_USERLAN_MONITOR, "Failed creating rclc timer (%d)", (int)rc); - +#endif //--------------------------------- //Create executors rclc_executor_t executor_motion_control; diff --git a/src/ConfigFile.c b/src/ConfigFile.c index 13df5a64..e43fe9e0 100644 --- a/src/ConfigFile.c +++ b/src/ConfigFile.c @@ -527,7 +527,7 @@ void Ros_ConfigFile_ValidateCriticalSettings() //----------------------------------------- //Verify domain ID is legal // - //See also https://docs.ros.org/en/humble/Concepts/About-Domain-ID.html + //See also https://docs.ros.org/en/jazzy/Concepts/Intermediate/About-Domain-ID.html // //NOTE: the ROS 2 documentation explains different OS have different // sets of legal values. We'll assume the same as the diff --git a/src/DX200_jazzyCompilerArguments.mps b/src/DX200_jazzyCompilerArguments.mps new file mode 100644 index 00000000..a1d36a01 --- /dev/null +++ b/src/DX200_jazzyCompilerArguments.mps @@ -0,0 +1 @@ +-DDX200 -DMOTOROS2_MEM_TRACE_ENABLE -std=gnu99 -march=atom -nostdlib -fno-builtin -fno-defer-pop -fno-implicit-fp -fno-zero-initialized-in-bss -Wall -Werror-implicit-function-declaration -DCPU=_VX_ATOM -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -I "~ProjectDir~" ~AdditionalIncludeDir~ -isystem "~IncludeDir~" -O0 ~ObjFileInfo~ -c "~FilePath~" diff --git a/src/DX200_jazzyLinkerArguments.mps b/src/DX200_jazzyLinkerArguments.mps new file mode 100644 index 00000000..f9469ff0 --- /dev/null +++ b/src/DX200_jazzyLinkerArguments.mps @@ -0,0 +1 @@ +-std=gnu99 -nostdlib -r -Wl,--discard-locals -Wl,--entry=mpUsrRoot ~FileList~ -o "~OutputPath~" diff --git a/src/MotoROS.h b/src/MotoROS.h index 19dc651d..b2d8233e 100644 --- a/src/MotoROS.h +++ b/src/MotoROS.h @@ -43,7 +43,12 @@ #include #include +// TODO: remove when Foxy, Galactic and Humble are no longer supported +#if defined(MOTOPLUS_LIBMICROROS_ROS2_IS_FOXY) || defined(MOTOPLUS_LIBMICROROS_ROS2_IS_GALACTIC) || defined(MOTOPLUS_LIBMICROROS_ROS2_IS_HUMBLE) #include +#else +#include +#endif //============================================ // Data types for communication diff --git a/src/MotoROS2_AllControllers.vcxproj b/src/MotoROS2_AllControllers.vcxproj index b5fad929..f5e92222 100644 --- a/src/MotoROS2_AllControllers.vcxproj +++ b/src/MotoROS2_AllControllers.vcxproj @@ -13,6 +13,10 @@ DX200_humble Win32 + + DX200_jazzy + Win32 + YRC1000u_foxy Win32 @@ -25,6 +29,10 @@ YRC1000u_humble Win32 + + YRC1000u_jazzy + Win32 + YRC1000_foxy Win32 @@ -37,6 +45,10 @@ YRC1000_humble Win32 + + YRC1000_jazzy + Win32 + {64C31524-A3C4-49D4-AD04-955D44202226} @@ -46,6 +58,11 @@ MotoROS2 + + Makefile + false + v141 + Makefile false @@ -61,6 +78,11 @@ false v141 + + Makefile + false + v141 + Makefile false @@ -76,6 +98,11 @@ false v141 + + Makefile + false + v141 + Makefile false @@ -94,6 +121,9 @@ + + + @@ -103,6 +133,9 @@ + + + @@ -112,6 +145,9 @@ + + + @@ -122,6 +158,18 @@ + + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_dx2_j" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)DX200\inc" + $(MP_VS_Install)DevTools\OnlineDownload.exe + $(NMakePreprocessorDefinitions);DX200;MOTOROS2_MEM_TRACE_ENABLE + $(MP_VS_Install)DX200\gnu\4.3.3-vxworks-6.9\lib\gcc\i586-wrs-vxworks\4.3.3\include;$(MP_VS_Install)DX200\inc;$(SolutionDir)libmicroros_dx200_jazzy\include; + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_dx2_j" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)DX200\inc" + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_dx2_j" -b "$(OutDir)\" -o clean + + $(SolutionDir)bin\$(Configuration)\ + + $(ProjectDir)..\lib;$(ProjectDir)..\libmicroros_dx200_jazzy\include; + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_dx2_h" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)DX200\inc" $(MP_VS_Install)DevTools\OnlineDownload.exe @@ -158,6 +206,18 @@ $(ProjectDir)..\lib;$(ProjectDir)..\libmicroros_dx200_foxy\include; + + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1_j" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)YRC1000\inc" + $(MP_VS_Install)DevTools\OnlineDownload.exe + $(NMakePreprocessorDefinitions);YRC1000;MOTOROS2_MEM_TRACE_ENABLE + $(MP_VS_Install)YRC1000\gnu\4.3.3-vxworks-6.9\lib\gcc\i586-wrs-vxworks\4.3.3\include;$(MP_VS_Install)YRC1000\inc;$(SolutionDir)libmicroros_yrc1000_jazzy\include; + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1_j" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)YRC1000\inc" + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1_j" -b "$(OutDir)\" -o clean + + $(SolutionDir)bin\$(Configuration)\ + + $(ProjectDir)..\lib;$(ProjectDir)..\libmicroros_yrc1000_jazzy\include; + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1_h" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)YRC1000\inc" $(MP_VS_Install)DevTools\OnlineDownload.exe @@ -194,6 +254,18 @@ $(ProjectDir)..\lib;$(ProjectDir)..\libmicroros_yrc1000_foxy\include; + + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1m_j" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)YRC1000u\inc" + $(MP_VS_Install)DevTools\OnlineDownload.exe + $(NMakePreprocessorDefinitions);YRC1000u;MOTOROS2_MEM_TRACE_ENABLE + $(MP_VS_Install)YRC1000u\gnu\4.3.3-vxworks-6.9\lib\gcc\i586-wrs-vxworks\4.3.3\include;$(MP_VS_Install)YRC1000u\inc;$(SolutionDir)libmicroros_yrc1000u_jazzy\include; + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1m_j" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)YRC1000u\inc" + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1m_j" -b "$(OutDir)\" -o clean + + $(SolutionDir)bin\$(Configuration)\ + + $(ProjectDir)..\lib;$(ProjectDir)..\libmicroros_yrc1000u_jazzy\include; + "$(MP_VS_Install)mpBuilder.exe" -c $(Configuration) -p "$(ProjectDir)\" -n "mr2_yrc1m_h" -b "$(SolutionDir)bin\$(Configuration)" -o build -i "$(MP_VS_Install)YRC1000u\inc" $(MP_VS_Install)DevTools\OnlineDownload.exe @@ -230,6 +302,11 @@ $(ProjectDir)..\lib;$(ProjectDir)..\libmicroros_yrc1000u_foxy\include; + + + _buildLog\MotoROS2$(Configuration).log + + _buildLog\MotoROS2$(Configuration).log @@ -245,6 +322,11 @@ _buildLog\MotoROS2$(Configuration).log + + + _buildLog\MotoROS2$(Configuration).log + + _buildLog\MotoROS2$(Configuration).log @@ -260,6 +342,11 @@ _buildLog\MotoROS2$(Configuration).log + + + _buildLog\MotoROS2$(Configuration).log + + _buildLog\MotoROS2$(Configuration).log @@ -290,6 +377,7 @@ + @@ -314,18 +402,24 @@ + + + + + + diff --git a/src/MotoROS2_AllControllers.vcxproj.filters b/src/MotoROS2_AllControllers.vcxproj.filters index 6b585860..727c89c8 100644 --- a/src/MotoROS2_AllControllers.vcxproj.filters +++ b/src/MotoROS2_AllControllers.vcxproj.filters @@ -247,6 +247,27 @@ Compile Settings + + Compile Settings + + + Compile Settings + + + Compile Settings + + + Compile Settings + + + Compile Settings + + + Compile Settings + + + MotoPlus Libraries\micro-ROS + @@ -425,7 +446,7 @@ Header Files\Utilities - + Header Files\Robot Controller diff --git a/src/YRC1000_jazzyCompilerArguments.mps b/src/YRC1000_jazzyCompilerArguments.mps new file mode 100644 index 00000000..e4a1c120 --- /dev/null +++ b/src/YRC1000_jazzyCompilerArguments.mps @@ -0,0 +1 @@ +-DYRC1000 -DMOTOROS2_MEM_TRACE_ENABLE -std=gnu99 -march=atom -nostdlib -fno-builtin -fno-defer-pop -fno-implicit-fp -fno-zero-initialized-in-bss -Wall -Werror-implicit-function-declaration -DCPU=_VX_ATOM -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -I "~ProjectDir~" ~AdditionalIncludeDir~ -isystem "~IncludeDir~" -O0 ~ObjFileInfo~ -c "~FilePath~" diff --git a/src/YRC1000_jazzyLinkerArguments.mps b/src/YRC1000_jazzyLinkerArguments.mps new file mode 100644 index 00000000..f9469ff0 --- /dev/null +++ b/src/YRC1000_jazzyLinkerArguments.mps @@ -0,0 +1 @@ +-std=gnu99 -nostdlib -r -Wl,--discard-locals -Wl,--entry=mpUsrRoot ~FileList~ -o "~OutputPath~" diff --git a/src/YRC1000u_jazzyCompilerArguments.mps b/src/YRC1000u_jazzyCompilerArguments.mps new file mode 100644 index 00000000..ac689893 --- /dev/null +++ b/src/YRC1000u_jazzyCompilerArguments.mps @@ -0,0 +1 @@ +-DYRC1000u -DMOTOROS2_MEM_TRACE_ENABLE -std=gnu99 -march=atom -nostdlib -fno-builtin -fno-defer-pop -fno-implicit-fp -fno-zero-initialized-in-bss -Wall -Werror-implicit-function-declaration -DCPU=_VX_ATOM -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -I "~ProjectDir~" ~AdditionalIncludeDir~ -isystem "~IncludeDir~" -O0 ~ObjFileInfo~ -c "~FilePath~" diff --git a/src/YRC1000u_jazzyLinkerArguments.mps b/src/YRC1000u_jazzyLinkerArguments.mps new file mode 100644 index 00000000..f9469ff0 --- /dev/null +++ b/src/YRC1000u_jazzyLinkerArguments.mps @@ -0,0 +1 @@ +-std=gnu99 -nostdlib -r -Wl,--discard-locals -Wl,--entry=mpUsrRoot ~FileList~ -o "~OutputPath~" diff --git a/src/controllers.xml b/src/controllers.xml index f5af3298..f59eaa8b 100644 --- a/src/controllers.xml +++ b/src/controllers.xml @@ -5,38 +5,47 @@ SPDX-License-Identifier: Apache-2.0 --> + yrcLib_jazzy;yrcLib + yrcmLib_jazzy;yrcmLib + dnLib_jazzy;dnLib yrcLib_humble;yrcLib yrcmLib_humble;yrcmLib + dnLib_humble;dnLib yrcLib_foxy;yrcLib yrcmLib_foxy;yrcmLib + dnLib_foxy;dnLib yrcLib_galactic;yrcLib yrcmLib_galactic;yrcmLib - dnLib_humble;dnLib - dnLib_foxy;dnLib dnLib_galactic;dnLib + MOTOPLUS-YRC1000 + MOTOPLUS-YRC1000micro + MOTOPLUS-DX200 MOTOPLUS-YRC1000 MOTOPLUS-YRC1000micro + MOTOPLUS-DX200 MOTOPLUS-YRC1000 MOTOPLUS-YRC1000micro + MOTOPLUS-DX200 MOTOPLUS-YRC1000 MOTOPLUS-YRC1000micro - MOTOPLUS-DX200 - MOTOPLUS-DX200 MOTOPLUS-DX200 + YRC1000\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe + YRC1000u\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe + DX200\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe YRC1000\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe YRC1000u\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe + DX200\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe YRC1000\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe YRC1000u\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe + DX200\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe YRC1000\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe YRC1000u\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe - DX200\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe - DX200\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe DX200\gnu\4.3.3-vxworks-6.9\x86-win32\bin\ccpentium.exe