From f452ab732d2ff9afde88a9debf5b4fdcdd4409c0 Mon Sep 17 00:00:00 2001 From: Rooholla-KhorramBakht Date: Thu, 8 Feb 2024 20:32:03 -0500 Subject: [PATCH] lowstate command interface added --- .gitignore | 10 +- Go2Py/make_msgs.sh | 4 +- Go2Py/msgs/.idlpy_manifest | 11 - Go2Py/msgs/_Imu.py | 31 - Go2Py/msgs/_LowCmd.py | 32 - Go2Py/msgs/_LowState.py | 39 - Go2Py/msgs/__init__.py | 11 - Go2Py/robot/interface/ros2.py | 39 +- .../src/lidar_node/CMakeLists.txt | 0 .../src/lidar_node/README.md | 0 .../src/lidar_node/Version.h.in | 0 .../src/lidar_node/config/config.yaml | 0 .../src/lidar_node/launch/dashing_start.py | 0 .../src/lidar_node/launch/start.launch | 0 .../src/lidar_node/launch/start.py | 0 .../src/lidar_node/msg/UdpFrame.msg | 0 .../src/lidar_node/msg/UdpPacket.msg | 0 .../src/lidar_node/msg/msg_ros2/UdpFrame.msg | 0 .../src/lidar_node/msg/msg_ros2/UdpPacket.msg | 0 .../lidar_node/node/hesai_ros_driver_node.cc | 0 .../lidar_node/node/hesai_ros_driver_node.cu | 0 .../src/lidar_node/package.xml | 0 .../src/lidar_node/rviz/rviz.rviz | 0 .../src/lidar_node/rviz/rviz2.rviz | 0 .../driver/HesaiLidar_SDK_2.0/CMakeLists.txt | 0 .../src/driver/HesaiLidar_SDK_2.0/LICENSE | 0 .../src/driver/HesaiLidar_SDK_2.0/README.md | 0 .../driver/HesaiLidar_SDK_2.0/Version.h.in | 0 .../driver/HesaiLidar_SDK_2.0/change notes.md | 0 .../AT128E2X_Angle Correction File.dat | Bin .../FT120C1X_Angle Correction File.dat | Bin .../OT128_Angle Correction File.csv | 0 .../Pandar128E3X_Angle Correction File.csv | 0 .../Pandar40M_Angle Correction File.csv | 0 .../Pandar40P_Angle Correction File.csv | 0 .../Pandar64_Angle Correction File.csv | 0 .../Pandar90E3X_Angle Correction File.csv | 0 .../PandarQT_Angle Correction File.csv | 0 .../PandarXT-16_Angle Correction File.csv | 0 .../PandarXT_Angle Correction File.csv | 0 .../QT128C2X_Angle Correction File.csv | 0 .../QT128C2X_Channel_Cofig.csv | 0 .../XT32M2X_Angle Correction File.csv | 0 .../AT128E2X_Firetime Correction File.csv | 0 .../Pandar128E3X_Firetime Correction File.csv | 0 .../Pandar40E3X_Firetime Correction File.csv | 0 .../Pandar40P_Firetime Correction File.csv | 0 .../Pandar64E3X_Firetime Correction File.csv | 0 .../Pandar64_Firetime Correction File.csv | 0 .../Pandar90_Firetime Correction File.csv | 0 .../PandarXT-16_Firetime Correction File.csv | 0 .../PandarXT_Firetime Correction File.csv | 0 .../QT128C2X_Firetime Correction File.csv | 0 .../driver/hesai_lidar_sdk.hpp | 0 .../driver/hesai_lidar_sdk_gpu.cuh | 0 .../libhesai/CMakeLists.txt | 0 .../Container/include/blocking_ring.h | 0 .../libhesai/Container/include/ring.h | 0 .../Container/include/ring_2d_shared.h | 0 .../libhesai/Container/include/ring_2dex.h | 0 .../libhesai/Container/src/blocking_ring.cc | 0 .../libhesai/Container/src/ring.cc | 0 .../libhesai/Container/src/ring_2d_shared.cc | 0 .../libhesai/Container/src/ring_2dex.cc | 0 .../libhesai/Lidar/lidar.cc | 0 .../HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.h | 0 .../libhesai/Lidar/lidar_types.h | 0 .../libhesai/Logger/include/logger.h | 0 .../libhesai/Logger/src/logger.cc | 0 .../libhesai/PtcClient/include/client_base.h | 0 .../include/lidar_communication_header.h | 0 .../libhesai/PtcClient/include/ptc_client.h | 0 .../libhesai/PtcClient/include/tcp_client.h | 0 .../PtcClient/include/tcp_ssl_client.h | 0 .../libhesai/PtcClient/src/ptc_client.cc | 0 .../libhesai/PtcClient/src/tcp_client.cc | 0 .../libhesai/PtcClient/src/tcp_ssl_client.cc | 0 .../PtcParser/include/general_ptc_parser.h | 0 .../PtcParser/include/ptc_1_0_parser.h | 0 .../PtcParser/include/ptc_2_0_parser.h | 0 .../libhesai/PtcParser/ptc_parser.cc | 0 .../libhesai/PtcParser/ptc_parser.h | 0 .../PtcParser/src/general_ptc_parser.cc | 0 .../libhesai/PtcParser/src/ptc_1_0_parser.cc | 0 .../libhesai/PtcParser/src/ptc_2_0_parser.cc | 0 .../libhesai/Source/include/pcap_saver.h | 0 .../libhesai/Source/include/pcap_source.h | 0 .../libhesai/Source/include/socket_source.h | 0 .../libhesai/Source/include/source.h | 0 .../libhesai/Source/src/pcap_saver.cc | 0 .../libhesai/Source/src/pcap_source.cc | 0 .../libhesai/Source/src/socket_source.cc | 0 .../libhesai/Source/src/source.cc | 0 .../UdpParser/include/general_parser.h | 0 .../UdpParser/include/udp1_4_parser.h | 0 .../UdpParser/include/udp2_4_parser.h | 0 .../UdpParser/include/udp2_5_parser.h | 0 .../UdpParser/include/udp3_1_parser.h | 0 .../UdpParser/include/udp3_2_parser.h | 0 .../UdpParser/include/udp4_3_parser.h | 0 .../UdpParser/include/udp6_1_parser.h | 0 .../UdpParser/include/udp7_2_parser.h | 0 .../UdpParser/include/udp_p40_parser.h | 0 .../UdpParser/include/udp_p64_parser.h | 0 .../libhesai/UdpParser/src/general_parser.cc | 0 .../libhesai/UdpParser/src/udp1_4_parser.cc | 0 .../libhesai/UdpParser/src/udp2_4_parser.cc | 0 .../libhesai/UdpParser/src/udp2_5_parser.cc | 0 .../libhesai/UdpParser/src/udp3_1_parser.cc | 0 .../libhesai/UdpParser/src/udp3_2_parser.cc | 0 .../libhesai/UdpParser/src/udp4_3_parser.cc | 0 .../libhesai/UdpParser/src/udp6_1_parser.cc | 0 .../libhesai/UdpParser/src/udp7_2_parser.cc | 0 .../libhesai/UdpParser/src/udp_p40_parser.cc | 0 .../libhesai/UdpParser/src/udp_p64_parser.cc | 0 .../libhesai/UdpParser/udp_parser.cc | 0 .../libhesai/UdpParser/udp_parser.h | 0 .../UdpParserGpu/include/general_parser_gpu.h | 0 .../libhesai/UdpParserGpu/include/nvbuffer.h | 0 .../UdpParserGpu/include/return_code.h | 0 .../UdpParserGpu/include/safe_call.cuh | 0 .../UdpParserGpu/include/udp1_4_parser_gpu.h | 0 .../UdpParserGpu/include/udp2_5_parser_gpu.h | 0 .../UdpParserGpu/include/udp3_1_parser_gpu.h | 0 .../UdpParserGpu/include/udp3_2_parser_gpu.h | 0 .../UdpParserGpu/include/udp4_3_parser_gpu.h | 0 .../UdpParserGpu/include/udp6_1_parser_gpu.h | 0 .../UdpParserGpu/include/udp7_2_parser_gpu.h | 0 .../UdpParserGpu/include/udp_p40_parser_gpu.h | 0 .../UdpParserGpu/include/udp_p64_parser_gpu.h | 0 .../libhesai/UdpParserGpu/src/buffer.cu | 0 .../UdpParserGpu/src/general_parser_gpu.cu | 0 .../UdpParserGpu/src/udp1_4_parser_gpu.cu | 0 .../UdpParserGpu/src/udp2_5_parser_gpu.cu | 0 .../UdpParserGpu/src/udp3_1_parser_gpu.cu | 0 .../UdpParserGpu/src/udp3_2_parser_gpu.cu | 0 .../UdpParserGpu/src/udp4_3_parser_gpu.cu | 0 .../UdpParserGpu/src/udp6_1_parser_gpu.cu | 0 .../UdpParserGpu/src/udp7_2_parser_gpu.cu | 0 .../UdpParserGpu/src/udp_p40_parser_gpu.cu | 0 .../UdpParserGpu/src/udp_p64_parser_gpu.cu | 0 .../libhesai/UdpParserGpu/udp_parser_gpu.cu | 0 .../libhesai/UdpParserGpu/udp_parser_gpu.h | 0 .../libhesai/UdpProtocol/fault_message.h | 0 .../UdpProtocol/udp_protocol_header.h | 0 .../libhesai/UdpProtocol/udp_protocol_p40.h | 0 .../libhesai/UdpProtocol/udp_protocol_p64.h | 0 .../libhesai/UdpProtocol/udp_protocol_v1_4.h | 0 .../libhesai/UdpProtocol/udp_protocol_v2_4.h | 0 .../libhesai/UdpProtocol/udp_protocol_v2_5.h | 0 .../libhesai/UdpProtocol/udp_protocol_v3_1.h | 0 .../libhesai/UdpProtocol/udp_protocol_v3_2.h | 0 .../libhesai/UdpProtocol/udp_protocol_v4_3.h | 0 .../libhesai/UdpProtocol/udp_protocol_v6_1.h | 0 .../libhesai/UdpProtocol/udp_protocol_v7_2.h | 0 .../libhesai/driver_param.h | 0 .../libhesai/include/auto_tick_count.h | 0 .../libhesai/include/plat_utils.h | 0 .../libhesai/src/auto_tick_count.cc | 0 .../libhesai/src/plat_utils.cc | 0 .../driver/HesaiLidar_SDK_2.0/test/test.cc | 0 .../driver/HesaiLidar_SDK_2.0/test/test.cu | 0 .../HesaiLidar_SDK_2.0/tool/CMakeLists.txt | 0 .../HesaiLidar_SDK_2.0/tool/Version.h.in | 0 .../tool/packet_loss_tool.cc | 0 .../HesaiLidar_SDK_2.0/tool/pcl_tool.cc | 0 .../HesaiLidar_SDK_2.0/tool/pcl_tool.cu | 0 .../lidar_node/src/manager/node_manager.cc | 0 .../lidar_node/src/manager/node_manager.cu | 0 .../src/lidar_node/src/manager/node_manager.h | 0 .../src/manager/source_driver_ros1.hpp | 0 .../src/manager/source_driver_ros2.hpp | 0 .../lidar_node/src/utility/yaml_reader.hpp | 0 .../robot_ws/install/.colcon_install_layout | 1 - .../robot_ws/install/_local_setup_util_ps1.py | 407 ---------- .../robot_ws/install/_local_setup_util_sh.py | 407 ---------- .../install/go2py_node/lib/go2py_node/bridge | Bin 4359944 -> 0 bytes .../package_run_dependencies/go2py_node | 1 - .../resource_index/packages/go2py_node | 0 .../parent_prefix_path/go2py_node | 1 - .../share/colcon-core/packages/go2py_node | 1 - .../cmake/go2py_nodeConfig-version.cmake | 14 - .../go2py_node/cmake/go2py_nodeConfig.cmake | 42 - .../environment/ament_prefix_path.dsv | 1 - .../environment/ament_prefix_path.sh | 4 - .../share/go2py_node/environment/path.dsv | 1 - .../share/go2py_node/environment/path.sh | 5 - .../go2py_node/hook/cmake_prefix_path.dsv | 1 - .../go2py_node/hook/cmake_prefix_path.ps1 | 3 - .../go2py_node/hook/cmake_prefix_path.sh | 3 - .../share/go2py_node/local_setup.bash | 46 -- .../share/go2py_node/local_setup.dsv | 2 - .../share/go2py_node/local_setup.sh | 133 ---- .../share/go2py_node/local_setup.zsh | 59 -- .../go2py_node/share/go2py_node/package.bash | 39 - .../go2py_node/share/go2py_node/package.dsv | 8 - .../go2py_node/share/go2py_node/package.ps1 | 116 --- .../go2py_node/share/go2py_node/package.sh | 87 --- .../go2py_node/share/go2py_node/package.xml | 24 - .../go2py_node/share/go2py_node/package.zsh | 50 -- deploy/robot_ws/install/local_setup.bash | 121 --- deploy/robot_ws/install/local_setup.ps1 | 55 -- deploy/robot_ws/install/local_setup.sh | 137 ---- deploy/robot_ws/install/local_setup.zsh | 134 ---- deploy/robot_ws/install/setup.bash | 34 - deploy/robot_ws/install/setup.ps1 | 30 - deploy/robot_ws/install/setup.sh | 49 -- deploy/robot_ws/install/setup.zsh | 34 - .../msg/detail/request__builder.hpp | 87 --- .../msg/detail/request__functions.c | 288 ------- .../msg/detail/request__functions.h | 177 ----- .../request__rosidl_typesupport_fastrtps_c.h | 36 - ...quest__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...uest__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_api/msg/detail/request__struct.h | 50 -- .../msg/detail/request__struct.hpp | 160 ---- .../msg/detail/request__traits.hpp | 46 -- .../msg/detail/request__type_support.c | 123 --- .../msg/detail/request__type_support.cpp | 164 ---- .../msg/detail/request__type_support.h | 33 - .../msg/detail/request__type_support.hpp | 31 - .../msg/detail/request_header__builder.hpp | 87 --- .../msg/detail/request_header__functions.c | 288 ------- .../msg/detail/request_header__functions.h | 177 ----- ...st_header__rosidl_typesupport_fastrtps_c.h | 36 - ...eader__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...ader__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/request_header__struct.h | 50 -- .../msg/detail/request_header__struct.hpp | 159 ---- .../msg/detail/request_header__traits.hpp | 50 -- .../msg/detail/request_header__type_support.c | 131 ---- .../detail/request_header__type_support.cpp | 137 ---- .../msg/detail/request_header__type_support.h | 33 - .../detail/request_header__type_support.hpp | 31 - .../msg/detail/request_identity__builder.hpp | 71 -- .../msg/detail/request_identity__functions.c | 239 ------ .../msg/detail/request_identity__functions.h | 177 ----- ..._identity__rosidl_typesupport_fastrtps_c.h | 36 - ...ntity__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tity__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/request_identity__struct.h | 41 - .../msg/detail/request_identity__struct.hpp | 144 ---- .../msg/detail/request_identity__traits.hpp | 42 - .../detail/request_identity__type_support.c | 96 --- .../detail/request_identity__type_support.cpp | 122 --- .../detail/request_identity__type_support.h | 33 - .../detail/request_identity__type_support.hpp | 31 - .../msg/detail/request_lease__builder.hpp | 55 -- .../msg/detail/request_lease__functions.c | 231 ------ .../msg/detail/request_lease__functions.h | 177 ----- ...est_lease__rosidl_typesupport_fastrtps_c.h | 36 - ...lease__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...ease__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/request_lease__struct.h | 40 - .../msg/detail/request_lease__struct.hpp | 130 ---- .../msg/detail/request_lease__traits.hpp | 42 - .../msg/detail/request_lease__type_support.c | 81 -- .../detail/request_lease__type_support.cpp | 107 --- .../msg/detail/request_lease__type_support.h | 33 - .../detail/request_lease__type_support.hpp | 31 - .../msg/detail/request_policy__builder.hpp | 71 -- .../msg/detail/request_policy__functions.c | 239 ------ .../msg/detail/request_policy__functions.h | 177 ----- ...st_policy__rosidl_typesupport_fastrtps_c.h | 36 - ...olicy__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...licy__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/request_policy__struct.h | 41 - .../msg/detail/request_policy__struct.hpp | 144 ---- .../msg/detail/request_policy__traits.hpp | 42 - .../msg/detail/request_policy__type_support.c | 96 --- .../detail/request_policy__type_support.cpp | 122 --- .../msg/detail/request_policy__type_support.h | 33 - .../detail/request_policy__type_support.hpp | 31 - .../msg/detail/response__builder.hpp | 87 --- .../msg/detail/response__functions.c | 288 ------- .../msg/detail/response__functions.h | 177 ----- .../response__rosidl_typesupport_fastrtps_c.h | 36 - ...ponse__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...onse__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_api/msg/detail/response__struct.h | 50 -- .../msg/detail/response__struct.hpp | 160 ---- .../msg/detail/response__traits.hpp | 46 -- .../msg/detail/response__type_support.c | 123 --- .../msg/detail/response__type_support.cpp | 164 ---- .../msg/detail/response__type_support.h | 33 - .../msg/detail/response__type_support.hpp | 31 - .../msg/detail/response_header__builder.hpp | 71 -- .../msg/detail/response_header__functions.c | 267 ------- .../msg/detail/response_header__functions.h | 177 ----- ...se_header__rosidl_typesupport_fastrtps_c.h | 36 - ...eader__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...ader__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/response_header__struct.h | 47 -- .../msg/detail/response_header__struct.hpp | 143 ---- .../msg/detail/response_header__traits.hpp | 48 -- .../detail/response_header__type_support.c | 110 --- .../detail/response_header__type_support.cpp | 122 --- .../detail/response_header__type_support.h | 33 - .../detail/response_header__type_support.hpp | 31 - .../msg/detail/response_status__builder.hpp | 55 -- .../msg/detail/response_status__functions.c | 231 ------ .../msg/detail/response_status__functions.h | 177 ----- ...se_status__rosidl_typesupport_fastrtps_c.h | 36 - ...tatus__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...atus__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/response_status__struct.h | 40 - .../msg/detail/response_status__struct.hpp | 130 ---- .../msg/detail/response_status__traits.hpp | 42 - .../detail/response_status__type_support.c | 81 -- .../detail/response_status__type_support.cpp | 107 --- .../detail/response_status__type_support.h | 33 - .../detail/response_status__type_support.hpp | 31 - .../include/unitree_api/msg/request.h | 12 - .../include/unitree_api/msg/request.hpp | 12 - .../include/unitree_api/msg/request_header.h | 12 - .../unitree_api/msg/request_header.hpp | 12 - .../unitree_api/msg/request_identity.h | 12 - .../unitree_api/msg/request_identity.hpp | 12 - .../include/unitree_api/msg/request_lease.h | 12 - .../include/unitree_api/msg/request_lease.hpp | 12 - .../include/unitree_api/msg/request_policy.h | 12 - .../unitree_api/msg/request_policy.hpp | 12 - .../include/unitree_api/msg/response.h | 12 - .../include/unitree_api/msg/response.hpp | 12 - .../include/unitree_api/msg/response_header.h | 12 - .../unitree_api/msg/response_header.hpp | 12 - .../include/unitree_api/msg/response_status.h | 12 - .../unitree_api/msg/response_status.hpp | 12 - .../rosidl_generator_c__visibility_control.h | 42 - ...sidl_generator_cpp__visibility_control.hpp | 42 - ...pesupport_fastrtps_c__visibility_control.h | 43 - ...support_fastrtps_cpp__visibility_control.h | 43 - ...port_introspection_c__visibility_control.h | 43 - .../site-packages/unitree_api/__init__.py | 0 .../site-packages/unitree_api/msg/__init__.py | 8 - .../site-packages/unitree_api/msg/_request.py | 184 ----- .../unitree_api/msg/_request_header.py | 178 ----- .../unitree_api/msg/_request_header_s.c | 159 ---- .../unitree_api/msg/_request_identity.py | 145 ---- .../unitree_api/msg/_request_identity_s.c | 118 --- .../unitree_api/msg/_request_lease.py | 124 --- .../unitree_api/msg/_request_lease_s.c | 98 --- .../unitree_api/msg/_request_policy.py | 143 ---- .../unitree_api/msg/_request_policy_s.c | 118 --- .../unitree_api/msg/_request_s.c | 263 ------- .../unitree_api/msg/_response.py | 184 ----- .../unitree_api/msg/_response_header.py | 153 ---- .../unitree_api/msg/_response_header_s.c | 132 ---- .../unitree_api/msg/_response_s.c | 262 ------- .../unitree_api/msg/_response_status.py | 124 --- .../unitree_api/msg/_response_status_s.c | 98 --- .../package_run_dependencies/unitree_api | 1 - .../resource_index/packages/unitree_api | 0 .../parent_prefix_path/unitree_api | 1 - .../rosidl_interfaces/unitree_api | 16 - .../share/colcon-core/packages/unitree_api | 1 - ...ent_cmake_export_dependencies-extras.cmake | 92 --- ...ke_export_include_directories-extras.cmake | 16 - .../ament_cmake_export_libraries-extras.cmake | 140 ---- .../ament_cmake_export_targets-extras.cmake | 27 - .../cmake/rosidl_cmake-extras.cmake | 4 - ..._export_typesupport_libraries-extras.cmake | 46 -- ...ke_export_typesupport_targets-extras.cmake | 23 - .../cmake/unitree_apiConfig-version.cmake | 14 - .../unitree_api/cmake/unitree_apiConfig.cmake | 42 - ...i__rosidl_generator_cExport-noconfig.cmake | 19 - ...nitree_api__rosidl_generator_cExport.cmake | 99 --- ...tree_api__rosidl_generator_cppExport.cmake | 99 --- ..._rosidl_typesupport_cExport-noconfig.cmake | 19 - ...tree_api__rosidl_typesupport_cExport.cmake | 99 --- ...osidl_typesupport_cppExport-noconfig.cmake | 19 - ...ee_api__rosidl_typesupport_cppExport.cmake | 99 --- ...pport_introspection_cExport-noconfig.cmake | 19 - ...dl_typesupport_introspection_cExport.cmake | 114 --- ...ort_introspection_cppExport-noconfig.cmake | 19 - ..._typesupport_introspection_cppExport.cmake | 98 --- .../environment/ament_prefix_path.dsv | 1 - .../environment/ament_prefix_path.sh | 4 - .../unitree_api/environment/library_path.dsv | 1 - .../unitree_api/environment/library_path.sh | 16 - .../share/unitree_api/environment/path.dsv | 1 - .../share/unitree_api/environment/path.sh | 5 - .../unitree_api/environment/pythonpath.dsv | 1 - .../unitree_api/environment/pythonpath.sh | 3 - .../unitree_api/hook/cmake_prefix_path.dsv | 1 - .../unitree_api/hook/cmake_prefix_path.ps1 | 3 - .../unitree_api/hook/cmake_prefix_path.sh | 3 - .../unitree_api/hook/ld_library_path_lib.dsv | 1 - .../unitree_api/hook/ld_library_path_lib.ps1 | 3 - .../unitree_api/hook/ld_library_path_lib.sh | 3 - .../share/unitree_api/hook/pythonpath.dsv | 1 - .../share/unitree_api/hook/pythonpath.ps1 | 3 - .../share/unitree_api/hook/pythonpath.sh | 3 - .../share/unitree_api/local_setup.bash | 46 -- .../share/unitree_api/local_setup.dsv | 4 - .../share/unitree_api/local_setup.sh | 135 ---- .../share/unitree_api/local_setup.zsh | 59 -- .../share/unitree_api/msg/Request.idl | 17 - .../share/unitree_api/msg/Request.msg | 3 - .../share/unitree_api/msg/RequestHeader.idl | 19 - .../share/unitree_api/msg/RequestHeader.msg | 3 - .../share/unitree_api/msg/RequestIdentity.idl | 14 - .../share/unitree_api/msg/RequestIdentity.msg | 2 - .../share/unitree_api/msg/RequestLease.idl | 12 - .../share/unitree_api/msg/RequestLease.msg | 1 - .../share/unitree_api/msg/RequestPolicy.idl | 14 - .../share/unitree_api/msg/RequestPolicy.msg | 2 - .../share/unitree_api/msg/Response.idl | 17 - .../share/unitree_api/msg/Response.msg | 3 - .../share/unitree_api/msg/ResponseHeader.idl | 16 - .../share/unitree_api/msg/ResponseHeader.msg | 2 - .../share/unitree_api/msg/ResponseStatus.idl | 12 - .../share/unitree_api/msg/ResponseStatus.msg | 1 - .../msg/dds_connext/RequestHeader_.idl | 34 - .../msg/dds_connext/RequestIdentity_.idl | 30 - .../msg/dds_connext/RequestLease_.idl | 29 - .../msg/dds_connext/RequestPolicy_.idl | 30 - .../unitree_api/msg/dds_connext/Request_.idl | 33 - .../msg/dds_connext/ResponseHeader_.idl | 32 - .../msg/dds_connext/ResponseStatus_.idl | 29 - .../unitree_api/msg/dds_connext/Response_.idl | 33 - .../share/unitree_api/package.bash | 39 - .../unitree_api/share/unitree_api/package.dsv | 14 - .../unitree_api/share/unitree_api/package.ps1 | 118 --- .../unitree_api/share/unitree_api/package.sh | 89 --- .../unitree_api/share/unitree_api/package.xml | 23 - .../unitree_api/share/unitree_api/package.zsh | 50 -- .../include/unitree_go/msg/audio_data.h | 12 - .../include/unitree_go/msg/audio_data.hpp | 12 - .../include/unitree_go/msg/bms_cmd.h | 12 - .../include/unitree_go/msg/bms_cmd.hpp | 12 - .../include/unitree_go/msg/bms_state.h | 12 - .../include/unitree_go/msg/bms_state.hpp | 12 - .../msg/detail/audio_data__builder.hpp | 71 -- .../msg/detail/audio_data__functions.c | 254 ------ .../msg/detail/audio_data__functions.h | 177 ----- ...udio_data__rosidl_typesupport_fastrtps_c.h | 36 - ..._data__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...data__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/audio_data__struct.h | 45 -- .../msg/detail/audio_data__struct.hpp | 142 ---- .../msg/detail/audio_data__traits.hpp | 42 - .../msg/detail/audio_data__type_support.c | 100 --- .../msg/detail/audio_data__type_support.cpp | 149 ---- .../msg/detail/audio_data__type_support.h | 33 - .../msg/detail/audio_data__type_support.hpp | 31 - .../msg/detail/bms_cmd__builder.hpp | 71 -- .../msg/detail/bms_cmd__functions.c | 243 ------ .../msg/detail/bms_cmd__functions.h | 177 ----- .../bms_cmd__rosidl_typesupport_fastrtps_c.h | 36 - ...s_cmd__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ..._cmd__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/bms_cmd__struct.h | 41 - .../unitree_go/msg/detail/bms_cmd__struct.hpp | 144 ---- .../unitree_go/msg/detail/bms_cmd__traits.hpp | 42 - .../msg/detail/bms_cmd__type_support.c | 96 --- .../msg/detail/bms_cmd__type_support.cpp | 142 ---- .../msg/detail/bms_cmd__type_support.h | 33 - .../msg/detail/bms_cmd__type_support.hpp | 31 - .../msg/detail/bms_state__builder.hpp | 183 ----- .../msg/detail/bms_state__functions.c | 307 -------- .../msg/detail/bms_state__functions.h | 177 ----- ...bms_state__rosidl_typesupport_fastrtps_c.h | 36 - ...state__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tate__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/bms_state__struct.h | 48 -- .../msg/detail/bms_state__struct.hpp | 244 ------ .../msg/detail/bms_state__traits.hpp | 42 - .../msg/detail/bms_state__type_support.c | 201 ----- .../msg/detail/bms_state__type_support.cpp | 287 ------- .../msg/detail/bms_state__type_support.h | 33 - .../msg/detail/bms_state__type_support.hpp | 31 - .../unitree_go/msg/detail/error__builder.hpp | 71 -- .../unitree_go/msg/detail/error__functions.c | 239 ------ .../unitree_go/msg/detail/error__functions.h | 177 ----- .../error__rosidl_typesupport_fastrtps_c.h | 36 - ...error__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...rror__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/error__struct.h | 41 - .../unitree_go/msg/detail/error__struct.hpp | 144 ---- .../unitree_go/msg/detail/error__traits.hpp | 42 - .../msg/detail/error__type_support.c | 96 --- .../msg/detail/error__type_support.cpp | 122 --- .../msg/detail/error__type_support.h | 33 - .../msg/detail/error__type_support.hpp | 31 - .../detail/go2_front_video_data__builder.hpp | 103 --- .../detail/go2_front_video_data__functions.c | 294 ------- .../detail/go2_front_video_data__functions.h | 177 ----- ...ideo_data__rosidl_typesupport_fastrtps_c.h | 36 - ..._data__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...data__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/go2_front_video_data__struct.h | 49 -- .../detail/go2_front_video_data__struct.hpp | 166 ---- .../detail/go2_front_video_data__traits.hpp | 42 - .../go2_front_video_data__type_support.c | 132 ---- .../go2_front_video_data__type_support.cpp | 233 ------ .../go2_front_video_data__type_support.h | 33 - .../go2_front_video_data__type_support.hpp | 31 - .../msg/detail/height_map__builder.hpp | 151 ---- .../msg/detail/height_map__functions.c | 311 -------- .../msg/detail/height_map__functions.h | 177 ----- ...eight_map__rosidl_typesupport_fastrtps_c.h | 36 - ...t_map__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ..._map__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/height_map__struct.h | 52 -- .../msg/detail/height_map__struct.hpp | 213 ----- .../msg/detail/height_map__traits.hpp | 42 - .../msg/detail/height_map__type_support.c | 177 ----- .../msg/detail/height_map__type_support.cpp | 244 ------ .../msg/detail/height_map__type_support.h | 33 - .../msg/detail/height_map__type_support.hpp | 31 - .../msg/detail/imu_state__builder.hpp | 119 --- .../msg/detail/imu_state__functions.c | 279 ------- .../msg/detail/imu_state__functions.h | 177 ----- ...imu_state__rosidl_typesupport_fastrtps_c.h | 36 - ...state__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tate__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/imu_state__struct.h | 44 -- .../msg/detail/imu_state__struct.hpp | 189 ----- .../msg/detail/imu_state__traits.hpp | 42 - .../msg/detail/imu_state__type_support.c | 141 ---- .../msg/detail/imu_state__type_support.cpp | 247 ------ .../msg/detail/imu_state__type_support.h | 33 - .../msg/detail/imu_state__type_support.hpp | 31 - .../msg/detail/interface_config__builder.hpp | 87 --- .../msg/detail/interface_config__functions.c | 251 ------ .../msg/detail/interface_config__functions.h | 177 ----- ...ce_config__rosidl_typesupport_fastrtps_c.h | 36 - ...onfig__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...nfig__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/interface_config__struct.h | 42 - .../msg/detail/interface_config__struct.hpp | 158 ---- .../msg/detail/interface_config__traits.hpp | 42 - .../detail/interface_config__type_support.c | 111 --- .../detail/interface_config__type_support.cpp | 157 ---- .../detail/interface_config__type_support.h | 33 - .../detail/interface_config__type_support.hpp | 31 - .../msg/detail/lidar_state__builder.hpp | 311 -------- .../msg/detail/lidar_state__functions.c | 402 ---------- .../msg/detail/lidar_state__functions.h | 177 ----- ...dar_state__rosidl_typesupport_fastrtps_c.h | 36 - ...state__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tate__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/lidar_state__struct.h | 62 -- .../msg/detail/lidar_state__struct.hpp | 357 --------- .../msg/detail/lidar_state__traits.hpp | 42 - .../msg/detail/lidar_state__type_support.c | 327 -------- .../msg/detail/lidar_state__type_support.cpp | 367 --------- .../msg/detail/lidar_state__type_support.h | 33 - .../msg/detail/lidar_state__type_support.hpp | 31 - .../msg/detail/low_cmd__builder.hpp | 263 ------- .../msg/detail/low_cmd__functions.c | 395 ---------- .../msg/detail/low_cmd__functions.h | 177 ----- .../low_cmd__rosidl_typesupport_fastrtps_c.h | 36 - ...w_cmd__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ..._cmd__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/low_cmd__struct.h | 59 -- .../unitree_go/msg/detail/low_cmd__struct.hpp | 324 -------- .../unitree_go/msg/detail/low_cmd__traits.hpp | 48 -- .../msg/detail/low_cmd__type_support.c | 313 -------- .../msg/detail/low_cmd__type_support.cpp | 442 ----------- .../msg/detail/low_cmd__type_support.h | 33 - .../msg/detail/low_cmd__type_support.hpp | 31 - .../msg/detail/low_state__builder.hpp | 391 ---------- .../msg/detail/low_state__functions.c | 476 ------------ .../msg/detail/low_state__functions.h | 177 ----- ...low_state__rosidl_typesupport_fastrtps_c.h | 36 - ...state__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tate__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/low_state__struct.h | 69 -- .../msg/detail/low_state__struct.hpp | 439 ----------- .../msg/detail/low_state__traits.hpp | 50 -- .../msg/detail/low_state__type_support.c | 439 ----------- .../msg/detail/low_state__type_support.cpp | 582 -------------- .../msg/detail/low_state__type_support.h | 33 - .../msg/detail/low_state__type_support.hpp | 31 - .../msg/detail/motor_cmd__builder.hpp | 151 ---- .../msg/detail/motor_cmd__functions.c | 283 ------- .../msg/detail/motor_cmd__functions.h | 177 ----- ...motor_cmd__rosidl_typesupport_fastrtps_c.h | 36 - ...r_cmd__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ..._cmd__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/motor_cmd__struct.h | 46 -- .../msg/detail/motor_cmd__struct.hpp | 214 ----- .../msg/detail/motor_cmd__traits.hpp | 42 - .../msg/detail/motor_cmd__type_support.c | 171 ---- .../msg/detail/motor_cmd__type_support.cpp | 217 ------ .../msg/detail/motor_cmd__type_support.h | 33 - .../msg/detail/motor_cmd__type_support.hpp | 31 - .../msg/detail/motor_state__builder.hpp | 215 ----- .../msg/detail/motor_state__functions.c | 315 -------- .../msg/detail/motor_state__functions.h | 177 ----- ...tor_state__rosidl_typesupport_fastrtps_c.h | 36 - ...state__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tate__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/motor_state__struct.h | 50 -- .../msg/detail/motor_state__struct.hpp | 270 ------- .../msg/detail/motor_state__traits.hpp | 42 - .../msg/detail/motor_state__type_support.c | 231 ------ .../msg/detail/motor_state__type_support.cpp | 277 ------- .../msg/detail/motor_state__type_support.h | 33 - .../msg/detail/motor_state__type_support.hpp | 31 - .../msg/detail/path_point__builder.hpp | 151 ---- .../msg/detail/path_point__functions.c | 279 ------- .../msg/detail/path_point__functions.h | 177 ----- ...ath_point__rosidl_typesupport_fastrtps_c.h | 36 - ...point__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...oint__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/path_point__struct.h | 46 -- .../msg/detail/path_point__struct.hpp | 214 ----- .../msg/detail/path_point__traits.hpp | 42 - .../msg/detail/path_point__type_support.c | 171 ---- .../msg/detail/path_point__type_support.cpp | 197 ----- .../msg/detail/path_point__type_support.h | 33 - .../msg/detail/path_point__type_support.hpp | 31 - .../unitree_go/msg/detail/req__builder.hpp | 71 -- .../unitree_go/msg/detail/req__functions.c | 266 ------- .../unitree_go/msg/detail/req__functions.h | 177 ----- .../req__rosidl_typesupport_fastrtps_c.h | 36 - .../req__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- .../req__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/req__struct.h | 46 -- .../unitree_go/msg/detail/req__struct.hpp | 145 ---- .../unitree_go/msg/detail/req__traits.hpp | 42 - .../unitree_go/msg/detail/req__type_support.c | 101 --- .../msg/detail/req__type_support.cpp | 122 --- .../unitree_go/msg/detail/req__type_support.h | 33 - .../msg/detail/req__type_support.hpp | 31 - .../unitree_go/msg/detail/res__builder.hpp | 87 --- .../unitree_go/msg/detail/res__functions.c | 287 ------- .../unitree_go/msg/detail/res__functions.h | 177 ----- .../res__rosidl_typesupport_fastrtps_c.h | 36 - .../res__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- .../res__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/res__struct.h | 49 -- .../unitree_go/msg/detail/res__struct.hpp | 157 ---- .../unitree_go/msg/detail/res__traits.hpp | 42 - .../unitree_go/msg/detail/res__type_support.c | 118 --- .../msg/detail/res__type_support.cpp | 164 ---- .../unitree_go/msg/detail/res__type_support.h | 33 - .../msg/detail/res__type_support.hpp | 31 - .../msg/detail/sport_mode_cmd__builder.hpp | 215 ----- .../msg/detail/sport_mode_cmd__functions.c | 359 --------- .../msg/detail/sport_mode_cmd__functions.h | 177 ----- ..._mode_cmd__rosidl_typesupport_fastrtps_c.h | 36 - ...e_cmd__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ..._cmd__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/sport_mode_cmd__struct.h | 56 -- .../msg/detail/sport_mode_cmd__struct.hpp | 279 ------- .../msg/detail/sport_mode_cmd__traits.hpp | 48 -- .../msg/detail/sport_mode_cmd__type_support.c | 268 ------- .../detail/sport_mode_cmd__type_support.cpp | 337 -------- .../msg/detail/sport_mode_cmd__type_support.h | 33 - .../detail/sport_mode_cmd__type_support.hpp | 31 - .../msg/detail/sport_mode_state__builder.hpp | 279 ------- .../msg/detail/sport_mode_state__functions.c | 395 ---------- .../msg/detail/sport_mode_state__functions.h | 177 ----- ...ode_state__rosidl_typesupport_fastrtps_c.h | 36 - ...state__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tate__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/sport_mode_state__struct.h | 60 -- .../msg/detail/sport_mode_state__struct.hpp | 337 -------- .../msg/detail/sport_mode_state__traits.hpp | 48 -- .../detail/sport_mode_state__type_support.c | 305 -------- .../detail/sport_mode_state__type_support.cpp | 437 ----------- .../detail/sport_mode_state__type_support.h | 33 - .../detail/sport_mode_state__type_support.hpp | 31 - .../msg/detail/time_spec__builder.hpp | 71 -- .../msg/detail/time_spec__functions.c | 239 ------ .../msg/detail/time_spec__functions.h | 177 ----- ...time_spec__rosidl_typesupport_fastrtps_c.h | 36 - ..._spec__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...spec__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/time_spec__struct.h | 41 - .../msg/detail/time_spec__struct.hpp | 144 ---- .../msg/detail/time_spec__traits.hpp | 42 - .../msg/detail/time_spec__type_support.c | 96 --- .../msg/detail/time_spec__type_support.cpp | 122 --- .../msg/detail/time_spec__type_support.h | 33 - .../msg/detail/time_spec__type_support.hpp | 31 - .../msg/detail/uwb_state__builder.hpp | 311 -------- .../msg/detail/uwb_state__functions.c | 367 --------- .../msg/detail/uwb_state__functions.h | 177 ----- ...uwb_state__rosidl_typesupport_fastrtps_c.h | 36 - ...state__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...tate__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../unitree_go/msg/detail/uwb_state__struct.h | 56 -- .../msg/detail/uwb_state__struct.hpp | 355 --------- .../msg/detail/uwb_state__traits.hpp | 42 - .../msg/detail/uwb_state__type_support.c | 321 -------- .../msg/detail/uwb_state__type_support.cpp | 387 --------- .../msg/detail/uwb_state__type_support.h | 33 - .../msg/detail/uwb_state__type_support.hpp | 31 - .../msg/detail/uwb_switch__builder.hpp | 55 -- .../msg/detail/uwb_switch__functions.c | 231 ------ .../msg/detail/uwb_switch__functions.h | 177 ----- ...wb_switch__rosidl_typesupport_fastrtps_c.h | 36 - ...witch__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...itch__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/uwb_switch__struct.h | 40 - .../msg/detail/uwb_switch__struct.hpp | 130 ---- .../msg/detail/uwb_switch__traits.hpp | 42 - .../msg/detail/uwb_switch__type_support.c | 81 -- .../msg/detail/uwb_switch__type_support.cpp | 107 --- .../msg/detail/uwb_switch__type_support.h | 33 - .../msg/detail/uwb_switch__type_support.hpp | 31 - .../detail/wireless_controller__builder.hpp | 119 --- .../detail/wireless_controller__functions.c | 263 ------- .../detail/wireless_controller__functions.h | 177 ----- ...ontroller__rosidl_typesupport_fastrtps_c.h | 36 - ...oller__rosidl_typesupport_fastrtps_cpp.hpp | 79 -- ...ller__rosidl_typesupport_introspection_c.h | 26 - ...__rosidl_typesupport_introspection_cpp.hpp | 27 - .../msg/detail/wireless_controller__struct.h | 44 -- .../detail/wireless_controller__struct.hpp | 186 ----- .../detail/wireless_controller__traits.hpp | 42 - .../wireless_controller__type_support.c | 141 ---- .../wireless_controller__type_support.cpp | 167 ---- .../wireless_controller__type_support.h | 33 - .../wireless_controller__type_support.hpp | 31 - .../unitree_go/include/unitree_go/msg/error.h | 12 - .../include/unitree_go/msg/error.hpp | 12 - .../unitree_go/msg/go2_front_video_data.h | 12 - .../unitree_go/msg/go2_front_video_data.hpp | 12 - .../include/unitree_go/msg/height_map.h | 12 - .../include/unitree_go/msg/height_map.hpp | 12 - .../include/unitree_go/msg/imu_state.h | 12 - .../include/unitree_go/msg/imu_state.hpp | 12 - .../include/unitree_go/msg/interface_config.h | 12 - .../unitree_go/msg/interface_config.hpp | 12 - .../include/unitree_go/msg/lidar_state.h | 12 - .../include/unitree_go/msg/lidar_state.hpp | 12 - .../include/unitree_go/msg/low_cmd.h | 12 - .../include/unitree_go/msg/low_cmd.hpp | 12 - .../include/unitree_go/msg/low_state.h | 12 - .../include/unitree_go/msg/low_state.hpp | 12 - .../include/unitree_go/msg/motor_cmd.h | 12 - .../include/unitree_go/msg/motor_cmd.hpp | 12 - .../include/unitree_go/msg/motor_state.h | 12 - .../include/unitree_go/msg/motor_state.hpp | 12 - .../include/unitree_go/msg/path_point.h | 12 - .../include/unitree_go/msg/path_point.hpp | 12 - .../unitree_go/include/unitree_go/msg/req.h | 12 - .../unitree_go/include/unitree_go/msg/req.hpp | 12 - .../unitree_go/include/unitree_go/msg/res.h | 12 - .../unitree_go/include/unitree_go/msg/res.hpp | 12 - .../rosidl_generator_c__visibility_control.h | 42 - ...sidl_generator_cpp__visibility_control.hpp | 42 - ...pesupport_fastrtps_c__visibility_control.h | 43 - ...support_fastrtps_cpp__visibility_control.h | 43 - ...port_introspection_c__visibility_control.h | 43 - .../include/unitree_go/msg/sport_mode_cmd.h | 12 - .../include/unitree_go/msg/sport_mode_cmd.hpp | 12 - .../include/unitree_go/msg/sport_mode_state.h | 12 - .../unitree_go/msg/sport_mode_state.hpp | 12 - .../include/unitree_go/msg/time_spec.h | 12 - .../include/unitree_go/msg/time_spec.hpp | 12 - .../include/unitree_go/msg/uwb_state.h | 12 - .../include/unitree_go/msg/uwb_state.hpp | 12 - .../include/unitree_go/msg/uwb_switch.h | 12 - .../include/unitree_go/msg/uwb_switch.hpp | 12 - .../unitree_go/msg/wireless_controller.h | 12 - .../unitree_go/msg/wireless_controller.hpp | 12 - .../site-packages/unitree_go/__init__.py | 0 .../site-packages/unitree_go/msg/__init__.py | 22 - .../unitree_go/msg/_audio_data.py | 161 ---- .../unitree_go/msg/_audio_data_s.c | 221 ------ .../site-packages/unitree_go/msg/_bms_cmd.py | 168 ---- .../site-packages/unitree_go/msg/_bms_cmd_s.c | 143 ---- .../unitree_go/msg/_bms_state.py | 357 --------- .../unitree_go/msg/_bms_state_s.c | 327 -------- .../site-packages/unitree_go/msg/_error.py | 145 ---- .../site-packages/unitree_go/msg/_error_s.c | 118 --- .../unitree_go/msg/_go2_front_video_data.py | 231 ------ .../unitree_go/msg/_go2_front_video_data_s.c | 461 ----------- .../unitree_go/msg/_height_map.py | 283 ------- .../unitree_go/msg/_height_map_s.c | 357 --------- .../unitree_go/msg/_imu_state.py | 294 ------- .../unitree_go/msg/_imu_state_s.c | 269 ------- .../unitree_go/msg/_interface_config.py | 189 ----- .../unitree_go/msg/_interface_config_s.c | 163 ---- .../unitree_go/msg/_lidar_state.py | 461 ----------- .../unitree_go/msg/_lidar_state_s.c | 482 ------------ .../site-packages/unitree_go/msg/_low_cmd.py | 547 ------------- .../site-packages/unitree_go/msg/_low_cmd_s.c | 535 ------------- .../unitree_go/msg/_low_state.py | 734 ------------------ .../unitree_go/msg/_low_state_s.c | 724 ----------------- .../unitree_go/msg/_motor_cmd.py | 263 ------- .../unitree_go/msg/_motor_cmd_s.c | 243 ------ .../unitree_go/msg/_motor_state.py | 343 -------- .../unitree_go/msg/_motor_state_s.c | 323 -------- .../unitree_go/msg/_path_point.py | 236 ------ .../unitree_go/msg/_path_point_s.c | 218 ------ .../site-packages/unitree_go/msg/_req.py | 141 ---- .../site-packages/unitree_go/msg/_req_s.c | 145 ---- .../site-packages/unitree_go/msg/_res.py | 178 ----- .../site-packages/unitree_go/msg/_res_s.c | 268 ------- .../unitree_go/msg/_sport_mode_cmd.py | 415 ---------- .../unitree_go/msg/_sport_mode_cmd_s.c | 409 ---------- .../unitree_go/msg/_sport_mode_state.py | 546 ------------- .../unitree_go/msg/_sport_mode_state_s.c | 527 ------------- .../unitree_go/msg/_time_spec.py | 145 ---- .../unitree_go/msg/_time_spec_s.c | 118 --- .../unitree_go/msg/_uwb_state.py | 484 ------------ .../unitree_go/msg/_uwb_state_s.c | 465 ----------- .../unitree_go/msg/_uwb_switch.py | 124 --- .../unitree_go/msg/_uwb_switch_s.c | 98 --- .../unitree_go/msg/_wireless_controller.py | 200 ----- .../unitree_go/msg/_wireless_controller_s.c | 178 ----- .../package_run_dependencies/unitree_go | 1 - .../resource_index/packages/unitree_go | 0 .../parent_prefix_path/unitree_go | 1 - .../rosidl_interfaces/unitree_go | 44 -- .../share/colcon-core/packages/unitree_go | 1 - ...ent_cmake_export_dependencies-extras.cmake | 92 --- ...ke_export_include_directories-extras.cmake | 16 - .../ament_cmake_export_libraries-extras.cmake | 140 ---- .../ament_cmake_export_targets-extras.cmake | 27 - .../cmake/rosidl_cmake-extras.cmake | 4 - ..._export_typesupport_libraries-extras.cmake | 46 -- ...ke_export_typesupport_targets-extras.cmake | 23 - .../cmake/unitree_goConfig-version.cmake | 14 - .../unitree_go/cmake/unitree_goConfig.cmake | 42 - ...o__rosidl_generator_cExport-noconfig.cmake | 19 - ...unitree_go__rosidl_generator_cExport.cmake | 99 --- ...itree_go__rosidl_generator_cppExport.cmake | 99 --- ..._rosidl_typesupport_cExport-noconfig.cmake | 19 - ...itree_go__rosidl_typesupport_cExport.cmake | 99 --- ...osidl_typesupport_cppExport-noconfig.cmake | 19 - ...ree_go__rosidl_typesupport_cppExport.cmake | 99 --- ...pport_introspection_cExport-noconfig.cmake | 19 - ...dl_typesupport_introspection_cExport.cmake | 114 --- ...ort_introspection_cppExport-noconfig.cmake | 19 - ..._typesupport_introspection_cppExport.cmake | 98 --- .../environment/ament_prefix_path.dsv | 1 - .../environment/ament_prefix_path.sh | 4 - .../unitree_go/environment/library_path.dsv | 1 - .../unitree_go/environment/library_path.sh | 16 - .../share/unitree_go/environment/path.dsv | 1 - .../share/unitree_go/environment/path.sh | 5 - .../unitree_go/environment/pythonpath.dsv | 1 - .../unitree_go/environment/pythonpath.sh | 3 - .../unitree_go/hook/cmake_prefix_path.dsv | 1 - .../unitree_go/hook/cmake_prefix_path.ps1 | 3 - .../unitree_go/hook/cmake_prefix_path.sh | 3 - .../unitree_go/hook/ld_library_path_lib.dsv | 1 - .../unitree_go/hook/ld_library_path_lib.ps1 | 3 - .../unitree_go/hook/ld_library_path_lib.sh | 3 - .../share/unitree_go/hook/pythonpath.dsv | 1 - .../share/unitree_go/hook/pythonpath.ps1 | 3 - .../share/unitree_go/hook/pythonpath.sh | 3 - .../share/unitree_go/local_setup.bash | 46 -- .../share/unitree_go/local_setup.dsv | 4 - .../share/unitree_go/local_setup.sh | 135 ---- .../share/unitree_go/local_setup.zsh | 59 -- .../share/unitree_go/msg/AudioData.idl | 14 - .../share/unitree_go/msg/AudioData.msg | 2 - .../share/unitree_go/msg/BmsCmd.idl | 15 - .../share/unitree_go/msg/BmsCmd.msg | 2 - .../share/unitree_go/msg/BmsState.idl | 30 - .../share/unitree_go/msg/BmsState.msg | 9 - .../unitree_go/share/unitree_go/msg/Error.idl | 14 - .../unitree_go/share/unitree_go/msg/Error.msg | 2 - .../unitree_go/msg/Go2FrontVideoData.idl | 18 - .../unitree_go/msg/Go2FrontVideoData.msg | 4 - .../share/unitree_go/msg/HeightMap.idl | 49 -- .../share/unitree_go/msg/HeightMap.msg | 15 - .../share/unitree_go/msg/IMUState.idl | 22 - .../share/unitree_go/msg/IMUState.msg | 5 - .../share/unitree_go/msg/InterfaceConfig.idl | 17 - .../share/unitree_go/msg/InterfaceConfig.msg | 3 - .../share/unitree_go/msg/LidarState.idl | 45 -- .../share/unitree_go/msg/LidarState.msg | 17 - .../share/unitree_go/msg/LowCmd.idl | 46 -- .../share/unitree_go/msg/LowCmd.msg | 15 - .../share/unitree_go/msg/LowState.idl | 64 -- .../share/unitree_go/msg/LowState.msg | 22 - .../share/unitree_go/msg/MotorCmd.idl | 25 - .../share/unitree_go/msg/MotorCmd.msg | 7 - .../share/unitree_go/msg/MotorState.idl | 33 - .../share/unitree_go/msg/MotorState.msg | 11 - .../share/unitree_go/msg/PathPoint.idl | 24 - .../share/unitree_go/msg/PathPoint.msg | 7 - .../unitree_go/share/unitree_go/msg/Req.idl | 14 - .../unitree_go/share/unitree_go/msg/Req.msg | 2 - .../unitree_go/share/unitree_go/msg/Res.idl | 16 - .../unitree_go/share/unitree_go/msg/Res.msg | 3 - .../share/unitree_go/msg/SportModeCmd.idl | 38 - .../share/unitree_go/msg/SportModeCmd.msg | 13 - .../share/unitree_go/msg/SportModeState.idl | 46 -- .../share/unitree_go/msg/SportModeState.msg | 17 - .../share/unitree_go/msg/TimeSpec.idl | 19 - .../share/unitree_go/msg/TimeSpec.msg | 5 - .../share/unitree_go/msg/UwbState.idl | 46 -- .../share/unitree_go/msg/UwbState.msg | 19 - .../share/unitree_go/msg/UwbSwitch.idl | 12 - .../share/unitree_go/msg/UwbSwitch.msg | 1 - .../unitree_go/msg/WirelessController.idl | 20 - .../unitree_go/msg/WirelessController.msg | 5 - .../unitree_go/msg/dds_connext/AudioData_.idl | 31 - .../unitree_go/msg/dds_connext/BmsCmd_.idl | 31 - .../unitree_go/msg/dds_connext/BmsState_.idl | 40 - .../unitree_go/msg/dds_connext/Error_.idl | 30 - .../msg/dds_connext/Go2FrontVideoData_.idl | 35 - .../unitree_go/msg/dds_connext/HeightMap_.idl | 37 - .../unitree_go/msg/dds_connext/IMUState_.idl | 37 - .../msg/dds_connext/InterfaceConfig_.idl | 32 - .../msg/dds_connext/LidarState_.idl | 46 -- .../unitree_go/msg/dds_connext/LowCmd_.idl | 51 -- .../unitree_go/msg/dds_connext/LowState_.idl | 61 -- .../unitree_go/msg/dds_connext/MotorCmd_.idl | 36 - .../msg/dds_connext/MotorState_.idl | 40 - .../unitree_go/msg/dds_connext/PathPoint_.idl | 35 - .../share/unitree_go/msg/dds_connext/Req_.idl | 30 - .../share/unitree_go/msg/dds_connext/Res_.idl | 32 - .../msg/dds_connext/SportModeCmd_.idl | 45 -- .../msg/dds_connext/SportModeState_.idl | 51 -- .../unitree_go/msg/dds_connext/TimeSpec_.idl | 30 - .../unitree_go/msg/dds_connext/UwbState_.idl | 47 -- .../unitree_go/msg/dds_connext/UwbSwitch_.idl | 29 - .../msg/dds_connext/WirelessController_.idl | 33 - .../unitree_go/share/unitree_go/package.bash | 39 - .../unitree_go/share/unitree_go/package.dsv | 14 - .../unitree_go/share/unitree_go/package.ps1 | 118 --- .../unitree_go/share/unitree_go/package.sh | 89 --- .../unitree_go/share/unitree_go/package.xml | 23 - .../unitree_go/share/unitree_go/package.zsh | 50 -- deploy/robot_ws/log/COLCON_IGNORE | 0 deploy/robot_ws/log/latest | 1 - deploy/robot_ws/log/latest_build | 1 - deploy/robot_ws/src/go2py_node/src/bridge.cpp | 40 +- .../install/COLCON_IGNORE => draft.ipynb | 0 examples/highlevel_ros2_interface.ipynb | 57 +- 962 files changed, 55 insertions(+), 70556 deletions(-) delete mode 100644 Go2Py/msgs/.idlpy_manifest delete mode 100644 Go2Py/msgs/_Imu.py delete mode 100644 Go2Py/msgs/_LowCmd.py delete mode 100644 Go2Py/msgs/_LowState.py delete mode 100644 Go2Py/msgs/__init__.py rename deploy/{perception_ws => dock_ws}/src/lidar_node/CMakeLists.txt (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/README.md (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/Version.h.in (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/config/config.yaml (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/launch/dashing_start.py (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/launch/start.launch (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/launch/start.py (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/msg/UdpFrame.msg (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/msg/UdpPacket.msg (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/msg/msg_ros2/UdpFrame.msg (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/msg/msg_ros2/UdpPacket.msg (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/node/hesai_ros_driver_node.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/node/hesai_ros_driver_node.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/package.xml (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/rviz/rviz.rviz (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/rviz/rviz2.rviz (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/CMakeLists.txt (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/LICENSE (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/README.md (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/Version.h.in (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/change notes.md (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/AT128E2X_Angle Correction File.dat (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/FT120C1X_Angle Correction File.dat (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/OT128_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar128E3X_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40M_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40P_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar64_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar90E3X_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarQT_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT-16_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Channel_Cofig.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/XT32M2X_Angle Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/AT128E2X_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar128E3X_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40E3X_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40P_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64E3X_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar90_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT-16_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/QT128C2X_Firetime Correction File.csv (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk.hpp (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk_gpu.cuh (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/CMakeLists.txt (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/blocking_ring.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2d_shared.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2dex.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/blocking_ring.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2d_shared.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2dex.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar_types.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/include/logger.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/src/logger.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/client_base.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/lidar_communication_header.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/ptc_client.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_client.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_ssl_client.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/ptc_client.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_client.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_ssl_client.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/general_ptc_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_1_0_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_2_0_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/general_ptc_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_1_0_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_2_0_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_saver.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_source.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/socket_source.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/source.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_saver.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_source.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/socket_source.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/source.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/general_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp1_4_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_4_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_5_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_1_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_2_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp4_3_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp6_1_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp7_2_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p40_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p64_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/general_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp1_4_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_4_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_5_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_1_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_2_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp4_3_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp6_1_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp7_2_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p40_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p64_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/general_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/nvbuffer.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/return_code.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/safe_call.cuh (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp1_4_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp2_5_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_1_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_2_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp4_3_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp6_1_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp7_2_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p40_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p64_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/buffer.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/general_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp1_4_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp2_5_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_1_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_2_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp4_3_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp6_1_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp7_2_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p40_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p64_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/fault_message.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_header.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p40.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p64.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v1_4.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_4.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_5.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_1.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_2.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v4_3.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v6_1.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v7_2.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/driver_param.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/auto_tick_count.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/plat_utils.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/auto_tick_count.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/plat_utils.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/CMakeLists.txt (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/Version.h.in (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/packet_loss_tool.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/manager/node_manager.cc (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/manager/node_manager.cu (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/manager/node_manager.h (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/manager/source_driver_ros1.hpp (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/manager/source_driver_ros2.hpp (100%) rename deploy/{perception_ws => dock_ws}/src/lidar_node/src/utility/yaml_reader.hpp (100%) delete mode 100644 deploy/robot_ws/install/.colcon_install_layout delete mode 100644 deploy/robot_ws/install/_local_setup_util_ps1.py delete mode 100644 deploy/robot_ws/install/_local_setup_util_sh.py delete mode 100755 deploy/robot_ws/install/go2py_node/lib/go2py_node/bridge delete mode 100644 deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/package_run_dependencies/go2py_node delete mode 100644 deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/packages/go2py_node delete mode 100644 deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/parent_prefix_path/go2py_node delete mode 100644 deploy/robot_ws/install/go2py_node/share/colcon-core/packages/go2py_node delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig-version.cmake delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig.cmake delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.dsv delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.sh delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.dsv delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.sh delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.dsv delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.ps1 delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.sh delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.bash delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.dsv delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.sh delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.zsh delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/package.bash delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/package.dsv delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/package.ps1 delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/package.sh delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/package.xml delete mode 100644 deploy/robot_ws/install/go2py_node/share/go2py_node/package.zsh delete mode 100644 deploy/robot_ws/install/local_setup.bash delete mode 100644 deploy/robot_ws/install/local_setup.ps1 delete mode 100644 deploy/robot_ws/install/local_setup.sh delete mode 100644 deploy/robot_ws/install/local_setup.zsh delete mode 100644 deploy/robot_ws/install/setup.bash delete mode 100644 deploy/robot_ws/install/setup.ps1 delete mode 100644 deploy/robot_ws/install/setup.sh delete mode 100644 deploy/robot_ws/install/setup.zsh delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_c__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/__init__.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/__init__.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status.py delete mode 100644 deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status_s.c delete mode 100644 deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/package_run_dependencies/unitree_api delete mode 100644 deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/packages/unitree_api delete mode 100644 deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/parent_prefix_path/unitree_api delete mode 100644 deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/rosidl_interfaces/unitree_api delete mode 100644 deploy/robot_ws/install/unitree_api/share/colcon-core/packages/unitree_api delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_dependencies-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_include_directories-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_libraries-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_targets-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig-version.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cppExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.ps1 delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.ps1 delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.ps1 delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.bash delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.zsh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.msg delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestHeader_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestIdentity_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestLease_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestPolicy_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Request_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseHeader_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseStatus_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Response_.idl delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/package.bash delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/package.dsv delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/package.ps1 delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/package.sh delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/package.xml delete mode 100644 deploy/robot_ws/install/unitree_api/share/unitree_api/package.zsh delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__builder.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_c.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_cpp.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__traits.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.c delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.cpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_c__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.h delete mode 100644 deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.hpp delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/__init__.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/__init__.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller.py delete mode 100644 deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller_s.c delete mode 100644 deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/package_run_dependencies/unitree_go delete mode 100644 deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/packages/unitree_go delete mode 100644 deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/parent_prefix_path/unitree_go delete mode 100644 deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/rosidl_interfaces/unitree_go delete mode 100644 deploy/robot_ws/install/unitree_go/share/colcon-core/packages/unitree_go delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_dependencies-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_include_directories-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_libraries-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_targets-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig-version.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cppExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport-noconfig.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport.cmake delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.ps1 delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.ps1 delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.ps1 delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.bash delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.zsh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.msg delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/AudioData_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsCmd_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsState_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Error_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Go2FrontVideoData_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/HeightMap_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/IMUState_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/InterfaceConfig_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LidarState_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowCmd_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowState_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorCmd_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorState_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/PathPoint_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Req_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Res_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeCmd_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeState_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/TimeSpec_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbState_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbSwitch_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/WirelessController_.idl delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/package.bash delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/package.dsv delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/package.ps1 delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/package.sh delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/package.xml delete mode 100644 deploy/robot_ws/install/unitree_go/share/unitree_go/package.zsh delete mode 100644 deploy/robot_ws/log/COLCON_IGNORE delete mode 120000 deploy/robot_ws/log/latest delete mode 120000 deploy/robot_ws/log/latest_build rename deploy/robot_ws/install/COLCON_IGNORE => draft.ipynb (100%) diff --git a/.gitignore b/.gitignore index 0c09721..792aee9 100644 --- a/.gitignore +++ b/.gitignore @@ -160,9 +160,13 @@ cython_debug/ #.idea/ .vscode -deploy/ros2_ws/log -deploy/ros2_ws/install -deploy/ros2_ws/build +deploy/robot_ws/log +deploy/robot_ws/install +deploy/robot_ws/build + +deploy/dock_ws/log +deploy/dock_ws/install +deploy/dock_ws/build _isaac_sim .vscode \ No newline at end of file diff --git a/Go2Py/make_msgs.sh b/Go2Py/make_msgs.sh index fa4dd8a..72d7554 100755 --- a/Go2Py/make_msgs.sh +++ b/Go2Py/make_msgs.sh @@ -20,6 +20,6 @@ do idlc -l ../../idl/libcycloneddsidlcxx.so.0.10.2 $file done cd ../.. -rm -r ../cpp_bridge/include/go2py -mv msgs/cpp ../cpp_bridge/include/go2py +# rm -r ../cpp_bridge/include/go2py +# mv msgs/cpp ../cpp_bridge/include/go2py echo -e "${GREEN} Done with DDS type generation${NC}" \ No newline at end of file diff --git a/Go2Py/msgs/.idlpy_manifest b/Go2Py/msgs/.idlpy_manifest deleted file mode 100644 index 8ffd2a6..0000000 --- a/Go2Py/msgs/.idlpy_manifest +++ /dev/null @@ -1,11 +0,0 @@ -Imu - -Imu - -LowCmd - -LowCmd - -LowState - -LowState diff --git a/Go2Py/msgs/_Imu.py b/Go2Py/msgs/_Imu.py deleted file mode 100644 index 231946a..0000000 --- a/Go2Py/msgs/_Imu.py +++ /dev/null @@ -1,31 +0,0 @@ -""" - Generated by Eclipse Cyclone DDS idlc Python Backend - Cyclone DDS IDL version: v0.11.0 - Module: msgs - IDL file: Imu.idl - -""" - -from enum import auto -from typing import TYPE_CHECKING, Optional -from dataclasses import dataclass - -import cyclonedds.idl as idl -import cyclonedds.idl.annotations as annotate -import cyclonedds.idl.types as types - -# root module import for resolving types -import msgs - - -@dataclass -@annotate.final -@annotate.autoid("sequential") -class Imu(idl.IdlStruct, typename="msgs.Imu"): - q: types.array[types.float32, 4] - gyro: types.array[types.float32, 3] - accel: types.array[types.float32, 3] - rpy: types.array[types.float32, 3] - tmp: types.uint8 - - diff --git a/Go2Py/msgs/_LowCmd.py b/Go2Py/msgs/_LowCmd.py deleted file mode 100644 index 777fb93..0000000 --- a/Go2Py/msgs/_LowCmd.py +++ /dev/null @@ -1,32 +0,0 @@ -""" - Generated by Eclipse Cyclone DDS idlc Python Backend - Cyclone DDS IDL version: v0.11.0 - Module: msgs - IDL file: LowCmd.idl - -""" - -from enum import auto -from typing import TYPE_CHECKING, Optional -from dataclasses import dataclass - -import cyclonedds.idl as idl -import cyclonedds.idl.annotations as annotate -import cyclonedds.idl.types as types - -# root module import for resolving types -import msgs - - -@dataclass -@annotate.final -@annotate.autoid("sequential") -class LowCmd(idl.IdlStruct, typename="msgs.LowCmd"): - q: types.array[types.float32, 12] - dq: types.array[types.float32, 12] - tau_ff: types.array[types.float32, 12] - kp: types.array[types.float32, 12] - kv: types.array[types.float32, 12] - e_stop: types.uint8 - - diff --git a/Go2Py/msgs/_LowState.py b/Go2Py/msgs/_LowState.py deleted file mode 100644 index 16b9c65..0000000 --- a/Go2Py/msgs/_LowState.py +++ /dev/null @@ -1,39 +0,0 @@ -""" - Generated by Eclipse Cyclone DDS idlc Python Backend - Cyclone DDS IDL version: v0.11.0 - Module: msgs - IDL file: LowState.idl - -""" - -from enum import auto -from typing import TYPE_CHECKING, Optional -from dataclasses import dataclass - -import cyclonedds.idl as idl -import cyclonedds.idl.annotations as annotate -import cyclonedds.idl.types as types - -# root module import for resolving types -import msgs - - -@dataclass -@annotate.final -@annotate.autoid("sequential") -class LowState(idl.IdlStruct, typename="msgs.LowState"): - q: types.array[types.float32, 12] - dq: types.array[types.float32, 12] - ddq: types.array[types.float32, 12] - tau_est: types.array[types.float32, 12] - tmp: types.array[types.float32, 12] - contact: types.array[types.float32, 4] - quat: types.array[types.float32, 4] - gyro: types.array[types.float32, 3] - accel: types.array[types.float32, 3] - rpy: types.array[types.float32, 3] - imu_tmp: types.uint8 - voltage: types.float32 - current: types.float32 - - diff --git a/Go2Py/msgs/__init__.py b/Go2Py/msgs/__init__.py deleted file mode 100644 index 5a541f5..0000000 --- a/Go2Py/msgs/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -""" - Generated by Eclipse Cyclone DDS idlc Python Backend - Cyclone DDS IDL version: v0.11.0 - Module: msgs - -""" - -from ._Imu import Imu -from ._LowCmd import LowCmd -from ._LowState import LowState -__all__ = ["Imu", "LowCmd", "LowState", ] diff --git a/Go2Py/robot/interface/ros2.py b/Go2Py/robot/interface/ros2.py index cf62f39..d653e2f 100644 --- a/Go2Py/robot/interface/ros2.py +++ b/Go2Py/robot/interface/ros2.py @@ -12,7 +12,7 @@ from rclpy.executors import MultiThreadedExecutor from geometry_msgs.msg import TransformStamped from Go2Py.joy import xKeySwitch, xRockerBtn from geometry_msgs.msg import TwistStamped -from unitree_go.msg import LowState +from unitree_go.msg import LowState, LowCmd from nav_msgs.msg import Odometry @@ -57,7 +57,6 @@ class ROS2ExecutorManager: if self.executor_thread: self.executor_thread.join() - class GO2Real(Node): def __init__( self, @@ -70,6 +69,7 @@ class GO2Real(Node): self.mode = mode self.node_name = "go2py_highlevel_subscriber" self.highcmd_topic = "/go2/twist_cmd" + self.lowcmd_topic = "/go2/lowcmd" self.joint_state_topic = "/go2/joint_states" self.lowstate_topic = "/lowstate" super().__init__(self.node_name) @@ -77,6 +77,7 @@ class GO2Real(Node): self.lowstate_subscriber = self.create_subscription( LowState, self.lowstate_topic, self.lowstate_callback, 1 ) + self.lowcmd_publisher = self.create_publisher(LowCmd, self.lowcmd_topic, 1) self.odometry_subscriber = self.create_subscription( Odometry, "/utlidar/robot_odom", self.odom_callback, 1 @@ -94,6 +95,8 @@ class GO2Real(Node): self.ωz_max = ωz_max self.ωz_min = -ωz_max self.running = True + self.setCommands = {'lowstate':self.setCommandsLow, + 'highstate':self.setCommandsHigh}[self.mode] def lowstate_callback(self, msg): """ @@ -169,7 +172,6 @@ class GO2Real(Node): keySwitch = xKeySwitch(*btn) rockerBtn = xRockerBtn(head, keySwitch, lx, rx, ry, L2, ly) - return rockerBtn def getCommandFromRemote(self): @@ -191,18 +193,25 @@ class GO2Real(Node): batteryState = self.state.bms return batteryState.SOC - def setCommands(self, v_x, v_y, ω_z, bodyHeight=0.0, footRaiseHeight=0.0, mode=2): - if self.mode == 'highlevel': - self.cmd_watchdog_timer = time.time() - _v_x, _v_y, _ω_z = self.clip_velocity(v_x, v_y, ω_z) - self.highcmd.header.stamp = self.get_clock().now().to_msg() - self.highcmd.header.frame_id = "base_link" - self.highcmd.twist.linear.x = _v_x - self.highcmd.twist.linear.y = _v_y - self.highcmd.twist.angular.z = _ω_z - self.highcmd_publisher.publish(self.highcmd) - else: - raise NotImplementedError("Low level control command is not implemented yet") + def setCommandsHigh(self, v_x, v_y, ω_z, bodyHeight=0.0, footRaiseHeight=0.0, mode=2): + self.cmd_watchdog_timer = time.time() + _v_x, _v_y, _ω_z = self.clip_velocity(v_x, v_y, ω_z) + self.highcmd.header.stamp = self.get_clock().now().to_msg() + self.highcmd.header.frame_id = "base_link" + self.highcmd.twist.linear.x = _v_x + self.highcmd.twist.linear.y = _v_y + self.highcmd.twist.angular.z = _ω_z + self.highcmd_publisher.publish(self.highcmd) + + def setCommandsLow(q, dq, kp, kd, tau_ff): + assert q.size == qd.size == kp.size == kd.size == tau_ff.size == 12, "q, dq, kp, kd, tau_ff should have size 12" + lowcmd = LowCmd() + lowcmd.motor_cmd.q = q.tolist() + lowcmd.motor_cmd.dq = dq.tolist() + lowcmd.motor_cmd.kp = kp.tolist() + lowcmd.motor_cmd.kd = kd.tolist() + lowcmd.motor_cmd.tau_ff = tau_ff.tolist() + self.lowcmd_publisher.publish(lowcmd) def close(self): self.running = False diff --git a/deploy/perception_ws/src/lidar_node/CMakeLists.txt b/deploy/dock_ws/src/lidar_node/CMakeLists.txt similarity index 100% rename from deploy/perception_ws/src/lidar_node/CMakeLists.txt rename to deploy/dock_ws/src/lidar_node/CMakeLists.txt diff --git a/deploy/perception_ws/src/lidar_node/README.md b/deploy/dock_ws/src/lidar_node/README.md similarity index 100% rename from deploy/perception_ws/src/lidar_node/README.md rename to deploy/dock_ws/src/lidar_node/README.md diff --git a/deploy/perception_ws/src/lidar_node/Version.h.in b/deploy/dock_ws/src/lidar_node/Version.h.in similarity index 100% rename from deploy/perception_ws/src/lidar_node/Version.h.in rename to deploy/dock_ws/src/lidar_node/Version.h.in diff --git a/deploy/perception_ws/src/lidar_node/config/config.yaml b/deploy/dock_ws/src/lidar_node/config/config.yaml similarity index 100% rename from deploy/perception_ws/src/lidar_node/config/config.yaml rename to deploy/dock_ws/src/lidar_node/config/config.yaml diff --git a/deploy/perception_ws/src/lidar_node/launch/dashing_start.py b/deploy/dock_ws/src/lidar_node/launch/dashing_start.py similarity index 100% rename from deploy/perception_ws/src/lidar_node/launch/dashing_start.py rename to deploy/dock_ws/src/lidar_node/launch/dashing_start.py diff --git a/deploy/perception_ws/src/lidar_node/launch/start.launch b/deploy/dock_ws/src/lidar_node/launch/start.launch similarity index 100% rename from deploy/perception_ws/src/lidar_node/launch/start.launch rename to deploy/dock_ws/src/lidar_node/launch/start.launch diff --git a/deploy/perception_ws/src/lidar_node/launch/start.py b/deploy/dock_ws/src/lidar_node/launch/start.py similarity index 100% rename from deploy/perception_ws/src/lidar_node/launch/start.py rename to deploy/dock_ws/src/lidar_node/launch/start.py diff --git a/deploy/perception_ws/src/lidar_node/msg/UdpFrame.msg b/deploy/dock_ws/src/lidar_node/msg/UdpFrame.msg similarity index 100% rename from deploy/perception_ws/src/lidar_node/msg/UdpFrame.msg rename to deploy/dock_ws/src/lidar_node/msg/UdpFrame.msg diff --git a/deploy/perception_ws/src/lidar_node/msg/UdpPacket.msg b/deploy/dock_ws/src/lidar_node/msg/UdpPacket.msg similarity index 100% rename from deploy/perception_ws/src/lidar_node/msg/UdpPacket.msg rename to deploy/dock_ws/src/lidar_node/msg/UdpPacket.msg diff --git a/deploy/perception_ws/src/lidar_node/msg/msg_ros2/UdpFrame.msg b/deploy/dock_ws/src/lidar_node/msg/msg_ros2/UdpFrame.msg similarity index 100% rename from deploy/perception_ws/src/lidar_node/msg/msg_ros2/UdpFrame.msg rename to deploy/dock_ws/src/lidar_node/msg/msg_ros2/UdpFrame.msg diff --git a/deploy/perception_ws/src/lidar_node/msg/msg_ros2/UdpPacket.msg b/deploy/dock_ws/src/lidar_node/msg/msg_ros2/UdpPacket.msg similarity index 100% rename from deploy/perception_ws/src/lidar_node/msg/msg_ros2/UdpPacket.msg rename to deploy/dock_ws/src/lidar_node/msg/msg_ros2/UdpPacket.msg diff --git a/deploy/perception_ws/src/lidar_node/node/hesai_ros_driver_node.cc b/deploy/dock_ws/src/lidar_node/node/hesai_ros_driver_node.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/node/hesai_ros_driver_node.cc rename to deploy/dock_ws/src/lidar_node/node/hesai_ros_driver_node.cc diff --git a/deploy/perception_ws/src/lidar_node/node/hesai_ros_driver_node.cu b/deploy/dock_ws/src/lidar_node/node/hesai_ros_driver_node.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/node/hesai_ros_driver_node.cu rename to deploy/dock_ws/src/lidar_node/node/hesai_ros_driver_node.cu diff --git a/deploy/perception_ws/src/lidar_node/package.xml b/deploy/dock_ws/src/lidar_node/package.xml similarity index 100% rename from deploy/perception_ws/src/lidar_node/package.xml rename to deploy/dock_ws/src/lidar_node/package.xml diff --git a/deploy/perception_ws/src/lidar_node/rviz/rviz.rviz b/deploy/dock_ws/src/lidar_node/rviz/rviz.rviz similarity index 100% rename from deploy/perception_ws/src/lidar_node/rviz/rviz.rviz rename to deploy/dock_ws/src/lidar_node/rviz/rviz.rviz diff --git a/deploy/perception_ws/src/lidar_node/rviz/rviz2.rviz b/deploy/dock_ws/src/lidar_node/rviz/rviz2.rviz similarity index 100% rename from deploy/perception_ws/src/lidar_node/rviz/rviz2.rviz rename to deploy/dock_ws/src/lidar_node/rviz/rviz2.rviz diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/CMakeLists.txt b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/CMakeLists.txt similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/CMakeLists.txt rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/CMakeLists.txt diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/LICENSE b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/LICENSE similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/LICENSE rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/LICENSE diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/README.md b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/README.md similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/README.md rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/README.md diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/Version.h.in b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/Version.h.in similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/Version.h.in rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/Version.h.in diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/change notes.md b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/change notes.md similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/change notes.md rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/change notes.md diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/AT128E2X_Angle Correction File.dat b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/AT128E2X_Angle Correction File.dat similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/AT128E2X_Angle Correction File.dat rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/AT128E2X_Angle Correction File.dat diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/FT120C1X_Angle Correction File.dat b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/FT120C1X_Angle Correction File.dat similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/FT120C1X_Angle Correction File.dat rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/FT120C1X_Angle Correction File.dat diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/OT128_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/OT128_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/OT128_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/OT128_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar128E3X_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar128E3X_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar128E3X_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar128E3X_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40M_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40M_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40M_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40M_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40P_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40P_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40P_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar40P_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar64_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar64_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar64_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar64_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar90E3X_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar90E3X_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar90E3X_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/Pandar90E3X_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarQT_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarQT_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarQT_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarQT_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT-16_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT-16_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT-16_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT-16_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/PandarXT_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Channel_Cofig.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Channel_Cofig.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Channel_Cofig.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/QT128C2X_Channel_Cofig.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/XT32M2X_Angle Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/XT32M2X_Angle Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/XT32M2X_Angle Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/angle_correction/XT32M2X_Angle Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/AT128E2X_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/AT128E2X_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/AT128E2X_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/AT128E2X_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar128E3X_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar128E3X_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar128E3X_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar128E3X_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40E3X_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40E3X_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40E3X_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40E3X_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40P_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40P_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40P_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar40P_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64E3X_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64E3X_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64E3X_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64E3X_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar64_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar90_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar90_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar90_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/Pandar90_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT-16_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT-16_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT-16_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT-16_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/PandarXT_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/QT128C2X_Firetime Correction File.csv b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/QT128C2X_Firetime Correction File.csv similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/QT128C2X_Firetime Correction File.csv rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/correction/firetime_correction/QT128C2X_Firetime Correction File.csv diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk.hpp b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk.hpp similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk.hpp rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk.hpp diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk_gpu.cuh b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk_gpu.cuh similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk_gpu.cuh rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/driver/hesai_lidar_sdk_gpu.cuh diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/CMakeLists.txt b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/CMakeLists.txt similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/CMakeLists.txt rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/CMakeLists.txt diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/blocking_ring.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/blocking_ring.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/blocking_ring.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/blocking_ring.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2d_shared.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2d_shared.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2d_shared.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2d_shared.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2dex.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2dex.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2dex.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include/ring_2dex.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/blocking_ring.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/blocking_ring.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/blocking_ring.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/blocking_ring.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2d_shared.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2d_shared.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2d_shared.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2d_shared.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2dex.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2dex.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2dex.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src/ring_2dex.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar_types.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar_types.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar_types.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar/lidar_types.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/include/logger.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/include/logger.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/include/logger.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/include/logger.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/src/logger.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/src/logger.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/src/logger.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/src/logger.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/client_base.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/client_base.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/client_base.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/client_base.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/lidar_communication_header.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/lidar_communication_header.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/lidar_communication_header.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/lidar_communication_header.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/ptc_client.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/ptc_client.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/ptc_client.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/ptc_client.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_client.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_client.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_client.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_client.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_ssl_client.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_ssl_client.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_ssl_client.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include/tcp_ssl_client.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/ptc_client.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/ptc_client.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/ptc_client.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/ptc_client.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_client.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_client.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_client.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_client.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_ssl_client.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_ssl_client.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_ssl_client.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/src/tcp_ssl_client.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/general_ptc_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/general_ptc_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/general_ptc_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/general_ptc_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_1_0_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_1_0_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_1_0_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_1_0_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_2_0_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_2_0_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_2_0_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include/ptc_2_0_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/ptc_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/general_ptc_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/general_ptc_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/general_ptc_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/general_ptc_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_1_0_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_1_0_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_1_0_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_1_0_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_2_0_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_2_0_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_2_0_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/src/ptc_2_0_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_saver.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_saver.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_saver.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_saver.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_source.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_source.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_source.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/pcap_source.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/socket_source.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/socket_source.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/socket_source.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/socket_source.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/source.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/source.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/source.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include/source.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_saver.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_saver.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_saver.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_saver.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_source.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_source.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_source.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/pcap_source.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/socket_source.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/socket_source.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/socket_source.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/socket_source.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/source.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/source.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/source.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/Source/src/source.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/general_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/general_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/general_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/general_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp1_4_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp1_4_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp1_4_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp1_4_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_4_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_4_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_4_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_4_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_5_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_5_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_5_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp2_5_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_1_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_1_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_1_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_1_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_2_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_2_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_2_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp3_2_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp4_3_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp4_3_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp4_3_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp4_3_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp6_1_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp6_1_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp6_1_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp6_1_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp7_2_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp7_2_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp7_2_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp7_2_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p40_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p40_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p40_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p40_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p64_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p64_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p64_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include/udp_p64_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/general_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/general_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/general_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/general_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp1_4_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp1_4_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp1_4_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp1_4_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_4_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_4_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_4_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_4_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_5_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_5_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_5_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp2_5_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_1_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_1_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_1_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_1_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_2_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_2_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_2_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp3_2_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp4_3_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp4_3_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp4_3_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp4_3_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp6_1_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp6_1_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp6_1_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp6_1_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp7_2_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp7_2_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp7_2_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp7_2_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p40_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p40_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p40_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p40_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p64_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p64_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p64_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src/udp_p64_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/udp_parser.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/general_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/general_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/general_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/general_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/nvbuffer.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/nvbuffer.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/nvbuffer.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/nvbuffer.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/return_code.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/return_code.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/return_code.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/return_code.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/safe_call.cuh b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/safe_call.cuh similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/safe_call.cuh rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/safe_call.cuh diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp1_4_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp1_4_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp1_4_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp1_4_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp2_5_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp2_5_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp2_5_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp2_5_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_1_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_1_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_1_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_1_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_2_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_2_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_2_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp3_2_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp4_3_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp4_3_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp4_3_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp4_3_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp6_1_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp6_1_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp6_1_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp6_1_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp7_2_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp7_2_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp7_2_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp7_2_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p40_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p40_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p40_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p40_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p64_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p64_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p64_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include/udp_p64_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/buffer.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/buffer.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/buffer.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/buffer.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/general_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/general_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/general_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/general_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp1_4_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp1_4_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp1_4_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp1_4_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp2_5_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp2_5_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp2_5_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp2_5_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_1_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_1_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_1_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_1_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_2_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_2_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_2_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp3_2_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp4_3_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp4_3_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp4_3_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp4_3_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp6_1_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp6_1_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp6_1_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp6_1_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp7_2_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp7_2_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp7_2_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp7_2_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p40_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p40_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p40_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p40_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p64_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p64_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p64_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/udp_p64_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/udp_parser_gpu.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/fault_message.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/fault_message.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/fault_message.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/fault_message.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_header.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_header.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_header.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_header.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p40.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p40.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p40.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p40.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p64.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p64.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p64.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_p64.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v1_4.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v1_4.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v1_4.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v1_4.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_4.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_4.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_4.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_4.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_5.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_5.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_5.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v2_5.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_1.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_1.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_1.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_1.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_2.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_2.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_2.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v3_2.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v4_3.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v4_3.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v4_3.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v4_3.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v6_1.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v6_1.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v6_1.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v6_1.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v7_2.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v7_2.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v7_2.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol/udp_protocol_v7_2.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/driver_param.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/driver_param.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/driver_param.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/driver_param.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/auto_tick_count.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/auto_tick_count.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/auto_tick_count.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/auto_tick_count.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/plat_utils.h b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/plat_utils.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/plat_utils.h rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/include/plat_utils.h diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/auto_tick_count.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/auto_tick_count.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/auto_tick_count.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/auto_tick_count.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/plat_utils.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/plat_utils.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/plat_utils.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/libhesai/src/plat_utils.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/test/test.cu diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/CMakeLists.txt b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/CMakeLists.txt similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/CMakeLists.txt rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/CMakeLists.txt diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/Version.h.in b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/Version.h.in similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/Version.h.in rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/Version.h.in diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/packet_loss_tool.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/packet_loss_tool.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/packet_loss_tool.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/packet_loss_tool.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cc b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cc rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cc diff --git a/deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cu b/deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cu rename to deploy/dock_ws/src/lidar_node/src/driver/HesaiLidar_SDK_2.0/tool/pcl_tool.cu diff --git a/deploy/perception_ws/src/lidar_node/src/manager/node_manager.cc b/deploy/dock_ws/src/lidar_node/src/manager/node_manager.cc similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/manager/node_manager.cc rename to deploy/dock_ws/src/lidar_node/src/manager/node_manager.cc diff --git a/deploy/perception_ws/src/lidar_node/src/manager/node_manager.cu b/deploy/dock_ws/src/lidar_node/src/manager/node_manager.cu similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/manager/node_manager.cu rename to deploy/dock_ws/src/lidar_node/src/manager/node_manager.cu diff --git a/deploy/perception_ws/src/lidar_node/src/manager/node_manager.h b/deploy/dock_ws/src/lidar_node/src/manager/node_manager.h similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/manager/node_manager.h rename to deploy/dock_ws/src/lidar_node/src/manager/node_manager.h diff --git a/deploy/perception_ws/src/lidar_node/src/manager/source_driver_ros1.hpp b/deploy/dock_ws/src/lidar_node/src/manager/source_driver_ros1.hpp similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/manager/source_driver_ros1.hpp rename to deploy/dock_ws/src/lidar_node/src/manager/source_driver_ros1.hpp diff --git a/deploy/perception_ws/src/lidar_node/src/manager/source_driver_ros2.hpp b/deploy/dock_ws/src/lidar_node/src/manager/source_driver_ros2.hpp similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/manager/source_driver_ros2.hpp rename to deploy/dock_ws/src/lidar_node/src/manager/source_driver_ros2.hpp diff --git a/deploy/perception_ws/src/lidar_node/src/utility/yaml_reader.hpp b/deploy/dock_ws/src/lidar_node/src/utility/yaml_reader.hpp similarity index 100% rename from deploy/perception_ws/src/lidar_node/src/utility/yaml_reader.hpp rename to deploy/dock_ws/src/lidar_node/src/utility/yaml_reader.hpp diff --git a/deploy/robot_ws/install/.colcon_install_layout b/deploy/robot_ws/install/.colcon_install_layout deleted file mode 100644 index 3aad533..0000000 --- a/deploy/robot_ws/install/.colcon_install_layout +++ /dev/null @@ -1 +0,0 @@ -isolated diff --git a/deploy/robot_ws/install/_local_setup_util_ps1.py b/deploy/robot_ws/install/_local_setup_util_ps1.py deleted file mode 100644 index 83abe63..0000000 --- a/deploy/robot_ws/install/_local_setup_util_ps1.py +++ /dev/null @@ -1,407 +0,0 @@ -# Copyright 2016-2019 Dirk Thomas -# Licensed under the Apache License, Version 2.0 - -import argparse -from collections import OrderedDict -import os -from pathlib import Path -import sys - - -FORMAT_STR_COMMENT_LINE = '# {comment}' -FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"' -FORMAT_STR_USE_ENV_VAR = '$env:{name}' -FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"' -FORMAT_STR_REMOVE_LEADING_SEPARATOR = '' -FORMAT_STR_REMOVE_TRAILING_SEPARATOR = '' - -DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' -DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' -DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' -DSV_TYPE_SET = 'set' -DSV_TYPE_SET_IF_UNSET = 'set-if-unset' -DSV_TYPE_SOURCE = 'source' - - -def main(argv=sys.argv[1:]): # noqa: D103 - parser = argparse.ArgumentParser( - description='Output shell commands for the packages in topological ' - 'order') - parser.add_argument( - 'primary_extension', - help='The file extension of the primary shell') - parser.add_argument( - 'additional_extension', nargs='?', - help='The additional file extension to be considered') - parser.add_argument( - '--merged-install', action='store_true', - help='All install prefixes are merged into a single location') - args = parser.parse_args(argv) - - packages = get_packages(Path(__file__).parent, args.merged_install) - - ordered_packages = order_packages(packages) - for pkg_name in ordered_packages: - if _include_comments(): - print( - FORMAT_STR_COMMENT_LINE.format_map( - {'comment': 'Package: ' + pkg_name})) - prefix = os.path.abspath(os.path.dirname(__file__)) - if not args.merged_install: - prefix = os.path.join(prefix, pkg_name) - for line in get_commands( - pkg_name, prefix, args.primary_extension, - args.additional_extension - ): - print(line) - - for line in _remove_ending_separators(): - print(line) - - -def get_packages(prefix_path, merged_install): - """ - Find packages based on colcon-specific files created during installation. - - :param Path prefix_path: The install prefix path of all packages - :param bool merged_install: The flag if the packages are all installed - directly in the prefix or if each package is installed in a subdirectory - named after the package - :returns: A mapping from the package name to the set of runtime - dependencies - :rtype: dict - """ - packages = {} - # since importing colcon_core isn't feasible here the following constant - # must match colcon_core.location.get_relative_package_index_path() - subdirectory = 'share/colcon-core/packages' - if merged_install: - # return if workspace is empty - if not (prefix_path / subdirectory).is_dir(): - return packages - # find all files in the subdirectory - for p in (prefix_path / subdirectory).iterdir(): - if not p.is_file(): - continue - if p.name.startswith('.'): - continue - add_package_runtime_dependencies(p, packages) - else: - # for each subdirectory look for the package specific file - for p in prefix_path.iterdir(): - if not p.is_dir(): - continue - if p.name.startswith('.'): - continue - p = p / subdirectory / p.name - if p.is_file(): - add_package_runtime_dependencies(p, packages) - - # remove unknown dependencies - pkg_names = set(packages.keys()) - for k in packages.keys(): - packages[k] = {d for d in packages[k] if d in pkg_names} - - return packages - - -def add_package_runtime_dependencies(path, packages): - """ - Check the path and if it exists extract the packages runtime dependencies. - - :param Path path: The resource file containing the runtime dependencies - :param dict packages: A mapping from package names to the sets of runtime - dependencies to add to - """ - content = path.read_text() - dependencies = set(content.split(os.pathsep) if content else []) - packages[path.name] = dependencies - - -def order_packages(packages): - """ - Order packages topologically. - - :param dict packages: A mapping from package name to the set of runtime - dependencies - :returns: The package names - :rtype: list - """ - # select packages with no dependencies in alphabetical order - to_be_ordered = list(packages.keys()) - ordered = [] - while to_be_ordered: - pkg_names_without_deps = [ - name for name in to_be_ordered if not packages[name]] - if not pkg_names_without_deps: - reduce_cycle_set(packages) - raise RuntimeError( - 'Circular dependency between: ' + ', '.join(sorted(packages))) - pkg_names_without_deps.sort() - pkg_name = pkg_names_without_deps[0] - to_be_ordered.remove(pkg_name) - ordered.append(pkg_name) - # remove item from dependency lists - for k in list(packages.keys()): - if pkg_name in packages[k]: - packages[k].remove(pkg_name) - return ordered - - -def reduce_cycle_set(packages): - """ - Reduce the set of packages to the ones part of the circular dependency. - - :param dict packages: A mapping from package name to the set of runtime - dependencies which is modified in place - """ - last_depended = None - while len(packages) > 0: - # get all remaining dependencies - depended = set() - for pkg_name, dependencies in packages.items(): - depended = depended.union(dependencies) - # remove all packages which are not dependent on - for name in list(packages.keys()): - if name not in depended: - del packages[name] - if last_depended: - # if remaining packages haven't changed return them - if last_depended == depended: - return packages.keys() - # otherwise reduce again - last_depended = depended - - -def _include_comments(): - # skipping comment lines when COLCON_TRACE is not set speeds up the - # processing especially on Windows - return bool(os.environ.get('COLCON_TRACE')) - - -def get_commands(pkg_name, prefix, primary_extension, additional_extension): - commands = [] - package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') - if os.path.exists(package_dsv_path): - commands += process_dsv_file( - package_dsv_path, prefix, primary_extension, additional_extension) - return commands - - -def process_dsv_file( - dsv_path, prefix, primary_extension=None, additional_extension=None -): - commands = [] - if _include_comments(): - commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) - with open(dsv_path, 'r') as h: - content = h.read() - lines = content.splitlines() - - basenames = OrderedDict() - for i, line in enumerate(lines): - # skip over empty or whitespace-only lines - if not line.strip(): - continue - # skip over comments - if line.startswith('#'): - continue - try: - type_, remainder = line.split(';', 1) - except ValueError: - raise RuntimeError( - "Line %d in '%s' doesn't contain a semicolon separating the " - 'type from the arguments' % (i + 1, dsv_path)) - if type_ != DSV_TYPE_SOURCE: - # handle non-source lines - try: - commands += handle_dsv_types_except_source( - type_, remainder, prefix) - except RuntimeError as e: - raise RuntimeError( - "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e - else: - # group remaining source lines by basename - path_without_ext, ext = os.path.splitext(remainder) - if path_without_ext not in basenames: - basenames[path_without_ext] = set() - assert ext.startswith('.') - ext = ext[1:] - if ext in (primary_extension, additional_extension): - basenames[path_without_ext].add(ext) - - # add the dsv extension to each basename if the file exists - for basename, extensions in basenames.items(): - if not os.path.isabs(basename): - basename = os.path.join(prefix, basename) - if os.path.exists(basename + '.dsv'): - extensions.add('dsv') - - for basename, extensions in basenames.items(): - if not os.path.isabs(basename): - basename = os.path.join(prefix, basename) - if 'dsv' in extensions: - # process dsv files recursively - commands += process_dsv_file( - basename + '.dsv', prefix, primary_extension=primary_extension, - additional_extension=additional_extension) - elif primary_extension in extensions and len(extensions) == 1: - # source primary-only files - commands += [ - FORMAT_STR_INVOKE_SCRIPT.format_map({ - 'prefix': prefix, - 'script_path': basename + '.' + primary_extension})] - elif additional_extension in extensions: - # source non-primary files - commands += [ - FORMAT_STR_INVOKE_SCRIPT.format_map({ - 'prefix': prefix, - 'script_path': basename + '.' + additional_extension})] - - return commands - - -def handle_dsv_types_except_source(type_, remainder, prefix): - commands = [] - if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): - try: - env_name, value = remainder.split(';', 1) - except ValueError: - raise RuntimeError( - "doesn't contain a semicolon separating the environment name " - 'from the value') - try_prefixed_value = os.path.join(prefix, value) if value else prefix - if os.path.exists(try_prefixed_value): - value = try_prefixed_value - if type_ == DSV_TYPE_SET: - commands += _set(env_name, value) - elif type_ == DSV_TYPE_SET_IF_UNSET: - commands += _set_if_unset(env_name, value) - else: - assert False - elif type_ in ( - DSV_TYPE_APPEND_NON_DUPLICATE, - DSV_TYPE_PREPEND_NON_DUPLICATE, - DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS - ): - try: - env_name_and_values = remainder.split(';') - except ValueError: - raise RuntimeError( - "doesn't contain a semicolon separating the environment name " - 'from the values') - env_name = env_name_and_values[0] - values = env_name_and_values[1:] - for value in values: - if not value: - value = prefix - elif not os.path.isabs(value): - value = os.path.join(prefix, value) - if ( - type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and - not os.path.exists(value) - ): - comment = f'skip extending {env_name} with not existing ' \ - f'path: {value}' - if _include_comments(): - commands.append( - FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) - elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: - commands += _append_unique_value(env_name, value) - else: - commands += _prepend_unique_value(env_name, value) - else: - raise RuntimeError( - 'contains an unknown environment hook type: ' + type_) - return commands - - -env_state = {} - - -def _append_unique_value(name, value): - global env_state - if name not in env_state: - if os.environ.get(name): - env_state[name] = set(os.environ[name].split(os.pathsep)) - else: - env_state[name] = set() - # append even if the variable has not been set yet, in case a shell script sets the - # same variable without the knowledge of this Python script. - # later _remove_ending_separators() will cleanup any unintentional leading separator - extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': extend + value}) - if value not in env_state[name]: - env_state[name].add(value) - else: - if not _include_comments(): - return [] - line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) - return [line] - - -def _prepend_unique_value(name, value): - global env_state - if name not in env_state: - if os.environ.get(name): - env_state[name] = set(os.environ[name].split(os.pathsep)) - else: - env_state[name] = set() - # prepend even if the variable has not been set yet, in case a shell script sets the - # same variable without the knowledge of this Python script. - # later _remove_ending_separators() will cleanup any unintentional trailing separator - extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': value + extend}) - if value not in env_state[name]: - env_state[name].add(value) - else: - if not _include_comments(): - return [] - line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) - return [line] - - -# generate commands for removing prepended underscores -def _remove_ending_separators(): - # do nothing if the shell extension does not implement the logic - if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: - return [] - - global env_state - commands = [] - for name in env_state: - # skip variables that already had values before this script started prepending - if name in os.environ: - continue - commands += [ - FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), - FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] - return commands - - -def _set(name, value): - global env_state - env_state[name] = value - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': value}) - return [line] - - -def _set_if_unset(name, value): - global env_state - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': value}) - if env_state.get(name, os.environ.get(name)): - line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) - return [line] - - -if __name__ == '__main__': # pragma: no cover - try: - rc = main() - except RuntimeError as e: - print(str(e), file=sys.stderr) - rc = 1 - sys.exit(rc) diff --git a/deploy/robot_ws/install/_local_setup_util_sh.py b/deploy/robot_ws/install/_local_setup_util_sh.py deleted file mode 100644 index ff31198..0000000 --- a/deploy/robot_ws/install/_local_setup_util_sh.py +++ /dev/null @@ -1,407 +0,0 @@ -# Copyright 2016-2019 Dirk Thomas -# Licensed under the Apache License, Version 2.0 - -import argparse -from collections import OrderedDict -import os -from pathlib import Path -import sys - - -FORMAT_STR_COMMENT_LINE = '# {comment}' -FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"' -FORMAT_STR_USE_ENV_VAR = '${name}' -FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' -FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi' -FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi' - -DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' -DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' -DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' -DSV_TYPE_SET = 'set' -DSV_TYPE_SET_IF_UNSET = 'set-if-unset' -DSV_TYPE_SOURCE = 'source' - - -def main(argv=sys.argv[1:]): # noqa: D103 - parser = argparse.ArgumentParser( - description='Output shell commands for the packages in topological ' - 'order') - parser.add_argument( - 'primary_extension', - help='The file extension of the primary shell') - parser.add_argument( - 'additional_extension', nargs='?', - help='The additional file extension to be considered') - parser.add_argument( - '--merged-install', action='store_true', - help='All install prefixes are merged into a single location') - args = parser.parse_args(argv) - - packages = get_packages(Path(__file__).parent, args.merged_install) - - ordered_packages = order_packages(packages) - for pkg_name in ordered_packages: - if _include_comments(): - print( - FORMAT_STR_COMMENT_LINE.format_map( - {'comment': 'Package: ' + pkg_name})) - prefix = os.path.abspath(os.path.dirname(__file__)) - if not args.merged_install: - prefix = os.path.join(prefix, pkg_name) - for line in get_commands( - pkg_name, prefix, args.primary_extension, - args.additional_extension - ): - print(line) - - for line in _remove_ending_separators(): - print(line) - - -def get_packages(prefix_path, merged_install): - """ - Find packages based on colcon-specific files created during installation. - - :param Path prefix_path: The install prefix path of all packages - :param bool merged_install: The flag if the packages are all installed - directly in the prefix or if each package is installed in a subdirectory - named after the package - :returns: A mapping from the package name to the set of runtime - dependencies - :rtype: dict - """ - packages = {} - # since importing colcon_core isn't feasible here the following constant - # must match colcon_core.location.get_relative_package_index_path() - subdirectory = 'share/colcon-core/packages' - if merged_install: - # return if workspace is empty - if not (prefix_path / subdirectory).is_dir(): - return packages - # find all files in the subdirectory - for p in (prefix_path / subdirectory).iterdir(): - if not p.is_file(): - continue - if p.name.startswith('.'): - continue - add_package_runtime_dependencies(p, packages) - else: - # for each subdirectory look for the package specific file - for p in prefix_path.iterdir(): - if not p.is_dir(): - continue - if p.name.startswith('.'): - continue - p = p / subdirectory / p.name - if p.is_file(): - add_package_runtime_dependencies(p, packages) - - # remove unknown dependencies - pkg_names = set(packages.keys()) - for k in packages.keys(): - packages[k] = {d for d in packages[k] if d in pkg_names} - - return packages - - -def add_package_runtime_dependencies(path, packages): - """ - Check the path and if it exists extract the packages runtime dependencies. - - :param Path path: The resource file containing the runtime dependencies - :param dict packages: A mapping from package names to the sets of runtime - dependencies to add to - """ - content = path.read_text() - dependencies = set(content.split(os.pathsep) if content else []) - packages[path.name] = dependencies - - -def order_packages(packages): - """ - Order packages topologically. - - :param dict packages: A mapping from package name to the set of runtime - dependencies - :returns: The package names - :rtype: list - """ - # select packages with no dependencies in alphabetical order - to_be_ordered = list(packages.keys()) - ordered = [] - while to_be_ordered: - pkg_names_without_deps = [ - name for name in to_be_ordered if not packages[name]] - if not pkg_names_without_deps: - reduce_cycle_set(packages) - raise RuntimeError( - 'Circular dependency between: ' + ', '.join(sorted(packages))) - pkg_names_without_deps.sort() - pkg_name = pkg_names_without_deps[0] - to_be_ordered.remove(pkg_name) - ordered.append(pkg_name) - # remove item from dependency lists - for k in list(packages.keys()): - if pkg_name in packages[k]: - packages[k].remove(pkg_name) - return ordered - - -def reduce_cycle_set(packages): - """ - Reduce the set of packages to the ones part of the circular dependency. - - :param dict packages: A mapping from package name to the set of runtime - dependencies which is modified in place - """ - last_depended = None - while len(packages) > 0: - # get all remaining dependencies - depended = set() - for pkg_name, dependencies in packages.items(): - depended = depended.union(dependencies) - # remove all packages which are not dependent on - for name in list(packages.keys()): - if name not in depended: - del packages[name] - if last_depended: - # if remaining packages haven't changed return them - if last_depended == depended: - return packages.keys() - # otherwise reduce again - last_depended = depended - - -def _include_comments(): - # skipping comment lines when COLCON_TRACE is not set speeds up the - # processing especially on Windows - return bool(os.environ.get('COLCON_TRACE')) - - -def get_commands(pkg_name, prefix, primary_extension, additional_extension): - commands = [] - package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') - if os.path.exists(package_dsv_path): - commands += process_dsv_file( - package_dsv_path, prefix, primary_extension, additional_extension) - return commands - - -def process_dsv_file( - dsv_path, prefix, primary_extension=None, additional_extension=None -): - commands = [] - if _include_comments(): - commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) - with open(dsv_path, 'r') as h: - content = h.read() - lines = content.splitlines() - - basenames = OrderedDict() - for i, line in enumerate(lines): - # skip over empty or whitespace-only lines - if not line.strip(): - continue - # skip over comments - if line.startswith('#'): - continue - try: - type_, remainder = line.split(';', 1) - except ValueError: - raise RuntimeError( - "Line %d in '%s' doesn't contain a semicolon separating the " - 'type from the arguments' % (i + 1, dsv_path)) - if type_ != DSV_TYPE_SOURCE: - # handle non-source lines - try: - commands += handle_dsv_types_except_source( - type_, remainder, prefix) - except RuntimeError as e: - raise RuntimeError( - "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e - else: - # group remaining source lines by basename - path_without_ext, ext = os.path.splitext(remainder) - if path_without_ext not in basenames: - basenames[path_without_ext] = set() - assert ext.startswith('.') - ext = ext[1:] - if ext in (primary_extension, additional_extension): - basenames[path_without_ext].add(ext) - - # add the dsv extension to each basename if the file exists - for basename, extensions in basenames.items(): - if not os.path.isabs(basename): - basename = os.path.join(prefix, basename) - if os.path.exists(basename + '.dsv'): - extensions.add('dsv') - - for basename, extensions in basenames.items(): - if not os.path.isabs(basename): - basename = os.path.join(prefix, basename) - if 'dsv' in extensions: - # process dsv files recursively - commands += process_dsv_file( - basename + '.dsv', prefix, primary_extension=primary_extension, - additional_extension=additional_extension) - elif primary_extension in extensions and len(extensions) == 1: - # source primary-only files - commands += [ - FORMAT_STR_INVOKE_SCRIPT.format_map({ - 'prefix': prefix, - 'script_path': basename + '.' + primary_extension})] - elif additional_extension in extensions: - # source non-primary files - commands += [ - FORMAT_STR_INVOKE_SCRIPT.format_map({ - 'prefix': prefix, - 'script_path': basename + '.' + additional_extension})] - - return commands - - -def handle_dsv_types_except_source(type_, remainder, prefix): - commands = [] - if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): - try: - env_name, value = remainder.split(';', 1) - except ValueError: - raise RuntimeError( - "doesn't contain a semicolon separating the environment name " - 'from the value') - try_prefixed_value = os.path.join(prefix, value) if value else prefix - if os.path.exists(try_prefixed_value): - value = try_prefixed_value - if type_ == DSV_TYPE_SET: - commands += _set(env_name, value) - elif type_ == DSV_TYPE_SET_IF_UNSET: - commands += _set_if_unset(env_name, value) - else: - assert False - elif type_ in ( - DSV_TYPE_APPEND_NON_DUPLICATE, - DSV_TYPE_PREPEND_NON_DUPLICATE, - DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS - ): - try: - env_name_and_values = remainder.split(';') - except ValueError: - raise RuntimeError( - "doesn't contain a semicolon separating the environment name " - 'from the values') - env_name = env_name_and_values[0] - values = env_name_and_values[1:] - for value in values: - if not value: - value = prefix - elif not os.path.isabs(value): - value = os.path.join(prefix, value) - if ( - type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and - not os.path.exists(value) - ): - comment = f'skip extending {env_name} with not existing ' \ - f'path: {value}' - if _include_comments(): - commands.append( - FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) - elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: - commands += _append_unique_value(env_name, value) - else: - commands += _prepend_unique_value(env_name, value) - else: - raise RuntimeError( - 'contains an unknown environment hook type: ' + type_) - return commands - - -env_state = {} - - -def _append_unique_value(name, value): - global env_state - if name not in env_state: - if os.environ.get(name): - env_state[name] = set(os.environ[name].split(os.pathsep)) - else: - env_state[name] = set() - # append even if the variable has not been set yet, in case a shell script sets the - # same variable without the knowledge of this Python script. - # later _remove_ending_separators() will cleanup any unintentional leading separator - extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': extend + value}) - if value not in env_state[name]: - env_state[name].add(value) - else: - if not _include_comments(): - return [] - line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) - return [line] - - -def _prepend_unique_value(name, value): - global env_state - if name not in env_state: - if os.environ.get(name): - env_state[name] = set(os.environ[name].split(os.pathsep)) - else: - env_state[name] = set() - # prepend even if the variable has not been set yet, in case a shell script sets the - # same variable without the knowledge of this Python script. - # later _remove_ending_separators() will cleanup any unintentional trailing separator - extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': value + extend}) - if value not in env_state[name]: - env_state[name].add(value) - else: - if not _include_comments(): - return [] - line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) - return [line] - - -# generate commands for removing prepended underscores -def _remove_ending_separators(): - # do nothing if the shell extension does not implement the logic - if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: - return [] - - global env_state - commands = [] - for name in env_state: - # skip variables that already had values before this script started prepending - if name in os.environ: - continue - commands += [ - FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), - FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] - return commands - - -def _set(name, value): - global env_state - env_state[name] = value - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': value}) - return [line] - - -def _set_if_unset(name, value): - global env_state - line = FORMAT_STR_SET_ENV_VAR.format_map( - {'name': name, 'value': value}) - if env_state.get(name, os.environ.get(name)): - line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) - return [line] - - -if __name__ == '__main__': # pragma: no cover - try: - rc = main() - except RuntimeError as e: - print(str(e), file=sys.stderr) - rc = 1 - sys.exit(rc) diff --git a/deploy/robot_ws/install/go2py_node/lib/go2py_node/bridge b/deploy/robot_ws/install/go2py_node/lib/go2py_node/bridge deleted file mode 100755 index cdc4f5a8d4f8360f50354c4c3898def97d7a830c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4359944 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

yZy)`?Yu~M|A5`T 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ν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

LJD(^+dT4TCv=| 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 diff --git a/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/package_run_dependencies/go2py_node b/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/package_run_dependencies/go2py_node deleted file mode 100644 index ce14ac7..0000000 --- a/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/package_run_dependencies/go2py_node +++ /dev/null @@ -1 +0,0 @@ -unitree_go;unitree_api;rclcpp;std_msgs;rosbag2_cpp;ament_lint_auto;ament_lint_common \ No newline at end of file diff --git a/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/packages/go2py_node b/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/packages/go2py_node deleted file mode 100644 index e69de29..0000000 diff --git a/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/parent_prefix_path/go2py_node b/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/parent_prefix_path/go2py_node deleted file mode 100644 index c626313..0000000 --- a/deploy/robot_ws/install/go2py_node/share/ament_index/resource_index/parent_prefix_path/go2py_node +++ /dev/null @@ -1 +0,0 @@ -/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/unitree_go:/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/unitree_api:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/go2py_node:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/unitree_go:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/unitree_api:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/hesai_ros_driver:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/unitree_go:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/unitree_api:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/rmw_cyclonedds_cpp:/opt/ros/foxy \ No newline at end of file diff --git a/deploy/robot_ws/install/go2py_node/share/colcon-core/packages/go2py_node b/deploy/robot_ws/install/go2py_node/share/colcon-core/packages/go2py_node deleted file mode 100644 index 006e304..0000000 --- a/deploy/robot_ws/install/go2py_node/share/colcon-core/packages/go2py_node +++ /dev/null @@ -1 +0,0 @@ -rclcpp:rosbag2_cpp:std_msgs:unitree_api:unitree_go \ No newline at end of file diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig-version.cmake b/deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig-version.cmake deleted file mode 100644 index 7beb732..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig-version.cmake +++ /dev/null @@ -1,14 +0,0 @@ -# generated from ament/cmake/core/templates/nameConfig-version.cmake.in -set(PACKAGE_VERSION "0.0.0") - -set(PACKAGE_VERSION_EXACT False) -set(PACKAGE_VERSION_COMPATIBLE False) - -if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}") - set(PACKAGE_VERSION_EXACT True) - set(PACKAGE_VERSION_COMPATIBLE True) -endif() - -if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}") - set(PACKAGE_VERSION_COMPATIBLE True) -endif() diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig.cmake b/deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig.cmake deleted file mode 100644 index bbfd2f5..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/cmake/go2py_nodeConfig.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# generated from ament/cmake/core/templates/nameConfig.cmake.in - -# prevent multiple inclusion -if(_go2py_node_CONFIG_INCLUDED) - # ensure to keep the found flag the same - if(NOT DEFINED go2py_node_FOUND) - # explicitly set it to FALSE, otherwise CMake will set it to TRUE - set(go2py_node_FOUND FALSE) - elseif(NOT go2py_node_FOUND) - # use separate condition to avoid uninitialized variable warning - set(go2py_node_FOUND FALSE) - endif() - return() -endif() -set(_go2py_node_CONFIG_INCLUDED TRUE) - -# output package information -if(NOT go2py_node_FIND_QUIETLY) - message(STATUS "Found go2py_node: 0.0.0 (${go2py_node_DIR})") -endif() - -# warn when using a deprecated package -if(NOT "" STREQUAL "") - set(_msg "Package 'go2py_node' is deprecated") - # append custom deprecation text if available - if(NOT "" STREQUAL "TRUE") - set(_msg "${_msg} ()") - endif() - # optionally quiet the deprecation message - if(NOT ${go2py_node_DEPRECATED_QUIET}) - message(DEPRECATION "${_msg}") - endif() -endif() - -# flag package as ament-based to distinguish it after being find_package()-ed -set(go2py_node_FOUND_AMENT_PACKAGE TRUE) - -# include all config extra files -set(_extras "") -foreach(_extra ${_extras}) - include("${go2py_node_DIR}/${_extra}") -endforeach() diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.dsv b/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.dsv deleted file mode 100644 index 79d4c95..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;AMENT_PREFIX_PATH; diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.sh b/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.sh deleted file mode 100644 index 02e441b..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/ament_prefix_path.sh +++ /dev/null @@ -1,4 +0,0 @@ -# copied from -# ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh - -ament_prepend_unique_value AMENT_PREFIX_PATH "$AMENT_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.dsv b/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.dsv deleted file mode 100644 index b94426a..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate-if-exists;PATH;bin diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.sh b/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.sh deleted file mode 100644 index e59b749..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/environment/path.sh +++ /dev/null @@ -1,5 +0,0 @@ -# copied from ament_cmake_core/cmake/environment_hooks/environment/path.sh - -if [ -d "$AMENT_CURRENT_PREFIX/bin" ]; then - ament_prepend_unique_value PATH "$AMENT_CURRENT_PREFIX/bin" -fi diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.dsv b/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.dsv deleted file mode 100644 index e119f32..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;CMAKE_PREFIX_PATH; diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.ps1 b/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.ps1 deleted file mode 100644 index d03facc..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em - -colcon_prepend_unique_value CMAKE_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.sh b/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.sh deleted file mode 100644 index a948e68..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/hook/cmake_prefix_path.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_core/shell/template/hook_prepend_value.sh.em - -_colcon_prepend_unique_value CMAKE_PREFIX_PATH "$COLCON_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.bash b/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.bash deleted file mode 100644 index 49782f2..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.bash +++ /dev/null @@ -1,46 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.bash.in - -# source local_setup.sh from same directory as this file -_this_path=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" && pwd) -# provide AMENT_CURRENT_PREFIX to shell script -AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd) -# store AMENT_CURRENT_PREFIX to restore it before each environment hook -_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX - -# trace output -if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_this_path/local_setup.sh\"" -fi -. "$_this_path/local_setup.sh" -unset _this_path - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks -AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX -# list all environment hooks of this package - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - # restore AMENT_CURRENT_PREFIX for each environment hook - AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - . "$_hook" - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -unset _package_local_setup_AMENT_CURRENT_PREFIX -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.dsv b/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.dsv deleted file mode 100644 index aaca281..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.dsv +++ /dev/null @@ -1,2 +0,0 @@ -source;share/go2py_node/environment/ament_prefix_path.sh -source;share/go2py_node/environment/path.sh diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.sh b/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.sh deleted file mode 100644 index 927791e..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.sh +++ /dev/null @@ -1,133 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.sh.in - -# since this file is sourced use either the provided AMENT_CURRENT_PREFIX -# or fall back to the destination set at configure time -: ${AMENT_CURRENT_PREFIX:="/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/go2py_node"} -if [ ! -d "$AMENT_CURRENT_PREFIX" ]; then - if [ -z "$COLCON_CURRENT_PREFIX" ]; then - echo "The compile time prefix path '$AMENT_CURRENT_PREFIX' doesn't " \ - "exist. Consider sourcing a different extension than '.sh'." 1>&2 - else - AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" - fi -fi - -# function to append values to environment variables -# using colons as separators and avoiding leading separators -ament_append_value() { - # arguments - _listname="$1" - _value="$2" - #echo "listname $_listname" - #eval echo "list value \$$_listname" - #echo "value $_value" - - # avoid leading separator - eval _values=\"\$$_listname\" - if [ -z "$_values" ]; then - eval export $_listname=\"$_value\" - #eval echo "set list \$$_listname" - else - # field separator must not be a colon - _ament_append_value_IFS=$IFS - unset IFS - eval export $_listname=\"\$$_listname:$_value\" - #eval echo "append list \$$_listname" - IFS=$_ament_append_value_IFS - unset _ament_append_value_IFS - fi - unset _values - - unset _value - unset _listname -} - -# function to prepend non-duplicate values to environment variables -# using colons as separators and avoiding trailing separators -ament_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - #echo "listname $_listname" - #eval echo "list value \$$_listname" - #echo "value $_value" - - # check if the list contains the value - eval _values=\"\$$_listname\" - _duplicate= - _ament_prepend_unique_value_IFS=$IFS - IFS=":" - if [ "$AMENT_SHELL" = "zsh" ]; then - ament_zsh_to_array _values - fi - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - if [ "$_item" = "$_value" ]; then - _duplicate=1 - fi - done - unset _item - - # prepend only non-duplicates - if [ -z "$_duplicate" ]; then - # avoid trailing separator - if [ -z "$_values" ]; then - eval export $_listname=\"$_value\" - #eval echo "set list \$$_listname" - else - # field separator must not be a colon - unset IFS - eval export $_listname=\"$_value:\$$_listname\" - #eval echo "prepend list \$$_listname" - fi - fi - IFS=$_ament_prepend_unique_value_IFS - unset _ament_prepend_unique_value_IFS - unset _duplicate - unset _values - - unset _value - unset _listname -} - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# list all environment hooks of this package -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/go2py_node/environment/ament_prefix_path.sh" -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/go2py_node/environment/path.sh" - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - if [ "$AMENT_SHELL" = "zsh" ]; then - ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS - fi - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - if [ -f "$_hook" ]; then - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - # trace output - if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_hook\"" - fi - . "$_hook" - fi - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -# reset AMENT_CURRENT_PREFIX after each package -# allowing to source multiple package-level setup files -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.zsh b/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.zsh deleted file mode 100644 index fe161be..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/local_setup.zsh +++ /dev/null @@ -1,59 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.zsh.in - -AMENT_SHELL=zsh - -# source local_setup.sh from same directory as this file -_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd) -# provide AMENT_CURRENT_PREFIX to shell script -AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd) -# store AMENT_CURRENT_PREFIX to restore it before each environment hook -_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX - -# function to convert array-like strings into arrays -# to wordaround SH_WORD_SPLIT not being set -ament_zsh_to_array() { - local _listname=$1 - local _dollar="$" - local _split="{=" - local _to_array="(\"$_dollar$_split$_listname}\")" - eval $_listname=$_to_array -} - -# trace output -if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_this_path/local_setup.sh\"" -fi -# the package-level local_setup file unsets AMENT_CURRENT_PREFIX -. "$_this_path/local_setup.sh" -unset _this_path - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks -AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX -# list all environment hooks of this package - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - # restore AMENT_CURRENT_PREFIX for each environment hook - AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - . "$_hook" - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -unset _package_local_setup_AMENT_CURRENT_PREFIX -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.bash b/deploy/robot_ws/install/go2py_node/share/go2py_node/package.bash deleted file mode 100644 index a6bf720..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.bash +++ /dev/null @@ -1,39 +0,0 @@ -# generated from colcon_bash/shell/template/package.bash.em - -# This script extends the environment for this package. - -# a bash script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - # the prefix is two levels up from the package specific share directory - _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)" -else - _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_bash_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source sh script of this package -_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/go2py_node/package.sh" - -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts -COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX" - -# source bash hooks -_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/go2py_node/local_setup.bash" - -unset COLCON_CURRENT_PREFIX - -unset _colcon_package_bash_source_script -unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.dsv b/deploy/robot_ws/install/go2py_node/share/go2py_node/package.dsv deleted file mode 100644 index 2a99b11..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.dsv +++ /dev/null @@ -1,8 +0,0 @@ -source;share/go2py_node/hook/cmake_prefix_path.ps1 -source;share/go2py_node/hook/cmake_prefix_path.dsv -source;share/go2py_node/hook/cmake_prefix_path.sh -source;share/go2py_node/local_setup.bash -source;share/go2py_node/local_setup.dsv -source;share/go2py_node/local_setup.ps1 -source;share/go2py_node/local_setup.sh -source;share/go2py_node/local_setup.zsh diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.ps1 b/deploy/robot_ws/install/go2py_node/share/go2py_node/package.ps1 deleted file mode 100644 index 5b7f9fc..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.ps1 +++ /dev/null @@ -1,116 +0,0 @@ -# generated from colcon_powershell/shell/template/package.ps1.em - -# function to append a value to a variable -# which uses colons as separators -# duplicates as well as leading separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -function colcon_append_unique_value { - param ( - $_listname, - $_value - ) - - # get values from variable - if (Test-Path Env:$_listname) { - $_values=(Get-Item env:$_listname).Value - } else { - $_values="" - } - $_duplicate="" - # start with no values - $_all_values="" - # iterate over existing values in the variable - if ($_values) { - $_values.Split(";") | ForEach { - # not an empty string - if ($_) { - # not a duplicate of _value - if ($_ -eq $_value) { - $_duplicate="1" - } - if ($_all_values) { - $_all_values="${_all_values};$_" - } else { - $_all_values="$_" - } - } - } - } - # append only non-duplicates - if (!$_duplicate) { - # avoid leading separator - if ($_all_values) { - $_all_values="${_all_values};${_value}" - } else { - $_all_values="${_value}" - } - } - - # export the updated variable - Set-Item env:\$_listname -Value "$_all_values" -} - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -function colcon_prepend_unique_value { - param ( - $_listname, - $_value - ) - - # get values from variable - if (Test-Path Env:$_listname) { - $_values=(Get-Item env:$_listname).Value - } else { - $_values="" - } - # start with the new value - $_all_values="$_value" - # iterate over existing values in the variable - if ($_values) { - $_values.Split(";") | ForEach { - # not an empty string - if ($_) { - # not a duplicate of _value - if ($_ -ne $_value) { - # keep non-duplicate values - $_all_values="${_all_values};$_" - } - } - } - } - # export the updated variable - Set-Item env:\$_listname -Value "$_all_values" -} - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -function colcon_package_source_powershell_script { - param ( - $_colcon_package_source_powershell_script - ) - # source script with conditional trace output - if (Test-Path $_colcon_package_source_powershell_script) { - if ($env:COLCON_TRACE) { - echo ". '$_colcon_package_source_powershell_script'" - } - . "$_colcon_package_source_powershell_script" - } else { - Write-Error "not found: '$_colcon_package_source_powershell_script'" - } -} - - -# a powershell script is able to determine its own path -# the prefix is two levels up from the package specific share directory -$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName - -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/go2py_node/hook/cmake_prefix_path.ps1" -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/go2py_node/local_setup.ps1" - -Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.sh b/deploy/robot_ws/install/go2py_node/share/go2py_node/package.sh deleted file mode 100644 index 9deaf9d..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.sh +++ /dev/null @@ -1,87 +0,0 @@ -# generated from colcon_core/shell/template/package.sh.em - -# This script extends the environment for this package. - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -_colcon_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - - # get values from variable - eval _values=\"\$$_listname\" - # backup the field separator - _colcon_prepend_unique_value_IFS=$IFS - IFS=":" - # start with the new value - _all_values="$_value" - # workaround SH_WORD_SPLIT not being set in zsh - if [ "$(command -v colcon_zsh_convert_to_array)" ]; then - colcon_zsh_convert_to_array _values - fi - # iterate over existing values in the variable - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - # ignore duplicates of _value - if [ "$_item" = "$_value" ]; then - continue - fi - # keep non-duplicate values - _all_values="$_all_values:$_item" - done - unset _item - # restore the field separator - IFS=$_colcon_prepend_unique_value_IFS - unset _colcon_prepend_unique_value_IFS - # export the updated variable - eval export $_listname=\"$_all_values\" - unset _all_values - unset _values - - unset _value - unset _listname -} - -# since a plain shell script can't determine its own path when being sourced -# either use the provided COLCON_CURRENT_PREFIX -# or fall back to the build time prefix (if it exists) -_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/go2py_node" -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then - echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 - unset _colcon_package_sh_COLCON_CURRENT_PREFIX - return 1 - fi - COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" -fi -unset _colcon_package_sh_COLCON_CURRENT_PREFIX - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_sh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source sh hooks -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/go2py_node/hook/cmake_prefix_path.sh" -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/go2py_node/local_setup.sh" - -unset _colcon_package_sh_source_script -unset COLCON_CURRENT_PREFIX - -# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.xml b/deploy/robot_ws/install/go2py_node/share/go2py_node/package.xml deleted file mode 100644 index edb456d..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - go2py_node - 0.0.0 - TODO: Package description - zeen - TODO: License declaration - - ament_cmake - - unitree_go - unitree_api - rclcpp - std_msgs - rosbag2_cpp - - ament_lint_auto - ament_lint_common - - - ament_cmake - - diff --git a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.zsh b/deploy/robot_ws/install/go2py_node/share/go2py_node/package.zsh deleted file mode 100644 index 650d599..0000000 --- a/deploy/robot_ws/install/go2py_node/share/go2py_node/package.zsh +++ /dev/null @@ -1,50 +0,0 @@ -# generated from colcon_zsh/shell/template/package.zsh.em - -# This script extends the environment for this package. - -# a zsh script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - # the prefix is two levels up from the package specific share directory - _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" -else - _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_zsh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# function to convert array-like strings into arrays -# to workaround SH_WORD_SPLIT not being set -colcon_zsh_convert_to_array() { - local _listname=$1 - local _dollar="$" - local _split="{=" - local _to_array="(\"$_dollar$_split$_listname}\")" - eval $_listname=$_to_array -} - -# source sh script of this package -_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/go2py_node/package.sh" -unset convert_zsh_to_array - -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts -COLCON_CURRENT_PREFIX="$_colcon_package_zsh_COLCON_CURRENT_PREFIX" - -# source zsh hooks -_colcon_package_zsh_source_script "$COLCON_CURRENT_PREFIX/share/go2py_node/local_setup.zsh" - -unset COLCON_CURRENT_PREFIX - -unset _colcon_package_zsh_source_script -unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/local_setup.bash b/deploy/robot_ws/install/local_setup.bash deleted file mode 100644 index 03f0025..0000000 --- a/deploy/robot_ws/install/local_setup.bash +++ /dev/null @@ -1,121 +0,0 @@ -# generated from colcon_bash/shell/template/prefix.bash.em - -# This script extends the environment with all packages contained in this -# prefix path. - -# a bash script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" -else - _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -_colcon_prefix_bash_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - - # get values from variable - eval _values=\"\$$_listname\" - # backup the field separator - _colcon_prefix_bash_prepend_unique_value_IFS="$IFS" - IFS=":" - # start with the new value - _all_values="$_value" - _contained_value="" - # iterate over existing values in the variable - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - # ignore duplicates of _value - if [ "$_item" = "$_value" ]; then - _contained_value=1 - continue - fi - # keep non-duplicate values - _all_values="$_all_values:$_item" - done - unset _item - if [ -z "$_contained_value" ]; then - if [ -n "$COLCON_TRACE" ]; then - if [ "$_all_values" = "$_value" ]; then - echo "export $_listname=$_value" - else - echo "export $_listname=$_value:\$$_listname" - fi - fi - fi - unset _contained_value - # restore the field separator - IFS="$_colcon_prefix_bash_prepend_unique_value_IFS" - unset _colcon_prefix_bash_prepend_unique_value_IFS - # export the updated variable - eval export $_listname=\"$_all_values\" - unset _all_values - unset _values - - unset _value - unset _listname -} - -# add this prefix to the COLCON_PREFIX_PATH -_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX" -unset _colcon_prefix_bash_prepend_unique_value - -# check environment variable for custom Python executable -if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then - if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then - echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" - return 1 - fi - _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" -else - # try the Python executable known at configure time - _colcon_python_executable="/usr/bin/python3" - # if it doesn't exist try a fall back - if [ ! -f "$_colcon_python_executable" ]; then - if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then - echo "error: unable to find python3 executable" - return 1 - fi - _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` - fi -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -_colcon_prefix_sh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$1" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# get all commands in topological order -_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)" -unset _colcon_python_executable -if [ -n "$COLCON_TRACE" ]; then - echo "$(declare -f _colcon_prefix_sh_source_script)" - echo "# Execute generated script:" - echo "# <<<" - echo "${_colcon_ordered_commands}" - echo "# >>>" - echo "unset _colcon_prefix_sh_source_script" -fi -eval "${_colcon_ordered_commands}" -unset _colcon_ordered_commands - -unset _colcon_prefix_sh_source_script - -unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/local_setup.ps1 b/deploy/robot_ws/install/local_setup.ps1 deleted file mode 100644 index 6f68c8d..0000000 --- a/deploy/robot_ws/install/local_setup.ps1 +++ /dev/null @@ -1,55 +0,0 @@ -# generated from colcon_powershell/shell/template/prefix.ps1.em - -# This script extends the environment with all packages contained in this -# prefix path. - -# check environment variable for custom Python executable -if ($env:COLCON_PYTHON_EXECUTABLE) { - if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) { - echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist" - exit 1 - } - $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE" -} else { - # use the Python executable known at configure time - $_colcon_python_executable="/usr/bin/python3" - # if it doesn't exist try a fall back - if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) { - if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) { - echo "error: unable to find python3 executable" - exit 1 - } - $_colcon_python_executable="python3" - } -} - -# function to source another script with conditional trace output -# first argument: the path of the script -function _colcon_prefix_powershell_source_script { - param ( - $_colcon_prefix_powershell_source_script_param - ) - # source script with conditional trace output - if (Test-Path $_colcon_prefix_powershell_source_script_param) { - if ($env:COLCON_TRACE) { - echo ". '$_colcon_prefix_powershell_source_script_param'" - } - . "$_colcon_prefix_powershell_source_script_param" - } else { - Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'" - } -} - -# get all commands in topological order -$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1 - -# execute all commands in topological order -if ($env:COLCON_TRACE) { - echo "Execute generated script:" - echo "<<<" - $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output - echo ">>>" -} -if ($_colcon_ordered_commands) { - $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression -} diff --git a/deploy/robot_ws/install/local_setup.sh b/deploy/robot_ws/install/local_setup.sh deleted file mode 100644 index 982598d..0000000 --- a/deploy/robot_ws/install/local_setup.sh +++ /dev/null @@ -1,137 +0,0 @@ -# generated from colcon_core/shell/template/prefix.sh.em - -# This script extends the environment with all packages contained in this -# prefix path. - -# since a plain shell script can't determine its own path when being sourced -# either use the provided COLCON_CURRENT_PREFIX -# or fall back to the build time prefix (if it exists) -_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/unitree/locomotion/Go2Py/deploy/robot_ws/install" -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then - echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 - unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX - return 1 - fi -else - _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -_colcon_prefix_sh_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - - # get values from variable - eval _values=\"\$$_listname\" - # backup the field separator - _colcon_prefix_sh_prepend_unique_value_IFS="$IFS" - IFS=":" - # start with the new value - _all_values="$_value" - _contained_value="" - # iterate over existing values in the variable - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - # ignore duplicates of _value - if [ "$_item" = "$_value" ]; then - _contained_value=1 - continue - fi - # keep non-duplicate values - _all_values="$_all_values:$_item" - done - unset _item - if [ -z "$_contained_value" ]; then - if [ -n "$COLCON_TRACE" ]; then - if [ "$_all_values" = "$_value" ]; then - echo "export $_listname=$_value" - else - echo "export $_listname=$_value:\$$_listname" - fi - fi - fi - unset _contained_value - # restore the field separator - IFS="$_colcon_prefix_sh_prepend_unique_value_IFS" - unset _colcon_prefix_sh_prepend_unique_value_IFS - # export the updated variable - eval export $_listname=\"$_all_values\" - unset _all_values - unset _values - - unset _value - unset _listname -} - -# add this prefix to the COLCON_PREFIX_PATH -_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" -unset _colcon_prefix_sh_prepend_unique_value - -# check environment variable for custom Python executable -if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then - if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then - echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" - return 1 - fi - _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" -else - # try the Python executable known at configure time - _colcon_python_executable="/usr/bin/python3" - # if it doesn't exist try a fall back - if [ ! -f "$_colcon_python_executable" ]; then - if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then - echo "error: unable to find python3 executable" - return 1 - fi - _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` - fi -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -_colcon_prefix_sh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$1" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# get all commands in topological order -_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)" -unset _colcon_python_executable -if [ -n "$COLCON_TRACE" ]; then - echo "_colcon_prefix_sh_source_script() { - if [ -f \"\$1\" ]; then - if [ -n \"\$COLCON_TRACE\" ]; then - echo \"# . \\\"\$1\\\"\" - fi - . \"\$1\" - else - echo \"not found: \\\"\$1\\\"\" 1>&2 - fi - }" - echo "# Execute generated script:" - echo "# <<<" - echo "${_colcon_ordered_commands}" - echo "# >>>" - echo "unset _colcon_prefix_sh_source_script" -fi -eval "${_colcon_ordered_commands}" -unset _colcon_ordered_commands - -unset _colcon_prefix_sh_source_script - -unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/local_setup.zsh b/deploy/robot_ws/install/local_setup.zsh deleted file mode 100644 index b648710..0000000 --- a/deploy/robot_ws/install/local_setup.zsh +++ /dev/null @@ -1,134 +0,0 @@ -# generated from colcon_zsh/shell/template/prefix.zsh.em - -# This script extends the environment with all packages contained in this -# prefix path. - -# a zsh script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" -else - _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to convert array-like strings into arrays -# to workaround SH_WORD_SPLIT not being set -_colcon_prefix_zsh_convert_to_array() { - local _listname=$1 - local _dollar="$" - local _split="{=" - local _to_array="(\"$_dollar$_split$_listname}\")" - eval $_listname=$_to_array -} - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -_colcon_prefix_zsh_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - - # get values from variable - eval _values=\"\$$_listname\" - # backup the field separator - _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS" - IFS=":" - # start with the new value - _all_values="$_value" - _contained_value="" - # workaround SH_WORD_SPLIT not being set - _colcon_prefix_zsh_convert_to_array _values - # iterate over existing values in the variable - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - # ignore duplicates of _value - if [ "$_item" = "$_value" ]; then - _contained_value=1 - continue - fi - # keep non-duplicate values - _all_values="$_all_values:$_item" - done - unset _item - if [ -z "$_contained_value" ]; then - if [ -n "$COLCON_TRACE" ]; then - if [ "$_all_values" = "$_value" ]; then - echo "export $_listname=$_value" - else - echo "export $_listname=$_value:\$$_listname" - fi - fi - fi - unset _contained_value - # restore the field separator - IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS" - unset _colcon_prefix_zsh_prepend_unique_value_IFS - # export the updated variable - eval export $_listname=\"$_all_values\" - unset _all_values - unset _values - - unset _value - unset _listname -} - -# add this prefix to the COLCON_PREFIX_PATH -_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX" -unset _colcon_prefix_zsh_prepend_unique_value -unset _colcon_prefix_zsh_convert_to_array - -# check environment variable for custom Python executable -if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then - if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then - echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" - return 1 - fi - _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" -else - # try the Python executable known at configure time - _colcon_python_executable="/usr/bin/python3" - # if it doesn't exist try a fall back - if [ ! -f "$_colcon_python_executable" ]; then - if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then - echo "error: unable to find python3 executable" - return 1 - fi - _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` - fi -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -_colcon_prefix_sh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$1" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# get all commands in topological order -_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)" -unset _colcon_python_executable -if [ -n "$COLCON_TRACE" ]; then - echo "$(declare -f _colcon_prefix_sh_source_script)" - echo "# Execute generated script:" - echo "# <<<" - echo "${_colcon_ordered_commands}" - echo "# >>>" - echo "unset _colcon_prefix_sh_source_script" -fi -eval "${_colcon_ordered_commands}" -unset _colcon_ordered_commands - -unset _colcon_prefix_sh_source_script - -unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/setup.bash b/deploy/robot_ws/install/setup.bash deleted file mode 100644 index a687872..0000000 --- a/deploy/robot_ws/install/setup.bash +++ /dev/null @@ -1,34 +0,0 @@ -# generated from colcon_bash/shell/template/prefix_chain.bash.em - -# This script extends the environment with the environment of other prefix -# paths which were sourced when this file was generated as well as all packages -# contained in this prefix path. - -# function to source another script with conditional trace output -# first argument: the path of the script -_colcon_prefix_chain_bash_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$1" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source chained prefixes -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script -COLCON_CURRENT_PREFIX="/opt/ros/foxy" -_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script -COLCON_CURRENT_PREFIX="/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install" -_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" - -# source this prefix -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script -COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" -_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" - -unset COLCON_CURRENT_PREFIX -unset _colcon_prefix_chain_bash_source_script diff --git a/deploy/robot_ws/install/setup.ps1 b/deploy/robot_ws/install/setup.ps1 deleted file mode 100644 index a2b9119..0000000 --- a/deploy/robot_ws/install/setup.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -# generated from colcon_powershell/shell/template/prefix_chain.ps1.em - -# This script extends the environment with the environment of other prefix -# paths which were sourced when this file was generated as well as all packages -# contained in this prefix path. - -# function to source another script with conditional trace output -# first argument: the path of the script -function _colcon_prefix_chain_powershell_source_script { - param ( - $_colcon_prefix_chain_powershell_source_script_param - ) - # source script with conditional trace output - if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) { - if ($env:COLCON_TRACE) { - echo ". '$_colcon_prefix_chain_powershell_source_script_param'" - } - . "$_colcon_prefix_chain_powershell_source_script_param" - } else { - Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'" - } -} - -# source chained prefixes -_colcon_prefix_chain_powershell_source_script "/opt/ros/foxy\local_setup.ps1" -_colcon_prefix_chain_powershell_source_script "/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install\local_setup.ps1" - -# source this prefix -$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent) -_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1" diff --git a/deploy/robot_ws/install/setup.sh b/deploy/robot_ws/install/setup.sh deleted file mode 100644 index 379a35a..0000000 --- a/deploy/robot_ws/install/setup.sh +++ /dev/null @@ -1,49 +0,0 @@ -# generated from colcon_core/shell/template/prefix_chain.sh.em - -# This script extends the environment with the environment of other prefix -# paths which were sourced when this file was generated as well as all packages -# contained in this prefix path. - -# since a plain shell script can't determine its own path when being sourced -# either use the provided COLCON_CURRENT_PREFIX -# or fall back to the build time prefix (if it exists) -_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/home/unitree/locomotion/Go2Py/deploy/robot_ws/install -if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then - _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then - echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 - unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX - return 1 -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -_colcon_prefix_chain_sh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$1" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source chained prefixes -# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script -COLCON_CURRENT_PREFIX="/opt/ros/foxy" -_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" - -# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script -COLCON_CURRENT_PREFIX="/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install" -_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" - - -# source this prefix -# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script -COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" -_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" - -unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX -unset _colcon_prefix_chain_sh_source_script -unset COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/setup.zsh b/deploy/robot_ws/install/setup.zsh deleted file mode 100644 index de47bbf..0000000 --- a/deploy/robot_ws/install/setup.zsh +++ /dev/null @@ -1,34 +0,0 @@ -# generated from colcon_zsh/shell/template/prefix_chain.zsh.em - -# This script extends the environment with the environment of other prefix -# paths which were sourced when this file was generated as well as all packages -# contained in this prefix path. - -# function to source another script with conditional trace output -# first argument: the path of the script -_colcon_prefix_chain_zsh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$1" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source chained prefixes -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script -COLCON_CURRENT_PREFIX="/opt/ros/foxy" -_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script -COLCON_CURRENT_PREFIX="/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install" -_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" - -# source this prefix -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script -COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" -_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" - -unset COLCON_CURRENT_PREFIX -unset _colcon_prefix_chain_zsh_source_script diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__builder.hpp deleted file mode 100644 index b41c8e6..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__builder.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST__BUILDER_HPP_ - -#include "unitree_api/msg/detail/request__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_Request_binary -{ -public: - explicit Init_Request_binary(::unitree_api::msg::Request & msg) - : msg_(msg) - {} - ::unitree_api::msg::Request binary(::unitree_api::msg::Request::_binary_type arg) - { - msg_.binary = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::Request msg_; -}; - -class Init_Request_parameter -{ -public: - explicit Init_Request_parameter(::unitree_api::msg::Request & msg) - : msg_(msg) - {} - Init_Request_binary parameter(::unitree_api::msg::Request::_parameter_type arg) - { - msg_.parameter = std::move(arg); - return Init_Request_binary(msg_); - } - -private: - ::unitree_api::msg::Request msg_; -}; - -class Init_Request_header -{ -public: - Init_Request_header() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_Request_parameter header(::unitree_api::msg::Request::_header_type arg) - { - msg_.header = std::move(arg); - return Init_Request_parameter(msg_); - } - -private: - ::unitree_api::msg::Request msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::Request>() -{ - return unitree_api::msg::builder::Init_Request_header(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.c deleted file mode 100644 index a815295..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.c +++ /dev/null @@ -1,288 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/request__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `header` -#include "unitree_api/msg/detail/request_header__functions.h" -// Member `parameter` -#include "rosidl_runtime_c/string_functions.h" -// Member `binary` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool -unitree_api__msg__Request__init(unitree_api__msg__Request * msg) -{ - if (!msg) { - return false; - } - // header - if (!unitree_api__msg__RequestHeader__init(&msg->header)) { - unitree_api__msg__Request__fini(msg); - return false; - } - // parameter - if (!rosidl_runtime_c__String__init(&msg->parameter)) { - unitree_api__msg__Request__fini(msg); - return false; - } - // binary - if (!rosidl_runtime_c__uint8__Sequence__init(&msg->binary, 0)) { - unitree_api__msg__Request__fini(msg); - return false; - } - return true; -} - -void -unitree_api__msg__Request__fini(unitree_api__msg__Request * msg) -{ - if (!msg) { - return; - } - // header - unitree_api__msg__RequestHeader__fini(&msg->header); - // parameter - rosidl_runtime_c__String__fini(&msg->parameter); - // binary - rosidl_runtime_c__uint8__Sequence__fini(&msg->binary); -} - -bool -unitree_api__msg__Request__are_equal(const unitree_api__msg__Request * lhs, const unitree_api__msg__Request * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // header - if (!unitree_api__msg__RequestHeader__are_equal( - &(lhs->header), &(rhs->header))) - { - return false; - } - // parameter - if (!rosidl_runtime_c__String__are_equal( - &(lhs->parameter), &(rhs->parameter))) - { - return false; - } - // binary - if (!rosidl_runtime_c__uint8__Sequence__are_equal( - &(lhs->binary), &(rhs->binary))) - { - return false; - } - return true; -} - -bool -unitree_api__msg__Request__copy( - const unitree_api__msg__Request * input, - unitree_api__msg__Request * output) -{ - if (!input || !output) { - return false; - } - // header - if (!unitree_api__msg__RequestHeader__copy( - &(input->header), &(output->header))) - { - return false; - } - // parameter - if (!rosidl_runtime_c__String__copy( - &(input->parameter), &(output->parameter))) - { - return false; - } - // binary - if (!rosidl_runtime_c__uint8__Sequence__copy( - &(input->binary), &(output->binary))) - { - return false; - } - return true; -} - -unitree_api__msg__Request * -unitree_api__msg__Request__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__Request * msg = (unitree_api__msg__Request *)allocator.allocate(sizeof(unitree_api__msg__Request), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__Request)); - bool success = unitree_api__msg__Request__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__Request__destroy(unitree_api__msg__Request * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__Request__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__Request__Sequence__init(unitree_api__msg__Request__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__Request * data = NULL; - - if (size) { - data = (unitree_api__msg__Request *)allocator.zero_allocate(size, sizeof(unitree_api__msg__Request), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__Request__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__Request__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__Request__Sequence__fini(unitree_api__msg__Request__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__Request__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__Request__Sequence * -unitree_api__msg__Request__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__Request__Sequence * array = (unitree_api__msg__Request__Sequence *)allocator.allocate(sizeof(unitree_api__msg__Request__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__Request__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__Request__Sequence__destroy(unitree_api__msg__Request__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__Request__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__Request__Sequence__are_equal(const unitree_api__msg__Request__Sequence * lhs, const unitree_api__msg__Request__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__Request__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__Request__Sequence__copy( - const unitree_api__msg__Request__Sequence * input, - unitree_api__msg__Request__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__Request); - unitree_api__msg__Request * data = - (unitree_api__msg__Request *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__Request__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__Request__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__Request__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.h deleted file mode 100644 index fd22ad0..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/request__struct.h" - -/// Initialize msg/Request message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__Request - * )) before or use - * unitree_api__msg__Request__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Request__init(unitree_api__msg__Request * msg); - -/// Finalize msg/Request message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Request__fini(unitree_api__msg__Request * msg); - -/// Create msg/Request message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__Request__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__Request * -unitree_api__msg__Request__create(); - -/// Destroy msg/Request message. -/** - * It calls - * unitree_api__msg__Request__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Request__destroy(unitree_api__msg__Request * msg); - -/// Check for msg/Request message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Request__are_equal(const unitree_api__msg__Request * lhs, const unitree_api__msg__Request * rhs); - -/// Copy a msg/Request message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Request__copy( - const unitree_api__msg__Request * input, - unitree_api__msg__Request * output); - -/// Initialize array of msg/Request messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__Request__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Request__Sequence__init(unitree_api__msg__Request__Sequence * array, size_t size); - -/// Finalize array of msg/Request messages. -/** - * It calls - * unitree_api__msg__Request__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Request__Sequence__fini(unitree_api__msg__Request__Sequence * array); - -/// Create array of msg/Request messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__Request__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__Request__Sequence * -unitree_api__msg__Request__Sequence__create(size_t size); - -/// Destroy array of msg/Request messages. -/** - * It calls - * unitree_api__msg__Request__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Request__Sequence__destroy(unitree_api__msg__Request__Sequence * array); - -/// Check for msg/Request message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Request__Sequence__are_equal(const unitree_api__msg__Request__Sequence * lhs, const unitree_api__msg__Request__Sequence * rhs); - -/// Copy an array of msg/Request messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Request__Sequence__copy( - const unitree_api__msg__Request__Sequence * input, - unitree_api__msg__Request__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 4765adc..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__Request( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__Request( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, Request)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 1796b89..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/request__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::Request & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::Request & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::Request & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_Request( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, Request)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 084587c..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, Request)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index a880f48..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, Request)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.h deleted file mode 100644 index 5325d3e..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.h +++ /dev/null @@ -1,50 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'header' -#include "unitree_api/msg/detail/request_header__struct.h" -// Member 'parameter' -#include "rosidl_runtime_c/string.h" -// Member 'binary' -#include "rosidl_runtime_c/primitives_sequence.h" - -// Struct defined in msg/Request in the package unitree_api. -typedef struct unitree_api__msg__Request -{ - unitree_api__msg__RequestHeader header; - rosidl_runtime_c__String parameter; - rosidl_runtime_c__uint8__Sequence binary; -} unitree_api__msg__Request; - -// Struct for a sequence of unitree_api__msg__Request. -typedef struct unitree_api__msg__Request__Sequence -{ - unitree_api__msg__Request * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__Request__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.hpp deleted file mode 100644 index d6ca5ea..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__struct.hpp +++ /dev/null @@ -1,160 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'header' -#include "unitree_api/msg/detail/request_header__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__Request __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__Request __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct Request_ -{ - using Type = Request_; - - explicit Request_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : header(_init) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->parameter = ""; - } - } - - explicit Request_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : header(_alloc, _init), - parameter(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->parameter = ""; - } - } - - // field types and members - using _header_type = - unitree_api::msg::RequestHeader_; - _header_type header; - using _parameter_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _parameter_type parameter; - using _binary_type = - std::vector::other>; - _binary_type binary; - - // setters for named parameter idiom - Type & set__header( - const unitree_api::msg::RequestHeader_ & _arg) - { - this->header = _arg; - return *this; - } - Type & set__parameter( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->parameter = _arg; - return *this; - } - Type & set__binary( - const std::vector::other> & _arg) - { - this->binary = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::Request_ *; - using ConstRawPtr = - const unitree_api::msg::Request_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__Request - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__Request - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const Request_ & other) const - { - if (this->header != other.header) { - return false; - } - if (this->parameter != other.parameter) { - return false; - } - if (this->binary != other.binary) { - return false; - } - return true; - } - bool operator!=(const Request_ & other) const - { - return !this->operator==(other); - } -}; // struct Request_ - -// alias to use template instance with default allocator -using Request = - unitree_api::msg::Request_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__traits.hpp deleted file mode 100644 index 205fa6f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__traits.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST__TRAITS_HPP_ - -#include "unitree_api/msg/detail/request__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'header' -#include "unitree_api/msg/detail/request_header__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::Request"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/Request"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.c deleted file mode 100644 index 9e0cfdf..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.c +++ /dev/null @@ -1,123 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/request__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/request__functions.h" -#include "unitree_api/msg/detail/request__struct.h" - - -// Include directives for member types -// Member `header` -#include "unitree_api/msg/request_header.h" -// Member `header` -#include "unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_c.h" -// Member `parameter` -#include "rosidl_runtime_c/string_functions.h" -// Member `binary` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void Request__rosidl_typesupport_introspection_c__Request_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__Request__init(message_memory); -} - -void Request__rosidl_typesupport_introspection_c__Request_fini_function(void * message_memory) -{ - unitree_api__msg__Request__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember Request__rosidl_typesupport_introspection_c__Request_message_member_array[3] = { - { - "header", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__Request, header), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "parameter", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__Request, parameter), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "binary", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__Request, binary), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers Request__rosidl_typesupport_introspection_c__Request_message_members = { - "unitree_api__msg", // message namespace - "Request", // message name - 3, // number of fields - sizeof(unitree_api__msg__Request), - Request__rosidl_typesupport_introspection_c__Request_message_member_array, // message members - Request__rosidl_typesupport_introspection_c__Request_init_function, // function to initialize message memory (memory has to be allocated) - Request__rosidl_typesupport_introspection_c__Request_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t Request__rosidl_typesupport_introspection_c__Request_message_type_support_handle = { - 0, - &Request__rosidl_typesupport_introspection_c__Request_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, Request)() { - Request__rosidl_typesupport_introspection_c__Request_message_member_array[0].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestHeader)(); - if (!Request__rosidl_typesupport_introspection_c__Request_message_type_support_handle.typesupport_identifier) { - Request__rosidl_typesupport_introspection_c__Request_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &Request__rosidl_typesupport_introspection_c__Request_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.cpp deleted file mode 100644 index fb8fc8c..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/request__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void Request_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::Request(_init); -} - -void Request_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~Request(); -} - -size_t size_function__Request__binary(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__Request__binary(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__Request__binary(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__Request__binary(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember Request_message_member_array[3] = { - { - "header", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::Request, header), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "parameter", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::Request, parameter), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "binary", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::Request, binary), // bytes offset in struct - nullptr, // default value - size_function__Request__binary, // size() function pointer - get_const_function__Request__binary, // get_const(index) function pointer - get_function__Request__binary, // get(index) function pointer - resize_function__Request__binary // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers Request_message_members = { - "unitree_api::msg", // message namespace - "Request", // message name - 3, // number of fields - sizeof(unitree_api::msg::Request), - Request_message_member_array, // message members - Request_init_function, // function to initialize message memory (memory has to be allocated) - Request_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t Request_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &Request_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::Request_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, Request)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::Request_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.h deleted file mode 100644 index d662fff..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - Request -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.hpp deleted file mode 100644 index 02a5188..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - Request -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__builder.hpp deleted file mode 100644 index 193c4b0..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__builder.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__BUILDER_HPP_ - -#include "unitree_api/msg/detail/request_header__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_RequestHeader_policy -{ -public: - explicit Init_RequestHeader_policy(::unitree_api::msg::RequestHeader & msg) - : msg_(msg) - {} - ::unitree_api::msg::RequestHeader policy(::unitree_api::msg::RequestHeader::_policy_type arg) - { - msg_.policy = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::RequestHeader msg_; -}; - -class Init_RequestHeader_lease -{ -public: - explicit Init_RequestHeader_lease(::unitree_api::msg::RequestHeader & msg) - : msg_(msg) - {} - Init_RequestHeader_policy lease(::unitree_api::msg::RequestHeader::_lease_type arg) - { - msg_.lease = std::move(arg); - return Init_RequestHeader_policy(msg_); - } - -private: - ::unitree_api::msg::RequestHeader msg_; -}; - -class Init_RequestHeader_identity -{ -public: - Init_RequestHeader_identity() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_RequestHeader_lease identity(::unitree_api::msg::RequestHeader::_identity_type arg) - { - msg_.identity = std::move(arg); - return Init_RequestHeader_lease(msg_); - } - -private: - ::unitree_api::msg::RequestHeader msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::RequestHeader>() -{ - return unitree_api::msg::builder::Init_RequestHeader_identity(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.c deleted file mode 100644 index 8025f44..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.c +++ /dev/null @@ -1,288 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/request_header__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `identity` -#include "unitree_api/msg/detail/request_identity__functions.h" -// Member `lease` -#include "unitree_api/msg/detail/request_lease__functions.h" -// Member `policy` -#include "unitree_api/msg/detail/request_policy__functions.h" - -bool -unitree_api__msg__RequestHeader__init(unitree_api__msg__RequestHeader * msg) -{ - if (!msg) { - return false; - } - // identity - if (!unitree_api__msg__RequestIdentity__init(&msg->identity)) { - unitree_api__msg__RequestHeader__fini(msg); - return false; - } - // lease - if (!unitree_api__msg__RequestLease__init(&msg->lease)) { - unitree_api__msg__RequestHeader__fini(msg); - return false; - } - // policy - if (!unitree_api__msg__RequestPolicy__init(&msg->policy)) { - unitree_api__msg__RequestHeader__fini(msg); - return false; - } - return true; -} - -void -unitree_api__msg__RequestHeader__fini(unitree_api__msg__RequestHeader * msg) -{ - if (!msg) { - return; - } - // identity - unitree_api__msg__RequestIdentity__fini(&msg->identity); - // lease - unitree_api__msg__RequestLease__fini(&msg->lease); - // policy - unitree_api__msg__RequestPolicy__fini(&msg->policy); -} - -bool -unitree_api__msg__RequestHeader__are_equal(const unitree_api__msg__RequestHeader * lhs, const unitree_api__msg__RequestHeader * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // identity - if (!unitree_api__msg__RequestIdentity__are_equal( - &(lhs->identity), &(rhs->identity))) - { - return false; - } - // lease - if (!unitree_api__msg__RequestLease__are_equal( - &(lhs->lease), &(rhs->lease))) - { - return false; - } - // policy - if (!unitree_api__msg__RequestPolicy__are_equal( - &(lhs->policy), &(rhs->policy))) - { - return false; - } - return true; -} - -bool -unitree_api__msg__RequestHeader__copy( - const unitree_api__msg__RequestHeader * input, - unitree_api__msg__RequestHeader * output) -{ - if (!input || !output) { - return false; - } - // identity - if (!unitree_api__msg__RequestIdentity__copy( - &(input->identity), &(output->identity))) - { - return false; - } - // lease - if (!unitree_api__msg__RequestLease__copy( - &(input->lease), &(output->lease))) - { - return false; - } - // policy - if (!unitree_api__msg__RequestPolicy__copy( - &(input->policy), &(output->policy))) - { - return false; - } - return true; -} - -unitree_api__msg__RequestHeader * -unitree_api__msg__RequestHeader__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestHeader * msg = (unitree_api__msg__RequestHeader *)allocator.allocate(sizeof(unitree_api__msg__RequestHeader), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__RequestHeader)); - bool success = unitree_api__msg__RequestHeader__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__RequestHeader__destroy(unitree_api__msg__RequestHeader * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__RequestHeader__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__RequestHeader__Sequence__init(unitree_api__msg__RequestHeader__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestHeader * data = NULL; - - if (size) { - data = (unitree_api__msg__RequestHeader *)allocator.zero_allocate(size, sizeof(unitree_api__msg__RequestHeader), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__RequestHeader__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__RequestHeader__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__RequestHeader__Sequence__fini(unitree_api__msg__RequestHeader__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__RequestHeader__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__RequestHeader__Sequence * -unitree_api__msg__RequestHeader__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestHeader__Sequence * array = (unitree_api__msg__RequestHeader__Sequence *)allocator.allocate(sizeof(unitree_api__msg__RequestHeader__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__RequestHeader__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__RequestHeader__Sequence__destroy(unitree_api__msg__RequestHeader__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__RequestHeader__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__RequestHeader__Sequence__are_equal(const unitree_api__msg__RequestHeader__Sequence * lhs, const unitree_api__msg__RequestHeader__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__RequestHeader__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__RequestHeader__Sequence__copy( - const unitree_api__msg__RequestHeader__Sequence * input, - unitree_api__msg__RequestHeader__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__RequestHeader); - unitree_api__msg__RequestHeader * data = - (unitree_api__msg__RequestHeader *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__RequestHeader__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__RequestHeader__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__RequestHeader__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.h deleted file mode 100644 index 1c6c6b8..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/request_header__struct.h" - -/// Initialize msg/RequestHeader message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__RequestHeader - * )) before or use - * unitree_api__msg__RequestHeader__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestHeader__init(unitree_api__msg__RequestHeader * msg); - -/// Finalize msg/RequestHeader message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestHeader__fini(unitree_api__msg__RequestHeader * msg); - -/// Create msg/RequestHeader message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__RequestHeader__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestHeader * -unitree_api__msg__RequestHeader__create(); - -/// Destroy msg/RequestHeader message. -/** - * It calls - * unitree_api__msg__RequestHeader__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestHeader__destroy(unitree_api__msg__RequestHeader * msg); - -/// Check for msg/RequestHeader message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestHeader__are_equal(const unitree_api__msg__RequestHeader * lhs, const unitree_api__msg__RequestHeader * rhs); - -/// Copy a msg/RequestHeader message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestHeader__copy( - const unitree_api__msg__RequestHeader * input, - unitree_api__msg__RequestHeader * output); - -/// Initialize array of msg/RequestHeader messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__RequestHeader__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestHeader__Sequence__init(unitree_api__msg__RequestHeader__Sequence * array, size_t size); - -/// Finalize array of msg/RequestHeader messages. -/** - * It calls - * unitree_api__msg__RequestHeader__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestHeader__Sequence__fini(unitree_api__msg__RequestHeader__Sequence * array); - -/// Create array of msg/RequestHeader messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__RequestHeader__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestHeader__Sequence * -unitree_api__msg__RequestHeader__Sequence__create(size_t size); - -/// Destroy array of msg/RequestHeader messages. -/** - * It calls - * unitree_api__msg__RequestHeader__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestHeader__Sequence__destroy(unitree_api__msg__RequestHeader__Sequence * array); - -/// Check for msg/RequestHeader message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestHeader__Sequence__are_equal(const unitree_api__msg__RequestHeader__Sequence * lhs, const unitree_api__msg__RequestHeader__Sequence * rhs); - -/// Copy an array of msg/RequestHeader messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestHeader__Sequence__copy( - const unitree_api__msg__RequestHeader__Sequence * input, - unitree_api__msg__RequestHeader__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index ad8b061..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__RequestHeader( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__RequestHeader( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, RequestHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 2da1080..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/request_header__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::RequestHeader & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::RequestHeader & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::RequestHeader & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_RequestHeader( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, RequestHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 4ced6ee..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 050bc93..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.h deleted file mode 100644 index 974ea38..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.h +++ /dev/null @@ -1,50 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'identity' -#include "unitree_api/msg/detail/request_identity__struct.h" -// Member 'lease' -#include "unitree_api/msg/detail/request_lease__struct.h" -// Member 'policy' -#include "unitree_api/msg/detail/request_policy__struct.h" - -// Struct defined in msg/RequestHeader in the package unitree_api. -typedef struct unitree_api__msg__RequestHeader -{ - unitree_api__msg__RequestIdentity identity; - unitree_api__msg__RequestLease lease; - unitree_api__msg__RequestPolicy policy; -} unitree_api__msg__RequestHeader; - -// Struct for a sequence of unitree_api__msg__RequestHeader. -typedef struct unitree_api__msg__RequestHeader__Sequence -{ - unitree_api__msg__RequestHeader * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__RequestHeader__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.hpp deleted file mode 100644 index 13ed133..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__struct.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'identity' -#include "unitree_api/msg/detail/request_identity__struct.hpp" -// Member 'lease' -#include "unitree_api/msg/detail/request_lease__struct.hpp" -// Member 'policy' -#include "unitree_api/msg/detail/request_policy__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__RequestHeader __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__RequestHeader __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct RequestHeader_ -{ - using Type = RequestHeader_; - - explicit RequestHeader_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : identity(_init), - lease(_init), - policy(_init) - { - (void)_init; - } - - explicit RequestHeader_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : identity(_alloc, _init), - lease(_alloc, _init), - policy(_alloc, _init) - { - (void)_init; - } - - // field types and members - using _identity_type = - unitree_api::msg::RequestIdentity_; - _identity_type identity; - using _lease_type = - unitree_api::msg::RequestLease_; - _lease_type lease; - using _policy_type = - unitree_api::msg::RequestPolicy_; - _policy_type policy; - - // setters for named parameter idiom - Type & set__identity( - const unitree_api::msg::RequestIdentity_ & _arg) - { - this->identity = _arg; - return *this; - } - Type & set__lease( - const unitree_api::msg::RequestLease_ & _arg) - { - this->lease = _arg; - return *this; - } - Type & set__policy( - const unitree_api::msg::RequestPolicy_ & _arg) - { - this->policy = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::RequestHeader_ *; - using ConstRawPtr = - const unitree_api::msg::RequestHeader_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__RequestHeader - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__RequestHeader - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const RequestHeader_ & other) const - { - if (this->identity != other.identity) { - return false; - } - if (this->lease != other.lease) { - return false; - } - if (this->policy != other.policy) { - return false; - } - return true; - } - bool operator!=(const RequestHeader_ & other) const - { - return !this->operator==(other); - } -}; // struct RequestHeader_ - -// alias to use template instance with default allocator -using RequestHeader = - unitree_api::msg::RequestHeader_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__traits.hpp deleted file mode 100644 index 32a9b1f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__traits.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TRAITS_HPP_ - -#include "unitree_api/msg/detail/request_header__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'identity' -#include "unitree_api/msg/detail/request_identity__traits.hpp" -// Member 'lease' -#include "unitree_api/msg/detail/request_lease__traits.hpp" -// Member 'policy' -#include "unitree_api/msg/detail/request_policy__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::RequestHeader"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/RequestHeader"; -} - -template<> -struct has_fixed_size - : std::integral_constant::value && has_fixed_size::value && has_fixed_size::value> {}; - -template<> -struct has_bounded_size - : std::integral_constant::value && has_bounded_size::value && has_bounded_size::value> {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.c deleted file mode 100644 index 2181cd3..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.c +++ /dev/null @@ -1,131 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/request_header__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/request_header__functions.h" -#include "unitree_api/msg/detail/request_header__struct.h" - - -// Include directives for member types -// Member `identity` -#include "unitree_api/msg/request_identity.h" -// Member `identity` -#include "unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_c.h" -// Member `lease` -#include "unitree_api/msg/request_lease.h" -// Member `lease` -#include "unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_c.h" -// Member `policy` -#include "unitree_api/msg/request_policy.h" -// Member `policy` -#include "unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_c.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__RequestHeader__init(message_memory); -} - -void RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_fini_function(void * message_memory) -{ - unitree_api__msg__RequestHeader__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_member_array[3] = { - { - "identity", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestHeader, identity), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "lease", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestHeader, lease), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "policy", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestHeader, policy), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_members = { - "unitree_api__msg", // message namespace - "RequestHeader", // message name - 3, // number of fields - sizeof(unitree_api__msg__RequestHeader), - RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_member_array, // message members - RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_init_function, // function to initialize message memory (memory has to be allocated) - RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_type_support_handle = { - 0, - &RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestHeader)() { - RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_member_array[0].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestIdentity)(); - RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_member_array[1].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestLease)(); - RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_member_array[2].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestPolicy)(); - if (!RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_type_support_handle.typesupport_identifier) { - RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &RequestHeader__rosidl_typesupport_introspection_c__RequestHeader_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.cpp deleted file mode 100644 index bca9335..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.cpp +++ /dev/null @@ -1,137 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/request_header__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void RequestHeader_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::RequestHeader(_init); -} - -void RequestHeader_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~RequestHeader(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember RequestHeader_message_member_array[3] = { - { - "identity", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestHeader, identity), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "lease", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestHeader, lease), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "policy", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestHeader, policy), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers RequestHeader_message_members = { - "unitree_api::msg", // message namespace - "RequestHeader", // message name - 3, // number of fields - sizeof(unitree_api::msg::RequestHeader), - RequestHeader_message_member_array, // message members - RequestHeader_init_function, // function to initialize message memory (memory has to be allocated) - RequestHeader_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t RequestHeader_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &RequestHeader_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestHeader_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestHeader)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestHeader_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.h deleted file mode 100644 index 413960d..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - RequestHeader -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.hpp deleted file mode 100644 index 1209f3a..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_header__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - RequestHeader -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_HEADER__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__builder.hpp deleted file mode 100644 index 6b1652f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__BUILDER_HPP_ - -#include "unitree_api/msg/detail/request_identity__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_RequestIdentity_api_id -{ -public: - explicit Init_RequestIdentity_api_id(::unitree_api::msg::RequestIdentity & msg) - : msg_(msg) - {} - ::unitree_api::msg::RequestIdentity api_id(::unitree_api::msg::RequestIdentity::_api_id_type arg) - { - msg_.api_id = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::RequestIdentity msg_; -}; - -class Init_RequestIdentity_id -{ -public: - Init_RequestIdentity_id() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_RequestIdentity_api_id id(::unitree_api::msg::RequestIdentity::_id_type arg) - { - msg_.id = std::move(arg); - return Init_RequestIdentity_api_id(msg_); - } - -private: - ::unitree_api::msg::RequestIdentity msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::RequestIdentity>() -{ - return unitree_api::msg::builder::Init_RequestIdentity_id(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.c deleted file mode 100644 index 50b7ce6..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.c +++ /dev/null @@ -1,239 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/request_identity__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_api__msg__RequestIdentity__init(unitree_api__msg__RequestIdentity * msg) -{ - if (!msg) { - return false; - } - // id - // api_id - return true; -} - -void -unitree_api__msg__RequestIdentity__fini(unitree_api__msg__RequestIdentity * msg) -{ - if (!msg) { - return; - } - // id - // api_id -} - -bool -unitree_api__msg__RequestIdentity__are_equal(const unitree_api__msg__RequestIdentity * lhs, const unitree_api__msg__RequestIdentity * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // id - if (lhs->id != rhs->id) { - return false; - } - // api_id - if (lhs->api_id != rhs->api_id) { - return false; - } - return true; -} - -bool -unitree_api__msg__RequestIdentity__copy( - const unitree_api__msg__RequestIdentity * input, - unitree_api__msg__RequestIdentity * output) -{ - if (!input || !output) { - return false; - } - // id - output->id = input->id; - // api_id - output->api_id = input->api_id; - return true; -} - -unitree_api__msg__RequestIdentity * -unitree_api__msg__RequestIdentity__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestIdentity * msg = (unitree_api__msg__RequestIdentity *)allocator.allocate(sizeof(unitree_api__msg__RequestIdentity), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__RequestIdentity)); - bool success = unitree_api__msg__RequestIdentity__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__RequestIdentity__destroy(unitree_api__msg__RequestIdentity * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__RequestIdentity__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__RequestIdentity__Sequence__init(unitree_api__msg__RequestIdentity__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestIdentity * data = NULL; - - if (size) { - data = (unitree_api__msg__RequestIdentity *)allocator.zero_allocate(size, sizeof(unitree_api__msg__RequestIdentity), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__RequestIdentity__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__RequestIdentity__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__RequestIdentity__Sequence__fini(unitree_api__msg__RequestIdentity__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__RequestIdentity__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__RequestIdentity__Sequence * -unitree_api__msg__RequestIdentity__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestIdentity__Sequence * array = (unitree_api__msg__RequestIdentity__Sequence *)allocator.allocate(sizeof(unitree_api__msg__RequestIdentity__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__RequestIdentity__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__RequestIdentity__Sequence__destroy(unitree_api__msg__RequestIdentity__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__RequestIdentity__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__RequestIdentity__Sequence__are_equal(const unitree_api__msg__RequestIdentity__Sequence * lhs, const unitree_api__msg__RequestIdentity__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__RequestIdentity__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__RequestIdentity__Sequence__copy( - const unitree_api__msg__RequestIdentity__Sequence * input, - unitree_api__msg__RequestIdentity__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__RequestIdentity); - unitree_api__msg__RequestIdentity * data = - (unitree_api__msg__RequestIdentity *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__RequestIdentity__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__RequestIdentity__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__RequestIdentity__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.h deleted file mode 100644 index fc84c7d..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/request_identity__struct.h" - -/// Initialize msg/RequestIdentity message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__RequestIdentity - * )) before or use - * unitree_api__msg__RequestIdentity__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestIdentity__init(unitree_api__msg__RequestIdentity * msg); - -/// Finalize msg/RequestIdentity message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestIdentity__fini(unitree_api__msg__RequestIdentity * msg); - -/// Create msg/RequestIdentity message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__RequestIdentity__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestIdentity * -unitree_api__msg__RequestIdentity__create(); - -/// Destroy msg/RequestIdentity message. -/** - * It calls - * unitree_api__msg__RequestIdentity__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestIdentity__destroy(unitree_api__msg__RequestIdentity * msg); - -/// Check for msg/RequestIdentity message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestIdentity__are_equal(const unitree_api__msg__RequestIdentity * lhs, const unitree_api__msg__RequestIdentity * rhs); - -/// Copy a msg/RequestIdentity message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestIdentity__copy( - const unitree_api__msg__RequestIdentity * input, - unitree_api__msg__RequestIdentity * output); - -/// Initialize array of msg/RequestIdentity messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__RequestIdentity__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestIdentity__Sequence__init(unitree_api__msg__RequestIdentity__Sequence * array, size_t size); - -/// Finalize array of msg/RequestIdentity messages. -/** - * It calls - * unitree_api__msg__RequestIdentity__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestIdentity__Sequence__fini(unitree_api__msg__RequestIdentity__Sequence * array); - -/// Create array of msg/RequestIdentity messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__RequestIdentity__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestIdentity__Sequence * -unitree_api__msg__RequestIdentity__Sequence__create(size_t size); - -/// Destroy array of msg/RequestIdentity messages. -/** - * It calls - * unitree_api__msg__RequestIdentity__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestIdentity__Sequence__destroy(unitree_api__msg__RequestIdentity__Sequence * array); - -/// Check for msg/RequestIdentity message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestIdentity__Sequence__are_equal(const unitree_api__msg__RequestIdentity__Sequence * lhs, const unitree_api__msg__RequestIdentity__Sequence * rhs); - -/// Copy an array of msg/RequestIdentity messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestIdentity__Sequence__copy( - const unitree_api__msg__RequestIdentity__Sequence * input, - unitree_api__msg__RequestIdentity__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index dd273e9..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__RequestIdentity( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__RequestIdentity( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, RequestIdentity)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index c33157f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/request_identity__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::RequestIdentity & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::RequestIdentity & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::RequestIdentity & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_RequestIdentity( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, RequestIdentity)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 40c528b..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestIdentity)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index c997198..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestIdentity)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.h deleted file mode 100644 index 61cb375..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.h +++ /dev/null @@ -1,41 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/RequestIdentity in the package unitree_api. -typedef struct unitree_api__msg__RequestIdentity -{ - int64_t id; - int64_t api_id; -} unitree_api__msg__RequestIdentity; - -// Struct for a sequence of unitree_api__msg__RequestIdentity. -typedef struct unitree_api__msg__RequestIdentity__Sequence -{ - unitree_api__msg__RequestIdentity * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__RequestIdentity__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.hpp deleted file mode 100644 index b5d44ed..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__struct.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__RequestIdentity __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__RequestIdentity __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct RequestIdentity_ -{ - using Type = RequestIdentity_; - - explicit RequestIdentity_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->id = 0ll; - this->api_id = 0ll; - } - } - - explicit RequestIdentity_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->id = 0ll; - this->api_id = 0ll; - } - } - - // field types and members - using _id_type = - int64_t; - _id_type id; - using _api_id_type = - int64_t; - _api_id_type api_id; - - // setters for named parameter idiom - Type & set__id( - const int64_t & _arg) - { - this->id = _arg; - return *this; - } - Type & set__api_id( - const int64_t & _arg) - { - this->api_id = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::RequestIdentity_ *; - using ConstRawPtr = - const unitree_api::msg::RequestIdentity_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__RequestIdentity - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__RequestIdentity - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const RequestIdentity_ & other) const - { - if (this->id != other.id) { - return false; - } - if (this->api_id != other.api_id) { - return false; - } - return true; - } - bool operator!=(const RequestIdentity_ & other) const - { - return !this->operator==(other); - } -}; // struct RequestIdentity_ - -// alias to use template instance with default allocator -using RequestIdentity = - unitree_api::msg::RequestIdentity_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__traits.hpp deleted file mode 100644 index 67968dc..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TRAITS_HPP_ - -#include "unitree_api/msg/detail/request_identity__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::RequestIdentity"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/RequestIdentity"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.c deleted file mode 100644 index e0863ab..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.c +++ /dev/null @@ -1,96 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/request_identity__functions.h" -#include "unitree_api/msg/detail/request_identity__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__RequestIdentity__init(message_memory); -} - -void RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_fini_function(void * message_memory) -{ - unitree_api__msg__RequestIdentity__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_member_array[2] = { - { - "id", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT64, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestIdentity, id), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "api_id", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT64, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestIdentity, api_id), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_members = { - "unitree_api__msg", // message namespace - "RequestIdentity", // message name - 2, // number of fields - sizeof(unitree_api__msg__RequestIdentity), - RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_member_array, // message members - RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_init_function, // function to initialize message memory (memory has to be allocated) - RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_type_support_handle = { - 0, - &RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestIdentity)() { - if (!RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_type_support_handle.typesupport_identifier) { - RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &RequestIdentity__rosidl_typesupport_introspection_c__RequestIdentity_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.cpp deleted file mode 100644 index 4040655..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/request_identity__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void RequestIdentity_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::RequestIdentity(_init); -} - -void RequestIdentity_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~RequestIdentity(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember RequestIdentity_message_member_array[2] = { - { - "id", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT64, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestIdentity, id), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "api_id", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT64, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestIdentity, api_id), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers RequestIdentity_message_members = { - "unitree_api::msg", // message namespace - "RequestIdentity", // message name - 2, // number of fields - sizeof(unitree_api::msg::RequestIdentity), - RequestIdentity_message_member_array, // message members - RequestIdentity_init_function, // function to initialize message memory (memory has to be allocated) - RequestIdentity_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t RequestIdentity_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &RequestIdentity_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestIdentity_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestIdentity)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestIdentity_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.h deleted file mode 100644 index 1e0dae5..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - RequestIdentity -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.hpp deleted file mode 100644 index 760a84e..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_identity__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - RequestIdentity -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_IDENTITY__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__builder.hpp deleted file mode 100644 index e1a77fc..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__builder.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__BUILDER_HPP_ - -#include "unitree_api/msg/detail/request_lease__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_RequestLease_id -{ -public: - Init_RequestLease_id() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - ::unitree_api::msg::RequestLease id(::unitree_api::msg::RequestLease::_id_type arg) - { - msg_.id = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::RequestLease msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::RequestLease>() -{ - return unitree_api::msg::builder::Init_RequestLease_id(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.c deleted file mode 100644 index 101bb8e..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.c +++ /dev/null @@ -1,231 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/request_lease__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_api__msg__RequestLease__init(unitree_api__msg__RequestLease * msg) -{ - if (!msg) { - return false; - } - // id - return true; -} - -void -unitree_api__msg__RequestLease__fini(unitree_api__msg__RequestLease * msg) -{ - if (!msg) { - return; - } - // id -} - -bool -unitree_api__msg__RequestLease__are_equal(const unitree_api__msg__RequestLease * lhs, const unitree_api__msg__RequestLease * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // id - if (lhs->id != rhs->id) { - return false; - } - return true; -} - -bool -unitree_api__msg__RequestLease__copy( - const unitree_api__msg__RequestLease * input, - unitree_api__msg__RequestLease * output) -{ - if (!input || !output) { - return false; - } - // id - output->id = input->id; - return true; -} - -unitree_api__msg__RequestLease * -unitree_api__msg__RequestLease__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestLease * msg = (unitree_api__msg__RequestLease *)allocator.allocate(sizeof(unitree_api__msg__RequestLease), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__RequestLease)); - bool success = unitree_api__msg__RequestLease__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__RequestLease__destroy(unitree_api__msg__RequestLease * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__RequestLease__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__RequestLease__Sequence__init(unitree_api__msg__RequestLease__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestLease * data = NULL; - - if (size) { - data = (unitree_api__msg__RequestLease *)allocator.zero_allocate(size, sizeof(unitree_api__msg__RequestLease), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__RequestLease__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__RequestLease__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__RequestLease__Sequence__fini(unitree_api__msg__RequestLease__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__RequestLease__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__RequestLease__Sequence * -unitree_api__msg__RequestLease__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestLease__Sequence * array = (unitree_api__msg__RequestLease__Sequence *)allocator.allocate(sizeof(unitree_api__msg__RequestLease__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__RequestLease__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__RequestLease__Sequence__destroy(unitree_api__msg__RequestLease__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__RequestLease__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__RequestLease__Sequence__are_equal(const unitree_api__msg__RequestLease__Sequence * lhs, const unitree_api__msg__RequestLease__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__RequestLease__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__RequestLease__Sequence__copy( - const unitree_api__msg__RequestLease__Sequence * input, - unitree_api__msg__RequestLease__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__RequestLease); - unitree_api__msg__RequestLease * data = - (unitree_api__msg__RequestLease *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__RequestLease__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__RequestLease__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__RequestLease__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.h deleted file mode 100644 index 50d8c29..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/request_lease__struct.h" - -/// Initialize msg/RequestLease message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__RequestLease - * )) before or use - * unitree_api__msg__RequestLease__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestLease__init(unitree_api__msg__RequestLease * msg); - -/// Finalize msg/RequestLease message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestLease__fini(unitree_api__msg__RequestLease * msg); - -/// Create msg/RequestLease message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__RequestLease__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestLease * -unitree_api__msg__RequestLease__create(); - -/// Destroy msg/RequestLease message. -/** - * It calls - * unitree_api__msg__RequestLease__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestLease__destroy(unitree_api__msg__RequestLease * msg); - -/// Check for msg/RequestLease message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestLease__are_equal(const unitree_api__msg__RequestLease * lhs, const unitree_api__msg__RequestLease * rhs); - -/// Copy a msg/RequestLease message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestLease__copy( - const unitree_api__msg__RequestLease * input, - unitree_api__msg__RequestLease * output); - -/// Initialize array of msg/RequestLease messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__RequestLease__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestLease__Sequence__init(unitree_api__msg__RequestLease__Sequence * array, size_t size); - -/// Finalize array of msg/RequestLease messages. -/** - * It calls - * unitree_api__msg__RequestLease__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestLease__Sequence__fini(unitree_api__msg__RequestLease__Sequence * array); - -/// Create array of msg/RequestLease messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__RequestLease__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestLease__Sequence * -unitree_api__msg__RequestLease__Sequence__create(size_t size); - -/// Destroy array of msg/RequestLease messages. -/** - * It calls - * unitree_api__msg__RequestLease__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestLease__Sequence__destroy(unitree_api__msg__RequestLease__Sequence * array); - -/// Check for msg/RequestLease message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestLease__Sequence__are_equal(const unitree_api__msg__RequestLease__Sequence * lhs, const unitree_api__msg__RequestLease__Sequence * rhs); - -/// Copy an array of msg/RequestLease messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestLease__Sequence__copy( - const unitree_api__msg__RequestLease__Sequence * input, - unitree_api__msg__RequestLease__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 6f33d15..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__RequestLease( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__RequestLease( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, RequestLease)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index c5cbd21..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/request_lease__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::RequestLease & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::RequestLease & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::RequestLease & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_RequestLease( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, RequestLease)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 1fc3f11..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestLease)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 1780367..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestLease)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.h deleted file mode 100644 index bdc3174..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.h +++ /dev/null @@ -1,40 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/RequestLease in the package unitree_api. -typedef struct unitree_api__msg__RequestLease -{ - int64_t id; -} unitree_api__msg__RequestLease; - -// Struct for a sequence of unitree_api__msg__RequestLease. -typedef struct unitree_api__msg__RequestLease__Sequence -{ - unitree_api__msg__RequestLease * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__RequestLease__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.hpp deleted file mode 100644 index f07dd09..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__struct.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__RequestLease __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__RequestLease __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct RequestLease_ -{ - using Type = RequestLease_; - - explicit RequestLease_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->id = 0ll; - } - } - - explicit RequestLease_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->id = 0ll; - } - } - - // field types and members - using _id_type = - int64_t; - _id_type id; - - // setters for named parameter idiom - Type & set__id( - const int64_t & _arg) - { - this->id = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::RequestLease_ *; - using ConstRawPtr = - const unitree_api::msg::RequestLease_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__RequestLease - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__RequestLease - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const RequestLease_ & other) const - { - if (this->id != other.id) { - return false; - } - return true; - } - bool operator!=(const RequestLease_ & other) const - { - return !this->operator==(other); - } -}; // struct RequestLease_ - -// alias to use template instance with default allocator -using RequestLease = - unitree_api::msg::RequestLease_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__traits.hpp deleted file mode 100644 index 2bc3ad2..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TRAITS_HPP_ - -#include "unitree_api/msg/detail/request_lease__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::RequestLease"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/RequestLease"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.c deleted file mode 100644 index 3e2e1c3..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.c +++ /dev/null @@ -1,81 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/request_lease__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/request_lease__functions.h" -#include "unitree_api/msg/detail/request_lease__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void RequestLease__rosidl_typesupport_introspection_c__RequestLease_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__RequestLease__init(message_memory); -} - -void RequestLease__rosidl_typesupport_introspection_c__RequestLease_fini_function(void * message_memory) -{ - unitree_api__msg__RequestLease__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_member_array[1] = { - { - "id", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT64, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestLease, id), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_members = { - "unitree_api__msg", // message namespace - "RequestLease", // message name - 1, // number of fields - sizeof(unitree_api__msg__RequestLease), - RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_member_array, // message members - RequestLease__rosidl_typesupport_introspection_c__RequestLease_init_function, // function to initialize message memory (memory has to be allocated) - RequestLease__rosidl_typesupport_introspection_c__RequestLease_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_type_support_handle = { - 0, - &RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestLease)() { - if (!RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_type_support_handle.typesupport_identifier) { - RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &RequestLease__rosidl_typesupport_introspection_c__RequestLease_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.cpp deleted file mode 100644 index 0fb2579..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/request_lease__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void RequestLease_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::RequestLease(_init); -} - -void RequestLease_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~RequestLease(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember RequestLease_message_member_array[1] = { - { - "id", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT64, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestLease, id), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers RequestLease_message_members = { - "unitree_api::msg", // message namespace - "RequestLease", // message name - 1, // number of fields - sizeof(unitree_api::msg::RequestLease), - RequestLease_message_member_array, // message members - RequestLease_init_function, // function to initialize message memory (memory has to be allocated) - RequestLease_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t RequestLease_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &RequestLease_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestLease_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestLease)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestLease_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.h deleted file mode 100644 index 226b055..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - RequestLease -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.hpp deleted file mode 100644 index a5a577a..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_lease__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - RequestLease -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_LEASE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__builder.hpp deleted file mode 100644 index a84b681..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__BUILDER_HPP_ - -#include "unitree_api/msg/detail/request_policy__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_RequestPolicy_noreply -{ -public: - explicit Init_RequestPolicy_noreply(::unitree_api::msg::RequestPolicy & msg) - : msg_(msg) - {} - ::unitree_api::msg::RequestPolicy noreply(::unitree_api::msg::RequestPolicy::_noreply_type arg) - { - msg_.noreply = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::RequestPolicy msg_; -}; - -class Init_RequestPolicy_priority -{ -public: - Init_RequestPolicy_priority() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_RequestPolicy_noreply priority(::unitree_api::msg::RequestPolicy::_priority_type arg) - { - msg_.priority = std::move(arg); - return Init_RequestPolicy_noreply(msg_); - } - -private: - ::unitree_api::msg::RequestPolicy msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::RequestPolicy>() -{ - return unitree_api::msg::builder::Init_RequestPolicy_priority(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.c deleted file mode 100644 index 8cf1965..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.c +++ /dev/null @@ -1,239 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/request_policy__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_api__msg__RequestPolicy__init(unitree_api__msg__RequestPolicy * msg) -{ - if (!msg) { - return false; - } - // priority - // noreply - return true; -} - -void -unitree_api__msg__RequestPolicy__fini(unitree_api__msg__RequestPolicy * msg) -{ - if (!msg) { - return; - } - // priority - // noreply -} - -bool -unitree_api__msg__RequestPolicy__are_equal(const unitree_api__msg__RequestPolicy * lhs, const unitree_api__msg__RequestPolicy * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // priority - if (lhs->priority != rhs->priority) { - return false; - } - // noreply - if (lhs->noreply != rhs->noreply) { - return false; - } - return true; -} - -bool -unitree_api__msg__RequestPolicy__copy( - const unitree_api__msg__RequestPolicy * input, - unitree_api__msg__RequestPolicy * output) -{ - if (!input || !output) { - return false; - } - // priority - output->priority = input->priority; - // noreply - output->noreply = input->noreply; - return true; -} - -unitree_api__msg__RequestPolicy * -unitree_api__msg__RequestPolicy__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestPolicy * msg = (unitree_api__msg__RequestPolicy *)allocator.allocate(sizeof(unitree_api__msg__RequestPolicy), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__RequestPolicy)); - bool success = unitree_api__msg__RequestPolicy__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__RequestPolicy__destroy(unitree_api__msg__RequestPolicy * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__RequestPolicy__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__RequestPolicy__Sequence__init(unitree_api__msg__RequestPolicy__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestPolicy * data = NULL; - - if (size) { - data = (unitree_api__msg__RequestPolicy *)allocator.zero_allocate(size, sizeof(unitree_api__msg__RequestPolicy), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__RequestPolicy__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__RequestPolicy__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__RequestPolicy__Sequence__fini(unitree_api__msg__RequestPolicy__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__RequestPolicy__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__RequestPolicy__Sequence * -unitree_api__msg__RequestPolicy__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__RequestPolicy__Sequence * array = (unitree_api__msg__RequestPolicy__Sequence *)allocator.allocate(sizeof(unitree_api__msg__RequestPolicy__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__RequestPolicy__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__RequestPolicy__Sequence__destroy(unitree_api__msg__RequestPolicy__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__RequestPolicy__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__RequestPolicy__Sequence__are_equal(const unitree_api__msg__RequestPolicy__Sequence * lhs, const unitree_api__msg__RequestPolicy__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__RequestPolicy__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__RequestPolicy__Sequence__copy( - const unitree_api__msg__RequestPolicy__Sequence * input, - unitree_api__msg__RequestPolicy__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__RequestPolicy); - unitree_api__msg__RequestPolicy * data = - (unitree_api__msg__RequestPolicy *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__RequestPolicy__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__RequestPolicy__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__RequestPolicy__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.h deleted file mode 100644 index af9c364..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/request_policy__struct.h" - -/// Initialize msg/RequestPolicy message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__RequestPolicy - * )) before or use - * unitree_api__msg__RequestPolicy__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestPolicy__init(unitree_api__msg__RequestPolicy * msg); - -/// Finalize msg/RequestPolicy message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestPolicy__fini(unitree_api__msg__RequestPolicy * msg); - -/// Create msg/RequestPolicy message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__RequestPolicy__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestPolicy * -unitree_api__msg__RequestPolicy__create(); - -/// Destroy msg/RequestPolicy message. -/** - * It calls - * unitree_api__msg__RequestPolicy__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestPolicy__destroy(unitree_api__msg__RequestPolicy * msg); - -/// Check for msg/RequestPolicy message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestPolicy__are_equal(const unitree_api__msg__RequestPolicy * lhs, const unitree_api__msg__RequestPolicy * rhs); - -/// Copy a msg/RequestPolicy message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestPolicy__copy( - const unitree_api__msg__RequestPolicy * input, - unitree_api__msg__RequestPolicy * output); - -/// Initialize array of msg/RequestPolicy messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__RequestPolicy__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestPolicy__Sequence__init(unitree_api__msg__RequestPolicy__Sequence * array, size_t size); - -/// Finalize array of msg/RequestPolicy messages. -/** - * It calls - * unitree_api__msg__RequestPolicy__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestPolicy__Sequence__fini(unitree_api__msg__RequestPolicy__Sequence * array); - -/// Create array of msg/RequestPolicy messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__RequestPolicy__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__RequestPolicy__Sequence * -unitree_api__msg__RequestPolicy__Sequence__create(size_t size); - -/// Destroy array of msg/RequestPolicy messages. -/** - * It calls - * unitree_api__msg__RequestPolicy__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__RequestPolicy__Sequence__destroy(unitree_api__msg__RequestPolicy__Sequence * array); - -/// Check for msg/RequestPolicy message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestPolicy__Sequence__are_equal(const unitree_api__msg__RequestPolicy__Sequence * lhs, const unitree_api__msg__RequestPolicy__Sequence * rhs); - -/// Copy an array of msg/RequestPolicy messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__RequestPolicy__Sequence__copy( - const unitree_api__msg__RequestPolicy__Sequence * input, - unitree_api__msg__RequestPolicy__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index ea36c92..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__RequestPolicy( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__RequestPolicy( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, RequestPolicy)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 4e31ff1..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/request_policy__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::RequestPolicy & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::RequestPolicy & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::RequestPolicy & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_RequestPolicy( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, RequestPolicy)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_c.h deleted file mode 100644 index ef048e6..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestPolicy)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 1058feb..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestPolicy)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.h deleted file mode 100644 index 6e7c438..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.h +++ /dev/null @@ -1,41 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/RequestPolicy in the package unitree_api. -typedef struct unitree_api__msg__RequestPolicy -{ - int32_t priority; - bool noreply; -} unitree_api__msg__RequestPolicy; - -// Struct for a sequence of unitree_api__msg__RequestPolicy. -typedef struct unitree_api__msg__RequestPolicy__Sequence -{ - unitree_api__msg__RequestPolicy * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__RequestPolicy__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.hpp deleted file mode 100644 index 3203121..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__struct.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__RequestPolicy __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__RequestPolicy __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct RequestPolicy_ -{ - using Type = RequestPolicy_; - - explicit RequestPolicy_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->priority = 0l; - this->noreply = false; - } - } - - explicit RequestPolicy_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->priority = 0l; - this->noreply = false; - } - } - - // field types and members - using _priority_type = - int32_t; - _priority_type priority; - using _noreply_type = - bool; - _noreply_type noreply; - - // setters for named parameter idiom - Type & set__priority( - const int32_t & _arg) - { - this->priority = _arg; - return *this; - } - Type & set__noreply( - const bool & _arg) - { - this->noreply = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::RequestPolicy_ *; - using ConstRawPtr = - const unitree_api::msg::RequestPolicy_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__RequestPolicy - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__RequestPolicy - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const RequestPolicy_ & other) const - { - if (this->priority != other.priority) { - return false; - } - if (this->noreply != other.noreply) { - return false; - } - return true; - } - bool operator!=(const RequestPolicy_ & other) const - { - return !this->operator==(other); - } -}; // struct RequestPolicy_ - -// alias to use template instance with default allocator -using RequestPolicy = - unitree_api::msg::RequestPolicy_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__traits.hpp deleted file mode 100644 index 29bdc50..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TRAITS_HPP_ - -#include "unitree_api/msg/detail/request_policy__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::RequestPolicy"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/RequestPolicy"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.c deleted file mode 100644 index c8df052..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.c +++ /dev/null @@ -1,96 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/request_policy__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/request_policy__functions.h" -#include "unitree_api/msg/detail/request_policy__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__RequestPolicy__init(message_memory); -} - -void RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_fini_function(void * message_memory) -{ - unitree_api__msg__RequestPolicy__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_member_array[2] = { - { - "priority", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestPolicy, priority), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "noreply", // name - rosidl_typesupport_introspection_c__ROS_TYPE_BOOLEAN, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__RequestPolicy, noreply), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_members = { - "unitree_api__msg", // message namespace - "RequestPolicy", // message name - 2, // number of fields - sizeof(unitree_api__msg__RequestPolicy), - RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_member_array, // message members - RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_init_function, // function to initialize message memory (memory has to be allocated) - RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_type_support_handle = { - 0, - &RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestPolicy)() { - if (!RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_type_support_handle.typesupport_identifier) { - RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &RequestPolicy__rosidl_typesupport_introspection_c__RequestPolicy_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.cpp deleted file mode 100644 index c12f08f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/request_policy__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void RequestPolicy_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::RequestPolicy(_init); -} - -void RequestPolicy_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~RequestPolicy(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember RequestPolicy_message_member_array[2] = { - { - "priority", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestPolicy, priority), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "noreply", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_BOOLEAN, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::RequestPolicy, noreply), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers RequestPolicy_message_members = { - "unitree_api::msg", // message namespace - "RequestPolicy", // message name - 2, // number of fields - sizeof(unitree_api::msg::RequestPolicy), - RequestPolicy_message_member_array, // message members - RequestPolicy_init_function, // function to initialize message memory (memory has to be allocated) - RequestPolicy_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t RequestPolicy_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &RequestPolicy_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestPolicy_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, RequestPolicy)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::RequestPolicy_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.h deleted file mode 100644 index 7fe2cf2..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - RequestPolicy -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.hpp deleted file mode 100644 index 68dbcba..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/request_policy__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - RequestPolicy -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__REQUEST_POLICY__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__builder.hpp deleted file mode 100644 index 8f0cf0b..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__builder.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__BUILDER_HPP_ - -#include "unitree_api/msg/detail/response__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_Response_binary -{ -public: - explicit Init_Response_binary(::unitree_api::msg::Response & msg) - : msg_(msg) - {} - ::unitree_api::msg::Response binary(::unitree_api::msg::Response::_binary_type arg) - { - msg_.binary = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::Response msg_; -}; - -class Init_Response_data -{ -public: - explicit Init_Response_data(::unitree_api::msg::Response & msg) - : msg_(msg) - {} - Init_Response_binary data(::unitree_api::msg::Response::_data_type arg) - { - msg_.data = std::move(arg); - return Init_Response_binary(msg_); - } - -private: - ::unitree_api::msg::Response msg_; -}; - -class Init_Response_header -{ -public: - Init_Response_header() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_Response_data header(::unitree_api::msg::Response::_header_type arg) - { - msg_.header = std::move(arg); - return Init_Response_data(msg_); - } - -private: - ::unitree_api::msg::Response msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::Response>() -{ - return unitree_api::msg::builder::Init_Response_header(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.c deleted file mode 100644 index e30ee9b..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.c +++ /dev/null @@ -1,288 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/response__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `header` -#include "unitree_api/msg/detail/response_header__functions.h" -// Member `data` -#include "rosidl_runtime_c/string_functions.h" -// Member `binary` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool -unitree_api__msg__Response__init(unitree_api__msg__Response * msg) -{ - if (!msg) { - return false; - } - // header - if (!unitree_api__msg__ResponseHeader__init(&msg->header)) { - unitree_api__msg__Response__fini(msg); - return false; - } - // data - if (!rosidl_runtime_c__String__init(&msg->data)) { - unitree_api__msg__Response__fini(msg); - return false; - } - // binary - if (!rosidl_runtime_c__int8__Sequence__init(&msg->binary, 0)) { - unitree_api__msg__Response__fini(msg); - return false; - } - return true; -} - -void -unitree_api__msg__Response__fini(unitree_api__msg__Response * msg) -{ - if (!msg) { - return; - } - // header - unitree_api__msg__ResponseHeader__fini(&msg->header); - // data - rosidl_runtime_c__String__fini(&msg->data); - // binary - rosidl_runtime_c__int8__Sequence__fini(&msg->binary); -} - -bool -unitree_api__msg__Response__are_equal(const unitree_api__msg__Response * lhs, const unitree_api__msg__Response * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // header - if (!unitree_api__msg__ResponseHeader__are_equal( - &(lhs->header), &(rhs->header))) - { - return false; - } - // data - if (!rosidl_runtime_c__String__are_equal( - &(lhs->data), &(rhs->data))) - { - return false; - } - // binary - if (!rosidl_runtime_c__int8__Sequence__are_equal( - &(lhs->binary), &(rhs->binary))) - { - return false; - } - return true; -} - -bool -unitree_api__msg__Response__copy( - const unitree_api__msg__Response * input, - unitree_api__msg__Response * output) -{ - if (!input || !output) { - return false; - } - // header - if (!unitree_api__msg__ResponseHeader__copy( - &(input->header), &(output->header))) - { - return false; - } - // data - if (!rosidl_runtime_c__String__copy( - &(input->data), &(output->data))) - { - return false; - } - // binary - if (!rosidl_runtime_c__int8__Sequence__copy( - &(input->binary), &(output->binary))) - { - return false; - } - return true; -} - -unitree_api__msg__Response * -unitree_api__msg__Response__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__Response * msg = (unitree_api__msg__Response *)allocator.allocate(sizeof(unitree_api__msg__Response), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__Response)); - bool success = unitree_api__msg__Response__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__Response__destroy(unitree_api__msg__Response * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__Response__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__Response__Sequence__init(unitree_api__msg__Response__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__Response * data = NULL; - - if (size) { - data = (unitree_api__msg__Response *)allocator.zero_allocate(size, sizeof(unitree_api__msg__Response), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__Response__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__Response__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__Response__Sequence__fini(unitree_api__msg__Response__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__Response__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__Response__Sequence * -unitree_api__msg__Response__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__Response__Sequence * array = (unitree_api__msg__Response__Sequence *)allocator.allocate(sizeof(unitree_api__msg__Response__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__Response__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__Response__Sequence__destroy(unitree_api__msg__Response__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__Response__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__Response__Sequence__are_equal(const unitree_api__msg__Response__Sequence * lhs, const unitree_api__msg__Response__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__Response__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__Response__Sequence__copy( - const unitree_api__msg__Response__Sequence * input, - unitree_api__msg__Response__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__Response); - unitree_api__msg__Response * data = - (unitree_api__msg__Response *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__Response__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__Response__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__Response__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.h deleted file mode 100644 index a2a89c0..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/response__struct.h" - -/// Initialize msg/Response message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__Response - * )) before or use - * unitree_api__msg__Response__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Response__init(unitree_api__msg__Response * msg); - -/// Finalize msg/Response message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Response__fini(unitree_api__msg__Response * msg); - -/// Create msg/Response message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__Response__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__Response * -unitree_api__msg__Response__create(); - -/// Destroy msg/Response message. -/** - * It calls - * unitree_api__msg__Response__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Response__destroy(unitree_api__msg__Response * msg); - -/// Check for msg/Response message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Response__are_equal(const unitree_api__msg__Response * lhs, const unitree_api__msg__Response * rhs); - -/// Copy a msg/Response message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Response__copy( - const unitree_api__msg__Response * input, - unitree_api__msg__Response * output); - -/// Initialize array of msg/Response messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__Response__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Response__Sequence__init(unitree_api__msg__Response__Sequence * array, size_t size); - -/// Finalize array of msg/Response messages. -/** - * It calls - * unitree_api__msg__Response__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Response__Sequence__fini(unitree_api__msg__Response__Sequence * array); - -/// Create array of msg/Response messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__Response__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__Response__Sequence * -unitree_api__msg__Response__Sequence__create(size_t size); - -/// Destroy array of msg/Response messages. -/** - * It calls - * unitree_api__msg__Response__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__Response__Sequence__destroy(unitree_api__msg__Response__Sequence * array); - -/// Check for msg/Response message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Response__Sequence__are_equal(const unitree_api__msg__Response__Sequence * lhs, const unitree_api__msg__Response__Sequence * rhs); - -/// Copy an array of msg/Response messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__Response__Sequence__copy( - const unitree_api__msg__Response__Sequence * input, - unitree_api__msg__Response__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index cba0d6d..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__Response( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__Response( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, Response)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index bc0ef8a..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/response__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::Response & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::Response & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::Response & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_Response( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, Response)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 7ffd774..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, Response)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 9cfa813..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, Response)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.h deleted file mode 100644 index de3d930..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.h +++ /dev/null @@ -1,50 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'header' -#include "unitree_api/msg/detail/response_header__struct.h" -// Member 'data' -#include "rosidl_runtime_c/string.h" -// Member 'binary' -#include "rosidl_runtime_c/primitives_sequence.h" - -// Struct defined in msg/Response in the package unitree_api. -typedef struct unitree_api__msg__Response -{ - unitree_api__msg__ResponseHeader header; - rosidl_runtime_c__String data; - rosidl_runtime_c__int8__Sequence binary; -} unitree_api__msg__Response; - -// Struct for a sequence of unitree_api__msg__Response. -typedef struct unitree_api__msg__Response__Sequence -{ - unitree_api__msg__Response * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__Response__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.hpp deleted file mode 100644 index b8e170c..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__struct.hpp +++ /dev/null @@ -1,160 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'header' -#include "unitree_api/msg/detail/response_header__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__Response __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__Response __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct Response_ -{ - using Type = Response_; - - explicit Response_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : header(_init) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->data = ""; - } - } - - explicit Response_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : header(_alloc, _init), - data(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->data = ""; - } - } - - // field types and members - using _header_type = - unitree_api::msg::ResponseHeader_; - _header_type header; - using _data_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _data_type data; - using _binary_type = - std::vector::other>; - _binary_type binary; - - // setters for named parameter idiom - Type & set__header( - const unitree_api::msg::ResponseHeader_ & _arg) - { - this->header = _arg; - return *this; - } - Type & set__data( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->data = _arg; - return *this; - } - Type & set__binary( - const std::vector::other> & _arg) - { - this->binary = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::Response_ *; - using ConstRawPtr = - const unitree_api::msg::Response_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__Response - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__Response - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const Response_ & other) const - { - if (this->header != other.header) { - return false; - } - if (this->data != other.data) { - return false; - } - if (this->binary != other.binary) { - return false; - } - return true; - } - bool operator!=(const Response_ & other) const - { - return !this->operator==(other); - } -}; // struct Response_ - -// alias to use template instance with default allocator -using Response = - unitree_api::msg::Response_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__traits.hpp deleted file mode 100644 index 7716161..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__traits.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__TRAITS_HPP_ - -#include "unitree_api/msg/detail/response__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'header' -#include "unitree_api/msg/detail/response_header__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::Response"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/Response"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.c deleted file mode 100644 index 1eb4b01..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.c +++ /dev/null @@ -1,123 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/response__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/response__functions.h" -#include "unitree_api/msg/detail/response__struct.h" - - -// Include directives for member types -// Member `header` -#include "unitree_api/msg/response_header.h" -// Member `header` -#include "unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_c.h" -// Member `data` -#include "rosidl_runtime_c/string_functions.h" -// Member `binary` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void Response__rosidl_typesupport_introspection_c__Response_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__Response__init(message_memory); -} - -void Response__rosidl_typesupport_introspection_c__Response_fini_function(void * message_memory) -{ - unitree_api__msg__Response__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember Response__rosidl_typesupport_introspection_c__Response_message_member_array[3] = { - { - "header", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__Response, header), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "data", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__Response, data), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "binary", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__Response, binary), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers Response__rosidl_typesupport_introspection_c__Response_message_members = { - "unitree_api__msg", // message namespace - "Response", // message name - 3, // number of fields - sizeof(unitree_api__msg__Response), - Response__rosidl_typesupport_introspection_c__Response_message_member_array, // message members - Response__rosidl_typesupport_introspection_c__Response_init_function, // function to initialize message memory (memory has to be allocated) - Response__rosidl_typesupport_introspection_c__Response_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t Response__rosidl_typesupport_introspection_c__Response_message_type_support_handle = { - 0, - &Response__rosidl_typesupport_introspection_c__Response_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, Response)() { - Response__rosidl_typesupport_introspection_c__Response_message_member_array[0].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, ResponseHeader)(); - if (!Response__rosidl_typesupport_introspection_c__Response_message_type_support_handle.typesupport_identifier) { - Response__rosidl_typesupport_introspection_c__Response_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &Response__rosidl_typesupport_introspection_c__Response_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.cpp deleted file mode 100644 index a27d035..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/response__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void Response_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::Response(_init); -} - -void Response_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~Response(); -} - -size_t size_function__Response__binary(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__Response__binary(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__Response__binary(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__Response__binary(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember Response_message_member_array[3] = { - { - "header", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::Response, header), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "data", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::Response, data), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "binary", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::Response, binary), // bytes offset in struct - nullptr, // default value - size_function__Response__binary, // size() function pointer - get_const_function__Response__binary, // get_const(index) function pointer - get_function__Response__binary, // get(index) function pointer - resize_function__Response__binary // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers Response_message_members = { - "unitree_api::msg", // message namespace - "Response", // message name - 3, // number of fields - sizeof(unitree_api::msg::Response), - Response_message_member_array, // message members - Response_init_function, // function to initialize message memory (memory has to be allocated) - Response_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t Response_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &Response_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::Response_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, Response)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::Response_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.h deleted file mode 100644 index 8b23ed0..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - Response -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.hpp deleted file mode 100644 index 27859e9..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - Response -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__builder.hpp deleted file mode 100644 index 8f76d7d..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__BUILDER_HPP_ - -#include "unitree_api/msg/detail/response_header__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_ResponseHeader_status -{ -public: - explicit Init_ResponseHeader_status(::unitree_api::msg::ResponseHeader & msg) - : msg_(msg) - {} - ::unitree_api::msg::ResponseHeader status(::unitree_api::msg::ResponseHeader::_status_type arg) - { - msg_.status = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::ResponseHeader msg_; -}; - -class Init_ResponseHeader_identity -{ -public: - Init_ResponseHeader_identity() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_ResponseHeader_status identity(::unitree_api::msg::ResponseHeader::_identity_type arg) - { - msg_.identity = std::move(arg); - return Init_ResponseHeader_status(msg_); - } - -private: - ::unitree_api::msg::ResponseHeader msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::ResponseHeader>() -{ - return unitree_api::msg::builder::Init_ResponseHeader_identity(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.c deleted file mode 100644 index 5d705c7..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.c +++ /dev/null @@ -1,267 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/response_header__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `identity` -#include "unitree_api/msg/detail/request_identity__functions.h" -// Member `status` -#include "unitree_api/msg/detail/response_status__functions.h" - -bool -unitree_api__msg__ResponseHeader__init(unitree_api__msg__ResponseHeader * msg) -{ - if (!msg) { - return false; - } - // identity - if (!unitree_api__msg__RequestIdentity__init(&msg->identity)) { - unitree_api__msg__ResponseHeader__fini(msg); - return false; - } - // status - if (!unitree_api__msg__ResponseStatus__init(&msg->status)) { - unitree_api__msg__ResponseHeader__fini(msg); - return false; - } - return true; -} - -void -unitree_api__msg__ResponseHeader__fini(unitree_api__msg__ResponseHeader * msg) -{ - if (!msg) { - return; - } - // identity - unitree_api__msg__RequestIdentity__fini(&msg->identity); - // status - unitree_api__msg__ResponseStatus__fini(&msg->status); -} - -bool -unitree_api__msg__ResponseHeader__are_equal(const unitree_api__msg__ResponseHeader * lhs, const unitree_api__msg__ResponseHeader * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // identity - if (!unitree_api__msg__RequestIdentity__are_equal( - &(lhs->identity), &(rhs->identity))) - { - return false; - } - // status - if (!unitree_api__msg__ResponseStatus__are_equal( - &(lhs->status), &(rhs->status))) - { - return false; - } - return true; -} - -bool -unitree_api__msg__ResponseHeader__copy( - const unitree_api__msg__ResponseHeader * input, - unitree_api__msg__ResponseHeader * output) -{ - if (!input || !output) { - return false; - } - // identity - if (!unitree_api__msg__RequestIdentity__copy( - &(input->identity), &(output->identity))) - { - return false; - } - // status - if (!unitree_api__msg__ResponseStatus__copy( - &(input->status), &(output->status))) - { - return false; - } - return true; -} - -unitree_api__msg__ResponseHeader * -unitree_api__msg__ResponseHeader__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__ResponseHeader * msg = (unitree_api__msg__ResponseHeader *)allocator.allocate(sizeof(unitree_api__msg__ResponseHeader), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__ResponseHeader)); - bool success = unitree_api__msg__ResponseHeader__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__ResponseHeader__destroy(unitree_api__msg__ResponseHeader * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__ResponseHeader__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__ResponseHeader__Sequence__init(unitree_api__msg__ResponseHeader__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__ResponseHeader * data = NULL; - - if (size) { - data = (unitree_api__msg__ResponseHeader *)allocator.zero_allocate(size, sizeof(unitree_api__msg__ResponseHeader), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__ResponseHeader__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__ResponseHeader__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__ResponseHeader__Sequence__fini(unitree_api__msg__ResponseHeader__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__ResponseHeader__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__ResponseHeader__Sequence * -unitree_api__msg__ResponseHeader__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__ResponseHeader__Sequence * array = (unitree_api__msg__ResponseHeader__Sequence *)allocator.allocate(sizeof(unitree_api__msg__ResponseHeader__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__ResponseHeader__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__ResponseHeader__Sequence__destroy(unitree_api__msg__ResponseHeader__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__ResponseHeader__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__ResponseHeader__Sequence__are_equal(const unitree_api__msg__ResponseHeader__Sequence * lhs, const unitree_api__msg__ResponseHeader__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__ResponseHeader__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__ResponseHeader__Sequence__copy( - const unitree_api__msg__ResponseHeader__Sequence * input, - unitree_api__msg__ResponseHeader__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__ResponseHeader); - unitree_api__msg__ResponseHeader * data = - (unitree_api__msg__ResponseHeader *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__ResponseHeader__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__ResponseHeader__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__ResponseHeader__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.h deleted file mode 100644 index 8837dc1..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/response_header__struct.h" - -/// Initialize msg/ResponseHeader message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__ResponseHeader - * )) before or use - * unitree_api__msg__ResponseHeader__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseHeader__init(unitree_api__msg__ResponseHeader * msg); - -/// Finalize msg/ResponseHeader message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseHeader__fini(unitree_api__msg__ResponseHeader * msg); - -/// Create msg/ResponseHeader message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__ResponseHeader__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__ResponseHeader * -unitree_api__msg__ResponseHeader__create(); - -/// Destroy msg/ResponseHeader message. -/** - * It calls - * unitree_api__msg__ResponseHeader__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseHeader__destroy(unitree_api__msg__ResponseHeader * msg); - -/// Check for msg/ResponseHeader message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseHeader__are_equal(const unitree_api__msg__ResponseHeader * lhs, const unitree_api__msg__ResponseHeader * rhs); - -/// Copy a msg/ResponseHeader message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseHeader__copy( - const unitree_api__msg__ResponseHeader * input, - unitree_api__msg__ResponseHeader * output); - -/// Initialize array of msg/ResponseHeader messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__ResponseHeader__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseHeader__Sequence__init(unitree_api__msg__ResponseHeader__Sequence * array, size_t size); - -/// Finalize array of msg/ResponseHeader messages. -/** - * It calls - * unitree_api__msg__ResponseHeader__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseHeader__Sequence__fini(unitree_api__msg__ResponseHeader__Sequence * array); - -/// Create array of msg/ResponseHeader messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__ResponseHeader__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__ResponseHeader__Sequence * -unitree_api__msg__ResponseHeader__Sequence__create(size_t size); - -/// Destroy array of msg/ResponseHeader messages. -/** - * It calls - * unitree_api__msg__ResponseHeader__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseHeader__Sequence__destroy(unitree_api__msg__ResponseHeader__Sequence * array); - -/// Check for msg/ResponseHeader message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseHeader__Sequence__are_equal(const unitree_api__msg__ResponseHeader__Sequence * lhs, const unitree_api__msg__ResponseHeader__Sequence * rhs); - -/// Copy an array of msg/ResponseHeader messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseHeader__Sequence__copy( - const unitree_api__msg__ResponseHeader__Sequence * input, - unitree_api__msg__ResponseHeader__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index c1c364d..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__ResponseHeader( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__ResponseHeader( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, ResponseHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index d76073f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/response_header__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::ResponseHeader & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::ResponseHeader & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::ResponseHeader & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_ResponseHeader( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, ResponseHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_c.h deleted file mode 100644 index c314b11..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, ResponseHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index c578e54..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, ResponseHeader)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.h deleted file mode 100644 index f7dd860..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.h +++ /dev/null @@ -1,47 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'identity' -#include "unitree_api/msg/detail/request_identity__struct.h" -// Member 'status' -#include "unitree_api/msg/detail/response_status__struct.h" - -// Struct defined in msg/ResponseHeader in the package unitree_api. -typedef struct unitree_api__msg__ResponseHeader -{ - unitree_api__msg__RequestIdentity identity; - unitree_api__msg__ResponseStatus status; -} unitree_api__msg__ResponseHeader; - -// Struct for a sequence of unitree_api__msg__ResponseHeader. -typedef struct unitree_api__msg__ResponseHeader__Sequence -{ - unitree_api__msg__ResponseHeader * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__ResponseHeader__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.hpp deleted file mode 100644 index cb00d3b..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__struct.hpp +++ /dev/null @@ -1,143 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'identity' -#include "unitree_api/msg/detail/request_identity__struct.hpp" -// Member 'status' -#include "unitree_api/msg/detail/response_status__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__ResponseHeader __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__ResponseHeader __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct ResponseHeader_ -{ - using Type = ResponseHeader_; - - explicit ResponseHeader_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : identity(_init), - status(_init) - { - (void)_init; - } - - explicit ResponseHeader_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : identity(_alloc, _init), - status(_alloc, _init) - { - (void)_init; - } - - // field types and members - using _identity_type = - unitree_api::msg::RequestIdentity_; - _identity_type identity; - using _status_type = - unitree_api::msg::ResponseStatus_; - _status_type status; - - // setters for named parameter idiom - Type & set__identity( - const unitree_api::msg::RequestIdentity_ & _arg) - { - this->identity = _arg; - return *this; - } - Type & set__status( - const unitree_api::msg::ResponseStatus_ & _arg) - { - this->status = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::ResponseHeader_ *; - using ConstRawPtr = - const unitree_api::msg::ResponseHeader_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__ResponseHeader - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__ResponseHeader - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const ResponseHeader_ & other) const - { - if (this->identity != other.identity) { - return false; - } - if (this->status != other.status) { - return false; - } - return true; - } - bool operator!=(const ResponseHeader_ & other) const - { - return !this->operator==(other); - } -}; // struct ResponseHeader_ - -// alias to use template instance with default allocator -using ResponseHeader = - unitree_api::msg::ResponseHeader_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__traits.hpp deleted file mode 100644 index a3cb0c2..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__traits.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TRAITS_HPP_ - -#include "unitree_api/msg/detail/response_header__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'identity' -#include "unitree_api/msg/detail/request_identity__traits.hpp" -// Member 'status' -#include "unitree_api/msg/detail/response_status__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::ResponseHeader"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/ResponseHeader"; -} - -template<> -struct has_fixed_size - : std::integral_constant::value && has_fixed_size::value> {}; - -template<> -struct has_bounded_size - : std::integral_constant::value && has_bounded_size::value> {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.c deleted file mode 100644 index e728e73..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.c +++ /dev/null @@ -1,110 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/response_header__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/response_header__functions.h" -#include "unitree_api/msg/detail/response_header__struct.h" - - -// Include directives for member types -// Member `identity` -#include "unitree_api/msg/request_identity.h" -// Member `identity` -#include "unitree_api/msg/detail/request_identity__rosidl_typesupport_introspection_c.h" -// Member `status` -#include "unitree_api/msg/response_status.h" -// Member `status` -#include "unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_c.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__ResponseHeader__init(message_memory); -} - -void ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_fini_function(void * message_memory) -{ - unitree_api__msg__ResponseHeader__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_member_array[2] = { - { - "identity", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__ResponseHeader, identity), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "status", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__ResponseHeader, status), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_members = { - "unitree_api__msg", // message namespace - "ResponseHeader", // message name - 2, // number of fields - sizeof(unitree_api__msg__ResponseHeader), - ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_member_array, // message members - ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_init_function, // function to initialize message memory (memory has to be allocated) - ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_type_support_handle = { - 0, - &ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, ResponseHeader)() { - ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_member_array[0].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, RequestIdentity)(); - ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_member_array[1].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, ResponseStatus)(); - if (!ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_type_support_handle.typesupport_identifier) { - ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &ResponseHeader__rosidl_typesupport_introspection_c__ResponseHeader_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.cpp deleted file mode 100644 index ea946b8..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/response_header__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void ResponseHeader_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::ResponseHeader(_init); -} - -void ResponseHeader_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~ResponseHeader(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember ResponseHeader_message_member_array[2] = { - { - "identity", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::ResponseHeader, identity), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "status", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::ResponseHeader, status), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers ResponseHeader_message_members = { - "unitree_api::msg", // message namespace - "ResponseHeader", // message name - 2, // number of fields - sizeof(unitree_api::msg::ResponseHeader), - ResponseHeader_message_member_array, // message members - ResponseHeader_init_function, // function to initialize message memory (memory has to be allocated) - ResponseHeader_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t ResponseHeader_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &ResponseHeader_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::ResponseHeader_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, ResponseHeader)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::ResponseHeader_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.h deleted file mode 100644 index a9d20af..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - ResponseHeader -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.hpp deleted file mode 100644 index 3664697..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_header__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - ResponseHeader -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_HEADER__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__builder.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__builder.hpp deleted file mode 100644 index 6b78a61..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__builder.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__BUILDER_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__BUILDER_HPP_ - -#include "unitree_api/msg/detail/response_status__struct.hpp" -#include -#include -#include - - -namespace unitree_api -{ - -namespace msg -{ - -namespace builder -{ - -class Init_ResponseStatus_code -{ -public: - Init_ResponseStatus_code() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - ::unitree_api::msg::ResponseStatus code(::unitree_api::msg::ResponseStatus::_code_type arg) - { - msg_.code = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_api::msg::ResponseStatus msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_api::msg::ResponseStatus>() -{ - return unitree_api::msg::builder::Init_ResponseStatus_code(); -} - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.c deleted file mode 100644 index 535cc3f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.c +++ /dev/null @@ -1,231 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/detail/response_status__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_api__msg__ResponseStatus__init(unitree_api__msg__ResponseStatus * msg) -{ - if (!msg) { - return false; - } - // code - return true; -} - -void -unitree_api__msg__ResponseStatus__fini(unitree_api__msg__ResponseStatus * msg) -{ - if (!msg) { - return; - } - // code -} - -bool -unitree_api__msg__ResponseStatus__are_equal(const unitree_api__msg__ResponseStatus * lhs, const unitree_api__msg__ResponseStatus * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // code - if (lhs->code != rhs->code) { - return false; - } - return true; -} - -bool -unitree_api__msg__ResponseStatus__copy( - const unitree_api__msg__ResponseStatus * input, - unitree_api__msg__ResponseStatus * output) -{ - if (!input || !output) { - return false; - } - // code - output->code = input->code; - return true; -} - -unitree_api__msg__ResponseStatus * -unitree_api__msg__ResponseStatus__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__ResponseStatus * msg = (unitree_api__msg__ResponseStatus *)allocator.allocate(sizeof(unitree_api__msg__ResponseStatus), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_api__msg__ResponseStatus)); - bool success = unitree_api__msg__ResponseStatus__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_api__msg__ResponseStatus__destroy(unitree_api__msg__ResponseStatus * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_api__msg__ResponseStatus__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_api__msg__ResponseStatus__Sequence__init(unitree_api__msg__ResponseStatus__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__ResponseStatus * data = NULL; - - if (size) { - data = (unitree_api__msg__ResponseStatus *)allocator.zero_allocate(size, sizeof(unitree_api__msg__ResponseStatus), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_api__msg__ResponseStatus__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_api__msg__ResponseStatus__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_api__msg__ResponseStatus__Sequence__fini(unitree_api__msg__ResponseStatus__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_api__msg__ResponseStatus__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_api__msg__ResponseStatus__Sequence * -unitree_api__msg__ResponseStatus__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_api__msg__ResponseStatus__Sequence * array = (unitree_api__msg__ResponseStatus__Sequence *)allocator.allocate(sizeof(unitree_api__msg__ResponseStatus__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_api__msg__ResponseStatus__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_api__msg__ResponseStatus__Sequence__destroy(unitree_api__msg__ResponseStatus__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_api__msg__ResponseStatus__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_api__msg__ResponseStatus__Sequence__are_equal(const unitree_api__msg__ResponseStatus__Sequence * lhs, const unitree_api__msg__ResponseStatus__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_api__msg__ResponseStatus__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_api__msg__ResponseStatus__Sequence__copy( - const unitree_api__msg__ResponseStatus__Sequence * input, - unitree_api__msg__ResponseStatus__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_api__msg__ResponseStatus); - unitree_api__msg__ResponseStatus * data = - (unitree_api__msg__ResponseStatus *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_api__msg__ResponseStatus__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_api__msg__ResponseStatus__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_api__msg__ResponseStatus__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.h deleted file mode 100644 index 58b8246..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__FUNCTIONS_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_api/msg/detail/response_status__struct.h" - -/// Initialize msg/ResponseStatus message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_api__msg__ResponseStatus - * )) before or use - * unitree_api__msg__ResponseStatus__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseStatus__init(unitree_api__msg__ResponseStatus * msg); - -/// Finalize msg/ResponseStatus message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseStatus__fini(unitree_api__msg__ResponseStatus * msg); - -/// Create msg/ResponseStatus message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_api__msg__ResponseStatus__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__ResponseStatus * -unitree_api__msg__ResponseStatus__create(); - -/// Destroy msg/ResponseStatus message. -/** - * It calls - * unitree_api__msg__ResponseStatus__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseStatus__destroy(unitree_api__msg__ResponseStatus * msg); - -/// Check for msg/ResponseStatus message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseStatus__are_equal(const unitree_api__msg__ResponseStatus * lhs, const unitree_api__msg__ResponseStatus * rhs); - -/// Copy a msg/ResponseStatus message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseStatus__copy( - const unitree_api__msg__ResponseStatus * input, - unitree_api__msg__ResponseStatus * output); - -/// Initialize array of msg/ResponseStatus messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_api__msg__ResponseStatus__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseStatus__Sequence__init(unitree_api__msg__ResponseStatus__Sequence * array, size_t size); - -/// Finalize array of msg/ResponseStatus messages. -/** - * It calls - * unitree_api__msg__ResponseStatus__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseStatus__Sequence__fini(unitree_api__msg__ResponseStatus__Sequence * array); - -/// Create array of msg/ResponseStatus messages. -/** - * It allocates the memory for the array and calls - * unitree_api__msg__ResponseStatus__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -unitree_api__msg__ResponseStatus__Sequence * -unitree_api__msg__ResponseStatus__Sequence__create(size_t size); - -/// Destroy array of msg/ResponseStatus messages. -/** - * It calls - * unitree_api__msg__ResponseStatus__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -void -unitree_api__msg__ResponseStatus__Sequence__destroy(unitree_api__msg__ResponseStatus__Sequence * array); - -/// Check for msg/ResponseStatus message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseStatus__Sequence__are_equal(const unitree_api__msg__ResponseStatus__Sequence * lhs, const unitree_api__msg__ResponseStatus__Sequence * rhs); - -/// Copy an array of msg/ResponseStatus messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -bool -unitree_api__msg__ResponseStatus__Sequence__copy( - const unitree_api__msg__ResponseStatus__Sequence * input, - unitree_api__msg__ResponseStatus__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index c7a090f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t get_serialized_size_unitree_api__msg__ResponseStatus( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -size_t max_serialized_size_unitree_api__msg__ResponseStatus( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_api, msg, ResponseStatus)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index f21d788..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_api/msg/detail/response_status__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_serialize( - const unitree_api::msg::ResponseStatus & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_api::msg::ResponseStatus & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -get_serialized_size( - const unitree_api::msg::ResponseStatus & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -max_serialized_size_ResponseStatus( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_api - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_api, msg, ResponseStatus)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 8c3106c..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, ResponseStatus)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 7a8ab2e..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, ResponseStatus)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.h deleted file mode 100644 index fc12219..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.h +++ /dev/null @@ -1,40 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__STRUCT_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/ResponseStatus in the package unitree_api. -typedef struct unitree_api__msg__ResponseStatus -{ - int32_t code; -} unitree_api__msg__ResponseStatus; - -// Struct for a sequence of unitree_api__msg__ResponseStatus. -typedef struct unitree_api__msg__ResponseStatus__Sequence -{ - unitree_api__msg__ResponseStatus * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_api__msg__ResponseStatus__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.hpp deleted file mode 100644 index 126d908..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__struct.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__STRUCT_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_api__msg__ResponseStatus __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_api__msg__ResponseStatus __declspec(deprecated) -#endif - -namespace unitree_api -{ - -namespace msg -{ - -// message struct -template -struct ResponseStatus_ -{ - using Type = ResponseStatus_; - - explicit ResponseStatus_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->code = 0l; - } - } - - explicit ResponseStatus_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->code = 0l; - } - } - - // field types and members - using _code_type = - int32_t; - _code_type code; - - // setters for named parameter idiom - Type & set__code( - const int32_t & _arg) - { - this->code = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_api::msg::ResponseStatus_ *; - using ConstRawPtr = - const unitree_api::msg::ResponseStatus_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_api__msg__ResponseStatus - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_api__msg__ResponseStatus - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const ResponseStatus_ & other) const - { - if (this->code != other.code) { - return false; - } - return true; - } - bool operator!=(const ResponseStatus_ & other) const - { - return !this->operator==(other); - } -}; // struct ResponseStatus_ - -// alias to use template instance with default allocator -using ResponseStatus = - unitree_api::msg::ResponseStatus_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_api - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__traits.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__traits.hpp deleted file mode 100644 index 928afdf..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TRAITS_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TRAITS_HPP_ - -#include "unitree_api/msg/detail/response_status__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_api::msg::ResponseStatus"; -} - -template<> -inline const char * name() -{ - return "unitree_api/msg/ResponseStatus"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.c b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.c deleted file mode 100644 index 91fa969..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.c +++ /dev/null @@ -1,81 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_api/msg/detail/response_status__rosidl_typesupport_introspection_c.h" -#include "unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_api/msg/detail/response_status__functions.h" -#include "unitree_api/msg/detail/response_status__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_api__msg__ResponseStatus__init(message_memory); -} - -void ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_fini_function(void * message_memory) -{ - unitree_api__msg__ResponseStatus__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_member_array[1] = { - { - "code", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api__msg__ResponseStatus, code), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_members = { - "unitree_api__msg", // message namespace - "ResponseStatus", // message name - 1, // number of fields - sizeof(unitree_api__msg__ResponseStatus), - ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_member_array, // message members - ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_init_function, // function to initialize message memory (memory has to be allocated) - ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_type_support_handle = { - 0, - &ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_api, msg, ResponseStatus)() { - if (!ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_type_support_handle.typesupport_identifier) { - ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &ResponseStatus__rosidl_typesupport_introspection_c__ResponseStatus_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.cpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.cpp deleted file mode 100644 index 69fe8f4..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_api/msg/detail/response_status__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_api -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void ResponseStatus_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_api::msg::ResponseStatus(_init); -} - -void ResponseStatus_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~ResponseStatus(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember ResponseStatus_message_member_array[1] = { - { - "code", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_api::msg::ResponseStatus, code), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers ResponseStatus_message_members = { - "unitree_api::msg", // message namespace - "ResponseStatus", // message name - 1, // number of fields - sizeof(unitree_api::msg::ResponseStatus), - ResponseStatus_message_member_array, // message members - ResponseStatus_init_function, // function to initialize message memory (memory has to be allocated) - ResponseStatus_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t ResponseStatus_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &ResponseStatus_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_api - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::ResponseStatus_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_api, msg, ResponseStatus)() { - return &::unitree_api::msg::rosidl_typesupport_introspection_cpp::ResponseStatus_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.h deleted file mode 100644 index fa14f97..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TYPE_SUPPORT_H_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_api -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_api, - msg, - ResponseStatus -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.hpp deleted file mode 100644 index 733b937..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/detail/response_status__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TYPE_SUPPORT_HPP_ -#define UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_api, - msg, - ResponseStatus -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__DETAIL__RESPONSE_STATUS__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.h deleted file mode 100644 index 49432ff..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_H_ -#define UNITREE_API__MSG__REQUEST_H_ - -#include "unitree_api/msg/detail/request__struct.h" -#include "unitree_api/msg/detail/request__functions.h" -#include "unitree_api/msg/detail/request__type_support.h" - -#endif // UNITREE_API__MSG__REQUEST_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.hpp deleted file mode 100644 index f537925..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_HPP_ -#define UNITREE_API__MSG__REQUEST_HPP_ - -#include "unitree_api/msg/detail/request__struct.hpp" -#include "unitree_api/msg/detail/request__builder.hpp" -#include "unitree_api/msg/detail/request__traits.hpp" -#include "unitree_api/msg/detail/request__type_support.hpp" - -#endif // UNITREE_API__MSG__REQUEST_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.h deleted file mode 100644 index db176d4..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_HEADER_H_ -#define UNITREE_API__MSG__REQUEST_HEADER_H_ - -#include "unitree_api/msg/detail/request_header__struct.h" -#include "unitree_api/msg/detail/request_header__functions.h" -#include "unitree_api/msg/detail/request_header__type_support.h" - -#endif // UNITREE_API__MSG__REQUEST_HEADER_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.hpp deleted file mode 100644 index e5468b2..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_header.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_HEADER_HPP_ -#define UNITREE_API__MSG__REQUEST_HEADER_HPP_ - -#include "unitree_api/msg/detail/request_header__struct.hpp" -#include "unitree_api/msg/detail/request_header__builder.hpp" -#include "unitree_api/msg/detail/request_header__traits.hpp" -#include "unitree_api/msg/detail/request_header__type_support.hpp" - -#endif // UNITREE_API__MSG__REQUEST_HEADER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.h deleted file mode 100644 index e818b2f..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_IDENTITY_H_ -#define UNITREE_API__MSG__REQUEST_IDENTITY_H_ - -#include "unitree_api/msg/detail/request_identity__struct.h" -#include "unitree_api/msg/detail/request_identity__functions.h" -#include "unitree_api/msg/detail/request_identity__type_support.h" - -#endif // UNITREE_API__MSG__REQUEST_IDENTITY_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.hpp deleted file mode 100644 index 06e0041..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_identity.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_IDENTITY_HPP_ -#define UNITREE_API__MSG__REQUEST_IDENTITY_HPP_ - -#include "unitree_api/msg/detail/request_identity__struct.hpp" -#include "unitree_api/msg/detail/request_identity__builder.hpp" -#include "unitree_api/msg/detail/request_identity__traits.hpp" -#include "unitree_api/msg/detail/request_identity__type_support.hpp" - -#endif // UNITREE_API__MSG__REQUEST_IDENTITY_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.h deleted file mode 100644 index 5774e17..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_LEASE_H_ -#define UNITREE_API__MSG__REQUEST_LEASE_H_ - -#include "unitree_api/msg/detail/request_lease__struct.h" -#include "unitree_api/msg/detail/request_lease__functions.h" -#include "unitree_api/msg/detail/request_lease__type_support.h" - -#endif // UNITREE_API__MSG__REQUEST_LEASE_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.hpp deleted file mode 100644 index 9869d1a..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_lease.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_LEASE_HPP_ -#define UNITREE_API__MSG__REQUEST_LEASE_HPP_ - -#include "unitree_api/msg/detail/request_lease__struct.hpp" -#include "unitree_api/msg/detail/request_lease__builder.hpp" -#include "unitree_api/msg/detail/request_lease__traits.hpp" -#include "unitree_api/msg/detail/request_lease__type_support.hpp" - -#endif // UNITREE_API__MSG__REQUEST_LEASE_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.h deleted file mode 100644 index 83f89ee..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_POLICY_H_ -#define UNITREE_API__MSG__REQUEST_POLICY_H_ - -#include "unitree_api/msg/detail/request_policy__struct.h" -#include "unitree_api/msg/detail/request_policy__functions.h" -#include "unitree_api/msg/detail/request_policy__type_support.h" - -#endif // UNITREE_API__MSG__REQUEST_POLICY_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.hpp deleted file mode 100644 index 389c475..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/request_policy.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__REQUEST_POLICY_HPP_ -#define UNITREE_API__MSG__REQUEST_POLICY_HPP_ - -#include "unitree_api/msg/detail/request_policy__struct.hpp" -#include "unitree_api/msg/detail/request_policy__builder.hpp" -#include "unitree_api/msg/detail/request_policy__traits.hpp" -#include "unitree_api/msg/detail/request_policy__type_support.hpp" - -#endif // UNITREE_API__MSG__REQUEST_POLICY_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.h deleted file mode 100644 index 13063dd..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__RESPONSE_H_ -#define UNITREE_API__MSG__RESPONSE_H_ - -#include "unitree_api/msg/detail/response__struct.h" -#include "unitree_api/msg/detail/response__functions.h" -#include "unitree_api/msg/detail/response__type_support.h" - -#endif // UNITREE_API__MSG__RESPONSE_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.hpp deleted file mode 100644 index 8af5cc9..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__RESPONSE_HPP_ -#define UNITREE_API__MSG__RESPONSE_HPP_ - -#include "unitree_api/msg/detail/response__struct.hpp" -#include "unitree_api/msg/detail/response__builder.hpp" -#include "unitree_api/msg/detail/response__traits.hpp" -#include "unitree_api/msg/detail/response__type_support.hpp" - -#endif // UNITREE_API__MSG__RESPONSE_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.h deleted file mode 100644 index 5cba446..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__RESPONSE_HEADER_H_ -#define UNITREE_API__MSG__RESPONSE_HEADER_H_ - -#include "unitree_api/msg/detail/response_header__struct.h" -#include "unitree_api/msg/detail/response_header__functions.h" -#include "unitree_api/msg/detail/response_header__type_support.h" - -#endif // UNITREE_API__MSG__RESPONSE_HEADER_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.hpp deleted file mode 100644 index 3115d6c..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_header.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__RESPONSE_HEADER_HPP_ -#define UNITREE_API__MSG__RESPONSE_HEADER_HPP_ - -#include "unitree_api/msg/detail/response_header__struct.hpp" -#include "unitree_api/msg/detail/response_header__builder.hpp" -#include "unitree_api/msg/detail/response_header__traits.hpp" -#include "unitree_api/msg/detail/response_header__type_support.hpp" - -#endif // UNITREE_API__MSG__RESPONSE_HEADER_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.h deleted file mode 100644 index b01030c..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__RESPONSE_STATUS_H_ -#define UNITREE_API__MSG__RESPONSE_STATUS_H_ - -#include "unitree_api/msg/detail/response_status__struct.h" -#include "unitree_api/msg/detail/response_status__functions.h" -#include "unitree_api/msg/detail/response_status__type_support.h" - -#endif // UNITREE_API__MSG__RESPONSE_STATUS_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.hpp deleted file mode 100644 index 4e59390..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/response_status.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__RESPONSE_STATUS_HPP_ -#define UNITREE_API__MSG__RESPONSE_STATUS_HPP_ - -#include "unitree_api/msg/detail/response_status__struct.hpp" -#include "unitree_api/msg/detail/response_status__builder.hpp" -#include "unitree_api/msg/detail/response_status__traits.hpp" -#include "unitree_api/msg/detail/response_status__type_support.hpp" - -#endif // UNITREE_API__MSG__RESPONSE_STATUS_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_c__visibility_control.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_c__visibility_control.h deleted file mode 100644 index c3f4c94..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_c__visibility_control.h +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_c/resource/rosidl_generator_c__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_ -#define UNITREE_API__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_GENERATOR_C_EXPORT_unitree_api __attribute__ ((dllexport)) - #define ROSIDL_GENERATOR_C_IMPORT_unitree_api __attribute__ ((dllimport)) - #else - #define ROSIDL_GENERATOR_C_EXPORT_unitree_api __declspec(dllexport) - #define ROSIDL_GENERATOR_C_IMPORT_unitree_api __declspec(dllimport) - #endif - #ifdef ROSIDL_GENERATOR_C_BUILDING_DLL_unitree_api - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_api ROSIDL_GENERATOR_C_EXPORT_unitree_api - #else - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_api ROSIDL_GENERATOR_C_IMPORT_unitree_api - #endif -#else - #define ROSIDL_GENERATOR_C_EXPORT_unitree_api __attribute__ ((visibility("default"))) - #define ROSIDL_GENERATOR_C_IMPORT_unitree_api - #if __GNUC__ >= 4 - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_api __attribute__ ((visibility("default"))) - #else - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_api - #endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp deleted file mode 100644 index 6444c9a..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_generator_cpp__visibility_control.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/rosidl_generator_cpp__visibility_control.hpp.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_ -#define UNITREE_API__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_GENERATOR_CPP_EXPORT_unitree_api __attribute__ ((dllexport)) - #define ROSIDL_GENERATOR_CPP_IMPORT_unitree_api __attribute__ ((dllimport)) - #else - #define ROSIDL_GENERATOR_CPP_EXPORT_unitree_api __declspec(dllexport) - #define ROSIDL_GENERATOR_CPP_IMPORT_unitree_api __declspec(dllimport) - #endif - #ifdef ROSIDL_GENERATOR_CPP_BUILDING_DLL_unitree_api - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api ROSIDL_GENERATOR_CPP_EXPORT_unitree_api - #else - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api ROSIDL_GENERATOR_CPP_IMPORT_unitree_api - #endif -#else - #define ROSIDL_GENERATOR_CPP_EXPORT_unitree_api __attribute__ ((visibility("default"))) - #define ROSIDL_GENERATOR_CPP_IMPORT_unitree_api - #if __GNUC__ >= 4 - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api __attribute__ ((visibility("default"))) - #else - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_api - #endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h deleted file mode 100644 index d8ec81c..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_c__visibility_control.h +++ /dev/null @@ -1,43 +0,0 @@ -// generated from -// rosidl_typesupport_fastrtps_c/resource/rosidl_typesupport_fastrtps_c__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_ -#define UNITREE_API__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_ - -#if __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_api __attribute__ ((dllexport)) - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_api __attribute__ ((dllimport)) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_api __declspec(dllexport) - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_api __declspec(dllimport) - #endif - #ifdef ROSIDL_TYPESUPPORT_FASTRTPS_C_BUILDING_DLL_unitree_api - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_api - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_api - #endif -#else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_api __attribute__ ((visibility("default"))) - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_api - #if __GNUC__ >= 4 - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api __attribute__ ((visibility("default"))) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_api - #endif -#endif - -#if __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h deleted file mode 100644 index d43fdba..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h +++ /dev/null @@ -1,43 +0,0 @@ -// generated from -// rosidl_typesupport_fastrtps_cpp/resource/rosidl_typesupport_fastrtps_cpp__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_ -#define UNITREE_API__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_ - -#if __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_api __attribute__ ((dllexport)) - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_api __attribute__ ((dllimport)) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_api __declspec(dllexport) - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_api __declspec(dllimport) - #endif - #ifdef ROSIDL_TYPESUPPORT_FASTRTPS_CPP_BUILDING_DLL_unitree_api - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_api - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_api - #endif -#else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_api __attribute__ ((visibility("default"))) - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_api - #if __GNUC__ >= 4 - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api __attribute__ ((visibility("default"))) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_api - #endif -#endif - -#if __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h b/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h deleted file mode 100644 index 22bb9fc..0000000 --- a/deploy/robot_ws/install/unitree_api/include/unitree_api/msg/rosidl_typesupport_introspection_c__visibility_control.h +++ /dev/null @@ -1,43 +0,0 @@ -// generated from -// rosidl_typesupport_introspection_c/resource/rosidl_typesupport_introspection_c__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_API__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_ -#define UNITREE_API__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api __attribute__ ((dllexport)) - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_api __attribute__ ((dllimport)) - #else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api __declspec(dllexport) - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_api __declspec(dllimport) - #endif - #ifdef ROSIDL_TYPESUPPORT_INTROSPECTION_C_BUILDING_DLL_unitree_api - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api - #else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_api - #endif -#else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_api __attribute__ ((visibility("default"))) - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_api - #if __GNUC__ >= 4 - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api __attribute__ ((visibility("default"))) - #else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_api - #endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_API__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/__init__.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/__init__.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/__init__.py deleted file mode 100644 index d9c8f06..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from unitree_api.msg._request import Request # noqa: F401 -from unitree_api.msg._request_header import RequestHeader # noqa: F401 -from unitree_api.msg._request_identity import RequestIdentity # noqa: F401 -from unitree_api.msg._request_lease import RequestLease # noqa: F401 -from unitree_api.msg._request_policy import RequestPolicy # noqa: F401 -from unitree_api.msg._response import Response # noqa: F401 -from unitree_api.msg._response_header import ResponseHeader # noqa: F401 -from unitree_api.msg._response_status import ResponseStatus # noqa: F401 diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request.py deleted file mode 100644 index 07b2141..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request.py +++ /dev/null @@ -1,184 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/Request.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'binary' -import array # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_Request(type): - """Metaclass of message 'Request'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.Request') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__request - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__request - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__request - cls._TYPE_SUPPORT = module.type_support_msg__msg__request - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__request - - from unitree_api.msg import RequestHeader - if RequestHeader.__class__._TYPE_SUPPORT is None: - RequestHeader.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class Request(metaclass=Metaclass_Request): - """Message class 'Request'.""" - - __slots__ = [ - '_header', - '_parameter', - '_binary', - ] - - _fields_and_field_types = { - 'header': 'unitree_api/RequestHeader', - 'parameter': 'string', - 'binary': 'sequence', - } - - SLOT_TYPES = ( - rosidl_parser.definition.NamespacedType(['unitree_api', 'msg'], 'RequestHeader'), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('uint8')), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - from unitree_api.msg import RequestHeader - self.header = kwargs.get('header', RequestHeader()) - self.parameter = kwargs.get('parameter', str()) - self.binary = array.array('B', kwargs.get('binary', [])) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.header != other.header: - return False - if self.parameter != other.parameter: - return False - if self.binary != other.binary: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def header(self): - """Message field 'header'.""" - return self._header - - @header.setter - def header(self, value): - if __debug__: - from unitree_api.msg import RequestHeader - assert \ - isinstance(value, RequestHeader), \ - "The 'header' field must be a sub message of type 'RequestHeader'" - self._header = value - - @property - def parameter(self): - """Message field 'parameter'.""" - return self._parameter - - @parameter.setter - def parameter(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'parameter' field must be of type 'str'" - self._parameter = value - - @property - def binary(self): - """Message field 'binary'.""" - return self._binary - - @binary.setter - def binary(self, value): - if isinstance(value, array.array): - assert value.typecode == 'B', \ - "The 'binary' array.array() must have the type code of 'B'" - self._binary = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'binary' field must be a set or sequence and each value of type 'int' and each unsigned integer in [0, 255]" - self._binary = array.array('B', value) diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header.py deleted file mode 100644 index a1c597d..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header.py +++ /dev/null @@ -1,178 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/RequestHeader.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_RequestHeader(type): - """Metaclass of message 'RequestHeader'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.RequestHeader') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__request_header - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__request_header - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__request_header - cls._TYPE_SUPPORT = module.type_support_msg__msg__request_header - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__request_header - - from unitree_api.msg import RequestIdentity - if RequestIdentity.__class__._TYPE_SUPPORT is None: - RequestIdentity.__class__.__import_type_support__() - - from unitree_api.msg import RequestLease - if RequestLease.__class__._TYPE_SUPPORT is None: - RequestLease.__class__.__import_type_support__() - - from unitree_api.msg import RequestPolicy - if RequestPolicy.__class__._TYPE_SUPPORT is None: - RequestPolicy.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class RequestHeader(metaclass=Metaclass_RequestHeader): - """Message class 'RequestHeader'.""" - - __slots__ = [ - '_identity', - '_lease', - '_policy', - ] - - _fields_and_field_types = { - 'identity': 'unitree_api/RequestIdentity', - 'lease': 'unitree_api/RequestLease', - 'policy': 'unitree_api/RequestPolicy', - } - - SLOT_TYPES = ( - rosidl_parser.definition.NamespacedType(['unitree_api', 'msg'], 'RequestIdentity'), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_api', 'msg'], 'RequestLease'), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_api', 'msg'], 'RequestPolicy'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - from unitree_api.msg import RequestIdentity - self.identity = kwargs.get('identity', RequestIdentity()) - from unitree_api.msg import RequestLease - self.lease = kwargs.get('lease', RequestLease()) - from unitree_api.msg import RequestPolicy - self.policy = kwargs.get('policy', RequestPolicy()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.identity != other.identity: - return False - if self.lease != other.lease: - return False - if self.policy != other.policy: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def identity(self): - """Message field 'identity'.""" - return self._identity - - @identity.setter - def identity(self, value): - if __debug__: - from unitree_api.msg import RequestIdentity - assert \ - isinstance(value, RequestIdentity), \ - "The 'identity' field must be a sub message of type 'RequestIdentity'" - self._identity = value - - @property - def lease(self): - """Message field 'lease'.""" - return self._lease - - @lease.setter - def lease(self, value): - if __debug__: - from unitree_api.msg import RequestLease - assert \ - isinstance(value, RequestLease), \ - "The 'lease' field must be a sub message of type 'RequestLease'" - self._lease = value - - @property - def policy(self): - """Message field 'policy'.""" - return self._policy - - @policy.setter - def policy(self, value): - if __debug__: - from unitree_api.msg import RequestPolicy - assert \ - isinstance(value, RequestPolicy), \ - "The 'policy' field must be a sub message of type 'RequestPolicy'" - self._policy = value diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header_s.c deleted file mode 100644 index f9a2173..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_header_s.c +++ /dev/null @@ -1,159 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/request_header__struct.h" -#include "unitree_api/msg/detail/request_header__functions.h" - -bool unitree_api__msg__request_identity__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_api__msg__request_identity__convert_to_py(void * raw_ros_message); -bool unitree_api__msg__request_lease__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_api__msg__request_lease__convert_to_py(void * raw_ros_message); -bool unitree_api__msg__request_policy__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_api__msg__request_policy__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__request_header__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[46]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._request_header.RequestHeader", full_classname_dest, 45) == 0); - } - unitree_api__msg__RequestHeader * ros_message = _ros_message; - { // identity - PyObject * field = PyObject_GetAttrString(_pymsg, "identity"); - if (!field) { - return false; - } - if (!unitree_api__msg__request_identity__convert_from_py(field, &ros_message->identity)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // lease - PyObject * field = PyObject_GetAttrString(_pymsg, "lease"); - if (!field) { - return false; - } - if (!unitree_api__msg__request_lease__convert_from_py(field, &ros_message->lease)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // policy - PyObject * field = PyObject_GetAttrString(_pymsg, "policy"); - if (!field) { - return false; - } - if (!unitree_api__msg__request_policy__convert_from_py(field, &ros_message->policy)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__request_header__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of RequestHeader */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._request_header"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "RequestHeader"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__RequestHeader * ros_message = (unitree_api__msg__RequestHeader *)raw_ros_message; - { // identity - PyObject * field = NULL; - field = unitree_api__msg__request_identity__convert_to_py(&ros_message->identity); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "identity", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // lease - PyObject * field = NULL; - field = unitree_api__msg__request_lease__convert_to_py(&ros_message->lease); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "lease", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // policy - PyObject * field = NULL; - field = unitree_api__msg__request_policy__convert_to_py(&ros_message->policy); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "policy", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity.py deleted file mode 100644 index 77d5a90..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity.py +++ /dev/null @@ -1,145 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/RequestIdentity.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_RequestIdentity(type): - """Metaclass of message 'RequestIdentity'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.RequestIdentity') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__request_identity - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__request_identity - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__request_identity - cls._TYPE_SUPPORT = module.type_support_msg__msg__request_identity - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__request_identity - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class RequestIdentity(metaclass=Metaclass_RequestIdentity): - """Message class 'RequestIdentity'.""" - - __slots__ = [ - '_id', - '_api_id', - ] - - _fields_and_field_types = { - 'id': 'int64', - 'api_id': 'int64', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('int64'), # noqa: E501 - rosidl_parser.definition.BasicType('int64'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.id = kwargs.get('id', int()) - self.api_id = kwargs.get('api_id', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.id != other.id: - return False - if self.api_id != other.api_id: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property # noqa: A003 - def id(self): # noqa: A003 - """Message field 'id'.""" - return self._id - - @id.setter # noqa: A003 - def id(self, value): # noqa: A003 - if __debug__: - assert \ - isinstance(value, int), \ - "The 'id' field must be of type 'int'" - assert value >= -9223372036854775808 and value < 9223372036854775808, \ - "The 'id' field must be an integer in [-9223372036854775808, 9223372036854775807]" - self._id = value - - @property - def api_id(self): - """Message field 'api_id'.""" - return self._api_id - - @api_id.setter - def api_id(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'api_id' field must be of type 'int'" - assert value >= -9223372036854775808 and value < 9223372036854775808, \ - "The 'api_id' field must be an integer in [-9223372036854775808, 9223372036854775807]" - self._api_id = value diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity_s.c deleted file mode 100644 index ac38d5d..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_identity_s.c +++ /dev/null @@ -1,118 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/request_identity__struct.h" -#include "unitree_api/msg/detail/request_identity__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__request_identity__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[50]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._request_identity.RequestIdentity", full_classname_dest, 49) == 0); - } - unitree_api__msg__RequestIdentity * ros_message = _ros_message; - { // id - PyObject * field = PyObject_GetAttrString(_pymsg, "id"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->id = PyLong_AsLongLong(field); - Py_DECREF(field); - } - { // api_id - PyObject * field = PyObject_GetAttrString(_pymsg, "api_id"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->api_id = PyLong_AsLongLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__request_identity__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of RequestIdentity */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._request_identity"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "RequestIdentity"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__RequestIdentity * ros_message = (unitree_api__msg__RequestIdentity *)raw_ros_message; - { // id - PyObject * field = NULL; - field = PyLong_FromLongLong(ros_message->id); - { - int rc = PyObject_SetAttrString(_pymessage, "id", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // api_id - PyObject * field = NULL; - field = PyLong_FromLongLong(ros_message->api_id); - { - int rc = PyObject_SetAttrString(_pymessage, "api_id", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease.py deleted file mode 100644 index 016cba8..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease.py +++ /dev/null @@ -1,124 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/RequestLease.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_RequestLease(type): - """Metaclass of message 'RequestLease'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.RequestLease') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__request_lease - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__request_lease - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__request_lease - cls._TYPE_SUPPORT = module.type_support_msg__msg__request_lease - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__request_lease - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class RequestLease(metaclass=Metaclass_RequestLease): - """Message class 'RequestLease'.""" - - __slots__ = [ - '_id', - ] - - _fields_and_field_types = { - 'id': 'int64', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('int64'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.id = kwargs.get('id', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.id != other.id: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property # noqa: A003 - def id(self): # noqa: A003 - """Message field 'id'.""" - return self._id - - @id.setter # noqa: A003 - def id(self, value): # noqa: A003 - if __debug__: - assert \ - isinstance(value, int), \ - "The 'id' field must be of type 'int'" - assert value >= -9223372036854775808 and value < 9223372036854775808, \ - "The 'id' field must be an integer in [-9223372036854775808, 9223372036854775807]" - self._id = value diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease_s.c deleted file mode 100644 index a98c137..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_lease_s.c +++ /dev/null @@ -1,98 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/request_lease__struct.h" -#include "unitree_api/msg/detail/request_lease__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__request_lease__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[44]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._request_lease.RequestLease", full_classname_dest, 43) == 0); - } - unitree_api__msg__RequestLease * ros_message = _ros_message; - { // id - PyObject * field = PyObject_GetAttrString(_pymsg, "id"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->id = PyLong_AsLongLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__request_lease__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of RequestLease */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._request_lease"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "RequestLease"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__RequestLease * ros_message = (unitree_api__msg__RequestLease *)raw_ros_message; - { // id - PyObject * field = NULL; - field = PyLong_FromLongLong(ros_message->id); - { - int rc = PyObject_SetAttrString(_pymessage, "id", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy.py deleted file mode 100644 index 97a0331..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy.py +++ /dev/null @@ -1,143 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/RequestPolicy.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_RequestPolicy(type): - """Metaclass of message 'RequestPolicy'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.RequestPolicy') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__request_policy - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__request_policy - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__request_policy - cls._TYPE_SUPPORT = module.type_support_msg__msg__request_policy - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__request_policy - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class RequestPolicy(metaclass=Metaclass_RequestPolicy): - """Message class 'RequestPolicy'.""" - - __slots__ = [ - '_priority', - '_noreply', - ] - - _fields_and_field_types = { - 'priority': 'int32', - 'noreply': 'boolean', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('int32'), # noqa: E501 - rosidl_parser.definition.BasicType('boolean'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.priority = kwargs.get('priority', int()) - self.noreply = kwargs.get('noreply', bool()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.priority != other.priority: - return False - if self.noreply != other.noreply: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def priority(self): - """Message field 'priority'.""" - return self._priority - - @priority.setter - def priority(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'priority' field must be of type 'int'" - assert value >= -2147483648 and value < 2147483648, \ - "The 'priority' field must be an integer in [-2147483648, 2147483647]" - self._priority = value - - @property - def noreply(self): - """Message field 'noreply'.""" - return self._noreply - - @noreply.setter - def noreply(self, value): - if __debug__: - assert \ - isinstance(value, bool), \ - "The 'noreply' field must be of type 'bool'" - self._noreply = value diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy_s.c deleted file mode 100644 index ab38a3a..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_policy_s.c +++ /dev/null @@ -1,118 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/request_policy__struct.h" -#include "unitree_api/msg/detail/request_policy__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__request_policy__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[46]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._request_policy.RequestPolicy", full_classname_dest, 45) == 0); - } - unitree_api__msg__RequestPolicy * ros_message = _ros_message; - { // priority - PyObject * field = PyObject_GetAttrString(_pymsg, "priority"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->priority = (int32_t)PyLong_AsLong(field); - Py_DECREF(field); - } - { // noreply - PyObject * field = PyObject_GetAttrString(_pymsg, "noreply"); - if (!field) { - return false; - } - assert(PyBool_Check(field)); - ros_message->noreply = (Py_True == field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__request_policy__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of RequestPolicy */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._request_policy"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "RequestPolicy"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__RequestPolicy * ros_message = (unitree_api__msg__RequestPolicy *)raw_ros_message; - { // priority - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->priority); - { - int rc = PyObject_SetAttrString(_pymessage, "priority", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // noreply - PyObject * field = NULL; - field = PyBool_FromLong(ros_message->noreply ? 1 : 0); - { - int rc = PyObject_SetAttrString(_pymessage, "noreply", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_s.c deleted file mode 100644 index 9212cde..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_request_s.c +++ /dev/null @@ -1,263 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/request__struct.h" -#include "unitree_api/msg/detail/request__functions.h" - -#include "rosidl_runtime_c/string.h" -#include "rosidl_runtime_c/string_functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool unitree_api__msg__request_header__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_api__msg__request_header__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__request__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[33]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._request.Request", full_classname_dest, 32) == 0); - } - unitree_api__msg__Request * ros_message = _ros_message; - { // header - PyObject * field = PyObject_GetAttrString(_pymsg, "header"); - if (!field) { - return false; - } - if (!unitree_api__msg__request_header__convert_from_py(field, &ros_message->header)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // parameter - PyObject * field = PyObject_GetAttrString(_pymsg, "parameter"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->parameter, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // binary - PyObject * field = PyObject_GetAttrString(_pymsg, "binary"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(uint8_t); - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->binary), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->binary.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'binary'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->binary), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->binary.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyLong_Check(item)); - uint8_t tmp = (uint8_t)PyLong_AsUnsignedLong(item); - - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__request__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of Request */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._request"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "Request"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__Request * ros_message = (unitree_api__msg__Request *)raw_ros_message; - { // header - PyObject * field = NULL; - field = unitree_api__msg__request_header__convert_to_py(&ros_message->header); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "header", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // parameter - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->parameter.data, - strlen(ros_message->parameter.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "parameter", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // binary - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "binary"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(uint8_t)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->binary.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - uint8_t * src = &(ros_message->binary.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->binary.size * sizeof(uint8_t)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response.py deleted file mode 100644 index cf6a415..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response.py +++ /dev/null @@ -1,184 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/Response.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'binary' -import array # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_Response(type): - """Metaclass of message 'Response'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.Response') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__response - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__response - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__response - cls._TYPE_SUPPORT = module.type_support_msg__msg__response - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__response - - from unitree_api.msg import ResponseHeader - if ResponseHeader.__class__._TYPE_SUPPORT is None: - ResponseHeader.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class Response(metaclass=Metaclass_Response): - """Message class 'Response'.""" - - __slots__ = [ - '_header', - '_data', - '_binary', - ] - - _fields_and_field_types = { - 'header': 'unitree_api/ResponseHeader', - 'data': 'string', - 'binary': 'sequence', - } - - SLOT_TYPES = ( - rosidl_parser.definition.NamespacedType(['unitree_api', 'msg'], 'ResponseHeader'), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('int8')), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - from unitree_api.msg import ResponseHeader - self.header = kwargs.get('header', ResponseHeader()) - self.data = kwargs.get('data', str()) - self.binary = array.array('b', kwargs.get('binary', [])) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.header != other.header: - return False - if self.data != other.data: - return False - if self.binary != other.binary: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def header(self): - """Message field 'header'.""" - return self._header - - @header.setter - def header(self, value): - if __debug__: - from unitree_api.msg import ResponseHeader - assert \ - isinstance(value, ResponseHeader), \ - "The 'header' field must be a sub message of type 'ResponseHeader'" - self._header = value - - @property - def data(self): - """Message field 'data'.""" - return self._data - - @data.setter - def data(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'data' field must be of type 'str'" - self._data = value - - @property - def binary(self): - """Message field 'binary'.""" - return self._binary - - @binary.setter - def binary(self, value): - if isinstance(value, array.array): - assert value.typecode == 'b', \ - "The 'binary' array.array() must have the type code of 'b'" - self._binary = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, int) for v in value) and - all(val >= -128 and val < 128 for val in value)), \ - "The 'binary' field must be a set or sequence and each value of type 'int' and each integer in [-128, 127]" - self._binary = array.array('b', value) diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header.py deleted file mode 100644 index c39b64b..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header.py +++ /dev/null @@ -1,153 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/ResponseHeader.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_ResponseHeader(type): - """Metaclass of message 'ResponseHeader'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.ResponseHeader') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__response_header - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__response_header - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__response_header - cls._TYPE_SUPPORT = module.type_support_msg__msg__response_header - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__response_header - - from unitree_api.msg import RequestIdentity - if RequestIdentity.__class__._TYPE_SUPPORT is None: - RequestIdentity.__class__.__import_type_support__() - - from unitree_api.msg import ResponseStatus - if ResponseStatus.__class__._TYPE_SUPPORT is None: - ResponseStatus.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class ResponseHeader(metaclass=Metaclass_ResponseHeader): - """Message class 'ResponseHeader'.""" - - __slots__ = [ - '_identity', - '_status', - ] - - _fields_and_field_types = { - 'identity': 'unitree_api/RequestIdentity', - 'status': 'unitree_api/ResponseStatus', - } - - SLOT_TYPES = ( - rosidl_parser.definition.NamespacedType(['unitree_api', 'msg'], 'RequestIdentity'), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_api', 'msg'], 'ResponseStatus'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - from unitree_api.msg import RequestIdentity - self.identity = kwargs.get('identity', RequestIdentity()) - from unitree_api.msg import ResponseStatus - self.status = kwargs.get('status', ResponseStatus()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.identity != other.identity: - return False - if self.status != other.status: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def identity(self): - """Message field 'identity'.""" - return self._identity - - @identity.setter - def identity(self, value): - if __debug__: - from unitree_api.msg import RequestIdentity - assert \ - isinstance(value, RequestIdentity), \ - "The 'identity' field must be a sub message of type 'RequestIdentity'" - self._identity = value - - @property - def status(self): - """Message field 'status'.""" - return self._status - - @status.setter - def status(self, value): - if __debug__: - from unitree_api.msg import ResponseStatus - assert \ - isinstance(value, ResponseStatus), \ - "The 'status' field must be a sub message of type 'ResponseStatus'" - self._status = value diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header_s.c deleted file mode 100644 index 7201b0b..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_header_s.c +++ /dev/null @@ -1,132 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/response_header__struct.h" -#include "unitree_api/msg/detail/response_header__functions.h" - -bool unitree_api__msg__request_identity__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_api__msg__request_identity__convert_to_py(void * raw_ros_message); -bool unitree_api__msg__response_status__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_api__msg__response_status__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__response_header__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[48]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._response_header.ResponseHeader", full_classname_dest, 47) == 0); - } - unitree_api__msg__ResponseHeader * ros_message = _ros_message; - { // identity - PyObject * field = PyObject_GetAttrString(_pymsg, "identity"); - if (!field) { - return false; - } - if (!unitree_api__msg__request_identity__convert_from_py(field, &ros_message->identity)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // status - PyObject * field = PyObject_GetAttrString(_pymsg, "status"); - if (!field) { - return false; - } - if (!unitree_api__msg__response_status__convert_from_py(field, &ros_message->status)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__response_header__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of ResponseHeader */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._response_header"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "ResponseHeader"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__ResponseHeader * ros_message = (unitree_api__msg__ResponseHeader *)raw_ros_message; - { // identity - PyObject * field = NULL; - field = unitree_api__msg__request_identity__convert_to_py(&ros_message->identity); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "identity", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // status - PyObject * field = NULL; - field = unitree_api__msg__response_status__convert_to_py(&ros_message->status); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "status", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_s.c deleted file mode 100644 index 9798e13..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_s.c +++ /dev/null @@ -1,262 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/response__struct.h" -#include "unitree_api/msg/detail/response__functions.h" - -#include "rosidl_runtime_c/string.h" -#include "rosidl_runtime_c/string_functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool unitree_api__msg__response_header__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_api__msg__response_header__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__response__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[35]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._response.Response", full_classname_dest, 34) == 0); - } - unitree_api__msg__Response * ros_message = _ros_message; - { // header - PyObject * field = PyObject_GetAttrString(_pymsg, "header"); - if (!field) { - return false; - } - if (!unitree_api__msg__response_header__convert_from_py(field, &ros_message->header)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // data - PyObject * field = PyObject_GetAttrString(_pymsg, "data"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->data, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // binary - PyObject * field = PyObject_GetAttrString(_pymsg, "binary"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(int8_t); - if (!rosidl_runtime_c__int8__Sequence__init(&(ros_message->binary), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create int8__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - int8_t * dest = ros_message->binary.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'binary'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__int8__Sequence__init(&(ros_message->binary), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create int8__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - int8_t * dest = ros_message->binary.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyLong_Check(item)); - int8_t tmp = (int8_t)PyLong_AsLong(item); - memcpy(&dest[i], &tmp, sizeof(int8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__response__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of Response */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._response"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "Response"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__Response * ros_message = (unitree_api__msg__Response *)raw_ros_message; - { // header - PyObject * field = NULL; - field = unitree_api__msg__response_header__convert_to_py(&ros_message->header); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "header", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // data - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->data.data, - strlen(ros_message->data.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "data", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // binary - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "binary"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(int8_t)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->binary.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - int8_t * src = &(ros_message->binary.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->binary.size * sizeof(int8_t)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status.py b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status.py deleted file mode 100644 index a8dd87f..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status.py +++ /dev/null @@ -1,124 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_api:msg/ResponseStatus.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_ResponseStatus(type): - """Metaclass of message 'ResponseStatus'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_api') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_api.msg.ResponseStatus') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__response_status - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__response_status - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__response_status - cls._TYPE_SUPPORT = module.type_support_msg__msg__response_status - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__response_status - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class ResponseStatus(metaclass=Metaclass_ResponseStatus): - """Message class 'ResponseStatus'.""" - - __slots__ = [ - '_code', - ] - - _fields_and_field_types = { - 'code': 'int32', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('int32'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.code = kwargs.get('code', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.code != other.code: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def code(self): - """Message field 'code'.""" - return self._code - - @code.setter - def code(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'code' field must be of type 'int'" - assert value >= -2147483648 and value < 2147483648, \ - "The 'code' field must be an integer in [-2147483648, 2147483647]" - self._code = value diff --git a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status_s.c b/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status_s.c deleted file mode 100644 index 6a9497c..0000000 --- a/deploy/robot_ws/install/unitree_api/lib/python3.8/site-packages/unitree_api/msg/_response_status_s.c +++ /dev/null @@ -1,98 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_api/msg/detail/response_status__struct.h" -#include "unitree_api/msg/detail/response_status__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_api__msg__response_status__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[48]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_api.msg._response_status.ResponseStatus", full_classname_dest, 47) == 0); - } - unitree_api__msg__ResponseStatus * ros_message = _ros_message; - { // code - PyObject * field = PyObject_GetAttrString(_pymsg, "code"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->code = (int32_t)PyLong_AsLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_api__msg__response_status__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of ResponseStatus */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_api.msg._response_status"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "ResponseStatus"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_api__msg__ResponseStatus * ros_message = (unitree_api__msg__ResponseStatus *)raw_ros_message; - { // code - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->code); - { - int rc = PyObject_SetAttrString(_pymessage, "code", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/package_run_dependencies/unitree_api b/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/package_run_dependencies/unitree_api deleted file mode 100644 index cabffa8..0000000 --- a/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/package_run_dependencies/unitree_api +++ /dev/null @@ -1 +0,0 @@ -geometry_msgs;rosidl_default_runtime;ament_lint_auto;ament_lint_common \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/packages/unitree_api b/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/packages/unitree_api deleted file mode 100644 index e69de29..0000000 diff --git a/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/parent_prefix_path/unitree_api b/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/parent_prefix_path/unitree_api deleted file mode 100644 index e053138..0000000 --- a/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/parent_prefix_path/unitree_api +++ /dev/null @@ -1 +0,0 @@ -/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/go2py_node:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/unitree_go:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/unitree_api:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/hesai_ros_driver:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/unitree_go:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/unitree_api:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/rmw_cyclonedds_cpp:/opt/ros/foxy \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/rosidl_interfaces/unitree_api b/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/rosidl_interfaces/unitree_api deleted file mode 100644 index cf70eec..0000000 --- a/deploy/robot_ws/install/unitree_api/share/ament_index/resource_index/rosidl_interfaces/unitree_api +++ /dev/null @@ -1,16 +0,0 @@ -msg/Request.idl -msg/Request.msg -msg/RequestHeader.idl -msg/RequestHeader.msg -msg/RequestIdentity.idl -msg/RequestIdentity.msg -msg/RequestLease.idl -msg/RequestLease.msg -msg/RequestPolicy.idl -msg/RequestPolicy.msg -msg/Response.idl -msg/Response.msg -msg/ResponseHeader.idl -msg/ResponseHeader.msg -msg/ResponseStatus.idl -msg/ResponseStatus.msg \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/colcon-core/packages/unitree_api b/deploy/robot_ws/install/unitree_api/share/colcon-core/packages/unitree_api deleted file mode 100644 index c819a81..0000000 --- a/deploy/robot_ws/install/unitree_api/share/colcon-core/packages/unitree_api +++ /dev/null @@ -1 +0,0 @@ -geometry_msgs:rosidl_default_runtime \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_dependencies-extras.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_dependencies-extras.cmake deleted file mode 100644 index 728a66a..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_dependencies-extras.cmake +++ /dev/null @@ -1,92 +0,0 @@ -# generated from ament_cmake_export_dependencies/cmake/ament_cmake_export_dependencies-extras.cmake.in - -set(_exported_dependencies "geometry_msgs;geometry_msgs;std_msgs;builtin_interfaces;rosidl_runtime_c;rosidl_typesupport_interface;geometry_msgs;std_msgs;builtin_interfaces;geometry_msgs;std_msgs;builtin_interfaces") - -find_package(ament_cmake_libraries QUIET REQUIRED) - -# find_package() all dependencies -# and append their DEFINITIONS INCLUDE_DIRS, LIBRARIES, and LINK_FLAGS -# variables to unitree_api_DEFINITIONS, unitree_api_INCLUDE_DIRS, -# unitree_api_LIBRARIES, and unitree_api_LINK_FLAGS. -# Additionally collect the direct dependency names in -# unitree_api_DEPENDENCIES as well as the recursive dependency names -# in unitree_api_RECURSIVE_DEPENDENCIES. -if(NOT _exported_dependencies STREQUAL "") - find_package(ament_cmake_core QUIET REQUIRED) - set(unitree_api_DEPENDENCIES ${_exported_dependencies}) - set(unitree_api_RECURSIVE_DEPENDENCIES ${_exported_dependencies}) - set(_libraries) - foreach(_dep ${_exported_dependencies}) - if(NOT ${_dep}_FOUND) - find_package("${_dep}" QUIET REQUIRED) - endif() - # if a package provides modern CMake interface targets use them - # exclusively assuming the classic CMake variables only exist for - # backward compatibility - set(use_modern_cmake FALSE) - if(NOT "${${_dep}_TARGETS}" STREQUAL "") - foreach(_target ${${_dep}_TARGETS}) - # only use actual targets - # in case a package uses this variable for other content - if(TARGET "${_target}") - get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES) - if(_include_dirs) - list_append_unique(unitree_api_INCLUDE_DIRS "${_include_dirs}") - endif() - - get_target_property(_imported_configurations ${_target} IMPORTED_CONFIGURATIONS) - if(_imported_configurations) - string(TOUPPER "${_imported_configurations}" _imported_configurations) - if(DEBUG_CONFIGURATIONS) - string(TOUPPER "${DEBUG_CONFIGURATIONS}" _debug_configurations_uppercase) - else() - set(_debug_configurations_uppercase "DEBUG") - endif() - foreach(_imported_config ${_imported_configurations}) - get_target_property(_imported_implib ${_target} IMPORTED_IMPLIB_${_imported_config}) - if(_imported_implib) - set(_imported_implib_config "optimized") - if(${_imported_config} IN_LIST _debug_configurations_uppercase) - set(_imported_implib_config "debug") - endif() - list(APPEND _libraries ${_imported_implib_config} ${_imported_implib}) - else() - get_target_property(_imported_location ${_target} IMPORTED_LOCATION_${_imported_config}) - if(_imported_location) - list(APPEND _libraries "${_imported_location}") - endif() - endif() - endforeach() - endif() - - get_target_property(_link_libraries ${_target} INTERFACE_LINK_LIBRARIES) - if(_link_libraries) - list(APPEND _libraries "${_link_libraries}") - endif() - set(use_modern_cmake TRUE) - endif() - endforeach() - endif() - if(NOT use_modern_cmake) - if(${_dep}_DEFINITIONS) - list_append_unique(unitree_api_DEFINITIONS "${${_dep}_DEFINITIONS}") - endif() - if(${_dep}_INCLUDE_DIRS) - list_append_unique(unitree_api_INCLUDE_DIRS "${${_dep}_INCLUDE_DIRS}") - endif() - if(${_dep}_LIBRARIES) - list(APPEND _libraries "${${_dep}_LIBRARIES}") - endif() - if(${_dep}_LINK_FLAGS) - list_append_unique(unitree_api_LINK_FLAGS "${${_dep}_LINK_FLAGS}") - endif() - if(${_dep}_RECURSIVE_DEPENDENCIES) - list_append_unique(unitree_api_RECURSIVE_DEPENDENCIES "${${_dep}_RECURSIVE_DEPENDENCIES}") - endif() - endif() - if(_libraries) - ament_libraries_deduplicate(_libraries "${_libraries}") - list(APPEND unitree_api_LIBRARIES "${_libraries}") - endif() - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_include_directories-extras.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_include_directories-extras.cmake deleted file mode 100644 index a8069fa..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_include_directories-extras.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# generated from ament_cmake_export_include_directories/cmake/ament_cmake_export_include_directories-extras.cmake.in - -set(_exported_include_dirs "${unitree_api_DIR}/../../../include") - -# append include directories to unitree_api_INCLUDE_DIRS -# warn about not existing paths -if(NOT _exported_include_dirs STREQUAL "") - find_package(ament_cmake_core QUIET REQUIRED) - foreach(_exported_include_dir ${_exported_include_dirs}) - if(NOT IS_DIRECTORY "${_exported_include_dir}") - message(WARNING "Package 'unitree_api' exports the include directory '${_exported_include_dir}' which doesn't exist") - endif() - normalize_path(_exported_include_dir "${_exported_include_dir}") - list(APPEND unitree_api_INCLUDE_DIRS "${_exported_include_dir}") - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_libraries-extras.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_libraries-extras.cmake deleted file mode 100644 index d514da4..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_libraries-extras.cmake +++ /dev/null @@ -1,140 +0,0 @@ -# generated from ament_cmake_export_libraries/cmake/template/ament_cmake_export_libraries.cmake.in - -set(_exported_libraries "unitree_api__rosidl_generator_c;unitree_api__rosidl_typesupport_c;unitree_api__rosidl_typesupport_cpp") -set(_exported_library_names "") - -# populate unitree_api_LIBRARIES -if(NOT _exported_libraries STREQUAL "") - # loop over libraries, either target names or absolute paths - list(LENGTH _exported_libraries _length) - set(_i 0) - while(_i LESS _length) - list(GET _exported_libraries ${_i} _arg) - - # pass linker flags along - if("${_arg}" MATCHES "^-" AND NOT "${_arg}" MATCHES "^-[l|framework]") - list(APPEND unitree_api_LIBRARIES "${_arg}") - math(EXPR _i "${_i} + 1") - continue() - endif() - - if("${_arg}" MATCHES "^(debug|optimized|general)$") - # remember build configuration keyword - # and get following library - set(_cfg "${_arg}") - math(EXPR _i "${_i} + 1") - if(_i EQUAL _length) - message(FATAL_ERROR "Package 'unitree_api' passes the build configuration keyword '${_cfg}' as the last exported library") - endif() - list(GET _exported_libraries ${_i} _library) - else() - # the value is a library without a build configuration keyword - set(_cfg "") - set(_library "${_arg}") - endif() - math(EXPR _i "${_i} + 1") - - if(NOT IS_ABSOLUTE "${_library}") - # search for library target relative to this CMake file - set(_lib "NOTFOUND") - find_library( - _lib NAMES "${_library}" - PATHS "${unitree_api_DIR}/../../../lib" - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH - ) - - if(NOT _lib) - # warn about not existing library and ignore it - message(FATAL_ERROR "Package 'unitree_api' exports the library '${_library}' which couldn't be found") - elseif(NOT IS_ABSOLUTE "${_lib}") - # the found library must be an absolute path - message(FATAL_ERROR "Package 'unitree_api' found the library '${_library}' at '${_lib}' which is not an absolute path") - elseif(NOT EXISTS "${_lib}") - # the found library must exist - message(FATAL_ERROR "Package 'unitree_api' found the library '${_lib}' which doesn't exist") - else() - list(APPEND unitree_api_LIBRARIES ${_cfg} "${_lib}") - endif() - - else() - if(NOT EXISTS "${_library}") - # the found library must exist - message(WARNING "Package 'unitree_api' exports the library '${_library}' which doesn't exist") - else() - list(APPEND unitree_api_LIBRARIES ${_cfg} "${_library}") - endif() - endif() - endwhile() -endif() - -# find_library() library names with optional LIBRARY_DIRS -# and add the libraries to unitree_api_LIBRARIES -if(NOT _exported_library_names STREQUAL "") - # loop over library names - # but remember related build configuration keyword if available - list(LENGTH _exported_library_names _length) - set(_i 0) - while(_i LESS _length) - list(GET _exported_library_names ${_i} _arg) - # pass linker flags along - if("${_arg}" MATCHES "^-" AND NOT "${_arg}" MATCHES "^-[l|framework]") - list(APPEND unitree_api_LIBRARIES "${_arg}") - math(EXPR _i "${_i} + 1") - continue() - endif() - - if("${_arg}" MATCHES "^(debug|optimized|general)$") - # remember build configuration keyword - # and get following library name - set(_cfg "${_arg}") - math(EXPR _i "${_i} + 1") - if(_i EQUAL _length) - message(FATAL_ERROR "Package 'unitree_api' passes the build configuration keyword '${_cfg}' as the last exported target") - endif() - list(GET _exported_library_names ${_i} _library) - else() - # the value is a library target without a build configuration keyword - set(_cfg "") - set(_library "${_arg}") - endif() - math(EXPR _i "${_i} + 1") - - # extract optional LIBRARY_DIRS from library name - string(REPLACE ":" ";" _library_dirs "${_library}") - list(GET _library_dirs 0 _library_name) - list(REMOVE_AT _library_dirs 0) - - set(_lib "NOTFOUND") - if(NOT _library_dirs) - # search for library in the common locations - find_library( - _lib - NAMES "${_library_name}" - ) - if(NOT _lib) - # warn about not existing library and later ignore it - message(WARNING "Package 'unitree_api' exports library '${_library_name}' which couldn't be found") - endif() - else() - # search for library in the specified directories - find_library( - _lib - NAMES "${_library_name}" - PATHS ${_library_dirs} - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH - ) - if(NOT _lib) - # warn about not existing library and later ignore it - message(WARNING "Package 'unitree_api' exports library '${_library_name}' with LIBRARY_DIRS '${_library_dirs}' which couldn't be found") - endif() - endif() - if(_lib) - list(APPEND unitree_api_LIBRARIES ${_cfg} "${_lib}") - endif() - endwhile() -endif() - -# TODO(dirk-thomas) deduplicate unitree_api_LIBRARIES -# while maintaining library order -# as well as build configuration keywords -# as well as linker flags diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_targets-extras.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_targets-extras.cmake deleted file mode 100644 index cc5525c..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/ament_cmake_export_targets-extras.cmake +++ /dev/null @@ -1,27 +0,0 @@ -# generated from ament_cmake_export_targets/cmake/ament_cmake_export_targets-extras.cmake.in - -set(_exported_targets "unitree_api__rosidl_generator_c;unitree_api__rosidl_typesupport_introspection_c;unitree_api__rosidl_typesupport_c;unitree_api__rosidl_generator_cpp;unitree_api__rosidl_typesupport_introspection_cpp;unitree_api__rosidl_typesupport_cpp") - -# include all exported targets -if(NOT _exported_targets STREQUAL "") - foreach(_target ${_exported_targets}) - set(_export_file "${unitree_api_DIR}/${_target}Export.cmake") - include("${_export_file}") - - # extract the target names associated with the export - set(_regex "foreach\\((_cmake)?_expected_?[Tt]arget (IN ITEMS )?(.+)\\)") - file( - STRINGS "${_export_file}" _foreach_targets - REGEX "${_regex}") - list(LENGTH _foreach_targets _matches) - if(NOT _matches EQUAL 1) - message(FATAL_ERROR - "Failed to find exported target names in '${_export_file}'") - endif() - string(REGEX REPLACE "${_regex}" "\\3" _targets "${_foreach_targets}") - string(REPLACE " " ";" _targets "${_targets}") - list(LENGTH _targets _length) - - list(APPEND unitree_api_TARGETS ${_targets}) - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake-extras.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake-extras.cmake deleted file mode 100644 index 9b686e8..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake-extras.cmake +++ /dev/null @@ -1,4 +0,0 @@ -# generated from rosidl_cmake/cmake/rosidl_cmake-extras.cmake.in - -set(unitree_api_IDL_FILES "msg/Request.idl;msg/RequestHeader.idl;msg/RequestIdentity.idl;msg/RequestLease.idl;msg/RequestPolicy.idl;msg/Response.idl;msg/ResponseHeader.idl;msg/ResponseStatus.idl") -set(unitree_api_INTERFACE_FILES "msg/Request.msg;msg/RequestHeader.msg;msg/RequestIdentity.msg;msg/RequestLease.msg;msg/RequestPolicy.msg;msg/Response.msg;msg/ResponseHeader.msg;msg/ResponseStatus.msg") diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake deleted file mode 100644 index c9d47ed..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake +++ /dev/null @@ -1,46 +0,0 @@ -# generated from -# rosidl_cmake/cmake/template/rosidl_cmake_export_typesupport_libraries.cmake.in - -set(_exported_typesupport_libraries - "__rosidl_typesupport_fastrtps_c:unitree_api__rosidl_typesupport_fastrtps_c;__rosidl_typesupport_fastrtps_cpp:unitree_api__rosidl_typesupport_fastrtps_cpp") - -# populate unitree_api_LIBRARIES_ -if(NOT _exported_typesupport_libraries STREQUAL "") - # loop over typesupport libraries - foreach(_tuple ${_exported_typesupport_libraries}) - string(REPLACE ":" ";" _tuple "${_tuple}") - list(GET _tuple 0 _suffix) - list(GET _tuple 1 _library) - - if(NOT IS_ABSOLUTE "${_library}") - # search for library target relative to this CMake file - set(_lib "NOTFOUND") - find_library( - _lib NAMES "${_library}" - PATHS "${unitree_api_DIR}/../../../lib" - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH - ) - - if(NOT _lib) - # the library wasn't found - message(FATAL_ERROR "Package 'unitree_api' exports the typesupport library '${_library}' which couldn't be found") - elseif(NOT IS_ABSOLUTE "${_lib}") - # the found library must be an absolute path - message(FATAL_ERROR "Package 'unitree_api' found the typesupport library '${_library}' at '${_lib}' which is not an absolute path") - elseif(NOT EXISTS "${_lib}") - # the found library must exist - message(FATAL_ERROR "Package 'unitree_api' found the typesupport library '${_lib}' which doesn't exist") - else() - list(APPEND unitree_api_LIBRARIES${_suffix} ${_cfg} "${_lib}") - endif() - - else() - if(NOT EXISTS "${_library}") - # the found library must exist - message(WARNING "Package 'unitree_api' exports the typesupport library '${_library}' which doesn't exist") - else() - list(APPEND unitree_api_LIBRARIES${_suffix} "${_library}") - endif() - endif() - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake deleted file mode 100644 index 3a0327c..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# generated from -# rosidl_cmake/cmake/template/rosidl_cmake_export_typesupport_targets.cmake.in - -set(_exported_typesupport_targets - "__rosidl_typesupport_introspection_c:unitree_api__rosidl_typesupport_introspection_c;__rosidl_typesupport_introspection_cpp:unitree_api__rosidl_typesupport_introspection_cpp") - -# populate unitree_api_TARGETS_ -if(NOT _exported_typesupport_targets STREQUAL "") - # loop over typesupport targets - foreach(_tuple ${_exported_typesupport_targets}) - string(REPLACE ":" ";" _tuple "${_tuple}") - list(GET _tuple 0 _suffix) - list(GET _tuple 1 _target) - - set(_target "unitree_api::${_target}") - if(NOT TARGET "${_target}") - # the exported target must exist - message(WARNING "Package 'unitree_api' exports the typesupport target '${_target}' which doesn't exist") - else() - list(APPEND unitree_api_TARGETS${_suffix} "${_target}") - endif() - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig-version.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig-version.cmake deleted file mode 100644 index 7beb732..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig-version.cmake +++ /dev/null @@ -1,14 +0,0 @@ -# generated from ament/cmake/core/templates/nameConfig-version.cmake.in -set(PACKAGE_VERSION "0.0.0") - -set(PACKAGE_VERSION_EXACT False) -set(PACKAGE_VERSION_COMPATIBLE False) - -if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}") - set(PACKAGE_VERSION_EXACT True) - set(PACKAGE_VERSION_COMPATIBLE True) -endif() - -if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}") - set(PACKAGE_VERSION_COMPATIBLE True) -endif() diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig.cmake deleted file mode 100644 index bd35a5c..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_apiConfig.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# generated from ament/cmake/core/templates/nameConfig.cmake.in - -# prevent multiple inclusion -if(_unitree_api_CONFIG_INCLUDED) - # ensure to keep the found flag the same - if(NOT DEFINED unitree_api_FOUND) - # explicitly set it to FALSE, otherwise CMake will set it to TRUE - set(unitree_api_FOUND FALSE) - elseif(NOT unitree_api_FOUND) - # use separate condition to avoid uninitialized variable warning - set(unitree_api_FOUND FALSE) - endif() - return() -endif() -set(_unitree_api_CONFIG_INCLUDED TRUE) - -# output package information -if(NOT unitree_api_FIND_QUIETLY) - message(STATUS "Found unitree_api: 0.0.0 (${unitree_api_DIR})") -endif() - -# warn when using a deprecated package -if(NOT "" STREQUAL "") - set(_msg "Package 'unitree_api' is deprecated") - # append custom deprecation text if available - if(NOT "" STREQUAL "TRUE") - set(_msg "${_msg} ()") - endif() - # optionally quiet the deprecation message - if(NOT ${unitree_api_DEPRECATED_QUIET}) - message(DEPRECATION "${_msg}") - endif() -endif() - -# flag package as ament-based to distinguish it after being find_package()-ed -set(unitree_api_FOUND_AMENT_PACKAGE TRUE) - -# include all config extra files -set(_extras "rosidl_cmake-extras.cmake;ament_cmake_export_dependencies-extras.cmake;ament_cmake_export_libraries-extras.cmake;ament_cmake_export_targets-extras.cmake;ament_cmake_export_include_directories-extras.cmake;rosidl_cmake_export_typesupport_libraries-extras.cmake;rosidl_cmake_export_typesupport_targets-extras.cmake") -foreach(_extra ${_extras}) - include("${unitree_api_DIR}/${_extra}") -endforeach() diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport-noconfig.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport-noconfig.cmake deleted file mode 100644 index 2e4f4d8..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_api::unitree_api__rosidl_generator_c" for configuration "" -set_property(TARGET unitree_api::unitree_api__rosidl_generator_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_api::unitree_api__rosidl_generator_c PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_generator_c.so" - IMPORTED_SONAME_NOCONFIG "libunitree_api__rosidl_generator_c.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_api::unitree_api__rosidl_generator_c ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_api::unitree_api__rosidl_generator_c "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_generator_c.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport.cmake deleted file mode 100644 index 4f7e95e..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_api::unitree_api__rosidl_generator_c) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_api::unitree_api__rosidl_generator_c -add_library(unitree_api::unitree_api__rosidl_generator_c SHARED IMPORTED) - -set_target_properties(unitree_api::unitree_api__rosidl_generator_c PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_interface::rosidl_typesupport_interface;rcutils::rcutils" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_api__rosidl_generator_cExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cppExport.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cppExport.cmake deleted file mode 100644 index 9f1900d..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_generator_cppExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_api::unitree_api__rosidl_generator_cpp) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_api::unitree_api__rosidl_generator_cpp -add_library(unitree_api::unitree_api__rosidl_generator_cpp INTERFACE IMPORTED) - -set_target_properties(unitree_api::unitree_api__rosidl_generator_cpp PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;rosidl_runtime_cpp::rosidl_runtime_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 3.0.0) - message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_api__rosidl_generator_cppExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport-noconfig.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport-noconfig.cmake deleted file mode 100644 index 7d8f168..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_api::unitree_api__rosidl_typesupport_c" for configuration "" -set_property(TARGET unitree_api::unitree_api__rosidl_typesupport_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_c PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_c.so" - IMPORTED_SONAME_NOCONFIG "libunitree_api__rosidl_typesupport_c.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_api::unitree_api__rosidl_typesupport_c ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_api::unitree_api__rosidl_typesupport_c "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_c.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport.cmake deleted file mode 100644 index a51f7a6..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_api::unitree_api__rosidl_typesupport_c) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_api::unitree_api__rosidl_typesupport_c -add_library(unitree_api::unitree_api__rosidl_typesupport_c SHARED IMPORTED) - -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_c PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_c::rosidl_typesupport_c;rosidl_typesupport_interface::rosidl_typesupport_interface;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_api__rosidl_typesupport_cExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport-noconfig.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport-noconfig.cmake deleted file mode 100644 index f96356e..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_api::unitree_api__rosidl_typesupport_cpp" for configuration "" -set_property(TARGET unitree_api::unitree_api__rosidl_typesupport_cpp APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_cpp PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_cpp.so" - IMPORTED_SONAME_NOCONFIG "libunitree_api__rosidl_typesupport_cpp.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_api::unitree_api__rosidl_typesupport_cpp ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_api::unitree_api__rosidl_typesupport_cpp "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_cpp.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport.cmake deleted file mode 100644 index 16c31ac..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_cppExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_api::unitree_api__rosidl_typesupport_cpp) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_api::unitree_api__rosidl_typesupport_cpp -add_library(unitree_api::unitree_api__rosidl_typesupport_cpp SHARED IMPORTED) - -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_cpp PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "rosidl_runtime_c::rosidl_runtime_c;rosidl_runtime_cpp::rosidl_runtime_cpp;rosidl_typesupport_cpp::rosidl_typesupport_cpp;rosidl_typesupport_interface::rosidl_typesupport_interface;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_api__rosidl_typesupport_cppExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport-noconfig.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport-noconfig.cmake deleted file mode 100644 index 00ce971..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_api::unitree_api__rosidl_typesupport_introspection_c" for configuration "" -set_property(TARGET unitree_api::unitree_api__rosidl_typesupport_introspection_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_introspection_c PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_introspection_c.so" - IMPORTED_SONAME_NOCONFIG "libunitree_api__rosidl_typesupport_introspection_c.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_api::unitree_api__rosidl_typesupport_introspection_c ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_api::unitree_api__rosidl_typesupport_introspection_c "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_introspection_c.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport.cmake deleted file mode 100644 index 2dde5a4..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cExport.cmake +++ /dev/null @@ -1,114 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_api::unitree_api__rosidl_typesupport_introspection_c) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_api::unitree_api__rosidl_typesupport_introspection_c -add_library(unitree_api::unitree_api__rosidl_typesupport_introspection_c SHARED IMPORTED) - -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_introspection_c PROPERTIES - INTERFACE_LINK_LIBRARIES "unitree_api::unitree_api__rosidl_generator_c;rosidl_typesupport_introspection_c::rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_api__rosidl_typesupport_introspection_cExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# Make sure the targets which have been exported in some other -# export set exist. -unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets) -foreach(_target "unitree_api::unitree_api__rosidl_generator_c" ) - if(NOT TARGET "${_target}" ) - set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}") - endif() -endforeach() - -if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets) - if(CMAKE_FIND_PACKAGE_NAME) - set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE) - set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}") - else() - message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}") - endif() -endif() -unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport-noconfig.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport-noconfig.cmake deleted file mode 100644 index 2500f11..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_api::unitree_api__rosidl_typesupport_introspection_cpp" for configuration "" -set_property(TARGET unitree_api::unitree_api__rosidl_typesupport_introspection_cpp APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_introspection_cpp PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_introspection_cpp.so" - IMPORTED_SONAME_NOCONFIG "libunitree_api__rosidl_typesupport_introspection_cpp.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_api::unitree_api__rosidl_typesupport_introspection_cpp ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_api::unitree_api__rosidl_typesupport_introspection_cpp "${_IMPORT_PREFIX}/lib/libunitree_api__rosidl_typesupport_introspection_cpp.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport.cmake b/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport.cmake deleted file mode 100644 index 657a3e2..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/cmake/unitree_api__rosidl_typesupport_introspection_cppExport.cmake +++ /dev/null @@ -1,98 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_api::unitree_api__rosidl_typesupport_introspection_cpp) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_api::unitree_api__rosidl_typesupport_introspection_cpp -add_library(unitree_api::unitree_api__rosidl_typesupport_introspection_cpp SHARED IMPORTED) - -set_target_properties(unitree_api::unitree_api__rosidl_typesupport_introspection_cpp PROPERTIES - INTERFACE_LINK_LIBRARIES "rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_interface::rosidl_typesupport_interface;rosidl_typesupport_introspection_cpp::rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_api__rosidl_typesupport_introspection_cppExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.dsv deleted file mode 100644 index 79d4c95..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;AMENT_PREFIX_PATH; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.sh deleted file mode 100644 index 02e441b..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/ament_prefix_path.sh +++ /dev/null @@ -1,4 +0,0 @@ -# copied from -# ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh - -ament_prepend_unique_value AMENT_PREFIX_PATH "$AMENT_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.dsv deleted file mode 100644 index 89bec93..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;LD_LIBRARY_PATH;lib diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.sh deleted file mode 100644 index 292e518..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/library_path.sh +++ /dev/null @@ -1,16 +0,0 @@ -# copied from ament_package/template/environment_hook/library_path.sh - -# detect if running on Darwin platform -_UNAME=`uname -s` -_IS_DARWIN=0 -if [ "$_UNAME" = "Darwin" ]; then - _IS_DARWIN=1 -fi -unset _UNAME - -if [ $_IS_DARWIN -eq 0 ]; then - ament_prepend_unique_value LD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib" -else - ament_prepend_unique_value DYLD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib" -fi -unset _IS_DARWIN diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.dsv deleted file mode 100644 index b94426a..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate-if-exists;PATH;bin diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.sh deleted file mode 100644 index e59b749..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/path.sh +++ /dev/null @@ -1,5 +0,0 @@ -# copied from ament_cmake_core/cmake/environment_hooks/environment/path.sh - -if [ -d "$AMENT_CURRENT_PREFIX/bin" ]; then - ament_prepend_unique_value PATH "$AMENT_CURRENT_PREFIX/bin" -fi diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.dsv deleted file mode 100644 index 84dbc4c..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;PYTHONPATH;lib/python3.8/site-packages diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.sh deleted file mode 100644 index 7fe2b2f..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/environment/pythonpath.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from ament_package/template/environment_hook/pythonpath.sh.in - -ament_prepend_unique_value PYTHONPATH "$AMENT_CURRENT_PREFIX/lib/python3.8/site-packages" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.dsv deleted file mode 100644 index e119f32..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;CMAKE_PREFIX_PATH; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.ps1 b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.ps1 deleted file mode 100644 index d03facc..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em - -colcon_prepend_unique_value CMAKE_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.sh deleted file mode 100644 index a948e68..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/cmake_prefix_path.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_core/shell/template/hook_prepend_value.sh.em - -_colcon_prepend_unique_value CMAKE_PREFIX_PATH "$COLCON_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.dsv deleted file mode 100644 index 89bec93..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;LD_LIBRARY_PATH;lib diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.ps1 b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.ps1 deleted file mode 100644 index f6df601..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em - -colcon_prepend_unique_value LD_LIBRARY_PATH "$env:COLCON_CURRENT_PREFIX\lib" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.sh deleted file mode 100644 index ca3c102..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/ld_library_path_lib.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_core/shell/template/hook_prepend_value.sh.em - -_colcon_prepend_unique_value LD_LIBRARY_PATH "$COLCON_CURRENT_PREFIX/lib" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.dsv deleted file mode 100644 index 84dbc4c..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;PYTHONPATH;lib/python3.8/site-packages diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.ps1 b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.ps1 deleted file mode 100644 index 12877ef..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em - -colcon_prepend_unique_value PYTHONPATH "$env:COLCON_CURRENT_PREFIX\lib/python3.8/site-packages" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.sh deleted file mode 100644 index ed8efd9..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/hook/pythonpath.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_core/shell/template/hook_prepend_value.sh.em - -_colcon_prepend_unique_value PYTHONPATH "$COLCON_CURRENT_PREFIX/lib/python3.8/site-packages" diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.bash b/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.bash deleted file mode 100644 index 49782f2..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.bash +++ /dev/null @@ -1,46 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.bash.in - -# source local_setup.sh from same directory as this file -_this_path=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" && pwd) -# provide AMENT_CURRENT_PREFIX to shell script -AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd) -# store AMENT_CURRENT_PREFIX to restore it before each environment hook -_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX - -# trace output -if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_this_path/local_setup.sh\"" -fi -. "$_this_path/local_setup.sh" -unset _this_path - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks -AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX -# list all environment hooks of this package - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - # restore AMENT_CURRENT_PREFIX for each environment hook - AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - . "$_hook" - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -unset _package_local_setup_AMENT_CURRENT_PREFIX -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.dsv deleted file mode 100644 index 3a58b11..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.dsv +++ /dev/null @@ -1,4 +0,0 @@ -source;share/unitree_api/environment/ament_prefix_path.sh -source;share/unitree_api/environment/library_path.sh -source;share/unitree_api/environment/path.sh -source;share/unitree_api/environment/pythonpath.sh diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.sh deleted file mode 100644 index 96c9022..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.sh +++ /dev/null @@ -1,135 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.sh.in - -# since this file is sourced use either the provided AMENT_CURRENT_PREFIX -# or fall back to the destination set at configure time -: ${AMENT_CURRENT_PREFIX:="/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/unitree_api"} -if [ ! -d "$AMENT_CURRENT_PREFIX" ]; then - if [ -z "$COLCON_CURRENT_PREFIX" ]; then - echo "The compile time prefix path '$AMENT_CURRENT_PREFIX' doesn't " \ - "exist. Consider sourcing a different extension than '.sh'." 1>&2 - else - AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" - fi -fi - -# function to append values to environment variables -# using colons as separators and avoiding leading separators -ament_append_value() { - # arguments - _listname="$1" - _value="$2" - #echo "listname $_listname" - #eval echo "list value \$$_listname" - #echo "value $_value" - - # avoid leading separator - eval _values=\"\$$_listname\" - if [ -z "$_values" ]; then - eval export $_listname=\"$_value\" - #eval echo "set list \$$_listname" - else - # field separator must not be a colon - _ament_append_value_IFS=$IFS - unset IFS - eval export $_listname=\"\$$_listname:$_value\" - #eval echo "append list \$$_listname" - IFS=$_ament_append_value_IFS - unset _ament_append_value_IFS - fi - unset _values - - unset _value - unset _listname -} - -# function to prepend non-duplicate values to environment variables -# using colons as separators and avoiding trailing separators -ament_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - #echo "listname $_listname" - #eval echo "list value \$$_listname" - #echo "value $_value" - - # check if the list contains the value - eval _values=\"\$$_listname\" - _duplicate= - _ament_prepend_unique_value_IFS=$IFS - IFS=":" - if [ "$AMENT_SHELL" = "zsh" ]; then - ament_zsh_to_array _values - fi - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - if [ "$_item" = "$_value" ]; then - _duplicate=1 - fi - done - unset _item - - # prepend only non-duplicates - if [ -z "$_duplicate" ]; then - # avoid trailing separator - if [ -z "$_values" ]; then - eval export $_listname=\"$_value\" - #eval echo "set list \$$_listname" - else - # field separator must not be a colon - unset IFS - eval export $_listname=\"$_value:\$$_listname\" - #eval echo "prepend list \$$_listname" - fi - fi - IFS=$_ament_prepend_unique_value_IFS - unset _ament_prepend_unique_value_IFS - unset _duplicate - unset _values - - unset _value - unset _listname -} - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# list all environment hooks of this package -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_api/environment/ament_prefix_path.sh" -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_api/environment/library_path.sh" -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_api/environment/path.sh" -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_api/environment/pythonpath.sh" - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - if [ "$AMENT_SHELL" = "zsh" ]; then - ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS - fi - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - if [ -f "$_hook" ]; then - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - # trace output - if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_hook\"" - fi - . "$_hook" - fi - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -# reset AMENT_CURRENT_PREFIX after each package -# allowing to source multiple package-level setup files -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.zsh b/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.zsh deleted file mode 100644 index fe161be..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/local_setup.zsh +++ /dev/null @@ -1,59 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.zsh.in - -AMENT_SHELL=zsh - -# source local_setup.sh from same directory as this file -_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd) -# provide AMENT_CURRENT_PREFIX to shell script -AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd) -# store AMENT_CURRENT_PREFIX to restore it before each environment hook -_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX - -# function to convert array-like strings into arrays -# to wordaround SH_WORD_SPLIT not being set -ament_zsh_to_array() { - local _listname=$1 - local _dollar="$" - local _split="{=" - local _to_array="(\"$_dollar$_split$_listname}\")" - eval $_listname=$_to_array -} - -# trace output -if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_this_path/local_setup.sh\"" -fi -# the package-level local_setup file unsets AMENT_CURRENT_PREFIX -. "$_this_path/local_setup.sh" -unset _this_path - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks -AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX -# list all environment hooks of this package - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - # restore AMENT_CURRENT_PREFIX for each environment hook - AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - . "$_hook" - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -unset _package_local_setup_AMENT_CURRENT_PREFIX -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.idl deleted file mode 100644 index 7ffe0f0..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.idl +++ /dev/null @@ -1,17 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/Request.msg -// generated code does not contain a copyright notice - -#include "unitree_api/msg/RequestHeader.idl" - -module unitree_api { - module msg { - struct Request { - unitree_api::msg::RequestHeader header; - - string parameter; - - sequence binary; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.msg deleted file mode 100644 index b1df58a..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Request.msg +++ /dev/null @@ -1,3 +0,0 @@ -RequestHeader header -string parameter -uint8[] binary \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.idl deleted file mode 100644 index 97d6987..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.idl +++ /dev/null @@ -1,19 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/RequestHeader.msg -// generated code does not contain a copyright notice - -#include "unitree_api/msg/RequestIdentity.idl" -#include "unitree_api/msg/RequestLease.idl" -#include "unitree_api/msg/RequestPolicy.idl" - -module unitree_api { - module msg { - struct RequestHeader { - unitree_api::msg::RequestIdentity identity; - - unitree_api::msg::RequestLease lease; - - unitree_api::msg::RequestPolicy policy; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.msg deleted file mode 100644 index 022161b..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestHeader.msg +++ /dev/null @@ -1,3 +0,0 @@ -RequestIdentity identity -RequestLease lease -RequestPolicy policy \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.idl deleted file mode 100644 index 2ead946..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.idl +++ /dev/null @@ -1,14 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/RequestIdentity.msg -// generated code does not contain a copyright notice - - -module unitree_api { - module msg { - struct RequestIdentity { - int64 id; - - int64 api_id; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.msg deleted file mode 100644 index 90011ff..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestIdentity.msg +++ /dev/null @@ -1,2 +0,0 @@ -int64 id -int64 api_id \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.idl deleted file mode 100644 index 698449e..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.idl +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/RequestLease.msg -// generated code does not contain a copyright notice - - -module unitree_api { - module msg { - struct RequestLease { - int64 id; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.msg deleted file mode 100644 index 85f692f..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestLease.msg +++ /dev/null @@ -1 +0,0 @@ -int64 id \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.idl deleted file mode 100644 index ff73905..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.idl +++ /dev/null @@ -1,14 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/RequestPolicy.msg -// generated code does not contain a copyright notice - - -module unitree_api { - module msg { - struct RequestPolicy { - int32 priority; - - boolean noreply; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.msg deleted file mode 100644 index 89e00c2..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/RequestPolicy.msg +++ /dev/null @@ -1,2 +0,0 @@ -int32 priority -bool noreply \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.idl deleted file mode 100644 index 59ac745..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.idl +++ /dev/null @@ -1,17 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/Response.msg -// generated code does not contain a copyright notice - -#include "unitree_api/msg/ResponseHeader.idl" - -module unitree_api { - module msg { - struct Response { - unitree_api::msg::ResponseHeader header; - - string data; - - sequence binary; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.msg deleted file mode 100644 index 2036630..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/Response.msg +++ /dev/null @@ -1,3 +0,0 @@ -ResponseHeader header -string data -int8[] binary diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.idl deleted file mode 100644 index de1dd0c..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.idl +++ /dev/null @@ -1,16 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/ResponseHeader.msg -// generated code does not contain a copyright notice - -#include "unitree_api/msg/RequestIdentity.idl" -#include "unitree_api/msg/ResponseStatus.idl" - -module unitree_api { - module msg { - struct ResponseHeader { - unitree_api::msg::RequestIdentity identity; - - unitree_api::msg::ResponseStatus status; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.msg deleted file mode 100644 index 3d51649..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseHeader.msg +++ /dev/null @@ -1,2 +0,0 @@ -RequestIdentity identity -ResponseStatus status diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.idl deleted file mode 100644 index 6d6fcad..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.idl +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_api/msg/ResponseStatus.msg -// generated code does not contain a copyright notice - - -module unitree_api { - module msg { - struct ResponseStatus { - int32 code; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.msg b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.msg deleted file mode 100644 index 1d379fa..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/ResponseStatus.msg +++ /dev/null @@ -1 +0,0 @@ -int32 code \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestHeader_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestHeader_.idl deleted file mode 100644 index 8493ad2..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestHeader_.idl +++ /dev/null @@ -1,34 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/RequestHeader.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/dds_connext/RequestIdentity_.idl" -#include "unitree_api/msg/dds_connext/RequestLease_.idl" -#include "unitree_api/msg/dds_connext/RequestPolicy_.idl" - -#ifndef __unitree_api__msg__request_header__idl__ -#define __unitree_api__msg__request_header__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct RequestHeader_ { -unitree_api::msg::dds_::RequestIdentity_ identity_; -unitree_api::msg::dds_::RequestLease_ lease_; -unitree_api::msg::dds_::RequestPolicy_ policy_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__request_header__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestIdentity_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestIdentity_.idl deleted file mode 100644 index dc65c91..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestIdentity_.idl +++ /dev/null @@ -1,30 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/RequestIdentity.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_api__msg__request_identity__idl__ -#define __unitree_api__msg__request_identity__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct RequestIdentity_ { -long long id_; -long long api_id_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__request_identity__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestLease_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestLease_.idl deleted file mode 100644 index fdb7980..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestLease_.idl +++ /dev/null @@ -1,29 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/RequestLease.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_api__msg__request_lease__idl__ -#define __unitree_api__msg__request_lease__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct RequestLease_ { -long long id_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__request_lease__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestPolicy_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestPolicy_.idl deleted file mode 100644 index 9181d63..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/RequestPolicy_.idl +++ /dev/null @@ -1,30 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/RequestPolicy.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_api__msg__request_policy__idl__ -#define __unitree_api__msg__request_policy__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct RequestPolicy_ { -long priority_; -boolean noreply_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__request_policy__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Request_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Request_.idl deleted file mode 100644 index 0a99414..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Request_.idl +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/Request.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/dds_connext/RequestHeader_.idl" - -#ifndef __unitree_api__msg__request__idl__ -#define __unitree_api__msg__request__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct Request_ { -unitree_api::msg::dds_::RequestHeader_ header_; -string parameter_; -sequence binary_; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__request__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseHeader_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseHeader_.idl deleted file mode 100644 index 4bd3912..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseHeader_.idl +++ /dev/null @@ -1,32 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/ResponseHeader.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/dds_connext/RequestIdentity_.idl" -#include "unitree_api/msg/dds_connext/ResponseStatus_.idl" - -#ifndef __unitree_api__msg__response_header__idl__ -#define __unitree_api__msg__response_header__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct ResponseHeader_ { -unitree_api::msg::dds_::RequestIdentity_ identity_; -unitree_api::msg::dds_::ResponseStatus_ status_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__response_header__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseStatus_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseStatus_.idl deleted file mode 100644 index a7e1fea..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/ResponseStatus_.idl +++ /dev/null @@ -1,29 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/ResponseStatus.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_api__msg__response_status__idl__ -#define __unitree_api__msg__response_status__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct ResponseStatus_ { -long code_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__response_status__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Response_.idl b/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Response_.idl deleted file mode 100644 index 49947ff..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/msg/dds_connext/Response_.idl +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_api:msg/Response.idl -// generated code does not contain a copyright notice -#include "unitree_api/msg/dds_connext/ResponseHeader_.idl" - -#ifndef __unitree_api__msg__response__idl__ -#define __unitree_api__msg__response__idl__ - - -module unitree_api { - -module msg { - -module dds_ { - - -struct Response_ { -unitree_api::msg::dds_::ResponseHeader_ header_; -string data_; -sequence binary_; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_api - - -#endif // __unitree_api__msg__response__idl__ diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.bash b/deploy/robot_ws/install/unitree_api/share/unitree_api/package.bash deleted file mode 100644 index b8b8f51..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.bash +++ /dev/null @@ -1,39 +0,0 @@ -# generated from colcon_bash/shell/template/package.bash.em - -# This script extends the environment for this package. - -# a bash script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - # the prefix is two levels up from the package specific share directory - _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)" -else - _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_bash_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source sh script of this package -_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/unitree_api/package.sh" - -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts -COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX" - -# source bash hooks -_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/unitree_api/local_setup.bash" - -unset COLCON_CURRENT_PREFIX - -unset _colcon_package_bash_source_script -unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.dsv b/deploy/robot_ws/install/unitree_api/share/unitree_api/package.dsv deleted file mode 100644 index 656bd50..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.dsv +++ /dev/null @@ -1,14 +0,0 @@ -source;share/unitree_api/hook/cmake_prefix_path.ps1 -source;share/unitree_api/hook/cmake_prefix_path.dsv -source;share/unitree_api/hook/cmake_prefix_path.sh -source;share/unitree_api/hook/ld_library_path_lib.ps1 -source;share/unitree_api/hook/ld_library_path_lib.dsv -source;share/unitree_api/hook/ld_library_path_lib.sh -source;share/unitree_api/hook/pythonpath.ps1 -source;share/unitree_api/hook/pythonpath.dsv -source;share/unitree_api/hook/pythonpath.sh -source;share/unitree_api/local_setup.bash -source;share/unitree_api/local_setup.dsv -source;share/unitree_api/local_setup.ps1 -source;share/unitree_api/local_setup.sh -source;share/unitree_api/local_setup.zsh diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.ps1 b/deploy/robot_ws/install/unitree_api/share/unitree_api/package.ps1 deleted file mode 100644 index fb211f8..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.ps1 +++ /dev/null @@ -1,118 +0,0 @@ -# generated from colcon_powershell/shell/template/package.ps1.em - -# function to append a value to a variable -# which uses colons as separators -# duplicates as well as leading separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -function colcon_append_unique_value { - param ( - $_listname, - $_value - ) - - # get values from variable - if (Test-Path Env:$_listname) { - $_values=(Get-Item env:$_listname).Value - } else { - $_values="" - } - $_duplicate="" - # start with no values - $_all_values="" - # iterate over existing values in the variable - if ($_values) { - $_values.Split(";") | ForEach { - # not an empty string - if ($_) { - # not a duplicate of _value - if ($_ -eq $_value) { - $_duplicate="1" - } - if ($_all_values) { - $_all_values="${_all_values};$_" - } else { - $_all_values="$_" - } - } - } - } - # append only non-duplicates - if (!$_duplicate) { - # avoid leading separator - if ($_all_values) { - $_all_values="${_all_values};${_value}" - } else { - $_all_values="${_value}" - } - } - - # export the updated variable - Set-Item env:\$_listname -Value "$_all_values" -} - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -function colcon_prepend_unique_value { - param ( - $_listname, - $_value - ) - - # get values from variable - if (Test-Path Env:$_listname) { - $_values=(Get-Item env:$_listname).Value - } else { - $_values="" - } - # start with the new value - $_all_values="$_value" - # iterate over existing values in the variable - if ($_values) { - $_values.Split(";") | ForEach { - # not an empty string - if ($_) { - # not a duplicate of _value - if ($_ -ne $_value) { - # keep non-duplicate values - $_all_values="${_all_values};$_" - } - } - } - } - # export the updated variable - Set-Item env:\$_listname -Value "$_all_values" -} - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -function colcon_package_source_powershell_script { - param ( - $_colcon_package_source_powershell_script - ) - # source script with conditional trace output - if (Test-Path $_colcon_package_source_powershell_script) { - if ($env:COLCON_TRACE) { - echo ". '$_colcon_package_source_powershell_script'" - } - . "$_colcon_package_source_powershell_script" - } else { - Write-Error "not found: '$_colcon_package_source_powershell_script'" - } -} - - -# a powershell script is able to determine its own path -# the prefix is two levels up from the package specific share directory -$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName - -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_api/hook/cmake_prefix_path.ps1" -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_api/hook/ld_library_path_lib.ps1" -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_api/hook/pythonpath.ps1" -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_api/local_setup.ps1" - -Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.sh b/deploy/robot_ws/install/unitree_api/share/unitree_api/package.sh deleted file mode 100644 index 317a8c3..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.sh +++ /dev/null @@ -1,89 +0,0 @@ -# generated from colcon_core/shell/template/package.sh.em - -# This script extends the environment for this package. - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -_colcon_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - - # get values from variable - eval _values=\"\$$_listname\" - # backup the field separator - _colcon_prepend_unique_value_IFS=$IFS - IFS=":" - # start with the new value - _all_values="$_value" - # workaround SH_WORD_SPLIT not being set in zsh - if [ "$(command -v colcon_zsh_convert_to_array)" ]; then - colcon_zsh_convert_to_array _values - fi - # iterate over existing values in the variable - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - # ignore duplicates of _value - if [ "$_item" = "$_value" ]; then - continue - fi - # keep non-duplicate values - _all_values="$_all_values:$_item" - done - unset _item - # restore the field separator - IFS=$_colcon_prepend_unique_value_IFS - unset _colcon_prepend_unique_value_IFS - # export the updated variable - eval export $_listname=\"$_all_values\" - unset _all_values - unset _values - - unset _value - unset _listname -} - -# since a plain shell script can't determine its own path when being sourced -# either use the provided COLCON_CURRENT_PREFIX -# or fall back to the build time prefix (if it exists) -_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/unitree_api" -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then - echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 - unset _colcon_package_sh_COLCON_CURRENT_PREFIX - return 1 - fi - COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" -fi -unset _colcon_package_sh_COLCON_CURRENT_PREFIX - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_sh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source sh hooks -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_api/hook/cmake_prefix_path.sh" -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_api/hook/ld_library_path_lib.sh" -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_api/hook/pythonpath.sh" -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_api/local_setup.sh" - -unset _colcon_package_sh_source_script -unset COLCON_CURRENT_PREFIX - -# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.xml b/deploy/robot_ws/install/unitree_api/share/unitree_api/package.xml deleted file mode 100644 index 915a946..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - unitree_api - 0.0.0 - TODO: Package description - czk - TODO: License declaration - - rosidl_default_generators - rosidl_default_runtime - rosidl_interface_packages - ament_cmake - - geometry_msgs - - ament_lint_auto - ament_lint_common - - - ament_cmake - - diff --git a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.zsh b/deploy/robot_ws/install/unitree_api/share/unitree_api/package.zsh deleted file mode 100644 index 880fd38..0000000 --- a/deploy/robot_ws/install/unitree_api/share/unitree_api/package.zsh +++ /dev/null @@ -1,50 +0,0 @@ -# generated from colcon_zsh/shell/template/package.zsh.em - -# This script extends the environment for this package. - -# a zsh script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - # the prefix is two levels up from the package specific share directory - _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" -else - _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_zsh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# function to convert array-like strings into arrays -# to workaround SH_WORD_SPLIT not being set -colcon_zsh_convert_to_array() { - local _listname=$1 - local _dollar="$" - local _split="{=" - local _to_array="(\"$_dollar$_split$_listname}\")" - eval $_listname=$_to_array -} - -# source sh script of this package -_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/unitree_api/package.sh" -unset convert_zsh_to_array - -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts -COLCON_CURRENT_PREFIX="$_colcon_package_zsh_COLCON_CURRENT_PREFIX" - -# source zsh hooks -_colcon_package_zsh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_api/local_setup.zsh" - -unset COLCON_CURRENT_PREFIX - -unset _colcon_package_zsh_source_script -unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.h deleted file mode 100644 index 0e53b0c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__AUDIO_DATA_H_ -#define UNITREE_GO__MSG__AUDIO_DATA_H_ - -#include "unitree_go/msg/detail/audio_data__struct.h" -#include "unitree_go/msg/detail/audio_data__functions.h" -#include "unitree_go/msg/detail/audio_data__type_support.h" - -#endif // UNITREE_GO__MSG__AUDIO_DATA_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.hpp deleted file mode 100644 index cd0bece..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/audio_data.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__AUDIO_DATA_HPP_ -#define UNITREE_GO__MSG__AUDIO_DATA_HPP_ - -#include "unitree_go/msg/detail/audio_data__struct.hpp" -#include "unitree_go/msg/detail/audio_data__builder.hpp" -#include "unitree_go/msg/detail/audio_data__traits.hpp" -#include "unitree_go/msg/detail/audio_data__type_support.hpp" - -#endif // UNITREE_GO__MSG__AUDIO_DATA_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.h deleted file mode 100644 index f2e734f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__BMS_CMD_H_ -#define UNITREE_GO__MSG__BMS_CMD_H_ - -#include "unitree_go/msg/detail/bms_cmd__struct.h" -#include "unitree_go/msg/detail/bms_cmd__functions.h" -#include "unitree_go/msg/detail/bms_cmd__type_support.h" - -#endif // UNITREE_GO__MSG__BMS_CMD_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.hpp deleted file mode 100644 index 3dc6de1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_cmd.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__BMS_CMD_HPP_ -#define UNITREE_GO__MSG__BMS_CMD_HPP_ - -#include "unitree_go/msg/detail/bms_cmd__struct.hpp" -#include "unitree_go/msg/detail/bms_cmd__builder.hpp" -#include "unitree_go/msg/detail/bms_cmd__traits.hpp" -#include "unitree_go/msg/detail/bms_cmd__type_support.hpp" - -#endif // UNITREE_GO__MSG__BMS_CMD_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.h deleted file mode 100644 index 02a74a8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__BMS_STATE_H_ -#define UNITREE_GO__MSG__BMS_STATE_H_ - -#include "unitree_go/msg/detail/bms_state__struct.h" -#include "unitree_go/msg/detail/bms_state__functions.h" -#include "unitree_go/msg/detail/bms_state__type_support.h" - -#endif // UNITREE_GO__MSG__BMS_STATE_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.hpp deleted file mode 100644 index f22e8aa..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/bms_state.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__BMS_STATE_HPP_ -#define UNITREE_GO__MSG__BMS_STATE_HPP_ - -#include "unitree_go/msg/detail/bms_state__struct.hpp" -#include "unitree_go/msg/detail/bms_state__builder.hpp" -#include "unitree_go/msg/detail/bms_state__traits.hpp" -#include "unitree_go/msg/detail/bms_state__type_support.hpp" - -#endif // UNITREE_GO__MSG__BMS_STATE_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__builder.hpp deleted file mode 100644 index 2669aa0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__BUILDER_HPP_ - -#include "unitree_go/msg/detail/audio_data__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_AudioData_data -{ -public: - explicit Init_AudioData_data(::unitree_go::msg::AudioData & msg) - : msg_(msg) - {} - ::unitree_go::msg::AudioData data(::unitree_go::msg::AudioData::_data_type arg) - { - msg_.data = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::AudioData msg_; -}; - -class Init_AudioData_time_frame -{ -public: - Init_AudioData_time_frame() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_AudioData_data time_frame(::unitree_go::msg::AudioData::_time_frame_type arg) - { - msg_.time_frame = std::move(arg); - return Init_AudioData_data(msg_); - } - -private: - ::unitree_go::msg::AudioData msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::AudioData>() -{ - return unitree_go::msg::builder::Init_AudioData_time_frame(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.c deleted file mode 100644 index a7609a8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.c +++ /dev/null @@ -1,254 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/audio_data__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `data` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool -unitree_go__msg__AudioData__init(unitree_go__msg__AudioData * msg) -{ - if (!msg) { - return false; - } - // time_frame - // data - if (!rosidl_runtime_c__uint8__Sequence__init(&msg->data, 0)) { - unitree_go__msg__AudioData__fini(msg); - return false; - } - return true; -} - -void -unitree_go__msg__AudioData__fini(unitree_go__msg__AudioData * msg) -{ - if (!msg) { - return; - } - // time_frame - // data - rosidl_runtime_c__uint8__Sequence__fini(&msg->data); -} - -bool -unitree_go__msg__AudioData__are_equal(const unitree_go__msg__AudioData * lhs, const unitree_go__msg__AudioData * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // time_frame - if (lhs->time_frame != rhs->time_frame) { - return false; - } - // data - if (!rosidl_runtime_c__uint8__Sequence__are_equal( - &(lhs->data), &(rhs->data))) - { - return false; - } - return true; -} - -bool -unitree_go__msg__AudioData__copy( - const unitree_go__msg__AudioData * input, - unitree_go__msg__AudioData * output) -{ - if (!input || !output) { - return false; - } - // time_frame - output->time_frame = input->time_frame; - // data - if (!rosidl_runtime_c__uint8__Sequence__copy( - &(input->data), &(output->data))) - { - return false; - } - return true; -} - -unitree_go__msg__AudioData * -unitree_go__msg__AudioData__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__AudioData * msg = (unitree_go__msg__AudioData *)allocator.allocate(sizeof(unitree_go__msg__AudioData), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__AudioData)); - bool success = unitree_go__msg__AudioData__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__AudioData__destroy(unitree_go__msg__AudioData * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__AudioData__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__AudioData__Sequence__init(unitree_go__msg__AudioData__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__AudioData * data = NULL; - - if (size) { - data = (unitree_go__msg__AudioData *)allocator.zero_allocate(size, sizeof(unitree_go__msg__AudioData), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__AudioData__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__AudioData__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__AudioData__Sequence__fini(unitree_go__msg__AudioData__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__AudioData__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__AudioData__Sequence * -unitree_go__msg__AudioData__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__AudioData__Sequence * array = (unitree_go__msg__AudioData__Sequence *)allocator.allocate(sizeof(unitree_go__msg__AudioData__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__AudioData__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__AudioData__Sequence__destroy(unitree_go__msg__AudioData__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__AudioData__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__AudioData__Sequence__are_equal(const unitree_go__msg__AudioData__Sequence * lhs, const unitree_go__msg__AudioData__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__AudioData__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__AudioData__Sequence__copy( - const unitree_go__msg__AudioData__Sequence * input, - unitree_go__msg__AudioData__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__AudioData); - unitree_go__msg__AudioData * data = - (unitree_go__msg__AudioData *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__AudioData__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__AudioData__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__AudioData__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.h deleted file mode 100644 index 08f4495..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/audio_data__struct.h" - -/// Initialize msg/AudioData message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__AudioData - * )) before or use - * unitree_go__msg__AudioData__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__AudioData__init(unitree_go__msg__AudioData * msg); - -/// Finalize msg/AudioData message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__AudioData__fini(unitree_go__msg__AudioData * msg); - -/// Create msg/AudioData message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__AudioData__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__AudioData * -unitree_go__msg__AudioData__create(); - -/// Destroy msg/AudioData message. -/** - * It calls - * unitree_go__msg__AudioData__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__AudioData__destroy(unitree_go__msg__AudioData * msg); - -/// Check for msg/AudioData message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__AudioData__are_equal(const unitree_go__msg__AudioData * lhs, const unitree_go__msg__AudioData * rhs); - -/// Copy a msg/AudioData message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__AudioData__copy( - const unitree_go__msg__AudioData * input, - unitree_go__msg__AudioData * output); - -/// Initialize array of msg/AudioData messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__AudioData__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__AudioData__Sequence__init(unitree_go__msg__AudioData__Sequence * array, size_t size); - -/// Finalize array of msg/AudioData messages. -/** - * It calls - * unitree_go__msg__AudioData__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__AudioData__Sequence__fini(unitree_go__msg__AudioData__Sequence * array); - -/// Create array of msg/AudioData messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__AudioData__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__AudioData__Sequence * -unitree_go__msg__AudioData__Sequence__create(size_t size); - -/// Destroy array of msg/AudioData messages. -/** - * It calls - * unitree_go__msg__AudioData__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__AudioData__Sequence__destroy(unitree_go__msg__AudioData__Sequence * array); - -/// Check for msg/AudioData message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__AudioData__Sequence__are_equal(const unitree_go__msg__AudioData__Sequence * lhs, const unitree_go__msg__AudioData__Sequence * rhs); - -/// Copy an array of msg/AudioData messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__AudioData__Sequence__copy( - const unitree_go__msg__AudioData__Sequence * input, - unitree_go__msg__AudioData__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 1e0c84d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__AudioData( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__AudioData( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, AudioData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 81ae2e9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/audio_data__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::AudioData & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::AudioData & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::AudioData & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_AudioData( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, AudioData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 7e4fc10..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, AudioData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 26a305c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, AudioData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.h deleted file mode 100644 index 02840c3..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.h +++ /dev/null @@ -1,45 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'data' -#include "rosidl_runtime_c/primitives_sequence.h" - -// Struct defined in msg/AudioData in the package unitree_go. -typedef struct unitree_go__msg__AudioData -{ - uint64_t time_frame; - rosidl_runtime_c__uint8__Sequence data; -} unitree_go__msg__AudioData; - -// Struct for a sequence of unitree_go__msg__AudioData. -typedef struct unitree_go__msg__AudioData__Sequence -{ - unitree_go__msg__AudioData * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__AudioData__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.hpp deleted file mode 100644 index 4a403d8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__struct.hpp +++ /dev/null @@ -1,142 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__AudioData __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__AudioData __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct AudioData_ -{ - using Type = AudioData_; - - explicit AudioData_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->time_frame = 0ull; - } - } - - explicit AudioData_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->time_frame = 0ull; - } - } - - // field types and members - using _time_frame_type = - uint64_t; - _time_frame_type time_frame; - using _data_type = - std::vector::other>; - _data_type data; - - // setters for named parameter idiom - Type & set__time_frame( - const uint64_t & _arg) - { - this->time_frame = _arg; - return *this; - } - Type & set__data( - const std::vector::other> & _arg) - { - this->data = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::AudioData_ *; - using ConstRawPtr = - const unitree_go::msg::AudioData_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__AudioData - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__AudioData - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const AudioData_ & other) const - { - if (this->time_frame != other.time_frame) { - return false; - } - if (this->data != other.data) { - return false; - } - return true; - } - bool operator!=(const AudioData_ & other) const - { - return !this->operator==(other); - } -}; // struct AudioData_ - -// alias to use template instance with default allocator -using AudioData = - unitree_go::msg::AudioData_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__traits.hpp deleted file mode 100644 index 84b9b36..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TRAITS_HPP_ - -#include "unitree_go/msg/detail/audio_data__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::AudioData"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/AudioData"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.c deleted file mode 100644 index 5adade8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.c +++ /dev/null @@ -1,100 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/audio_data__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/audio_data__functions.h" -#include "unitree_go/msg/detail/audio_data__struct.h" - - -// Include directives for member types -// Member `data` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void AudioData__rosidl_typesupport_introspection_c__AudioData_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__AudioData__init(message_memory); -} - -void AudioData__rosidl_typesupport_introspection_c__AudioData_fini_function(void * message_memory) -{ - unitree_go__msg__AudioData__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember AudioData__rosidl_typesupport_introspection_c__AudioData_message_member_array[2] = { - { - "time_frame", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT64, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__AudioData, time_frame), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "data", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__AudioData, data), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers AudioData__rosidl_typesupport_introspection_c__AudioData_message_members = { - "unitree_go__msg", // message namespace - "AudioData", // message name - 2, // number of fields - sizeof(unitree_go__msg__AudioData), - AudioData__rosidl_typesupport_introspection_c__AudioData_message_member_array, // message members - AudioData__rosidl_typesupport_introspection_c__AudioData_init_function, // function to initialize message memory (memory has to be allocated) - AudioData__rosidl_typesupport_introspection_c__AudioData_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t AudioData__rosidl_typesupport_introspection_c__AudioData_message_type_support_handle = { - 0, - &AudioData__rosidl_typesupport_introspection_c__AudioData_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, AudioData)() { - if (!AudioData__rosidl_typesupport_introspection_c__AudioData_message_type_support_handle.typesupport_identifier) { - AudioData__rosidl_typesupport_introspection_c__AudioData_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &AudioData__rosidl_typesupport_introspection_c__AudioData_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.cpp deleted file mode 100644 index fbc0cb3..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.cpp +++ /dev/null @@ -1,149 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/audio_data__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void AudioData_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::AudioData(_init); -} - -void AudioData_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~AudioData(); -} - -size_t size_function__AudioData__data(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__AudioData__data(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__AudioData__data(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__AudioData__data(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember AudioData_message_member_array[2] = { - { - "time_frame", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT64, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::AudioData, time_frame), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "data", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::AudioData, data), // bytes offset in struct - nullptr, // default value - size_function__AudioData__data, // size() function pointer - get_const_function__AudioData__data, // get_const(index) function pointer - get_function__AudioData__data, // get(index) function pointer - resize_function__AudioData__data // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers AudioData_message_members = { - "unitree_go::msg", // message namespace - "AudioData", // message name - 2, // number of fields - sizeof(unitree_go::msg::AudioData), - AudioData_message_member_array, // message members - AudioData_init_function, // function to initialize message memory (memory has to be allocated) - AudioData_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t AudioData_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &AudioData_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::AudioData_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, AudioData)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::AudioData_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.h deleted file mode 100644 index 1a9e388..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - AudioData -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.hpp deleted file mode 100644 index 0a55289..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/audio_data__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - AudioData -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__AUDIO_DATA__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__builder.hpp deleted file mode 100644 index ed95748..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__BUILDER_HPP_ - -#include "unitree_go/msg/detail/bms_cmd__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_BmsCmd_reserve -{ -public: - explicit Init_BmsCmd_reserve(::unitree_go::msg::BmsCmd & msg) - : msg_(msg) - {} - ::unitree_go::msg::BmsCmd reserve(::unitree_go::msg::BmsCmd::_reserve_type arg) - { - msg_.reserve = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::BmsCmd msg_; -}; - -class Init_BmsCmd_off -{ -public: - Init_BmsCmd_off() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_BmsCmd_reserve off(::unitree_go::msg::BmsCmd::_off_type arg) - { - msg_.off = std::move(arg); - return Init_BmsCmd_reserve(msg_); - } - -private: - ::unitree_go::msg::BmsCmd msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::BmsCmd>() -{ - return unitree_go::msg::builder::Init_BmsCmd_off(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.c deleted file mode 100644 index db520cd..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.c +++ /dev/null @@ -1,243 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/bms_cmd__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__BmsCmd__init(unitree_go__msg__BmsCmd * msg) -{ - if (!msg) { - return false; - } - // off - // reserve - return true; -} - -void -unitree_go__msg__BmsCmd__fini(unitree_go__msg__BmsCmd * msg) -{ - if (!msg) { - return; - } - // off - // reserve -} - -bool -unitree_go__msg__BmsCmd__are_equal(const unitree_go__msg__BmsCmd * lhs, const unitree_go__msg__BmsCmd * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // off - if (lhs->off != rhs->off) { - return false; - } - // reserve - for (size_t i = 0; i < 3; ++i) { - if (lhs->reserve[i] != rhs->reserve[i]) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__BmsCmd__copy( - const unitree_go__msg__BmsCmd * input, - unitree_go__msg__BmsCmd * output) -{ - if (!input || !output) { - return false; - } - // off - output->off = input->off; - // reserve - for (size_t i = 0; i < 3; ++i) { - output->reserve[i] = input->reserve[i]; - } - return true; -} - -unitree_go__msg__BmsCmd * -unitree_go__msg__BmsCmd__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__BmsCmd * msg = (unitree_go__msg__BmsCmd *)allocator.allocate(sizeof(unitree_go__msg__BmsCmd), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__BmsCmd)); - bool success = unitree_go__msg__BmsCmd__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__BmsCmd__destroy(unitree_go__msg__BmsCmd * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__BmsCmd__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__BmsCmd__Sequence__init(unitree_go__msg__BmsCmd__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__BmsCmd * data = NULL; - - if (size) { - data = (unitree_go__msg__BmsCmd *)allocator.zero_allocate(size, sizeof(unitree_go__msg__BmsCmd), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__BmsCmd__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__BmsCmd__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__BmsCmd__Sequence__fini(unitree_go__msg__BmsCmd__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__BmsCmd__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__BmsCmd__Sequence * -unitree_go__msg__BmsCmd__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__BmsCmd__Sequence * array = (unitree_go__msg__BmsCmd__Sequence *)allocator.allocate(sizeof(unitree_go__msg__BmsCmd__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__BmsCmd__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__BmsCmd__Sequence__destroy(unitree_go__msg__BmsCmd__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__BmsCmd__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__BmsCmd__Sequence__are_equal(const unitree_go__msg__BmsCmd__Sequence * lhs, const unitree_go__msg__BmsCmd__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__BmsCmd__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__BmsCmd__Sequence__copy( - const unitree_go__msg__BmsCmd__Sequence * input, - unitree_go__msg__BmsCmd__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__BmsCmd); - unitree_go__msg__BmsCmd * data = - (unitree_go__msg__BmsCmd *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__BmsCmd__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__BmsCmd__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__BmsCmd__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.h deleted file mode 100644 index f9d18a5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/bms_cmd__struct.h" - -/// Initialize msg/BmsCmd message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__BmsCmd - * )) before or use - * unitree_go__msg__BmsCmd__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsCmd__init(unitree_go__msg__BmsCmd * msg); - -/// Finalize msg/BmsCmd message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsCmd__fini(unitree_go__msg__BmsCmd * msg); - -/// Create msg/BmsCmd message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__BmsCmd__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__BmsCmd * -unitree_go__msg__BmsCmd__create(); - -/// Destroy msg/BmsCmd message. -/** - * It calls - * unitree_go__msg__BmsCmd__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsCmd__destroy(unitree_go__msg__BmsCmd * msg); - -/// Check for msg/BmsCmd message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsCmd__are_equal(const unitree_go__msg__BmsCmd * lhs, const unitree_go__msg__BmsCmd * rhs); - -/// Copy a msg/BmsCmd message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsCmd__copy( - const unitree_go__msg__BmsCmd * input, - unitree_go__msg__BmsCmd * output); - -/// Initialize array of msg/BmsCmd messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__BmsCmd__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsCmd__Sequence__init(unitree_go__msg__BmsCmd__Sequence * array, size_t size); - -/// Finalize array of msg/BmsCmd messages. -/** - * It calls - * unitree_go__msg__BmsCmd__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsCmd__Sequence__fini(unitree_go__msg__BmsCmd__Sequence * array); - -/// Create array of msg/BmsCmd messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__BmsCmd__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__BmsCmd__Sequence * -unitree_go__msg__BmsCmd__Sequence__create(size_t size); - -/// Destroy array of msg/BmsCmd messages. -/** - * It calls - * unitree_go__msg__BmsCmd__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsCmd__Sequence__destroy(unitree_go__msg__BmsCmd__Sequence * array); - -/// Check for msg/BmsCmd message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsCmd__Sequence__are_equal(const unitree_go__msg__BmsCmd__Sequence * lhs, const unitree_go__msg__BmsCmd__Sequence * rhs); - -/// Copy an array of msg/BmsCmd messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsCmd__Sequence__copy( - const unitree_go__msg__BmsCmd__Sequence * input, - unitree_go__msg__BmsCmd__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index b7a7c3e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__BmsCmd( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__BmsCmd( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, BmsCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 3237daf..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/bms_cmd__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::BmsCmd & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::BmsCmd & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::BmsCmd & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_BmsCmd( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, BmsCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 62a41f3..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, BmsCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index fcaff2b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, BmsCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.h deleted file mode 100644 index 56eb65e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.h +++ /dev/null @@ -1,41 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/BmsCmd in the package unitree_go. -typedef struct unitree_go__msg__BmsCmd -{ - uint8_t off; - uint8_t reserve[3]; -} unitree_go__msg__BmsCmd; - -// Struct for a sequence of unitree_go__msg__BmsCmd. -typedef struct unitree_go__msg__BmsCmd__Sequence -{ - unitree_go__msg__BmsCmd * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__BmsCmd__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.hpp deleted file mode 100644 index d5e6812..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__struct.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__BmsCmd __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__BmsCmd __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct BmsCmd_ -{ - using Type = BmsCmd_; - - explicit BmsCmd_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->off = 0; - std::fill::iterator, uint8_t>(this->reserve.begin(), this->reserve.end(), 0); - } - } - - explicit BmsCmd_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : reserve(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->off = 0; - std::fill::iterator, uint8_t>(this->reserve.begin(), this->reserve.end(), 0); - } - } - - // field types and members - using _off_type = - uint8_t; - _off_type off; - using _reserve_type = - std::array; - _reserve_type reserve; - - // setters for named parameter idiom - Type & set__off( - const uint8_t & _arg) - { - this->off = _arg; - return *this; - } - Type & set__reserve( - const std::array & _arg) - { - this->reserve = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::BmsCmd_ *; - using ConstRawPtr = - const unitree_go::msg::BmsCmd_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__BmsCmd - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__BmsCmd - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const BmsCmd_ & other) const - { - if (this->off != other.off) { - return false; - } - if (this->reserve != other.reserve) { - return false; - } - return true; - } - bool operator!=(const BmsCmd_ & other) const - { - return !this->operator==(other); - } -}; // struct BmsCmd_ - -// alias to use template instance with default allocator -using BmsCmd = - unitree_go::msg::BmsCmd_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__traits.hpp deleted file mode 100644 index b46b48c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__TRAITS_HPP_ - -#include "unitree_go/msg/detail/bms_cmd__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::BmsCmd"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/BmsCmd"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.c deleted file mode 100644 index 488909f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.c +++ /dev/null @@ -1,96 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/bms_cmd__functions.h" -#include "unitree_go/msg/detail/bms_cmd__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__BmsCmd__init(message_memory); -} - -void BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_fini_function(void * message_memory) -{ - unitree_go__msg__BmsCmd__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_member_array[2] = { - { - "off", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsCmd, off), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsCmd, reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_members = { - "unitree_go__msg", // message namespace - "BmsCmd", // message name - 2, // number of fields - sizeof(unitree_go__msg__BmsCmd), - BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_member_array, // message members - BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_init_function, // function to initialize message memory (memory has to be allocated) - BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_type_support_handle = { - 0, - &BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, BmsCmd)() { - if (!BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_type_support_handle.typesupport_identifier) { - BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &BmsCmd__rosidl_typesupport_introspection_c__BmsCmd_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.cpp deleted file mode 100644 index f893d64..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/bms_cmd__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void BmsCmd_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::BmsCmd(_init); -} - -void BmsCmd_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~BmsCmd(); -} - -size_t size_function__BmsCmd__reserve(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__BmsCmd__reserve(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__BmsCmd__reserve(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember BmsCmd_message_member_array[2] = { - { - "off", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsCmd, off), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsCmd, reserve), // bytes offset in struct - nullptr, // default value - size_function__BmsCmd__reserve, // size() function pointer - get_const_function__BmsCmd__reserve, // get_const(index) function pointer - get_function__BmsCmd__reserve, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers BmsCmd_message_members = { - "unitree_go::msg", // message namespace - "BmsCmd", // message name - 2, // number of fields - sizeof(unitree_go::msg::BmsCmd), - BmsCmd_message_member_array, // message members - BmsCmd_init_function, // function to initialize message memory (memory has to be allocated) - BmsCmd_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t BmsCmd_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &BmsCmd_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::BmsCmd_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, BmsCmd)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::BmsCmd_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.h deleted file mode 100644 index 56bc7a8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - BmsCmd -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.hpp deleted file mode 100644 index 79bb6ba..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_cmd__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_CMD__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_CMD__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - BmsCmd -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_CMD__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__builder.hpp deleted file mode 100644 index 0f747d6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__builder.hpp +++ /dev/null @@ -1,183 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__BUILDER_HPP_ - -#include "unitree_go/msg/detail/bms_state__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_BmsState_cell_vol -{ -public: - explicit Init_BmsState_cell_vol(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - ::unitree_go::msg::BmsState cell_vol(::unitree_go::msg::BmsState::_cell_vol_type arg) - { - msg_.cell_vol = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_mcu_ntc -{ -public: - explicit Init_BmsState_mcu_ntc(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - Init_BmsState_cell_vol mcu_ntc(::unitree_go::msg::BmsState::_mcu_ntc_type arg) - { - msg_.mcu_ntc = std::move(arg); - return Init_BmsState_cell_vol(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_bq_ntc -{ -public: - explicit Init_BmsState_bq_ntc(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - Init_BmsState_mcu_ntc bq_ntc(::unitree_go::msg::BmsState::_bq_ntc_type arg) - { - msg_.bq_ntc = std::move(arg); - return Init_BmsState_mcu_ntc(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_cycle -{ -public: - explicit Init_BmsState_cycle(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - Init_BmsState_bq_ntc cycle(::unitree_go::msg::BmsState::_cycle_type arg) - { - msg_.cycle = std::move(arg); - return Init_BmsState_bq_ntc(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_current -{ -public: - explicit Init_BmsState_current(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - Init_BmsState_cycle current(::unitree_go::msg::BmsState::_current_type arg) - { - msg_.current = std::move(arg); - return Init_BmsState_cycle(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_soc -{ -public: - explicit Init_BmsState_soc(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - Init_BmsState_current soc(::unitree_go::msg::BmsState::_soc_type arg) - { - msg_.soc = std::move(arg); - return Init_BmsState_current(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_status -{ -public: - explicit Init_BmsState_status(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - Init_BmsState_soc status(::unitree_go::msg::BmsState::_status_type arg) - { - msg_.status = std::move(arg); - return Init_BmsState_soc(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_version_low -{ -public: - explicit Init_BmsState_version_low(::unitree_go::msg::BmsState & msg) - : msg_(msg) - {} - Init_BmsState_status version_low(::unitree_go::msg::BmsState::_version_low_type arg) - { - msg_.version_low = std::move(arg); - return Init_BmsState_status(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -class Init_BmsState_version_high -{ -public: - Init_BmsState_version_high() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_BmsState_version_low version_high(::unitree_go::msg::BmsState::_version_high_type arg) - { - msg_.version_high = std::move(arg); - return Init_BmsState_version_low(msg_); - } - -private: - ::unitree_go::msg::BmsState msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::BmsState>() -{ - return unitree_go::msg::builder::Init_BmsState_version_high(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.c deleted file mode 100644 index 1f0a0ec..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.c +++ /dev/null @@ -1,307 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/bms_state__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__BmsState__init(unitree_go__msg__BmsState * msg) -{ - if (!msg) { - return false; - } - // version_high - // version_low - // status - // soc - // current - // cycle - // bq_ntc - // mcu_ntc - // cell_vol - return true; -} - -void -unitree_go__msg__BmsState__fini(unitree_go__msg__BmsState * msg) -{ - if (!msg) { - return; - } - // version_high - // version_low - // status - // soc - // current - // cycle - // bq_ntc - // mcu_ntc - // cell_vol -} - -bool -unitree_go__msg__BmsState__are_equal(const unitree_go__msg__BmsState * lhs, const unitree_go__msg__BmsState * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // version_high - if (lhs->version_high != rhs->version_high) { - return false; - } - // version_low - if (lhs->version_low != rhs->version_low) { - return false; - } - // status - if (lhs->status != rhs->status) { - return false; - } - // soc - if (lhs->soc != rhs->soc) { - return false; - } - // current - if (lhs->current != rhs->current) { - return false; - } - // cycle - if (lhs->cycle != rhs->cycle) { - return false; - } - // bq_ntc - for (size_t i = 0; i < 2; ++i) { - if (lhs->bq_ntc[i] != rhs->bq_ntc[i]) { - return false; - } - } - // mcu_ntc - for (size_t i = 0; i < 2; ++i) { - if (lhs->mcu_ntc[i] != rhs->mcu_ntc[i]) { - return false; - } - } - // cell_vol - for (size_t i = 0; i < 15; ++i) { - if (lhs->cell_vol[i] != rhs->cell_vol[i]) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__BmsState__copy( - const unitree_go__msg__BmsState * input, - unitree_go__msg__BmsState * output) -{ - if (!input || !output) { - return false; - } - // version_high - output->version_high = input->version_high; - // version_low - output->version_low = input->version_low; - // status - output->status = input->status; - // soc - output->soc = input->soc; - // current - output->current = input->current; - // cycle - output->cycle = input->cycle; - // bq_ntc - for (size_t i = 0; i < 2; ++i) { - output->bq_ntc[i] = input->bq_ntc[i]; - } - // mcu_ntc - for (size_t i = 0; i < 2; ++i) { - output->mcu_ntc[i] = input->mcu_ntc[i]; - } - // cell_vol - for (size_t i = 0; i < 15; ++i) { - output->cell_vol[i] = input->cell_vol[i]; - } - return true; -} - -unitree_go__msg__BmsState * -unitree_go__msg__BmsState__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__BmsState * msg = (unitree_go__msg__BmsState *)allocator.allocate(sizeof(unitree_go__msg__BmsState), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__BmsState)); - bool success = unitree_go__msg__BmsState__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__BmsState__destroy(unitree_go__msg__BmsState * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__BmsState__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__BmsState__Sequence__init(unitree_go__msg__BmsState__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__BmsState * data = NULL; - - if (size) { - data = (unitree_go__msg__BmsState *)allocator.zero_allocate(size, sizeof(unitree_go__msg__BmsState), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__BmsState__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__BmsState__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__BmsState__Sequence__fini(unitree_go__msg__BmsState__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__BmsState__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__BmsState__Sequence * -unitree_go__msg__BmsState__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__BmsState__Sequence * array = (unitree_go__msg__BmsState__Sequence *)allocator.allocate(sizeof(unitree_go__msg__BmsState__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__BmsState__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__BmsState__Sequence__destroy(unitree_go__msg__BmsState__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__BmsState__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__BmsState__Sequence__are_equal(const unitree_go__msg__BmsState__Sequence * lhs, const unitree_go__msg__BmsState__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__BmsState__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__BmsState__Sequence__copy( - const unitree_go__msg__BmsState__Sequence * input, - unitree_go__msg__BmsState__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__BmsState); - unitree_go__msg__BmsState * data = - (unitree_go__msg__BmsState *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__BmsState__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__BmsState__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__BmsState__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.h deleted file mode 100644 index 0e3dc72..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/bms_state__struct.h" - -/// Initialize msg/BmsState message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__BmsState - * )) before or use - * unitree_go__msg__BmsState__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsState__init(unitree_go__msg__BmsState * msg); - -/// Finalize msg/BmsState message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsState__fini(unitree_go__msg__BmsState * msg); - -/// Create msg/BmsState message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__BmsState__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__BmsState * -unitree_go__msg__BmsState__create(); - -/// Destroy msg/BmsState message. -/** - * It calls - * unitree_go__msg__BmsState__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsState__destroy(unitree_go__msg__BmsState * msg); - -/// Check for msg/BmsState message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsState__are_equal(const unitree_go__msg__BmsState * lhs, const unitree_go__msg__BmsState * rhs); - -/// Copy a msg/BmsState message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsState__copy( - const unitree_go__msg__BmsState * input, - unitree_go__msg__BmsState * output); - -/// Initialize array of msg/BmsState messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__BmsState__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsState__Sequence__init(unitree_go__msg__BmsState__Sequence * array, size_t size); - -/// Finalize array of msg/BmsState messages. -/** - * It calls - * unitree_go__msg__BmsState__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsState__Sequence__fini(unitree_go__msg__BmsState__Sequence * array); - -/// Create array of msg/BmsState messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__BmsState__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__BmsState__Sequence * -unitree_go__msg__BmsState__Sequence__create(size_t size); - -/// Destroy array of msg/BmsState messages. -/** - * It calls - * unitree_go__msg__BmsState__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__BmsState__Sequence__destroy(unitree_go__msg__BmsState__Sequence * array); - -/// Check for msg/BmsState message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsState__Sequence__are_equal(const unitree_go__msg__BmsState__Sequence * lhs, const unitree_go__msg__BmsState__Sequence * rhs); - -/// Copy an array of msg/BmsState messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__BmsState__Sequence__copy( - const unitree_go__msg__BmsState__Sequence * input, - unitree_go__msg__BmsState__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 3de157d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__BmsState( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__BmsState( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, BmsState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index eede409..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/bms_state__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::BmsState & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::BmsState & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::BmsState & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_BmsState( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, BmsState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_c.h deleted file mode 100644 index c18b944..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, BmsState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 05d7362..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, BmsState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.h deleted file mode 100644 index 871e4bd..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.h +++ /dev/null @@ -1,48 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/BmsState in the package unitree_go. -typedef struct unitree_go__msg__BmsState -{ - uint8_t version_high; - uint8_t version_low; - uint8_t status; - uint8_t soc; - int32_t current; - uint16_t cycle; - int8_t bq_ntc[2]; - int8_t mcu_ntc[2]; - uint16_t cell_vol[15]; -} unitree_go__msg__BmsState; - -// Struct for a sequence of unitree_go__msg__BmsState. -typedef struct unitree_go__msg__BmsState__Sequence -{ - unitree_go__msg__BmsState * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__BmsState__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.hpp deleted file mode 100644 index ebf76be..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__struct.hpp +++ /dev/null @@ -1,244 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__BmsState __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__BmsState __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct BmsState_ -{ - using Type = BmsState_; - - explicit BmsState_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->version_high = 0; - this->version_low = 0; - this->status = 0; - this->soc = 0; - this->current = 0l; - this->cycle = 0; - std::fill::iterator, int8_t>(this->bq_ntc.begin(), this->bq_ntc.end(), 0); - std::fill::iterator, int8_t>(this->mcu_ntc.begin(), this->mcu_ntc.end(), 0); - std::fill::iterator, uint16_t>(this->cell_vol.begin(), this->cell_vol.end(), 0); - } - } - - explicit BmsState_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : bq_ntc(_alloc), - mcu_ntc(_alloc), - cell_vol(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->version_high = 0; - this->version_low = 0; - this->status = 0; - this->soc = 0; - this->current = 0l; - this->cycle = 0; - std::fill::iterator, int8_t>(this->bq_ntc.begin(), this->bq_ntc.end(), 0); - std::fill::iterator, int8_t>(this->mcu_ntc.begin(), this->mcu_ntc.end(), 0); - std::fill::iterator, uint16_t>(this->cell_vol.begin(), this->cell_vol.end(), 0); - } - } - - // field types and members - using _version_high_type = - uint8_t; - _version_high_type version_high; - using _version_low_type = - uint8_t; - _version_low_type version_low; - using _status_type = - uint8_t; - _status_type status; - using _soc_type = - uint8_t; - _soc_type soc; - using _current_type = - int32_t; - _current_type current; - using _cycle_type = - uint16_t; - _cycle_type cycle; - using _bq_ntc_type = - std::array; - _bq_ntc_type bq_ntc; - using _mcu_ntc_type = - std::array; - _mcu_ntc_type mcu_ntc; - using _cell_vol_type = - std::array; - _cell_vol_type cell_vol; - - // setters for named parameter idiom - Type & set__version_high( - const uint8_t & _arg) - { - this->version_high = _arg; - return *this; - } - Type & set__version_low( - const uint8_t & _arg) - { - this->version_low = _arg; - return *this; - } - Type & set__status( - const uint8_t & _arg) - { - this->status = _arg; - return *this; - } - Type & set__soc( - const uint8_t & _arg) - { - this->soc = _arg; - return *this; - } - Type & set__current( - const int32_t & _arg) - { - this->current = _arg; - return *this; - } - Type & set__cycle( - const uint16_t & _arg) - { - this->cycle = _arg; - return *this; - } - Type & set__bq_ntc( - const std::array & _arg) - { - this->bq_ntc = _arg; - return *this; - } - Type & set__mcu_ntc( - const std::array & _arg) - { - this->mcu_ntc = _arg; - return *this; - } - Type & set__cell_vol( - const std::array & _arg) - { - this->cell_vol = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::BmsState_ *; - using ConstRawPtr = - const unitree_go::msg::BmsState_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__BmsState - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__BmsState - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const BmsState_ & other) const - { - if (this->version_high != other.version_high) { - return false; - } - if (this->version_low != other.version_low) { - return false; - } - if (this->status != other.status) { - return false; - } - if (this->soc != other.soc) { - return false; - } - if (this->current != other.current) { - return false; - } - if (this->cycle != other.cycle) { - return false; - } - if (this->bq_ntc != other.bq_ntc) { - return false; - } - if (this->mcu_ntc != other.mcu_ntc) { - return false; - } - if (this->cell_vol != other.cell_vol) { - return false; - } - return true; - } - bool operator!=(const BmsState_ & other) const - { - return !this->operator==(other); - } -}; // struct BmsState_ - -// alias to use template instance with default allocator -using BmsState = - unitree_go::msg::BmsState_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__traits.hpp deleted file mode 100644 index 1622215..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__TRAITS_HPP_ - -#include "unitree_go/msg/detail/bms_state__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::BmsState"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/BmsState"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.c deleted file mode 100644 index 1884c9d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.c +++ /dev/null @@ -1,201 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/bms_state__functions.h" -#include "unitree_go/msg/detail/bms_state__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void BmsState__rosidl_typesupport_introspection_c__BmsState_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__BmsState__init(message_memory); -} - -void BmsState__rosidl_typesupport_introspection_c__BmsState_fini_function(void * message_memory) -{ - unitree_go__msg__BmsState__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember BmsState__rosidl_typesupport_introspection_c__BmsState_message_member_array[9] = { - { - "version_high", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, version_high), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "version_low", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, version_low), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "status", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, status), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "soc", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, soc), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "current", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, current), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "cycle", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT16, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, cycle), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "bq_ntc", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, bq_ntc), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "mcu_ntc", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, mcu_ntc), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "cell_vol", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT16, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 15, // array size - false, // is upper bound - offsetof(unitree_go__msg__BmsState, cell_vol), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers BmsState__rosidl_typesupport_introspection_c__BmsState_message_members = { - "unitree_go__msg", // message namespace - "BmsState", // message name - 9, // number of fields - sizeof(unitree_go__msg__BmsState), - BmsState__rosidl_typesupport_introspection_c__BmsState_message_member_array, // message members - BmsState__rosidl_typesupport_introspection_c__BmsState_init_function, // function to initialize message memory (memory has to be allocated) - BmsState__rosidl_typesupport_introspection_c__BmsState_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t BmsState__rosidl_typesupport_introspection_c__BmsState_message_type_support_handle = { - 0, - &BmsState__rosidl_typesupport_introspection_c__BmsState_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, BmsState)() { - if (!BmsState__rosidl_typesupport_introspection_c__BmsState_message_type_support_handle.typesupport_identifier) { - BmsState__rosidl_typesupport_introspection_c__BmsState_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &BmsState__rosidl_typesupport_introspection_c__BmsState_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.cpp deleted file mode 100644 index 36d016c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.cpp +++ /dev/null @@ -1,287 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/bms_state__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void BmsState_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::BmsState(_init); -} - -void BmsState_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~BmsState(); -} - -size_t size_function__BmsState__bq_ntc(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__BmsState__bq_ntc(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__BmsState__bq_ntc(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__BmsState__mcu_ntc(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__BmsState__mcu_ntc(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__BmsState__mcu_ntc(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__BmsState__cell_vol(const void * untyped_member) -{ - (void)untyped_member; - return 15; -} - -const void * get_const_function__BmsState__cell_vol(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__BmsState__cell_vol(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember BmsState_message_member_array[9] = { - { - "version_high", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, version_high), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "version_low", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, version_low), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "status", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, status), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "soc", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, soc), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "current", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, current), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "cycle", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT16, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, cycle), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "bq_ntc", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, bq_ntc), // bytes offset in struct - nullptr, // default value - size_function__BmsState__bq_ntc, // size() function pointer - get_const_function__BmsState__bq_ntc, // get_const(index) function pointer - get_function__BmsState__bq_ntc, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "mcu_ntc", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, mcu_ntc), // bytes offset in struct - nullptr, // default value - size_function__BmsState__mcu_ntc, // size() function pointer - get_const_function__BmsState__mcu_ntc, // get_const(index) function pointer - get_function__BmsState__mcu_ntc, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "cell_vol", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT16, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 15, // array size - false, // is upper bound - offsetof(unitree_go::msg::BmsState, cell_vol), // bytes offset in struct - nullptr, // default value - size_function__BmsState__cell_vol, // size() function pointer - get_const_function__BmsState__cell_vol, // get_const(index) function pointer - get_function__BmsState__cell_vol, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers BmsState_message_members = { - "unitree_go::msg", // message namespace - "BmsState", // message name - 9, // number of fields - sizeof(unitree_go::msg::BmsState), - BmsState_message_member_array, // message members - BmsState_init_function, // function to initialize message memory (memory has to be allocated) - BmsState_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t BmsState_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &BmsState_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::BmsState_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, BmsState)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::BmsState_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.h deleted file mode 100644 index 73d2256..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - BmsState -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.hpp deleted file mode 100644 index 6cc54fd..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/bms_state__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__BMS_STATE__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__BMS_STATE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - BmsState -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__BMS_STATE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__builder.hpp deleted file mode 100644 index e05b854..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__ERROR__BUILDER_HPP_ - -#include "unitree_go/msg/detail/error__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_Error_state -{ -public: - explicit Init_Error_state(::unitree_go::msg::Error & msg) - : msg_(msg) - {} - ::unitree_go::msg::Error state(::unitree_go::msg::Error::_state_type arg) - { - msg_.state = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::Error msg_; -}; - -class Init_Error_source -{ -public: - Init_Error_source() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_Error_state source(::unitree_go::msg::Error::_source_type arg) - { - msg_.source = std::move(arg); - return Init_Error_state(msg_); - } - -private: - ::unitree_go::msg::Error msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::Error>() -{ - return unitree_go::msg::builder::Init_Error_source(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.c deleted file mode 100644 index 3cc186a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.c +++ /dev/null @@ -1,239 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/error__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__Error__init(unitree_go__msg__Error * msg) -{ - if (!msg) { - return false; - } - // source - // state - return true; -} - -void -unitree_go__msg__Error__fini(unitree_go__msg__Error * msg) -{ - if (!msg) { - return; - } - // source - // state -} - -bool -unitree_go__msg__Error__are_equal(const unitree_go__msg__Error * lhs, const unitree_go__msg__Error * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // source - if (lhs->source != rhs->source) { - return false; - } - // state - if (lhs->state != rhs->state) { - return false; - } - return true; -} - -bool -unitree_go__msg__Error__copy( - const unitree_go__msg__Error * input, - unitree_go__msg__Error * output) -{ - if (!input || !output) { - return false; - } - // source - output->source = input->source; - // state - output->state = input->state; - return true; -} - -unitree_go__msg__Error * -unitree_go__msg__Error__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Error * msg = (unitree_go__msg__Error *)allocator.allocate(sizeof(unitree_go__msg__Error), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__Error)); - bool success = unitree_go__msg__Error__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__Error__destroy(unitree_go__msg__Error * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__Error__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__Error__Sequence__init(unitree_go__msg__Error__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Error * data = NULL; - - if (size) { - data = (unitree_go__msg__Error *)allocator.zero_allocate(size, sizeof(unitree_go__msg__Error), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__Error__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__Error__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__Error__Sequence__fini(unitree_go__msg__Error__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__Error__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__Error__Sequence * -unitree_go__msg__Error__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Error__Sequence * array = (unitree_go__msg__Error__Sequence *)allocator.allocate(sizeof(unitree_go__msg__Error__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__Error__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__Error__Sequence__destroy(unitree_go__msg__Error__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__Error__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__Error__Sequence__are_equal(const unitree_go__msg__Error__Sequence * lhs, const unitree_go__msg__Error__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__Error__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__Error__Sequence__copy( - const unitree_go__msg__Error__Sequence * input, - unitree_go__msg__Error__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__Error); - unitree_go__msg__Error * data = - (unitree_go__msg__Error *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__Error__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__Error__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__Error__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.h deleted file mode 100644 index 41ac606..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__ERROR__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/error__struct.h" - -/// Initialize msg/Error message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__Error - * )) before or use - * unitree_go__msg__Error__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Error__init(unitree_go__msg__Error * msg); - -/// Finalize msg/Error message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Error__fini(unitree_go__msg__Error * msg); - -/// Create msg/Error message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__Error__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Error * -unitree_go__msg__Error__create(); - -/// Destroy msg/Error message. -/** - * It calls - * unitree_go__msg__Error__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Error__destroy(unitree_go__msg__Error * msg); - -/// Check for msg/Error message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Error__are_equal(const unitree_go__msg__Error * lhs, const unitree_go__msg__Error * rhs); - -/// Copy a msg/Error message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Error__copy( - const unitree_go__msg__Error * input, - unitree_go__msg__Error * output); - -/// Initialize array of msg/Error messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__Error__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Error__Sequence__init(unitree_go__msg__Error__Sequence * array, size_t size); - -/// Finalize array of msg/Error messages. -/** - * It calls - * unitree_go__msg__Error__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Error__Sequence__fini(unitree_go__msg__Error__Sequence * array); - -/// Create array of msg/Error messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__Error__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Error__Sequence * -unitree_go__msg__Error__Sequence__create(size_t size); - -/// Destroy array of msg/Error messages. -/** - * It calls - * unitree_go__msg__Error__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Error__Sequence__destroy(unitree_go__msg__Error__Sequence * array); - -/// Check for msg/Error message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Error__Sequence__are_equal(const unitree_go__msg__Error__Sequence * lhs, const unitree_go__msg__Error__Sequence * rhs); - -/// Copy an array of msg/Error messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Error__Sequence__copy( - const unitree_go__msg__Error__Sequence * input, - unitree_go__msg__Error__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 269b6b6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__Error( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__Error( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, Error)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 7ec5407..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/error__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::Error & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::Error & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::Error & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_Error( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, Error)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 007d6ab..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Error)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index fe36165..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Error)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.h deleted file mode 100644 index 868464f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.h +++ /dev/null @@ -1,41 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__ERROR__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/Error in the package unitree_go. -typedef struct unitree_go__msg__Error -{ - uint32_t source; - uint32_t state; -} unitree_go__msg__Error; - -// Struct for a sequence of unitree_go__msg__Error. -typedef struct unitree_go__msg__Error__Sequence -{ - unitree_go__msg__Error * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__Error__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.hpp deleted file mode 100644 index 31658a8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__struct.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__ERROR__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__Error __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__Error __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct Error_ -{ - using Type = Error_; - - explicit Error_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->source = 0ul; - this->state = 0ul; - } - } - - explicit Error_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->source = 0ul; - this->state = 0ul; - } - } - - // field types and members - using _source_type = - uint32_t; - _source_type source; - using _state_type = - uint32_t; - _state_type state; - - // setters for named parameter idiom - Type & set__source( - const uint32_t & _arg) - { - this->source = _arg; - return *this; - } - Type & set__state( - const uint32_t & _arg) - { - this->state = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::Error_ *; - using ConstRawPtr = - const unitree_go::msg::Error_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__Error - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__Error - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const Error_ & other) const - { - if (this->source != other.source) { - return false; - } - if (this->state != other.state) { - return false; - } - return true; - } - bool operator!=(const Error_ & other) const - { - return !this->operator==(other); - } -}; // struct Error_ - -// alias to use template instance with default allocator -using Error = - unitree_go::msg::Error_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__traits.hpp deleted file mode 100644 index e867f5e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__ERROR__TRAITS_HPP_ - -#include "unitree_go/msg/detail/error__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::Error"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/Error"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.c deleted file mode 100644 index f6e5856..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.c +++ /dev/null @@ -1,96 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/error__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/error__functions.h" -#include "unitree_go/msg/detail/error__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void Error__rosidl_typesupport_introspection_c__Error_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__Error__init(message_memory); -} - -void Error__rosidl_typesupport_introspection_c__Error_fini_function(void * message_memory) -{ - unitree_go__msg__Error__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember Error__rosidl_typesupport_introspection_c__Error_message_member_array[2] = { - { - "source", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Error, source), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "state", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Error, state), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers Error__rosidl_typesupport_introspection_c__Error_message_members = { - "unitree_go__msg", // message namespace - "Error", // message name - 2, // number of fields - sizeof(unitree_go__msg__Error), - Error__rosidl_typesupport_introspection_c__Error_message_member_array, // message members - Error__rosidl_typesupport_introspection_c__Error_init_function, // function to initialize message memory (memory has to be allocated) - Error__rosidl_typesupport_introspection_c__Error_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t Error__rosidl_typesupport_introspection_c__Error_message_type_support_handle = { - 0, - &Error__rosidl_typesupport_introspection_c__Error_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Error)() { - if (!Error__rosidl_typesupport_introspection_c__Error_message_type_support_handle.typesupport_identifier) { - Error__rosidl_typesupport_introspection_c__Error_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &Error__rosidl_typesupport_introspection_c__Error_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.cpp deleted file mode 100644 index 018929d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/error__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void Error_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::Error(_init); -} - -void Error_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~Error(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember Error_message_member_array[2] = { - { - "source", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Error, source), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "state", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Error, state), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers Error_message_members = { - "unitree_go::msg", // message namespace - "Error", // message name - 2, // number of fields - sizeof(unitree_go::msg::Error), - Error_message_member_array, // message members - Error_init_function, // function to initialize message memory (memory has to be allocated) - Error_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t Error_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &Error_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Error_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Error)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Error_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.h deleted file mode 100644 index 3257200..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__ERROR__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - Error -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.hpp deleted file mode 100644 index 2080995..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/error__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__ERROR__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__ERROR__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - Error -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__ERROR__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__builder.hpp deleted file mode 100644 index c11f19d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__builder.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__BUILDER_HPP_ - -#include "unitree_go/msg/detail/go2_front_video_data__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_Go2FrontVideoData_video180p -{ -public: - explicit Init_Go2FrontVideoData_video180p(::unitree_go::msg::Go2FrontVideoData & msg) - : msg_(msg) - {} - ::unitree_go::msg::Go2FrontVideoData video180p(::unitree_go::msg::Go2FrontVideoData::_video180p_type arg) - { - msg_.video180p = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::Go2FrontVideoData msg_; -}; - -class Init_Go2FrontVideoData_video360p -{ -public: - explicit Init_Go2FrontVideoData_video360p(::unitree_go::msg::Go2FrontVideoData & msg) - : msg_(msg) - {} - Init_Go2FrontVideoData_video180p video360p(::unitree_go::msg::Go2FrontVideoData::_video360p_type arg) - { - msg_.video360p = std::move(arg); - return Init_Go2FrontVideoData_video180p(msg_); - } - -private: - ::unitree_go::msg::Go2FrontVideoData msg_; -}; - -class Init_Go2FrontVideoData_video720p -{ -public: - explicit Init_Go2FrontVideoData_video720p(::unitree_go::msg::Go2FrontVideoData & msg) - : msg_(msg) - {} - Init_Go2FrontVideoData_video360p video720p(::unitree_go::msg::Go2FrontVideoData::_video720p_type arg) - { - msg_.video720p = std::move(arg); - return Init_Go2FrontVideoData_video360p(msg_); - } - -private: - ::unitree_go::msg::Go2FrontVideoData msg_; -}; - -class Init_Go2FrontVideoData_time_frame -{ -public: - Init_Go2FrontVideoData_time_frame() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_Go2FrontVideoData_video720p time_frame(::unitree_go::msg::Go2FrontVideoData::_time_frame_type arg) - { - msg_.time_frame = std::move(arg); - return Init_Go2FrontVideoData_video720p(msg_); - } - -private: - ::unitree_go::msg::Go2FrontVideoData msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::Go2FrontVideoData>() -{ - return unitree_go::msg::builder::Init_Go2FrontVideoData_time_frame(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.c deleted file mode 100644 index af91c99..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.c +++ /dev/null @@ -1,294 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/go2_front_video_data__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `video720p` -// Member `video360p` -// Member `video180p` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool -unitree_go__msg__Go2FrontVideoData__init(unitree_go__msg__Go2FrontVideoData * msg) -{ - if (!msg) { - return false; - } - // time_frame - // video720p - if (!rosidl_runtime_c__uint8__Sequence__init(&msg->video720p, 0)) { - unitree_go__msg__Go2FrontVideoData__fini(msg); - return false; - } - // video360p - if (!rosidl_runtime_c__uint8__Sequence__init(&msg->video360p, 0)) { - unitree_go__msg__Go2FrontVideoData__fini(msg); - return false; - } - // video180p - if (!rosidl_runtime_c__uint8__Sequence__init(&msg->video180p, 0)) { - unitree_go__msg__Go2FrontVideoData__fini(msg); - return false; - } - return true; -} - -void -unitree_go__msg__Go2FrontVideoData__fini(unitree_go__msg__Go2FrontVideoData * msg) -{ - if (!msg) { - return; - } - // time_frame - // video720p - rosidl_runtime_c__uint8__Sequence__fini(&msg->video720p); - // video360p - rosidl_runtime_c__uint8__Sequence__fini(&msg->video360p); - // video180p - rosidl_runtime_c__uint8__Sequence__fini(&msg->video180p); -} - -bool -unitree_go__msg__Go2FrontVideoData__are_equal(const unitree_go__msg__Go2FrontVideoData * lhs, const unitree_go__msg__Go2FrontVideoData * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // time_frame - if (lhs->time_frame != rhs->time_frame) { - return false; - } - // video720p - if (!rosidl_runtime_c__uint8__Sequence__are_equal( - &(lhs->video720p), &(rhs->video720p))) - { - return false; - } - // video360p - if (!rosidl_runtime_c__uint8__Sequence__are_equal( - &(lhs->video360p), &(rhs->video360p))) - { - return false; - } - // video180p - if (!rosidl_runtime_c__uint8__Sequence__are_equal( - &(lhs->video180p), &(rhs->video180p))) - { - return false; - } - return true; -} - -bool -unitree_go__msg__Go2FrontVideoData__copy( - const unitree_go__msg__Go2FrontVideoData * input, - unitree_go__msg__Go2FrontVideoData * output) -{ - if (!input || !output) { - return false; - } - // time_frame - output->time_frame = input->time_frame; - // video720p - if (!rosidl_runtime_c__uint8__Sequence__copy( - &(input->video720p), &(output->video720p))) - { - return false; - } - // video360p - if (!rosidl_runtime_c__uint8__Sequence__copy( - &(input->video360p), &(output->video360p))) - { - return false; - } - // video180p - if (!rosidl_runtime_c__uint8__Sequence__copy( - &(input->video180p), &(output->video180p))) - { - return false; - } - return true; -} - -unitree_go__msg__Go2FrontVideoData * -unitree_go__msg__Go2FrontVideoData__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Go2FrontVideoData * msg = (unitree_go__msg__Go2FrontVideoData *)allocator.allocate(sizeof(unitree_go__msg__Go2FrontVideoData), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__Go2FrontVideoData)); - bool success = unitree_go__msg__Go2FrontVideoData__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__Go2FrontVideoData__destroy(unitree_go__msg__Go2FrontVideoData * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__Go2FrontVideoData__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__Go2FrontVideoData__Sequence__init(unitree_go__msg__Go2FrontVideoData__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Go2FrontVideoData * data = NULL; - - if (size) { - data = (unitree_go__msg__Go2FrontVideoData *)allocator.zero_allocate(size, sizeof(unitree_go__msg__Go2FrontVideoData), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__Go2FrontVideoData__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__Go2FrontVideoData__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__Go2FrontVideoData__Sequence__fini(unitree_go__msg__Go2FrontVideoData__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__Go2FrontVideoData__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__Go2FrontVideoData__Sequence * -unitree_go__msg__Go2FrontVideoData__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Go2FrontVideoData__Sequence * array = (unitree_go__msg__Go2FrontVideoData__Sequence *)allocator.allocate(sizeof(unitree_go__msg__Go2FrontVideoData__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__Go2FrontVideoData__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__Go2FrontVideoData__Sequence__destroy(unitree_go__msg__Go2FrontVideoData__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__Go2FrontVideoData__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__Go2FrontVideoData__Sequence__are_equal(const unitree_go__msg__Go2FrontVideoData__Sequence * lhs, const unitree_go__msg__Go2FrontVideoData__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__Go2FrontVideoData__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__Go2FrontVideoData__Sequence__copy( - const unitree_go__msg__Go2FrontVideoData__Sequence * input, - unitree_go__msg__Go2FrontVideoData__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__Go2FrontVideoData); - unitree_go__msg__Go2FrontVideoData * data = - (unitree_go__msg__Go2FrontVideoData *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__Go2FrontVideoData__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__Go2FrontVideoData__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__Go2FrontVideoData__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.h deleted file mode 100644 index e294419..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/go2_front_video_data__struct.h" - -/// Initialize msg/Go2FrontVideoData message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__Go2FrontVideoData - * )) before or use - * unitree_go__msg__Go2FrontVideoData__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Go2FrontVideoData__init(unitree_go__msg__Go2FrontVideoData * msg); - -/// Finalize msg/Go2FrontVideoData message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Go2FrontVideoData__fini(unitree_go__msg__Go2FrontVideoData * msg); - -/// Create msg/Go2FrontVideoData message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__Go2FrontVideoData__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Go2FrontVideoData * -unitree_go__msg__Go2FrontVideoData__create(); - -/// Destroy msg/Go2FrontVideoData message. -/** - * It calls - * unitree_go__msg__Go2FrontVideoData__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Go2FrontVideoData__destroy(unitree_go__msg__Go2FrontVideoData * msg); - -/// Check for msg/Go2FrontVideoData message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Go2FrontVideoData__are_equal(const unitree_go__msg__Go2FrontVideoData * lhs, const unitree_go__msg__Go2FrontVideoData * rhs); - -/// Copy a msg/Go2FrontVideoData message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Go2FrontVideoData__copy( - const unitree_go__msg__Go2FrontVideoData * input, - unitree_go__msg__Go2FrontVideoData * output); - -/// Initialize array of msg/Go2FrontVideoData messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__Go2FrontVideoData__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Go2FrontVideoData__Sequence__init(unitree_go__msg__Go2FrontVideoData__Sequence * array, size_t size); - -/// Finalize array of msg/Go2FrontVideoData messages. -/** - * It calls - * unitree_go__msg__Go2FrontVideoData__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Go2FrontVideoData__Sequence__fini(unitree_go__msg__Go2FrontVideoData__Sequence * array); - -/// Create array of msg/Go2FrontVideoData messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__Go2FrontVideoData__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Go2FrontVideoData__Sequence * -unitree_go__msg__Go2FrontVideoData__Sequence__create(size_t size); - -/// Destroy array of msg/Go2FrontVideoData messages. -/** - * It calls - * unitree_go__msg__Go2FrontVideoData__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Go2FrontVideoData__Sequence__destroy(unitree_go__msg__Go2FrontVideoData__Sequence * array); - -/// Check for msg/Go2FrontVideoData message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Go2FrontVideoData__Sequence__are_equal(const unitree_go__msg__Go2FrontVideoData__Sequence * lhs, const unitree_go__msg__Go2FrontVideoData__Sequence * rhs); - -/// Copy an array of msg/Go2FrontVideoData messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Go2FrontVideoData__Sequence__copy( - const unitree_go__msg__Go2FrontVideoData__Sequence * input, - unitree_go__msg__Go2FrontVideoData__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 4786d45..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__Go2FrontVideoData( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__Go2FrontVideoData( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, Go2FrontVideoData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index a93e5c9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/go2_front_video_data__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::Go2FrontVideoData & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::Go2FrontVideoData & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::Go2FrontVideoData & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_Go2FrontVideoData( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, Go2FrontVideoData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 276f2f0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Go2FrontVideoData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 2f15fa2..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Go2FrontVideoData)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.h deleted file mode 100644 index 6c4b665..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.h +++ /dev/null @@ -1,49 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'video720p' -// Member 'video360p' -// Member 'video180p' -#include "rosidl_runtime_c/primitives_sequence.h" - -// Struct defined in msg/Go2FrontVideoData in the package unitree_go. -typedef struct unitree_go__msg__Go2FrontVideoData -{ - uint64_t time_frame; - rosidl_runtime_c__uint8__Sequence video720p; - rosidl_runtime_c__uint8__Sequence video360p; - rosidl_runtime_c__uint8__Sequence video180p; -} unitree_go__msg__Go2FrontVideoData; - -// Struct for a sequence of unitree_go__msg__Go2FrontVideoData. -typedef struct unitree_go__msg__Go2FrontVideoData__Sequence -{ - unitree_go__msg__Go2FrontVideoData * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__Go2FrontVideoData__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.hpp deleted file mode 100644 index f7e5b85..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__struct.hpp +++ /dev/null @@ -1,166 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__Go2FrontVideoData __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__Go2FrontVideoData __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct Go2FrontVideoData_ -{ - using Type = Go2FrontVideoData_; - - explicit Go2FrontVideoData_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->time_frame = 0ull; - } - } - - explicit Go2FrontVideoData_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->time_frame = 0ull; - } - } - - // field types and members - using _time_frame_type = - uint64_t; - _time_frame_type time_frame; - using _video720p_type = - std::vector::other>; - _video720p_type video720p; - using _video360p_type = - std::vector::other>; - _video360p_type video360p; - using _video180p_type = - std::vector::other>; - _video180p_type video180p; - - // setters for named parameter idiom - Type & set__time_frame( - const uint64_t & _arg) - { - this->time_frame = _arg; - return *this; - } - Type & set__video720p( - const std::vector::other> & _arg) - { - this->video720p = _arg; - return *this; - } - Type & set__video360p( - const std::vector::other> & _arg) - { - this->video360p = _arg; - return *this; - } - Type & set__video180p( - const std::vector::other> & _arg) - { - this->video180p = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::Go2FrontVideoData_ *; - using ConstRawPtr = - const unitree_go::msg::Go2FrontVideoData_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__Go2FrontVideoData - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__Go2FrontVideoData - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const Go2FrontVideoData_ & other) const - { - if (this->time_frame != other.time_frame) { - return false; - } - if (this->video720p != other.video720p) { - return false; - } - if (this->video360p != other.video360p) { - return false; - } - if (this->video180p != other.video180p) { - return false; - } - return true; - } - bool operator!=(const Go2FrontVideoData_ & other) const - { - return !this->operator==(other); - } -}; // struct Go2FrontVideoData_ - -// alias to use template instance with default allocator -using Go2FrontVideoData = - unitree_go::msg::Go2FrontVideoData_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__traits.hpp deleted file mode 100644 index db0046a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TRAITS_HPP_ - -#include "unitree_go/msg/detail/go2_front_video_data__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::Go2FrontVideoData"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/Go2FrontVideoData"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.c deleted file mode 100644 index c6be76c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.c +++ /dev/null @@ -1,132 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/go2_front_video_data__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/go2_front_video_data__functions.h" -#include "unitree_go/msg/detail/go2_front_video_data__struct.h" - - -// Include directives for member types -// Member `video720p` -// Member `video360p` -// Member `video180p` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__Go2FrontVideoData__init(message_memory); -} - -void Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_fini_function(void * message_memory) -{ - unitree_go__msg__Go2FrontVideoData__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_member_array[4] = { - { - "time_frame", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT64, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Go2FrontVideoData, time_frame), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "video720p", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Go2FrontVideoData, video720p), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "video360p", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Go2FrontVideoData, video360p), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "video180p", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Go2FrontVideoData, video180p), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_members = { - "unitree_go__msg", // message namespace - "Go2FrontVideoData", // message name - 4, // number of fields - sizeof(unitree_go__msg__Go2FrontVideoData), - Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_member_array, // message members - Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_init_function, // function to initialize message memory (memory has to be allocated) - Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_type_support_handle = { - 0, - &Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Go2FrontVideoData)() { - if (!Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_type_support_handle.typesupport_identifier) { - Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &Go2FrontVideoData__rosidl_typesupport_introspection_c__Go2FrontVideoData_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.cpp deleted file mode 100644 index a10ddeb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.cpp +++ /dev/null @@ -1,233 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/go2_front_video_data__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void Go2FrontVideoData_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::Go2FrontVideoData(_init); -} - -void Go2FrontVideoData_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~Go2FrontVideoData(); -} - -size_t size_function__Go2FrontVideoData__video720p(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__Go2FrontVideoData__video720p(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__Go2FrontVideoData__video720p(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__Go2FrontVideoData__video720p(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -size_t size_function__Go2FrontVideoData__video360p(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__Go2FrontVideoData__video360p(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__Go2FrontVideoData__video360p(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__Go2FrontVideoData__video360p(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -size_t size_function__Go2FrontVideoData__video180p(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__Go2FrontVideoData__video180p(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__Go2FrontVideoData__video180p(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__Go2FrontVideoData__video180p(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember Go2FrontVideoData_message_member_array[4] = { - { - "time_frame", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT64, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Go2FrontVideoData, time_frame), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "video720p", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Go2FrontVideoData, video720p), // bytes offset in struct - nullptr, // default value - size_function__Go2FrontVideoData__video720p, // size() function pointer - get_const_function__Go2FrontVideoData__video720p, // get_const(index) function pointer - get_function__Go2FrontVideoData__video720p, // get(index) function pointer - resize_function__Go2FrontVideoData__video720p // resize(index) function pointer - }, - { - "video360p", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Go2FrontVideoData, video360p), // bytes offset in struct - nullptr, // default value - size_function__Go2FrontVideoData__video360p, // size() function pointer - get_const_function__Go2FrontVideoData__video360p, // get_const(index) function pointer - get_function__Go2FrontVideoData__video360p, // get(index) function pointer - resize_function__Go2FrontVideoData__video360p // resize(index) function pointer - }, - { - "video180p", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Go2FrontVideoData, video180p), // bytes offset in struct - nullptr, // default value - size_function__Go2FrontVideoData__video180p, // size() function pointer - get_const_function__Go2FrontVideoData__video180p, // get_const(index) function pointer - get_function__Go2FrontVideoData__video180p, // get(index) function pointer - resize_function__Go2FrontVideoData__video180p // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers Go2FrontVideoData_message_members = { - "unitree_go::msg", // message namespace - "Go2FrontVideoData", // message name - 4, // number of fields - sizeof(unitree_go::msg::Go2FrontVideoData), - Go2FrontVideoData_message_member_array, // message members - Go2FrontVideoData_init_function, // function to initialize message memory (memory has to be allocated) - Go2FrontVideoData_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t Go2FrontVideoData_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &Go2FrontVideoData_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Go2FrontVideoData_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Go2FrontVideoData)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Go2FrontVideoData_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.h deleted file mode 100644 index 3529f31..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - Go2FrontVideoData -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.hpp deleted file mode 100644 index 83f0a58..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/go2_front_video_data__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - Go2FrontVideoData -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__GO2_FRONT_VIDEO_DATA__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__builder.hpp deleted file mode 100644 index fbbddaa..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__builder.hpp +++ /dev/null @@ -1,151 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__BUILDER_HPP_ - -#include "unitree_go/msg/detail/height_map__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_HeightMap_data -{ -public: - explicit Init_HeightMap_data(::unitree_go::msg::HeightMap & msg) - : msg_(msg) - {} - ::unitree_go::msg::HeightMap data(::unitree_go::msg::HeightMap::_data_type arg) - { - msg_.data = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::HeightMap msg_; -}; - -class Init_HeightMap_origin -{ -public: - explicit Init_HeightMap_origin(::unitree_go::msg::HeightMap & msg) - : msg_(msg) - {} - Init_HeightMap_data origin(::unitree_go::msg::HeightMap::_origin_type arg) - { - msg_.origin = std::move(arg); - return Init_HeightMap_data(msg_); - } - -private: - ::unitree_go::msg::HeightMap msg_; -}; - -class Init_HeightMap_height -{ -public: - explicit Init_HeightMap_height(::unitree_go::msg::HeightMap & msg) - : msg_(msg) - {} - Init_HeightMap_origin height(::unitree_go::msg::HeightMap::_height_type arg) - { - msg_.height = std::move(arg); - return Init_HeightMap_origin(msg_); - } - -private: - ::unitree_go::msg::HeightMap msg_; -}; - -class Init_HeightMap_width -{ -public: - explicit Init_HeightMap_width(::unitree_go::msg::HeightMap & msg) - : msg_(msg) - {} - Init_HeightMap_height width(::unitree_go::msg::HeightMap::_width_type arg) - { - msg_.width = std::move(arg); - return Init_HeightMap_height(msg_); - } - -private: - ::unitree_go::msg::HeightMap msg_; -}; - -class Init_HeightMap_resolution -{ -public: - explicit Init_HeightMap_resolution(::unitree_go::msg::HeightMap & msg) - : msg_(msg) - {} - Init_HeightMap_width resolution(::unitree_go::msg::HeightMap::_resolution_type arg) - { - msg_.resolution = std::move(arg); - return Init_HeightMap_width(msg_); - } - -private: - ::unitree_go::msg::HeightMap msg_; -}; - -class Init_HeightMap_frame_id -{ -public: - explicit Init_HeightMap_frame_id(::unitree_go::msg::HeightMap & msg) - : msg_(msg) - {} - Init_HeightMap_resolution frame_id(::unitree_go::msg::HeightMap::_frame_id_type arg) - { - msg_.frame_id = std::move(arg); - return Init_HeightMap_resolution(msg_); - } - -private: - ::unitree_go::msg::HeightMap msg_; -}; - -class Init_HeightMap_stamp -{ -public: - Init_HeightMap_stamp() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_HeightMap_frame_id stamp(::unitree_go::msg::HeightMap::_stamp_type arg) - { - msg_.stamp = std::move(arg); - return Init_HeightMap_frame_id(msg_); - } - -private: - ::unitree_go::msg::HeightMap msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::HeightMap>() -{ - return unitree_go::msg::builder::Init_HeightMap_stamp(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.c deleted file mode 100644 index f3540b8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.c +++ /dev/null @@ -1,311 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/height_map__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `frame_id` -#include "rosidl_runtime_c/string_functions.h" -// Member `data` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool -unitree_go__msg__HeightMap__init(unitree_go__msg__HeightMap * msg) -{ - if (!msg) { - return false; - } - // stamp - // frame_id - if (!rosidl_runtime_c__String__init(&msg->frame_id)) { - unitree_go__msg__HeightMap__fini(msg); - return false; - } - // resolution - // width - // height - // origin - // data - if (!rosidl_runtime_c__float__Sequence__init(&msg->data, 0)) { - unitree_go__msg__HeightMap__fini(msg); - return false; - } - return true; -} - -void -unitree_go__msg__HeightMap__fini(unitree_go__msg__HeightMap * msg) -{ - if (!msg) { - return; - } - // stamp - // frame_id - rosidl_runtime_c__String__fini(&msg->frame_id); - // resolution - // width - // height - // origin - // data - rosidl_runtime_c__float__Sequence__fini(&msg->data); -} - -bool -unitree_go__msg__HeightMap__are_equal(const unitree_go__msg__HeightMap * lhs, const unitree_go__msg__HeightMap * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // stamp - if (lhs->stamp != rhs->stamp) { - return false; - } - // frame_id - if (!rosidl_runtime_c__String__are_equal( - &(lhs->frame_id), &(rhs->frame_id))) - { - return false; - } - // resolution - if (lhs->resolution != rhs->resolution) { - return false; - } - // width - if (lhs->width != rhs->width) { - return false; - } - // height - if (lhs->height != rhs->height) { - return false; - } - // origin - for (size_t i = 0; i < 2; ++i) { - if (lhs->origin[i] != rhs->origin[i]) { - return false; - } - } - // data - if (!rosidl_runtime_c__float__Sequence__are_equal( - &(lhs->data), &(rhs->data))) - { - return false; - } - return true; -} - -bool -unitree_go__msg__HeightMap__copy( - const unitree_go__msg__HeightMap * input, - unitree_go__msg__HeightMap * output) -{ - if (!input || !output) { - return false; - } - // stamp - output->stamp = input->stamp; - // frame_id - if (!rosidl_runtime_c__String__copy( - &(input->frame_id), &(output->frame_id))) - { - return false; - } - // resolution - output->resolution = input->resolution; - // width - output->width = input->width; - // height - output->height = input->height; - // origin - for (size_t i = 0; i < 2; ++i) { - output->origin[i] = input->origin[i]; - } - // data - if (!rosidl_runtime_c__float__Sequence__copy( - &(input->data), &(output->data))) - { - return false; - } - return true; -} - -unitree_go__msg__HeightMap * -unitree_go__msg__HeightMap__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__HeightMap * msg = (unitree_go__msg__HeightMap *)allocator.allocate(sizeof(unitree_go__msg__HeightMap), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__HeightMap)); - bool success = unitree_go__msg__HeightMap__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__HeightMap__destroy(unitree_go__msg__HeightMap * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__HeightMap__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__HeightMap__Sequence__init(unitree_go__msg__HeightMap__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__HeightMap * data = NULL; - - if (size) { - data = (unitree_go__msg__HeightMap *)allocator.zero_allocate(size, sizeof(unitree_go__msg__HeightMap), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__HeightMap__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__HeightMap__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__HeightMap__Sequence__fini(unitree_go__msg__HeightMap__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__HeightMap__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__HeightMap__Sequence * -unitree_go__msg__HeightMap__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__HeightMap__Sequence * array = (unitree_go__msg__HeightMap__Sequence *)allocator.allocate(sizeof(unitree_go__msg__HeightMap__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__HeightMap__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__HeightMap__Sequence__destroy(unitree_go__msg__HeightMap__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__HeightMap__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__HeightMap__Sequence__are_equal(const unitree_go__msg__HeightMap__Sequence * lhs, const unitree_go__msg__HeightMap__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__HeightMap__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__HeightMap__Sequence__copy( - const unitree_go__msg__HeightMap__Sequence * input, - unitree_go__msg__HeightMap__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__HeightMap); - unitree_go__msg__HeightMap * data = - (unitree_go__msg__HeightMap *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__HeightMap__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__HeightMap__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__HeightMap__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.h deleted file mode 100644 index 7b8994d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/height_map__struct.h" - -/// Initialize msg/HeightMap message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__HeightMap - * )) before or use - * unitree_go__msg__HeightMap__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__HeightMap__init(unitree_go__msg__HeightMap * msg); - -/// Finalize msg/HeightMap message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__HeightMap__fini(unitree_go__msg__HeightMap * msg); - -/// Create msg/HeightMap message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__HeightMap__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__HeightMap * -unitree_go__msg__HeightMap__create(); - -/// Destroy msg/HeightMap message. -/** - * It calls - * unitree_go__msg__HeightMap__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__HeightMap__destroy(unitree_go__msg__HeightMap * msg); - -/// Check for msg/HeightMap message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__HeightMap__are_equal(const unitree_go__msg__HeightMap * lhs, const unitree_go__msg__HeightMap * rhs); - -/// Copy a msg/HeightMap message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__HeightMap__copy( - const unitree_go__msg__HeightMap * input, - unitree_go__msg__HeightMap * output); - -/// Initialize array of msg/HeightMap messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__HeightMap__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__HeightMap__Sequence__init(unitree_go__msg__HeightMap__Sequence * array, size_t size); - -/// Finalize array of msg/HeightMap messages. -/** - * It calls - * unitree_go__msg__HeightMap__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__HeightMap__Sequence__fini(unitree_go__msg__HeightMap__Sequence * array); - -/// Create array of msg/HeightMap messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__HeightMap__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__HeightMap__Sequence * -unitree_go__msg__HeightMap__Sequence__create(size_t size); - -/// Destroy array of msg/HeightMap messages. -/** - * It calls - * unitree_go__msg__HeightMap__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__HeightMap__Sequence__destroy(unitree_go__msg__HeightMap__Sequence * array); - -/// Check for msg/HeightMap message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__HeightMap__Sequence__are_equal(const unitree_go__msg__HeightMap__Sequence * lhs, const unitree_go__msg__HeightMap__Sequence * rhs); - -/// Copy an array of msg/HeightMap messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__HeightMap__Sequence__copy( - const unitree_go__msg__HeightMap__Sequence * input, - unitree_go__msg__HeightMap__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 09b0a40..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__HeightMap( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__HeightMap( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, HeightMap)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 2bd56a2..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/height_map__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::HeightMap & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::HeightMap & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::HeightMap & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_HeightMap( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, HeightMap)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 989f851..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, HeightMap)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 691189f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, HeightMap)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.h deleted file mode 100644 index 965a83b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.h +++ /dev/null @@ -1,52 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'frame_id' -#include "rosidl_runtime_c/string.h" -// Member 'data' -#include "rosidl_runtime_c/primitives_sequence.h" - -// Struct defined in msg/HeightMap in the package unitree_go. -typedef struct unitree_go__msg__HeightMap -{ - double stamp; - rosidl_runtime_c__String frame_id; - float resolution; - uint32_t width; - uint32_t height; - float origin[2]; - rosidl_runtime_c__float__Sequence data; -} unitree_go__msg__HeightMap; - -// Struct for a sequence of unitree_go__msg__HeightMap. -typedef struct unitree_go__msg__HeightMap__Sequence -{ - unitree_go__msg__HeightMap * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__HeightMap__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.hpp deleted file mode 100644 index 4775967..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__struct.hpp +++ /dev/null @@ -1,213 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__HeightMap __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__HeightMap __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct HeightMap_ -{ - using Type = HeightMap_; - - explicit HeightMap_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->stamp = 0.0; - this->frame_id = ""; - this->resolution = 0.0f; - this->width = 0ul; - this->height = 0ul; - std::fill::iterator, float>(this->origin.begin(), this->origin.end(), 0.0f); - } - } - - explicit HeightMap_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : frame_id(_alloc), - origin(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->stamp = 0.0; - this->frame_id = ""; - this->resolution = 0.0f; - this->width = 0ul; - this->height = 0ul; - std::fill::iterator, float>(this->origin.begin(), this->origin.end(), 0.0f); - } - } - - // field types and members - using _stamp_type = - double; - _stamp_type stamp; - using _frame_id_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _frame_id_type frame_id; - using _resolution_type = - float; - _resolution_type resolution; - using _width_type = - uint32_t; - _width_type width; - using _height_type = - uint32_t; - _height_type height; - using _origin_type = - std::array; - _origin_type origin; - using _data_type = - std::vector::other>; - _data_type data; - - // setters for named parameter idiom - Type & set__stamp( - const double & _arg) - { - this->stamp = _arg; - return *this; - } - Type & set__frame_id( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->frame_id = _arg; - return *this; - } - Type & set__resolution( - const float & _arg) - { - this->resolution = _arg; - return *this; - } - Type & set__width( - const uint32_t & _arg) - { - this->width = _arg; - return *this; - } - Type & set__height( - const uint32_t & _arg) - { - this->height = _arg; - return *this; - } - Type & set__origin( - const std::array & _arg) - { - this->origin = _arg; - return *this; - } - Type & set__data( - const std::vector::other> & _arg) - { - this->data = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::HeightMap_ *; - using ConstRawPtr = - const unitree_go::msg::HeightMap_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__HeightMap - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__HeightMap - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const HeightMap_ & other) const - { - if (this->stamp != other.stamp) { - return false; - } - if (this->frame_id != other.frame_id) { - return false; - } - if (this->resolution != other.resolution) { - return false; - } - if (this->width != other.width) { - return false; - } - if (this->height != other.height) { - return false; - } - if (this->origin != other.origin) { - return false; - } - if (this->data != other.data) { - return false; - } - return true; - } - bool operator!=(const HeightMap_ & other) const - { - return !this->operator==(other); - } -}; // struct HeightMap_ - -// alias to use template instance with default allocator -using HeightMap = - unitree_go::msg::HeightMap_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__traits.hpp deleted file mode 100644 index 336ecbc..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TRAITS_HPP_ - -#include "unitree_go/msg/detail/height_map__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::HeightMap"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/HeightMap"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.c deleted file mode 100644 index c25acf8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.c +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/height_map__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/height_map__functions.h" -#include "unitree_go/msg/detail/height_map__struct.h" - - -// Include directives for member types -// Member `frame_id` -#include "rosidl_runtime_c/string_functions.h" -// Member `data` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void HeightMap__rosidl_typesupport_introspection_c__HeightMap_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__HeightMap__init(message_memory); -} - -void HeightMap__rosidl_typesupport_introspection_c__HeightMap_fini_function(void * message_memory) -{ - unitree_go__msg__HeightMap__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_member_array[7] = { - { - "stamp", // name - rosidl_typesupport_introspection_c__ROS_TYPE_DOUBLE, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__HeightMap, stamp), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "frame_id", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__HeightMap, frame_id), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "resolution", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__HeightMap, resolution), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "width", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__HeightMap, width), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "height", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__HeightMap, height), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "origin", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__HeightMap, origin), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "data", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__HeightMap, data), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_members = { - "unitree_go__msg", // message namespace - "HeightMap", // message name - 7, // number of fields - sizeof(unitree_go__msg__HeightMap), - HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_member_array, // message members - HeightMap__rosidl_typesupport_introspection_c__HeightMap_init_function, // function to initialize message memory (memory has to be allocated) - HeightMap__rosidl_typesupport_introspection_c__HeightMap_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_type_support_handle = { - 0, - &HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, HeightMap)() { - if (!HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_type_support_handle.typesupport_identifier) { - HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &HeightMap__rosidl_typesupport_introspection_c__HeightMap_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.cpp deleted file mode 100644 index 8f3c2c0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.cpp +++ /dev/null @@ -1,244 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/height_map__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void HeightMap_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::HeightMap(_init); -} - -void HeightMap_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~HeightMap(); -} - -size_t size_function__HeightMap__origin(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__HeightMap__origin(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__HeightMap__origin(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__HeightMap__data(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__HeightMap__data(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__HeightMap__data(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__HeightMap__data(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember HeightMap_message_member_array[7] = { - { - "stamp", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_DOUBLE, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::HeightMap, stamp), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "frame_id", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::HeightMap, frame_id), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "resolution", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::HeightMap, resolution), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "width", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::HeightMap, width), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "height", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::HeightMap, height), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "origin", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::HeightMap, origin), // bytes offset in struct - nullptr, // default value - size_function__HeightMap__origin, // size() function pointer - get_const_function__HeightMap__origin, // get_const(index) function pointer - get_function__HeightMap__origin, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "data", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::HeightMap, data), // bytes offset in struct - nullptr, // default value - size_function__HeightMap__data, // size() function pointer - get_const_function__HeightMap__data, // get_const(index) function pointer - get_function__HeightMap__data, // get(index) function pointer - resize_function__HeightMap__data // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers HeightMap_message_members = { - "unitree_go::msg", // message namespace - "HeightMap", // message name - 7, // number of fields - sizeof(unitree_go::msg::HeightMap), - HeightMap_message_member_array, // message members - HeightMap_init_function, // function to initialize message memory (memory has to be allocated) - HeightMap_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t HeightMap_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &HeightMap_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::HeightMap_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, HeightMap)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::HeightMap_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.h deleted file mode 100644 index 16e5fbb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - HeightMap -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.hpp deleted file mode 100644 index fc2f4e5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/height_map__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - HeightMap -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__HEIGHT_MAP__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__builder.hpp deleted file mode 100644 index 06ae144..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__builder.hpp +++ /dev/null @@ -1,119 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__BUILDER_HPP_ - -#include "unitree_go/msg/detail/imu_state__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_IMUState_temperature -{ -public: - explicit Init_IMUState_temperature(::unitree_go::msg::IMUState & msg) - : msg_(msg) - {} - ::unitree_go::msg::IMUState temperature(::unitree_go::msg::IMUState::_temperature_type arg) - { - msg_.temperature = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::IMUState msg_; -}; - -class Init_IMUState_rpy -{ -public: - explicit Init_IMUState_rpy(::unitree_go::msg::IMUState & msg) - : msg_(msg) - {} - Init_IMUState_temperature rpy(::unitree_go::msg::IMUState::_rpy_type arg) - { - msg_.rpy = std::move(arg); - return Init_IMUState_temperature(msg_); - } - -private: - ::unitree_go::msg::IMUState msg_; -}; - -class Init_IMUState_accelerometer -{ -public: - explicit Init_IMUState_accelerometer(::unitree_go::msg::IMUState & msg) - : msg_(msg) - {} - Init_IMUState_rpy accelerometer(::unitree_go::msg::IMUState::_accelerometer_type arg) - { - msg_.accelerometer = std::move(arg); - return Init_IMUState_rpy(msg_); - } - -private: - ::unitree_go::msg::IMUState msg_; -}; - -class Init_IMUState_gyroscope -{ -public: - explicit Init_IMUState_gyroscope(::unitree_go::msg::IMUState & msg) - : msg_(msg) - {} - Init_IMUState_accelerometer gyroscope(::unitree_go::msg::IMUState::_gyroscope_type arg) - { - msg_.gyroscope = std::move(arg); - return Init_IMUState_accelerometer(msg_); - } - -private: - ::unitree_go::msg::IMUState msg_; -}; - -class Init_IMUState_quaternion -{ -public: - Init_IMUState_quaternion() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_IMUState_gyroscope quaternion(::unitree_go::msg::IMUState::_quaternion_type arg) - { - msg_.quaternion = std::move(arg); - return Init_IMUState_gyroscope(msg_); - } - -private: - ::unitree_go::msg::IMUState msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::IMUState>() -{ - return unitree_go::msg::builder::Init_IMUState_quaternion(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.c deleted file mode 100644 index a19540a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.c +++ /dev/null @@ -1,279 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/imu_state__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__IMUState__init(unitree_go__msg__IMUState * msg) -{ - if (!msg) { - return false; - } - // quaternion - // gyroscope - // accelerometer - // rpy - // temperature - return true; -} - -void -unitree_go__msg__IMUState__fini(unitree_go__msg__IMUState * msg) -{ - if (!msg) { - return; - } - // quaternion - // gyroscope - // accelerometer - // rpy - // temperature -} - -bool -unitree_go__msg__IMUState__are_equal(const unitree_go__msg__IMUState * lhs, const unitree_go__msg__IMUState * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // quaternion - for (size_t i = 0; i < 4; ++i) { - if (lhs->quaternion[i] != rhs->quaternion[i]) { - return false; - } - } - // gyroscope - for (size_t i = 0; i < 3; ++i) { - if (lhs->gyroscope[i] != rhs->gyroscope[i]) { - return false; - } - } - // accelerometer - for (size_t i = 0; i < 3; ++i) { - if (lhs->accelerometer[i] != rhs->accelerometer[i]) { - return false; - } - } - // rpy - for (size_t i = 0; i < 3; ++i) { - if (lhs->rpy[i] != rhs->rpy[i]) { - return false; - } - } - // temperature - if (lhs->temperature != rhs->temperature) { - return false; - } - return true; -} - -bool -unitree_go__msg__IMUState__copy( - const unitree_go__msg__IMUState * input, - unitree_go__msg__IMUState * output) -{ - if (!input || !output) { - return false; - } - // quaternion - for (size_t i = 0; i < 4; ++i) { - output->quaternion[i] = input->quaternion[i]; - } - // gyroscope - for (size_t i = 0; i < 3; ++i) { - output->gyroscope[i] = input->gyroscope[i]; - } - // accelerometer - for (size_t i = 0; i < 3; ++i) { - output->accelerometer[i] = input->accelerometer[i]; - } - // rpy - for (size_t i = 0; i < 3; ++i) { - output->rpy[i] = input->rpy[i]; - } - // temperature - output->temperature = input->temperature; - return true; -} - -unitree_go__msg__IMUState * -unitree_go__msg__IMUState__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__IMUState * msg = (unitree_go__msg__IMUState *)allocator.allocate(sizeof(unitree_go__msg__IMUState), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__IMUState)); - bool success = unitree_go__msg__IMUState__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__IMUState__destroy(unitree_go__msg__IMUState * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__IMUState__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__IMUState__Sequence__init(unitree_go__msg__IMUState__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__IMUState * data = NULL; - - if (size) { - data = (unitree_go__msg__IMUState *)allocator.zero_allocate(size, sizeof(unitree_go__msg__IMUState), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__IMUState__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__IMUState__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__IMUState__Sequence__fini(unitree_go__msg__IMUState__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__IMUState__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__IMUState__Sequence * -unitree_go__msg__IMUState__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__IMUState__Sequence * array = (unitree_go__msg__IMUState__Sequence *)allocator.allocate(sizeof(unitree_go__msg__IMUState__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__IMUState__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__IMUState__Sequence__destroy(unitree_go__msg__IMUState__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__IMUState__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__IMUState__Sequence__are_equal(const unitree_go__msg__IMUState__Sequence * lhs, const unitree_go__msg__IMUState__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__IMUState__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__IMUState__Sequence__copy( - const unitree_go__msg__IMUState__Sequence * input, - unitree_go__msg__IMUState__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__IMUState); - unitree_go__msg__IMUState * data = - (unitree_go__msg__IMUState *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__IMUState__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__IMUState__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__IMUState__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.h deleted file mode 100644 index c9d4485..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/imu_state__struct.h" - -/// Initialize msg/IMUState message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__IMUState - * )) before or use - * unitree_go__msg__IMUState__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__IMUState__init(unitree_go__msg__IMUState * msg); - -/// Finalize msg/IMUState message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__IMUState__fini(unitree_go__msg__IMUState * msg); - -/// Create msg/IMUState message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__IMUState__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__IMUState * -unitree_go__msg__IMUState__create(); - -/// Destroy msg/IMUState message. -/** - * It calls - * unitree_go__msg__IMUState__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__IMUState__destroy(unitree_go__msg__IMUState * msg); - -/// Check for msg/IMUState message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__IMUState__are_equal(const unitree_go__msg__IMUState * lhs, const unitree_go__msg__IMUState * rhs); - -/// Copy a msg/IMUState message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__IMUState__copy( - const unitree_go__msg__IMUState * input, - unitree_go__msg__IMUState * output); - -/// Initialize array of msg/IMUState messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__IMUState__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__IMUState__Sequence__init(unitree_go__msg__IMUState__Sequence * array, size_t size); - -/// Finalize array of msg/IMUState messages. -/** - * It calls - * unitree_go__msg__IMUState__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__IMUState__Sequence__fini(unitree_go__msg__IMUState__Sequence * array); - -/// Create array of msg/IMUState messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__IMUState__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__IMUState__Sequence * -unitree_go__msg__IMUState__Sequence__create(size_t size); - -/// Destroy array of msg/IMUState messages. -/** - * It calls - * unitree_go__msg__IMUState__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__IMUState__Sequence__destroy(unitree_go__msg__IMUState__Sequence * array); - -/// Check for msg/IMUState message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__IMUState__Sequence__are_equal(const unitree_go__msg__IMUState__Sequence * lhs, const unitree_go__msg__IMUState__Sequence * rhs); - -/// Copy an array of msg/IMUState messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__IMUState__Sequence__copy( - const unitree_go__msg__IMUState__Sequence * input, - unitree_go__msg__IMUState__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 90eface..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__IMUState( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__IMUState( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, IMUState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index eeb2a9b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/imu_state__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::IMUState & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::IMUState & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::IMUState & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_IMUState( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, IMUState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 0fcafb6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, IMUState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index c956adc..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, IMUState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.h deleted file mode 100644 index ad1d2c0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.h +++ /dev/null @@ -1,44 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/IMUState in the package unitree_go. -typedef struct unitree_go__msg__IMUState -{ - float quaternion[4]; - float gyroscope[3]; - float accelerometer[3]; - float rpy[3]; - int8_t temperature; -} unitree_go__msg__IMUState; - -// Struct for a sequence of unitree_go__msg__IMUState. -typedef struct unitree_go__msg__IMUState__Sequence -{ - unitree_go__msg__IMUState * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__IMUState__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.hpp deleted file mode 100644 index 2f71461..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__struct.hpp +++ /dev/null @@ -1,189 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__IMUState __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__IMUState __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct IMUState_ -{ - using Type = IMUState_; - - explicit IMUState_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, float>(this->quaternion.begin(), this->quaternion.end(), 0.0f); - std::fill::iterator, float>(this->gyroscope.begin(), this->gyroscope.end(), 0.0f); - std::fill::iterator, float>(this->accelerometer.begin(), this->accelerometer.end(), 0.0f); - std::fill::iterator, float>(this->rpy.begin(), this->rpy.end(), 0.0f); - this->temperature = 0; - } - } - - explicit IMUState_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : quaternion(_alloc), - gyroscope(_alloc), - accelerometer(_alloc), - rpy(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, float>(this->quaternion.begin(), this->quaternion.end(), 0.0f); - std::fill::iterator, float>(this->gyroscope.begin(), this->gyroscope.end(), 0.0f); - std::fill::iterator, float>(this->accelerometer.begin(), this->accelerometer.end(), 0.0f); - std::fill::iterator, float>(this->rpy.begin(), this->rpy.end(), 0.0f); - this->temperature = 0; - } - } - - // field types and members - using _quaternion_type = - std::array; - _quaternion_type quaternion; - using _gyroscope_type = - std::array; - _gyroscope_type gyroscope; - using _accelerometer_type = - std::array; - _accelerometer_type accelerometer; - using _rpy_type = - std::array; - _rpy_type rpy; - using _temperature_type = - int8_t; - _temperature_type temperature; - - // setters for named parameter idiom - Type & set__quaternion( - const std::array & _arg) - { - this->quaternion = _arg; - return *this; - } - Type & set__gyroscope( - const std::array & _arg) - { - this->gyroscope = _arg; - return *this; - } - Type & set__accelerometer( - const std::array & _arg) - { - this->accelerometer = _arg; - return *this; - } - Type & set__rpy( - const std::array & _arg) - { - this->rpy = _arg; - return *this; - } - Type & set__temperature( - const int8_t & _arg) - { - this->temperature = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::IMUState_ *; - using ConstRawPtr = - const unitree_go::msg::IMUState_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__IMUState - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__IMUState - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const IMUState_ & other) const - { - if (this->quaternion != other.quaternion) { - return false; - } - if (this->gyroscope != other.gyroscope) { - return false; - } - if (this->accelerometer != other.accelerometer) { - return false; - } - if (this->rpy != other.rpy) { - return false; - } - if (this->temperature != other.temperature) { - return false; - } - return true; - } - bool operator!=(const IMUState_ & other) const - { - return !this->operator==(other); - } -}; // struct IMUState_ - -// alias to use template instance with default allocator -using IMUState = - unitree_go::msg::IMUState_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__traits.hpp deleted file mode 100644 index bc49936..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__TRAITS_HPP_ - -#include "unitree_go/msg/detail/imu_state__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::IMUState"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/IMUState"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.c deleted file mode 100644 index c9006db..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.c +++ /dev/null @@ -1,141 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/imu_state__functions.h" -#include "unitree_go/msg/detail/imu_state__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void IMUState__rosidl_typesupport_introspection_c__IMUState_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__IMUState__init(message_memory); -} - -void IMUState__rosidl_typesupport_introspection_c__IMUState_fini_function(void * message_memory) -{ - unitree_go__msg__IMUState__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember IMUState__rosidl_typesupport_introspection_c__IMUState_message_member_array[5] = { - { - "quaternion", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go__msg__IMUState, quaternion), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "gyroscope", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__IMUState, gyroscope), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "accelerometer", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__IMUState, accelerometer), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "rpy", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__IMUState, rpy), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "temperature", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__IMUState, temperature), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers IMUState__rosidl_typesupport_introspection_c__IMUState_message_members = { - "unitree_go__msg", // message namespace - "IMUState", // message name - 5, // number of fields - sizeof(unitree_go__msg__IMUState), - IMUState__rosidl_typesupport_introspection_c__IMUState_message_member_array, // message members - IMUState__rosidl_typesupport_introspection_c__IMUState_init_function, // function to initialize message memory (memory has to be allocated) - IMUState__rosidl_typesupport_introspection_c__IMUState_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t IMUState__rosidl_typesupport_introspection_c__IMUState_message_type_support_handle = { - 0, - &IMUState__rosidl_typesupport_introspection_c__IMUState_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, IMUState)() { - if (!IMUState__rosidl_typesupport_introspection_c__IMUState_message_type_support_handle.typesupport_identifier) { - IMUState__rosidl_typesupport_introspection_c__IMUState_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &IMUState__rosidl_typesupport_introspection_c__IMUState_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.cpp deleted file mode 100644 index 19067c1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.cpp +++ /dev/null @@ -1,247 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/imu_state__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void IMUState_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::IMUState(_init); -} - -void IMUState_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~IMUState(); -} - -size_t size_function__IMUState__quaternion(const void * untyped_member) -{ - (void)untyped_member; - return 4; -} - -const void * get_const_function__IMUState__quaternion(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__IMUState__quaternion(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__IMUState__gyroscope(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__IMUState__gyroscope(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__IMUState__gyroscope(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__IMUState__accelerometer(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__IMUState__accelerometer(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__IMUState__accelerometer(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__IMUState__rpy(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__IMUState__rpy(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__IMUState__rpy(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember IMUState_message_member_array[5] = { - { - "quaternion", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go::msg::IMUState, quaternion), // bytes offset in struct - nullptr, // default value - size_function__IMUState__quaternion, // size() function pointer - get_const_function__IMUState__quaternion, // get_const(index) function pointer - get_function__IMUState__quaternion, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "gyroscope", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::IMUState, gyroscope), // bytes offset in struct - nullptr, // default value - size_function__IMUState__gyroscope, // size() function pointer - get_const_function__IMUState__gyroscope, // get_const(index) function pointer - get_function__IMUState__gyroscope, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "accelerometer", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::IMUState, accelerometer), // bytes offset in struct - nullptr, // default value - size_function__IMUState__accelerometer, // size() function pointer - get_const_function__IMUState__accelerometer, // get_const(index) function pointer - get_function__IMUState__accelerometer, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "rpy", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::IMUState, rpy), // bytes offset in struct - nullptr, // default value - size_function__IMUState__rpy, // size() function pointer - get_const_function__IMUState__rpy, // get_const(index) function pointer - get_function__IMUState__rpy, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "temperature", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::IMUState, temperature), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers IMUState_message_members = { - "unitree_go::msg", // message namespace - "IMUState", // message name - 5, // number of fields - sizeof(unitree_go::msg::IMUState), - IMUState_message_member_array, // message members - IMUState_init_function, // function to initialize message memory (memory has to be allocated) - IMUState_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t IMUState_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &IMUState_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::IMUState_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, IMUState)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::IMUState_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.h deleted file mode 100644 index 43fca1b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - IMUState -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.hpp deleted file mode 100644 index 4914aa9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/imu_state__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__IMU_STATE__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__IMU_STATE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - IMUState -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__IMU_STATE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__builder.hpp deleted file mode 100644 index 8da7e4e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__builder.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__BUILDER_HPP_ - -#include "unitree_go/msg/detail/interface_config__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_InterfaceConfig_reserve -{ -public: - explicit Init_InterfaceConfig_reserve(::unitree_go::msg::InterfaceConfig & msg) - : msg_(msg) - {} - ::unitree_go::msg::InterfaceConfig reserve(::unitree_go::msg::InterfaceConfig::_reserve_type arg) - { - msg_.reserve = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::InterfaceConfig msg_; -}; - -class Init_InterfaceConfig_value -{ -public: - explicit Init_InterfaceConfig_value(::unitree_go::msg::InterfaceConfig & msg) - : msg_(msg) - {} - Init_InterfaceConfig_reserve value(::unitree_go::msg::InterfaceConfig::_value_type arg) - { - msg_.value = std::move(arg); - return Init_InterfaceConfig_reserve(msg_); - } - -private: - ::unitree_go::msg::InterfaceConfig msg_; -}; - -class Init_InterfaceConfig_mode -{ -public: - Init_InterfaceConfig_mode() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_InterfaceConfig_value mode(::unitree_go::msg::InterfaceConfig::_mode_type arg) - { - msg_.mode = std::move(arg); - return Init_InterfaceConfig_value(msg_); - } - -private: - ::unitree_go::msg::InterfaceConfig msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::InterfaceConfig>() -{ - return unitree_go::msg::builder::Init_InterfaceConfig_mode(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.c deleted file mode 100644 index 0a9503f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.c +++ /dev/null @@ -1,251 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/interface_config__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__InterfaceConfig__init(unitree_go__msg__InterfaceConfig * msg) -{ - if (!msg) { - return false; - } - // mode - // value - // reserve - return true; -} - -void -unitree_go__msg__InterfaceConfig__fini(unitree_go__msg__InterfaceConfig * msg) -{ - if (!msg) { - return; - } - // mode - // value - // reserve -} - -bool -unitree_go__msg__InterfaceConfig__are_equal(const unitree_go__msg__InterfaceConfig * lhs, const unitree_go__msg__InterfaceConfig * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // mode - if (lhs->mode != rhs->mode) { - return false; - } - // value - if (lhs->value != rhs->value) { - return false; - } - // reserve - for (size_t i = 0; i < 2; ++i) { - if (lhs->reserve[i] != rhs->reserve[i]) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__InterfaceConfig__copy( - const unitree_go__msg__InterfaceConfig * input, - unitree_go__msg__InterfaceConfig * output) -{ - if (!input || !output) { - return false; - } - // mode - output->mode = input->mode; - // value - output->value = input->value; - // reserve - for (size_t i = 0; i < 2; ++i) { - output->reserve[i] = input->reserve[i]; - } - return true; -} - -unitree_go__msg__InterfaceConfig * -unitree_go__msg__InterfaceConfig__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__InterfaceConfig * msg = (unitree_go__msg__InterfaceConfig *)allocator.allocate(sizeof(unitree_go__msg__InterfaceConfig), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__InterfaceConfig)); - bool success = unitree_go__msg__InterfaceConfig__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__InterfaceConfig__destroy(unitree_go__msg__InterfaceConfig * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__InterfaceConfig__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__InterfaceConfig__Sequence__init(unitree_go__msg__InterfaceConfig__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__InterfaceConfig * data = NULL; - - if (size) { - data = (unitree_go__msg__InterfaceConfig *)allocator.zero_allocate(size, sizeof(unitree_go__msg__InterfaceConfig), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__InterfaceConfig__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__InterfaceConfig__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__InterfaceConfig__Sequence__fini(unitree_go__msg__InterfaceConfig__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__InterfaceConfig__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__InterfaceConfig__Sequence * -unitree_go__msg__InterfaceConfig__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__InterfaceConfig__Sequence * array = (unitree_go__msg__InterfaceConfig__Sequence *)allocator.allocate(sizeof(unitree_go__msg__InterfaceConfig__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__InterfaceConfig__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__InterfaceConfig__Sequence__destroy(unitree_go__msg__InterfaceConfig__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__InterfaceConfig__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__InterfaceConfig__Sequence__are_equal(const unitree_go__msg__InterfaceConfig__Sequence * lhs, const unitree_go__msg__InterfaceConfig__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__InterfaceConfig__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__InterfaceConfig__Sequence__copy( - const unitree_go__msg__InterfaceConfig__Sequence * input, - unitree_go__msg__InterfaceConfig__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__InterfaceConfig); - unitree_go__msg__InterfaceConfig * data = - (unitree_go__msg__InterfaceConfig *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__InterfaceConfig__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__InterfaceConfig__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__InterfaceConfig__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.h deleted file mode 100644 index de103af..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/interface_config__struct.h" - -/// Initialize msg/InterfaceConfig message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__InterfaceConfig - * )) before or use - * unitree_go__msg__InterfaceConfig__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__InterfaceConfig__init(unitree_go__msg__InterfaceConfig * msg); - -/// Finalize msg/InterfaceConfig message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__InterfaceConfig__fini(unitree_go__msg__InterfaceConfig * msg); - -/// Create msg/InterfaceConfig message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__InterfaceConfig__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__InterfaceConfig * -unitree_go__msg__InterfaceConfig__create(); - -/// Destroy msg/InterfaceConfig message. -/** - * It calls - * unitree_go__msg__InterfaceConfig__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__InterfaceConfig__destroy(unitree_go__msg__InterfaceConfig * msg); - -/// Check for msg/InterfaceConfig message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__InterfaceConfig__are_equal(const unitree_go__msg__InterfaceConfig * lhs, const unitree_go__msg__InterfaceConfig * rhs); - -/// Copy a msg/InterfaceConfig message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__InterfaceConfig__copy( - const unitree_go__msg__InterfaceConfig * input, - unitree_go__msg__InterfaceConfig * output); - -/// Initialize array of msg/InterfaceConfig messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__InterfaceConfig__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__InterfaceConfig__Sequence__init(unitree_go__msg__InterfaceConfig__Sequence * array, size_t size); - -/// Finalize array of msg/InterfaceConfig messages. -/** - * It calls - * unitree_go__msg__InterfaceConfig__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__InterfaceConfig__Sequence__fini(unitree_go__msg__InterfaceConfig__Sequence * array); - -/// Create array of msg/InterfaceConfig messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__InterfaceConfig__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__InterfaceConfig__Sequence * -unitree_go__msg__InterfaceConfig__Sequence__create(size_t size); - -/// Destroy array of msg/InterfaceConfig messages. -/** - * It calls - * unitree_go__msg__InterfaceConfig__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__InterfaceConfig__Sequence__destroy(unitree_go__msg__InterfaceConfig__Sequence * array); - -/// Check for msg/InterfaceConfig message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__InterfaceConfig__Sequence__are_equal(const unitree_go__msg__InterfaceConfig__Sequence * lhs, const unitree_go__msg__InterfaceConfig__Sequence * rhs); - -/// Copy an array of msg/InterfaceConfig messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__InterfaceConfig__Sequence__copy( - const unitree_go__msg__InterfaceConfig__Sequence * input, - unitree_go__msg__InterfaceConfig__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 0c54fcc..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__InterfaceConfig( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__InterfaceConfig( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, InterfaceConfig)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 561b9ad..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/interface_config__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::InterfaceConfig & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::InterfaceConfig & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::InterfaceConfig & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_InterfaceConfig( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, InterfaceConfig)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 42ddd98..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, InterfaceConfig)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 3db771c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, InterfaceConfig)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.h deleted file mode 100644 index 44d940a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.h +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/InterfaceConfig in the package unitree_go. -typedef struct unitree_go__msg__InterfaceConfig -{ - uint8_t mode; - uint8_t value; - uint8_t reserve[2]; -} unitree_go__msg__InterfaceConfig; - -// Struct for a sequence of unitree_go__msg__InterfaceConfig. -typedef struct unitree_go__msg__InterfaceConfig__Sequence -{ - unitree_go__msg__InterfaceConfig * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__InterfaceConfig__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.hpp deleted file mode 100644 index 835c98e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__struct.hpp +++ /dev/null @@ -1,158 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__InterfaceConfig __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__InterfaceConfig __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct InterfaceConfig_ -{ - using Type = InterfaceConfig_; - - explicit InterfaceConfig_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->value = 0; - std::fill::iterator, uint8_t>(this->reserve.begin(), this->reserve.end(), 0); - } - } - - explicit InterfaceConfig_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : reserve(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->value = 0; - std::fill::iterator, uint8_t>(this->reserve.begin(), this->reserve.end(), 0); - } - } - - // field types and members - using _mode_type = - uint8_t; - _mode_type mode; - using _value_type = - uint8_t; - _value_type value; - using _reserve_type = - std::array; - _reserve_type reserve; - - // setters for named parameter idiom - Type & set__mode( - const uint8_t & _arg) - { - this->mode = _arg; - return *this; - } - Type & set__value( - const uint8_t & _arg) - { - this->value = _arg; - return *this; - } - Type & set__reserve( - const std::array & _arg) - { - this->reserve = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::InterfaceConfig_ *; - using ConstRawPtr = - const unitree_go::msg::InterfaceConfig_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__InterfaceConfig - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__InterfaceConfig - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const InterfaceConfig_ & other) const - { - if (this->mode != other.mode) { - return false; - } - if (this->value != other.value) { - return false; - } - if (this->reserve != other.reserve) { - return false; - } - return true; - } - bool operator!=(const InterfaceConfig_ & other) const - { - return !this->operator==(other); - } -}; // struct InterfaceConfig_ - -// alias to use template instance with default allocator -using InterfaceConfig = - unitree_go::msg::InterfaceConfig_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__traits.hpp deleted file mode 100644 index 47932e3..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TRAITS_HPP_ - -#include "unitree_go/msg/detail/interface_config__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::InterfaceConfig"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/InterfaceConfig"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.c deleted file mode 100644 index b6998ee..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.c +++ /dev/null @@ -1,111 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/interface_config__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/interface_config__functions.h" -#include "unitree_go/msg/detail/interface_config__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__InterfaceConfig__init(message_memory); -} - -void InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_fini_function(void * message_memory) -{ - unitree_go__msg__InterfaceConfig__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_member_array[3] = { - { - "mode", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__InterfaceConfig, mode), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "value", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__InterfaceConfig, value), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__InterfaceConfig, reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_members = { - "unitree_go__msg", // message namespace - "InterfaceConfig", // message name - 3, // number of fields - sizeof(unitree_go__msg__InterfaceConfig), - InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_member_array, // message members - InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_init_function, // function to initialize message memory (memory has to be allocated) - InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_type_support_handle = { - 0, - &InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, InterfaceConfig)() { - if (!InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_type_support_handle.typesupport_identifier) { - InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &InterfaceConfig__rosidl_typesupport_introspection_c__InterfaceConfig_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.cpp deleted file mode 100644 index 123f226..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/interface_config__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void InterfaceConfig_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::InterfaceConfig(_init); -} - -void InterfaceConfig_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~InterfaceConfig(); -} - -size_t size_function__InterfaceConfig__reserve(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__InterfaceConfig__reserve(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__InterfaceConfig__reserve(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember InterfaceConfig_message_member_array[3] = { - { - "mode", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::InterfaceConfig, mode), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "value", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::InterfaceConfig, value), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::InterfaceConfig, reserve), // bytes offset in struct - nullptr, // default value - size_function__InterfaceConfig__reserve, // size() function pointer - get_const_function__InterfaceConfig__reserve, // get_const(index) function pointer - get_function__InterfaceConfig__reserve, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers InterfaceConfig_message_members = { - "unitree_go::msg", // message namespace - "InterfaceConfig", // message name - 3, // number of fields - sizeof(unitree_go::msg::InterfaceConfig), - InterfaceConfig_message_member_array, // message members - InterfaceConfig_init_function, // function to initialize message memory (memory has to be allocated) - InterfaceConfig_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t InterfaceConfig_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &InterfaceConfig_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::InterfaceConfig_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, InterfaceConfig)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::InterfaceConfig_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.h deleted file mode 100644 index e0e628f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - InterfaceConfig -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.hpp deleted file mode 100644 index 5e96d7c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/interface_config__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - InterfaceConfig -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__INTERFACE_CONFIG__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__builder.hpp deleted file mode 100644 index b6689b9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__builder.hpp +++ /dev/null @@ -1,311 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__BUILDER_HPP_ - -#include "unitree_go/msg/detail/lidar_state__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_LidarState_serial_buffer_read -{ -public: - explicit Init_LidarState_serial_buffer_read(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - ::unitree_go::msg::LidarState serial_buffer_read(::unitree_go::msg::LidarState::_serial_buffer_read_type arg) - { - msg_.serial_buffer_read = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_serial_buffer_size -{ -public: - explicit Init_LidarState_serial_buffer_size(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_serial_buffer_read serial_buffer_size(::unitree_go::msg::LidarState::_serial_buffer_size_type arg) - { - msg_.serial_buffer_size = std::move(arg); - return Init_LidarState_serial_buffer_read(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_serial_recv_stamp -{ -public: - explicit Init_LidarState_serial_recv_stamp(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_serial_buffer_size serial_recv_stamp(::unitree_go::msg::LidarState::_serial_recv_stamp_type arg) - { - msg_.serial_recv_stamp = std::move(arg); - return Init_LidarState_serial_buffer_size(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_imu_rpy -{ -public: - explicit Init_LidarState_imu_rpy(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_serial_recv_stamp imu_rpy(::unitree_go::msg::LidarState::_imu_rpy_type arg) - { - msg_.imu_rpy = std::move(arg); - return Init_LidarState_serial_recv_stamp(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_imu_packet_loss_rate -{ -public: - explicit Init_LidarState_imu_packet_loss_rate(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_imu_rpy imu_packet_loss_rate(::unitree_go::msg::LidarState::_imu_packet_loss_rate_type arg) - { - msg_.imu_packet_loss_rate = std::move(arg); - return Init_LidarState_imu_rpy(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_imu_frequency -{ -public: - explicit Init_LidarState_imu_frequency(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_imu_packet_loss_rate imu_frequency(::unitree_go::msg::LidarState::_imu_frequency_type arg) - { - msg_.imu_frequency = std::move(arg); - return Init_LidarState_imu_packet_loss_rate(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_cloud_scan_num -{ -public: - explicit Init_LidarState_cloud_scan_num(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_imu_frequency cloud_scan_num(::unitree_go::msg::LidarState::_cloud_scan_num_type arg) - { - msg_.cloud_scan_num = std::move(arg); - return Init_LidarState_imu_frequency(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_cloud_size -{ -public: - explicit Init_LidarState_cloud_size(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_cloud_scan_num cloud_size(::unitree_go::msg::LidarState::_cloud_size_type arg) - { - msg_.cloud_size = std::move(arg); - return Init_LidarState_cloud_scan_num(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_cloud_packet_loss_rate -{ -public: - explicit Init_LidarState_cloud_packet_loss_rate(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_cloud_size cloud_packet_loss_rate(::unitree_go::msg::LidarState::_cloud_packet_loss_rate_type arg) - { - msg_.cloud_packet_loss_rate = std::move(arg); - return Init_LidarState_cloud_size(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_cloud_frequency -{ -public: - explicit Init_LidarState_cloud_frequency(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_cloud_packet_loss_rate cloud_frequency(::unitree_go::msg::LidarState::_cloud_frequency_type arg) - { - msg_.cloud_frequency = std::move(arg); - return Init_LidarState_cloud_packet_loss_rate(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_error_state -{ -public: - explicit Init_LidarState_error_state(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_cloud_frequency error_state(::unitree_go::msg::LidarState::_error_state_type arg) - { - msg_.error_state = std::move(arg); - return Init_LidarState_cloud_frequency(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_com_rotation_speed -{ -public: - explicit Init_LidarState_com_rotation_speed(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_error_state com_rotation_speed(::unitree_go::msg::LidarState::_com_rotation_speed_type arg) - { - msg_.com_rotation_speed = std::move(arg); - return Init_LidarState_error_state(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_sys_rotation_speed -{ -public: - explicit Init_LidarState_sys_rotation_speed(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_com_rotation_speed sys_rotation_speed(::unitree_go::msg::LidarState::_sys_rotation_speed_type arg) - { - msg_.sys_rotation_speed = std::move(arg); - return Init_LidarState_com_rotation_speed(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_sdk_version -{ -public: - explicit Init_LidarState_sdk_version(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_sys_rotation_speed sdk_version(::unitree_go::msg::LidarState::_sdk_version_type arg) - { - msg_.sdk_version = std::move(arg); - return Init_LidarState_sys_rotation_speed(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_software_version -{ -public: - explicit Init_LidarState_software_version(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_sdk_version software_version(::unitree_go::msg::LidarState::_software_version_type arg) - { - msg_.software_version = std::move(arg); - return Init_LidarState_sdk_version(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_firmware_version -{ -public: - explicit Init_LidarState_firmware_version(::unitree_go::msg::LidarState & msg) - : msg_(msg) - {} - Init_LidarState_software_version firmware_version(::unitree_go::msg::LidarState::_firmware_version_type arg) - { - msg_.firmware_version = std::move(arg); - return Init_LidarState_software_version(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -class Init_LidarState_stamp -{ -public: - Init_LidarState_stamp() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_LidarState_firmware_version stamp(::unitree_go::msg::LidarState::_stamp_type arg) - { - msg_.stamp = std::move(arg); - return Init_LidarState_firmware_version(msg_); - } - -private: - ::unitree_go::msg::LidarState msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::LidarState>() -{ - return unitree_go::msg::builder::Init_LidarState_stamp(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.c deleted file mode 100644 index 86a7388..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.c +++ /dev/null @@ -1,402 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/lidar_state__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `firmware_version` -// Member `software_version` -// Member `sdk_version` -#include "rosidl_runtime_c/string_functions.h" - -bool -unitree_go__msg__LidarState__init(unitree_go__msg__LidarState * msg) -{ - if (!msg) { - return false; - } - // stamp - // firmware_version - if (!rosidl_runtime_c__String__init(&msg->firmware_version)) { - unitree_go__msg__LidarState__fini(msg); - return false; - } - // software_version - if (!rosidl_runtime_c__String__init(&msg->software_version)) { - unitree_go__msg__LidarState__fini(msg); - return false; - } - // sdk_version - if (!rosidl_runtime_c__String__init(&msg->sdk_version)) { - unitree_go__msg__LidarState__fini(msg); - return false; - } - // sys_rotation_speed - // com_rotation_speed - // error_state - // cloud_frequency - // cloud_packet_loss_rate - // cloud_size - // cloud_scan_num - // imu_frequency - // imu_packet_loss_rate - // imu_rpy - // serial_recv_stamp - // serial_buffer_size - // serial_buffer_read - return true; -} - -void -unitree_go__msg__LidarState__fini(unitree_go__msg__LidarState * msg) -{ - if (!msg) { - return; - } - // stamp - // firmware_version - rosidl_runtime_c__String__fini(&msg->firmware_version); - // software_version - rosidl_runtime_c__String__fini(&msg->software_version); - // sdk_version - rosidl_runtime_c__String__fini(&msg->sdk_version); - // sys_rotation_speed - // com_rotation_speed - // error_state - // cloud_frequency - // cloud_packet_loss_rate - // cloud_size - // cloud_scan_num - // imu_frequency - // imu_packet_loss_rate - // imu_rpy - // serial_recv_stamp - // serial_buffer_size - // serial_buffer_read -} - -bool -unitree_go__msg__LidarState__are_equal(const unitree_go__msg__LidarState * lhs, const unitree_go__msg__LidarState * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // stamp - if (lhs->stamp != rhs->stamp) { - return false; - } - // firmware_version - if (!rosidl_runtime_c__String__are_equal( - &(lhs->firmware_version), &(rhs->firmware_version))) - { - return false; - } - // software_version - if (!rosidl_runtime_c__String__are_equal( - &(lhs->software_version), &(rhs->software_version))) - { - return false; - } - // sdk_version - if (!rosidl_runtime_c__String__are_equal( - &(lhs->sdk_version), &(rhs->sdk_version))) - { - return false; - } - // sys_rotation_speed - if (lhs->sys_rotation_speed != rhs->sys_rotation_speed) { - return false; - } - // com_rotation_speed - if (lhs->com_rotation_speed != rhs->com_rotation_speed) { - return false; - } - // error_state - if (lhs->error_state != rhs->error_state) { - return false; - } - // cloud_frequency - if (lhs->cloud_frequency != rhs->cloud_frequency) { - return false; - } - // cloud_packet_loss_rate - if (lhs->cloud_packet_loss_rate != rhs->cloud_packet_loss_rate) { - return false; - } - // cloud_size - if (lhs->cloud_size != rhs->cloud_size) { - return false; - } - // cloud_scan_num - if (lhs->cloud_scan_num != rhs->cloud_scan_num) { - return false; - } - // imu_frequency - if (lhs->imu_frequency != rhs->imu_frequency) { - return false; - } - // imu_packet_loss_rate - if (lhs->imu_packet_loss_rate != rhs->imu_packet_loss_rate) { - return false; - } - // imu_rpy - for (size_t i = 0; i < 3; ++i) { - if (lhs->imu_rpy[i] != rhs->imu_rpy[i]) { - return false; - } - } - // serial_recv_stamp - if (lhs->serial_recv_stamp != rhs->serial_recv_stamp) { - return false; - } - // serial_buffer_size - if (lhs->serial_buffer_size != rhs->serial_buffer_size) { - return false; - } - // serial_buffer_read - if (lhs->serial_buffer_read != rhs->serial_buffer_read) { - return false; - } - return true; -} - -bool -unitree_go__msg__LidarState__copy( - const unitree_go__msg__LidarState * input, - unitree_go__msg__LidarState * output) -{ - if (!input || !output) { - return false; - } - // stamp - output->stamp = input->stamp; - // firmware_version - if (!rosidl_runtime_c__String__copy( - &(input->firmware_version), &(output->firmware_version))) - { - return false; - } - // software_version - if (!rosidl_runtime_c__String__copy( - &(input->software_version), &(output->software_version))) - { - return false; - } - // sdk_version - if (!rosidl_runtime_c__String__copy( - &(input->sdk_version), &(output->sdk_version))) - { - return false; - } - // sys_rotation_speed - output->sys_rotation_speed = input->sys_rotation_speed; - // com_rotation_speed - output->com_rotation_speed = input->com_rotation_speed; - // error_state - output->error_state = input->error_state; - // cloud_frequency - output->cloud_frequency = input->cloud_frequency; - // cloud_packet_loss_rate - output->cloud_packet_loss_rate = input->cloud_packet_loss_rate; - // cloud_size - output->cloud_size = input->cloud_size; - // cloud_scan_num - output->cloud_scan_num = input->cloud_scan_num; - // imu_frequency - output->imu_frequency = input->imu_frequency; - // imu_packet_loss_rate - output->imu_packet_loss_rate = input->imu_packet_loss_rate; - // imu_rpy - for (size_t i = 0; i < 3; ++i) { - output->imu_rpy[i] = input->imu_rpy[i]; - } - // serial_recv_stamp - output->serial_recv_stamp = input->serial_recv_stamp; - // serial_buffer_size - output->serial_buffer_size = input->serial_buffer_size; - // serial_buffer_read - output->serial_buffer_read = input->serial_buffer_read; - return true; -} - -unitree_go__msg__LidarState * -unitree_go__msg__LidarState__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LidarState * msg = (unitree_go__msg__LidarState *)allocator.allocate(sizeof(unitree_go__msg__LidarState), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__LidarState)); - bool success = unitree_go__msg__LidarState__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__LidarState__destroy(unitree_go__msg__LidarState * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__LidarState__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__LidarState__Sequence__init(unitree_go__msg__LidarState__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LidarState * data = NULL; - - if (size) { - data = (unitree_go__msg__LidarState *)allocator.zero_allocate(size, sizeof(unitree_go__msg__LidarState), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__LidarState__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__LidarState__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__LidarState__Sequence__fini(unitree_go__msg__LidarState__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__LidarState__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__LidarState__Sequence * -unitree_go__msg__LidarState__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LidarState__Sequence * array = (unitree_go__msg__LidarState__Sequence *)allocator.allocate(sizeof(unitree_go__msg__LidarState__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__LidarState__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__LidarState__Sequence__destroy(unitree_go__msg__LidarState__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__LidarState__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__LidarState__Sequence__are_equal(const unitree_go__msg__LidarState__Sequence * lhs, const unitree_go__msg__LidarState__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__LidarState__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__LidarState__Sequence__copy( - const unitree_go__msg__LidarState__Sequence * input, - unitree_go__msg__LidarState__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__LidarState); - unitree_go__msg__LidarState * data = - (unitree_go__msg__LidarState *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__LidarState__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__LidarState__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__LidarState__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.h deleted file mode 100644 index fd634b8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/lidar_state__struct.h" - -/// Initialize msg/LidarState message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__LidarState - * )) before or use - * unitree_go__msg__LidarState__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LidarState__init(unitree_go__msg__LidarState * msg); - -/// Finalize msg/LidarState message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LidarState__fini(unitree_go__msg__LidarState * msg); - -/// Create msg/LidarState message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__LidarState__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__LidarState * -unitree_go__msg__LidarState__create(); - -/// Destroy msg/LidarState message. -/** - * It calls - * unitree_go__msg__LidarState__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LidarState__destroy(unitree_go__msg__LidarState * msg); - -/// Check for msg/LidarState message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LidarState__are_equal(const unitree_go__msg__LidarState * lhs, const unitree_go__msg__LidarState * rhs); - -/// Copy a msg/LidarState message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LidarState__copy( - const unitree_go__msg__LidarState * input, - unitree_go__msg__LidarState * output); - -/// Initialize array of msg/LidarState messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__LidarState__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LidarState__Sequence__init(unitree_go__msg__LidarState__Sequence * array, size_t size); - -/// Finalize array of msg/LidarState messages. -/** - * It calls - * unitree_go__msg__LidarState__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LidarState__Sequence__fini(unitree_go__msg__LidarState__Sequence * array); - -/// Create array of msg/LidarState messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__LidarState__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__LidarState__Sequence * -unitree_go__msg__LidarState__Sequence__create(size_t size); - -/// Destroy array of msg/LidarState messages. -/** - * It calls - * unitree_go__msg__LidarState__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LidarState__Sequence__destroy(unitree_go__msg__LidarState__Sequence * array); - -/// Check for msg/LidarState message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LidarState__Sequence__are_equal(const unitree_go__msg__LidarState__Sequence * lhs, const unitree_go__msg__LidarState__Sequence * rhs); - -/// Copy an array of msg/LidarState messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LidarState__Sequence__copy( - const unitree_go__msg__LidarState__Sequence * input, - unitree_go__msg__LidarState__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 54e4d69..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__LidarState( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__LidarState( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, LidarState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 1ea1cc1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/lidar_state__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::LidarState & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::LidarState & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::LidarState & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_LidarState( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, LidarState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 322636c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, LidarState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 460abde..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, LidarState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.h deleted file mode 100644 index b7929f1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.h +++ /dev/null @@ -1,62 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'firmware_version' -// Member 'software_version' -// Member 'sdk_version' -#include "rosidl_runtime_c/string.h" - -// Struct defined in msg/LidarState in the package unitree_go. -typedef struct unitree_go__msg__LidarState -{ - double stamp; - rosidl_runtime_c__String firmware_version; - rosidl_runtime_c__String software_version; - rosidl_runtime_c__String sdk_version; - float sys_rotation_speed; - float com_rotation_speed; - uint8_t error_state; - float cloud_frequency; - float cloud_packet_loss_rate; - uint32_t cloud_size; - uint32_t cloud_scan_num; - float imu_frequency; - float imu_packet_loss_rate; - float imu_rpy[3]; - double serial_recv_stamp; - uint32_t serial_buffer_size; - uint32_t serial_buffer_read; -} unitree_go__msg__LidarState; - -// Struct for a sequence of unitree_go__msg__LidarState. -typedef struct unitree_go__msg__LidarState__Sequence -{ - unitree_go__msg__LidarState * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__LidarState__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.hpp deleted file mode 100644 index d2726c5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__struct.hpp +++ /dev/null @@ -1,357 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__LidarState __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__LidarState __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct LidarState_ -{ - using Type = LidarState_; - - explicit LidarState_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->stamp = 0.0; - this->firmware_version = ""; - this->software_version = ""; - this->sdk_version = ""; - this->sys_rotation_speed = 0.0f; - this->com_rotation_speed = 0.0f; - this->error_state = 0; - this->cloud_frequency = 0.0f; - this->cloud_packet_loss_rate = 0.0f; - this->cloud_size = 0ul; - this->cloud_scan_num = 0ul; - this->imu_frequency = 0.0f; - this->imu_packet_loss_rate = 0.0f; - std::fill::iterator, float>(this->imu_rpy.begin(), this->imu_rpy.end(), 0.0f); - this->serial_recv_stamp = 0.0; - this->serial_buffer_size = 0ul; - this->serial_buffer_read = 0ul; - } - } - - explicit LidarState_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : firmware_version(_alloc), - software_version(_alloc), - sdk_version(_alloc), - imu_rpy(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->stamp = 0.0; - this->firmware_version = ""; - this->software_version = ""; - this->sdk_version = ""; - this->sys_rotation_speed = 0.0f; - this->com_rotation_speed = 0.0f; - this->error_state = 0; - this->cloud_frequency = 0.0f; - this->cloud_packet_loss_rate = 0.0f; - this->cloud_size = 0ul; - this->cloud_scan_num = 0ul; - this->imu_frequency = 0.0f; - this->imu_packet_loss_rate = 0.0f; - std::fill::iterator, float>(this->imu_rpy.begin(), this->imu_rpy.end(), 0.0f); - this->serial_recv_stamp = 0.0; - this->serial_buffer_size = 0ul; - this->serial_buffer_read = 0ul; - } - } - - // field types and members - using _stamp_type = - double; - _stamp_type stamp; - using _firmware_version_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _firmware_version_type firmware_version; - using _software_version_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _software_version_type software_version; - using _sdk_version_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _sdk_version_type sdk_version; - using _sys_rotation_speed_type = - float; - _sys_rotation_speed_type sys_rotation_speed; - using _com_rotation_speed_type = - float; - _com_rotation_speed_type com_rotation_speed; - using _error_state_type = - uint8_t; - _error_state_type error_state; - using _cloud_frequency_type = - float; - _cloud_frequency_type cloud_frequency; - using _cloud_packet_loss_rate_type = - float; - _cloud_packet_loss_rate_type cloud_packet_loss_rate; - using _cloud_size_type = - uint32_t; - _cloud_size_type cloud_size; - using _cloud_scan_num_type = - uint32_t; - _cloud_scan_num_type cloud_scan_num; - using _imu_frequency_type = - float; - _imu_frequency_type imu_frequency; - using _imu_packet_loss_rate_type = - float; - _imu_packet_loss_rate_type imu_packet_loss_rate; - using _imu_rpy_type = - std::array; - _imu_rpy_type imu_rpy; - using _serial_recv_stamp_type = - double; - _serial_recv_stamp_type serial_recv_stamp; - using _serial_buffer_size_type = - uint32_t; - _serial_buffer_size_type serial_buffer_size; - using _serial_buffer_read_type = - uint32_t; - _serial_buffer_read_type serial_buffer_read; - - // setters for named parameter idiom - Type & set__stamp( - const double & _arg) - { - this->stamp = _arg; - return *this; - } - Type & set__firmware_version( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->firmware_version = _arg; - return *this; - } - Type & set__software_version( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->software_version = _arg; - return *this; - } - Type & set__sdk_version( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->sdk_version = _arg; - return *this; - } - Type & set__sys_rotation_speed( - const float & _arg) - { - this->sys_rotation_speed = _arg; - return *this; - } - Type & set__com_rotation_speed( - const float & _arg) - { - this->com_rotation_speed = _arg; - return *this; - } - Type & set__error_state( - const uint8_t & _arg) - { - this->error_state = _arg; - return *this; - } - Type & set__cloud_frequency( - const float & _arg) - { - this->cloud_frequency = _arg; - return *this; - } - Type & set__cloud_packet_loss_rate( - const float & _arg) - { - this->cloud_packet_loss_rate = _arg; - return *this; - } - Type & set__cloud_size( - const uint32_t & _arg) - { - this->cloud_size = _arg; - return *this; - } - Type & set__cloud_scan_num( - const uint32_t & _arg) - { - this->cloud_scan_num = _arg; - return *this; - } - Type & set__imu_frequency( - const float & _arg) - { - this->imu_frequency = _arg; - return *this; - } - Type & set__imu_packet_loss_rate( - const float & _arg) - { - this->imu_packet_loss_rate = _arg; - return *this; - } - Type & set__imu_rpy( - const std::array & _arg) - { - this->imu_rpy = _arg; - return *this; - } - Type & set__serial_recv_stamp( - const double & _arg) - { - this->serial_recv_stamp = _arg; - return *this; - } - Type & set__serial_buffer_size( - const uint32_t & _arg) - { - this->serial_buffer_size = _arg; - return *this; - } - Type & set__serial_buffer_read( - const uint32_t & _arg) - { - this->serial_buffer_read = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::LidarState_ *; - using ConstRawPtr = - const unitree_go::msg::LidarState_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__LidarState - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__LidarState - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const LidarState_ & other) const - { - if (this->stamp != other.stamp) { - return false; - } - if (this->firmware_version != other.firmware_version) { - return false; - } - if (this->software_version != other.software_version) { - return false; - } - if (this->sdk_version != other.sdk_version) { - return false; - } - if (this->sys_rotation_speed != other.sys_rotation_speed) { - return false; - } - if (this->com_rotation_speed != other.com_rotation_speed) { - return false; - } - if (this->error_state != other.error_state) { - return false; - } - if (this->cloud_frequency != other.cloud_frequency) { - return false; - } - if (this->cloud_packet_loss_rate != other.cloud_packet_loss_rate) { - return false; - } - if (this->cloud_size != other.cloud_size) { - return false; - } - if (this->cloud_scan_num != other.cloud_scan_num) { - return false; - } - if (this->imu_frequency != other.imu_frequency) { - return false; - } - if (this->imu_packet_loss_rate != other.imu_packet_loss_rate) { - return false; - } - if (this->imu_rpy != other.imu_rpy) { - return false; - } - if (this->serial_recv_stamp != other.serial_recv_stamp) { - return false; - } - if (this->serial_buffer_size != other.serial_buffer_size) { - return false; - } - if (this->serial_buffer_read != other.serial_buffer_read) { - return false; - } - return true; - } - bool operator!=(const LidarState_ & other) const - { - return !this->operator==(other); - } -}; // struct LidarState_ - -// alias to use template instance with default allocator -using LidarState = - unitree_go::msg::LidarState_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__traits.hpp deleted file mode 100644 index 038aac7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TRAITS_HPP_ - -#include "unitree_go/msg/detail/lidar_state__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::LidarState"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/LidarState"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.c deleted file mode 100644 index 455c5eb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.c +++ /dev/null @@ -1,327 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/lidar_state__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/lidar_state__functions.h" -#include "unitree_go/msg/detail/lidar_state__struct.h" - - -// Include directives for member types -// Member `firmware_version` -// Member `software_version` -// Member `sdk_version` -#include "rosidl_runtime_c/string_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void LidarState__rosidl_typesupport_introspection_c__LidarState_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__LidarState__init(message_memory); -} - -void LidarState__rosidl_typesupport_introspection_c__LidarState_fini_function(void * message_memory) -{ - unitree_go__msg__LidarState__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember LidarState__rosidl_typesupport_introspection_c__LidarState_message_member_array[17] = { - { - "stamp", // name - rosidl_typesupport_introspection_c__ROS_TYPE_DOUBLE, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, stamp), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "firmware_version", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, firmware_version), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "software_version", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, software_version), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "sdk_version", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, sdk_version), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "sys_rotation_speed", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, sys_rotation_speed), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "com_rotation_speed", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, com_rotation_speed), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "error_state", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, error_state), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "cloud_frequency", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, cloud_frequency), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "cloud_packet_loss_rate", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, cloud_packet_loss_rate), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "cloud_size", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, cloud_size), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "cloud_scan_num", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, cloud_scan_num), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "imu_frequency", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, imu_frequency), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "imu_packet_loss_rate", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, imu_packet_loss_rate), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "imu_rpy", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, imu_rpy), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "serial_recv_stamp", // name - rosidl_typesupport_introspection_c__ROS_TYPE_DOUBLE, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, serial_recv_stamp), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "serial_buffer_size", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, serial_buffer_size), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "serial_buffer_read", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LidarState, serial_buffer_read), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers LidarState__rosidl_typesupport_introspection_c__LidarState_message_members = { - "unitree_go__msg", // message namespace - "LidarState", // message name - 17, // number of fields - sizeof(unitree_go__msg__LidarState), - LidarState__rosidl_typesupport_introspection_c__LidarState_message_member_array, // message members - LidarState__rosidl_typesupport_introspection_c__LidarState_init_function, // function to initialize message memory (memory has to be allocated) - LidarState__rosidl_typesupport_introspection_c__LidarState_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t LidarState__rosidl_typesupport_introspection_c__LidarState_message_type_support_handle = { - 0, - &LidarState__rosidl_typesupport_introspection_c__LidarState_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, LidarState)() { - if (!LidarState__rosidl_typesupport_introspection_c__LidarState_message_type_support_handle.typesupport_identifier) { - LidarState__rosidl_typesupport_introspection_c__LidarState_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &LidarState__rosidl_typesupport_introspection_c__LidarState_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.cpp deleted file mode 100644 index 7678ec7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.cpp +++ /dev/null @@ -1,367 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/lidar_state__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void LidarState_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::LidarState(_init); -} - -void LidarState_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~LidarState(); -} - -size_t size_function__LidarState__imu_rpy(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__LidarState__imu_rpy(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LidarState__imu_rpy(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember LidarState_message_member_array[17] = { - { - "stamp", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_DOUBLE, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, stamp), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "firmware_version", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, firmware_version), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "software_version", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, software_version), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "sdk_version", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, sdk_version), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "sys_rotation_speed", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, sys_rotation_speed), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "com_rotation_speed", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, com_rotation_speed), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "error_state", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, error_state), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "cloud_frequency", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, cloud_frequency), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "cloud_packet_loss_rate", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, cloud_packet_loss_rate), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "cloud_size", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, cloud_size), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "cloud_scan_num", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, cloud_scan_num), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "imu_frequency", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, imu_frequency), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "imu_packet_loss_rate", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, imu_packet_loss_rate), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "imu_rpy", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, imu_rpy), // bytes offset in struct - nullptr, // default value - size_function__LidarState__imu_rpy, // size() function pointer - get_const_function__LidarState__imu_rpy, // get_const(index) function pointer - get_function__LidarState__imu_rpy, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "serial_recv_stamp", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_DOUBLE, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, serial_recv_stamp), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "serial_buffer_size", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, serial_buffer_size), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "serial_buffer_read", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LidarState, serial_buffer_read), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers LidarState_message_members = { - "unitree_go::msg", // message namespace - "LidarState", // message name - 17, // number of fields - sizeof(unitree_go::msg::LidarState), - LidarState_message_member_array, // message members - LidarState_init_function, // function to initialize message memory (memory has to be allocated) - LidarState_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t LidarState_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &LidarState_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::LidarState_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, LidarState)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::LidarState_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.h deleted file mode 100644 index 254eac6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - LidarState -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.hpp deleted file mode 100644 index 78f4939..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/lidar_state__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - LidarState -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LIDAR_STATE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__builder.hpp deleted file mode 100644 index 88c0f97..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__builder.hpp +++ /dev/null @@ -1,263 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__BUILDER_HPP_ - -#include "unitree_go/msg/detail/low_cmd__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_LowCmd_crc -{ -public: - explicit Init_LowCmd_crc(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - ::unitree_go::msg::LowCmd crc(::unitree_go::msg::LowCmd::_crc_type arg) - { - msg_.crc = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_reserve -{ -public: - explicit Init_LowCmd_reserve(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_crc reserve(::unitree_go::msg::LowCmd::_reserve_type arg) - { - msg_.reserve = std::move(arg); - return Init_LowCmd_crc(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_gpio -{ -public: - explicit Init_LowCmd_gpio(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_reserve gpio(::unitree_go::msg::LowCmd::_gpio_type arg) - { - msg_.gpio = std::move(arg); - return Init_LowCmd_reserve(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_fan -{ -public: - explicit Init_LowCmd_fan(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_gpio fan(::unitree_go::msg::LowCmd::_fan_type arg) - { - msg_.fan = std::move(arg); - return Init_LowCmd_gpio(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_led -{ -public: - explicit Init_LowCmd_led(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_fan led(::unitree_go::msg::LowCmd::_led_type arg) - { - msg_.led = std::move(arg); - return Init_LowCmd_fan(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_wireless_remote -{ -public: - explicit Init_LowCmd_wireless_remote(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_led wireless_remote(::unitree_go::msg::LowCmd::_wireless_remote_type arg) - { - msg_.wireless_remote = std::move(arg); - return Init_LowCmd_led(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_bms_cmd -{ -public: - explicit Init_LowCmd_bms_cmd(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_wireless_remote bms_cmd(::unitree_go::msg::LowCmd::_bms_cmd_type arg) - { - msg_.bms_cmd = std::move(arg); - return Init_LowCmd_wireless_remote(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_motor_cmd -{ -public: - explicit Init_LowCmd_motor_cmd(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_bms_cmd motor_cmd(::unitree_go::msg::LowCmd::_motor_cmd_type arg) - { - msg_.motor_cmd = std::move(arg); - return Init_LowCmd_bms_cmd(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_bandwidth -{ -public: - explicit Init_LowCmd_bandwidth(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_motor_cmd bandwidth(::unitree_go::msg::LowCmd::_bandwidth_type arg) - { - msg_.bandwidth = std::move(arg); - return Init_LowCmd_motor_cmd(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_version -{ -public: - explicit Init_LowCmd_version(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_bandwidth version(::unitree_go::msg::LowCmd::_version_type arg) - { - msg_.version = std::move(arg); - return Init_LowCmd_bandwidth(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_sn -{ -public: - explicit Init_LowCmd_sn(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_version sn(::unitree_go::msg::LowCmd::_sn_type arg) - { - msg_.sn = std::move(arg); - return Init_LowCmd_version(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_frame_reserve -{ -public: - explicit Init_LowCmd_frame_reserve(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_sn frame_reserve(::unitree_go::msg::LowCmd::_frame_reserve_type arg) - { - msg_.frame_reserve = std::move(arg); - return Init_LowCmd_sn(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_level_flag -{ -public: - explicit Init_LowCmd_level_flag(::unitree_go::msg::LowCmd & msg) - : msg_(msg) - {} - Init_LowCmd_frame_reserve level_flag(::unitree_go::msg::LowCmd::_level_flag_type arg) - { - msg_.level_flag = std::move(arg); - return Init_LowCmd_frame_reserve(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -class Init_LowCmd_head -{ -public: - Init_LowCmd_head() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_LowCmd_level_flag head(::unitree_go::msg::LowCmd::_head_type arg) - { - msg_.head = std::move(arg); - return Init_LowCmd_level_flag(msg_); - } - -private: - ::unitree_go::msg::LowCmd msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::LowCmd>() -{ - return unitree_go::msg::builder::Init_LowCmd_head(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.c deleted file mode 100644 index 75f379a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.c +++ /dev/null @@ -1,395 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/low_cmd__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `motor_cmd` -#include "unitree_go/msg/detail/motor_cmd__functions.h" -// Member `bms_cmd` -#include "unitree_go/msg/detail/bms_cmd__functions.h" - -bool -unitree_go__msg__LowCmd__init(unitree_go__msg__LowCmd * msg) -{ - if (!msg) { - return false; - } - // head - // level_flag - // frame_reserve - // sn - // version - // bandwidth - // motor_cmd - for (size_t i = 0; i < 20; ++i) { - if (!unitree_go__msg__MotorCmd__init(&msg->motor_cmd[i])) { - unitree_go__msg__LowCmd__fini(msg); - return false; - } - } - // bms_cmd - if (!unitree_go__msg__BmsCmd__init(&msg->bms_cmd)) { - unitree_go__msg__LowCmd__fini(msg); - return false; - } - // wireless_remote - // led - // fan - // gpio - // reserve - // crc - return true; -} - -void -unitree_go__msg__LowCmd__fini(unitree_go__msg__LowCmd * msg) -{ - if (!msg) { - return; - } - // head - // level_flag - // frame_reserve - // sn - // version - // bandwidth - // motor_cmd - for (size_t i = 0; i < 20; ++i) { - unitree_go__msg__MotorCmd__fini(&msg->motor_cmd[i]); - } - // bms_cmd - unitree_go__msg__BmsCmd__fini(&msg->bms_cmd); - // wireless_remote - // led - // fan - // gpio - // reserve - // crc -} - -bool -unitree_go__msg__LowCmd__are_equal(const unitree_go__msg__LowCmd * lhs, const unitree_go__msg__LowCmd * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // head - for (size_t i = 0; i < 2; ++i) { - if (lhs->head[i] != rhs->head[i]) { - return false; - } - } - // level_flag - if (lhs->level_flag != rhs->level_flag) { - return false; - } - // frame_reserve - if (lhs->frame_reserve != rhs->frame_reserve) { - return false; - } - // sn - for (size_t i = 0; i < 2; ++i) { - if (lhs->sn[i] != rhs->sn[i]) { - return false; - } - } - // version - for (size_t i = 0; i < 2; ++i) { - if (lhs->version[i] != rhs->version[i]) { - return false; - } - } - // bandwidth - if (lhs->bandwidth != rhs->bandwidth) { - return false; - } - // motor_cmd - for (size_t i = 0; i < 20; ++i) { - if (!unitree_go__msg__MotorCmd__are_equal( - &(lhs->motor_cmd[i]), &(rhs->motor_cmd[i]))) - { - return false; - } - } - // bms_cmd - if (!unitree_go__msg__BmsCmd__are_equal( - &(lhs->bms_cmd), &(rhs->bms_cmd))) - { - return false; - } - // wireless_remote - for (size_t i = 0; i < 40; ++i) { - if (lhs->wireless_remote[i] != rhs->wireless_remote[i]) { - return false; - } - } - // led - for (size_t i = 0; i < 12; ++i) { - if (lhs->led[i] != rhs->led[i]) { - return false; - } - } - // fan - for (size_t i = 0; i < 2; ++i) { - if (lhs->fan[i] != rhs->fan[i]) { - return false; - } - } - // gpio - if (lhs->gpio != rhs->gpio) { - return false; - } - // reserve - if (lhs->reserve != rhs->reserve) { - return false; - } - // crc - if (lhs->crc != rhs->crc) { - return false; - } - return true; -} - -bool -unitree_go__msg__LowCmd__copy( - const unitree_go__msg__LowCmd * input, - unitree_go__msg__LowCmd * output) -{ - if (!input || !output) { - return false; - } - // head - for (size_t i = 0; i < 2; ++i) { - output->head[i] = input->head[i]; - } - // level_flag - output->level_flag = input->level_flag; - // frame_reserve - output->frame_reserve = input->frame_reserve; - // sn - for (size_t i = 0; i < 2; ++i) { - output->sn[i] = input->sn[i]; - } - // version - for (size_t i = 0; i < 2; ++i) { - output->version[i] = input->version[i]; - } - // bandwidth - output->bandwidth = input->bandwidth; - // motor_cmd - for (size_t i = 0; i < 20; ++i) { - if (!unitree_go__msg__MotorCmd__copy( - &(input->motor_cmd[i]), &(output->motor_cmd[i]))) - { - return false; - } - } - // bms_cmd - if (!unitree_go__msg__BmsCmd__copy( - &(input->bms_cmd), &(output->bms_cmd))) - { - return false; - } - // wireless_remote - for (size_t i = 0; i < 40; ++i) { - output->wireless_remote[i] = input->wireless_remote[i]; - } - // led - for (size_t i = 0; i < 12; ++i) { - output->led[i] = input->led[i]; - } - // fan - for (size_t i = 0; i < 2; ++i) { - output->fan[i] = input->fan[i]; - } - // gpio - output->gpio = input->gpio; - // reserve - output->reserve = input->reserve; - // crc - output->crc = input->crc; - return true; -} - -unitree_go__msg__LowCmd * -unitree_go__msg__LowCmd__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LowCmd * msg = (unitree_go__msg__LowCmd *)allocator.allocate(sizeof(unitree_go__msg__LowCmd), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__LowCmd)); - bool success = unitree_go__msg__LowCmd__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__LowCmd__destroy(unitree_go__msg__LowCmd * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__LowCmd__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__LowCmd__Sequence__init(unitree_go__msg__LowCmd__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LowCmd * data = NULL; - - if (size) { - data = (unitree_go__msg__LowCmd *)allocator.zero_allocate(size, sizeof(unitree_go__msg__LowCmd), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__LowCmd__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__LowCmd__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__LowCmd__Sequence__fini(unitree_go__msg__LowCmd__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__LowCmd__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__LowCmd__Sequence * -unitree_go__msg__LowCmd__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LowCmd__Sequence * array = (unitree_go__msg__LowCmd__Sequence *)allocator.allocate(sizeof(unitree_go__msg__LowCmd__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__LowCmd__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__LowCmd__Sequence__destroy(unitree_go__msg__LowCmd__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__LowCmd__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__LowCmd__Sequence__are_equal(const unitree_go__msg__LowCmd__Sequence * lhs, const unitree_go__msg__LowCmd__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__LowCmd__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__LowCmd__Sequence__copy( - const unitree_go__msg__LowCmd__Sequence * input, - unitree_go__msg__LowCmd__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__LowCmd); - unitree_go__msg__LowCmd * data = - (unitree_go__msg__LowCmd *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__LowCmd__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__LowCmd__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__LowCmd__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.h deleted file mode 100644 index 1c5b4fb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/low_cmd__struct.h" - -/// Initialize msg/LowCmd message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__LowCmd - * )) before or use - * unitree_go__msg__LowCmd__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowCmd__init(unitree_go__msg__LowCmd * msg); - -/// Finalize msg/LowCmd message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowCmd__fini(unitree_go__msg__LowCmd * msg); - -/// Create msg/LowCmd message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__LowCmd__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__LowCmd * -unitree_go__msg__LowCmd__create(); - -/// Destroy msg/LowCmd message. -/** - * It calls - * unitree_go__msg__LowCmd__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowCmd__destroy(unitree_go__msg__LowCmd * msg); - -/// Check for msg/LowCmd message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowCmd__are_equal(const unitree_go__msg__LowCmd * lhs, const unitree_go__msg__LowCmd * rhs); - -/// Copy a msg/LowCmd message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowCmd__copy( - const unitree_go__msg__LowCmd * input, - unitree_go__msg__LowCmd * output); - -/// Initialize array of msg/LowCmd messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__LowCmd__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowCmd__Sequence__init(unitree_go__msg__LowCmd__Sequence * array, size_t size); - -/// Finalize array of msg/LowCmd messages. -/** - * It calls - * unitree_go__msg__LowCmd__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowCmd__Sequence__fini(unitree_go__msg__LowCmd__Sequence * array); - -/// Create array of msg/LowCmd messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__LowCmd__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__LowCmd__Sequence * -unitree_go__msg__LowCmd__Sequence__create(size_t size); - -/// Destroy array of msg/LowCmd messages. -/** - * It calls - * unitree_go__msg__LowCmd__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowCmd__Sequence__destroy(unitree_go__msg__LowCmd__Sequence * array); - -/// Check for msg/LowCmd message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowCmd__Sequence__are_equal(const unitree_go__msg__LowCmd__Sequence * lhs, const unitree_go__msg__LowCmd__Sequence * rhs); - -/// Copy an array of msg/LowCmd messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowCmd__Sequence__copy( - const unitree_go__msg__LowCmd__Sequence * input, - unitree_go__msg__LowCmd__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index f505dd9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__LowCmd( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__LowCmd( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, LowCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 1137270..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/low_cmd__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::LowCmd & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::LowCmd & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::LowCmd & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_LowCmd( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, LowCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_c.h deleted file mode 100644 index b254918..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, LowCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index aecc3bf..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, LowCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.h deleted file mode 100644 index c170ea8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.h +++ /dev/null @@ -1,59 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'motor_cmd' -#include "unitree_go/msg/detail/motor_cmd__struct.h" -// Member 'bms_cmd' -#include "unitree_go/msg/detail/bms_cmd__struct.h" - -// Struct defined in msg/LowCmd in the package unitree_go. -typedef struct unitree_go__msg__LowCmd -{ - uint8_t head[2]; - uint8_t level_flag; - uint8_t frame_reserve; - uint32_t sn[2]; - uint32_t version[2]; - uint16_t bandwidth; - unitree_go__msg__MotorCmd motor_cmd[20]; - unitree_go__msg__BmsCmd bms_cmd; - uint8_t wireless_remote[40]; - uint8_t led[12]; - uint8_t fan[2]; - uint8_t gpio; - uint32_t reserve; - uint32_t crc; -} unitree_go__msg__LowCmd; - -// Struct for a sequence of unitree_go__msg__LowCmd. -typedef struct unitree_go__msg__LowCmd__Sequence -{ - unitree_go__msg__LowCmd * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__LowCmd__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.hpp deleted file mode 100644 index 26681c5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__struct.hpp +++ /dev/null @@ -1,324 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'motor_cmd' -#include "unitree_go/msg/detail/motor_cmd__struct.hpp" -// Member 'bms_cmd' -#include "unitree_go/msg/detail/bms_cmd__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__LowCmd __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__LowCmd __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct LowCmd_ -{ - using Type = LowCmd_; - - explicit LowCmd_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : bms_cmd(_init) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, uint8_t>(this->head.begin(), this->head.end(), 0); - this->level_flag = 0; - this->frame_reserve = 0; - std::fill::iterator, uint32_t>(this->sn.begin(), this->sn.end(), 0ul); - std::fill::iterator, uint32_t>(this->version.begin(), this->version.end(), 0ul); - this->bandwidth = 0; - this->motor_cmd.fill(unitree_go::msg::MotorCmd_{_init}); - std::fill::iterator, uint8_t>(this->wireless_remote.begin(), this->wireless_remote.end(), 0); - std::fill::iterator, uint8_t>(this->led.begin(), this->led.end(), 0); - std::fill::iterator, uint8_t>(this->fan.begin(), this->fan.end(), 0); - this->gpio = 0; - this->reserve = 0ul; - this->crc = 0ul; - } - } - - explicit LowCmd_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : head(_alloc), - sn(_alloc), - version(_alloc), - motor_cmd(_alloc), - bms_cmd(_alloc, _init), - wireless_remote(_alloc), - led(_alloc), - fan(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, uint8_t>(this->head.begin(), this->head.end(), 0); - this->level_flag = 0; - this->frame_reserve = 0; - std::fill::iterator, uint32_t>(this->sn.begin(), this->sn.end(), 0ul); - std::fill::iterator, uint32_t>(this->version.begin(), this->version.end(), 0ul); - this->bandwidth = 0; - this->motor_cmd.fill(unitree_go::msg::MotorCmd_{_alloc, _init}); - std::fill::iterator, uint8_t>(this->wireless_remote.begin(), this->wireless_remote.end(), 0); - std::fill::iterator, uint8_t>(this->led.begin(), this->led.end(), 0); - std::fill::iterator, uint8_t>(this->fan.begin(), this->fan.end(), 0); - this->gpio = 0; - this->reserve = 0ul; - this->crc = 0ul; - } - } - - // field types and members - using _head_type = - std::array; - _head_type head; - using _level_flag_type = - uint8_t; - _level_flag_type level_flag; - using _frame_reserve_type = - uint8_t; - _frame_reserve_type frame_reserve; - using _sn_type = - std::array; - _sn_type sn; - using _version_type = - std::array; - _version_type version; - using _bandwidth_type = - uint16_t; - _bandwidth_type bandwidth; - using _motor_cmd_type = - std::array, 20>; - _motor_cmd_type motor_cmd; - using _bms_cmd_type = - unitree_go::msg::BmsCmd_; - _bms_cmd_type bms_cmd; - using _wireless_remote_type = - std::array; - _wireless_remote_type wireless_remote; - using _led_type = - std::array; - _led_type led; - using _fan_type = - std::array; - _fan_type fan; - using _gpio_type = - uint8_t; - _gpio_type gpio; - using _reserve_type = - uint32_t; - _reserve_type reserve; - using _crc_type = - uint32_t; - _crc_type crc; - - // setters for named parameter idiom - Type & set__head( - const std::array & _arg) - { - this->head = _arg; - return *this; - } - Type & set__level_flag( - const uint8_t & _arg) - { - this->level_flag = _arg; - return *this; - } - Type & set__frame_reserve( - const uint8_t & _arg) - { - this->frame_reserve = _arg; - return *this; - } - Type & set__sn( - const std::array & _arg) - { - this->sn = _arg; - return *this; - } - Type & set__version( - const std::array & _arg) - { - this->version = _arg; - return *this; - } - Type & set__bandwidth( - const uint16_t & _arg) - { - this->bandwidth = _arg; - return *this; - } - Type & set__motor_cmd( - const std::array, 20> & _arg) - { - this->motor_cmd = _arg; - return *this; - } - Type & set__bms_cmd( - const unitree_go::msg::BmsCmd_ & _arg) - { - this->bms_cmd = _arg; - return *this; - } - Type & set__wireless_remote( - const std::array & _arg) - { - this->wireless_remote = _arg; - return *this; - } - Type & set__led( - const std::array & _arg) - { - this->led = _arg; - return *this; - } - Type & set__fan( - const std::array & _arg) - { - this->fan = _arg; - return *this; - } - Type & set__gpio( - const uint8_t & _arg) - { - this->gpio = _arg; - return *this; - } - Type & set__reserve( - const uint32_t & _arg) - { - this->reserve = _arg; - return *this; - } - Type & set__crc( - const uint32_t & _arg) - { - this->crc = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::LowCmd_ *; - using ConstRawPtr = - const unitree_go::msg::LowCmd_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__LowCmd - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__LowCmd - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const LowCmd_ & other) const - { - if (this->head != other.head) { - return false; - } - if (this->level_flag != other.level_flag) { - return false; - } - if (this->frame_reserve != other.frame_reserve) { - return false; - } - if (this->sn != other.sn) { - return false; - } - if (this->version != other.version) { - return false; - } - if (this->bandwidth != other.bandwidth) { - return false; - } - if (this->motor_cmd != other.motor_cmd) { - return false; - } - if (this->bms_cmd != other.bms_cmd) { - return false; - } - if (this->wireless_remote != other.wireless_remote) { - return false; - } - if (this->led != other.led) { - return false; - } - if (this->fan != other.fan) { - return false; - } - if (this->gpio != other.gpio) { - return false; - } - if (this->reserve != other.reserve) { - return false; - } - if (this->crc != other.crc) { - return false; - } - return true; - } - bool operator!=(const LowCmd_ & other) const - { - return !this->operator==(other); - } -}; // struct LowCmd_ - -// alias to use template instance with default allocator -using LowCmd = - unitree_go::msg::LowCmd_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__traits.hpp deleted file mode 100644 index cc104c8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__traits.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__TRAITS_HPP_ - -#include "unitree_go/msg/detail/low_cmd__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'motor_cmd' -#include "unitree_go/msg/detail/motor_cmd__traits.hpp" -// Member 'bms_cmd' -#include "unitree_go/msg/detail/bms_cmd__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::LowCmd"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/LowCmd"; -} - -template<> -struct has_fixed_size - : std::integral_constant::value && has_fixed_size::value> {}; - -template<> -struct has_bounded_size - : std::integral_constant::value && has_bounded_size::value> {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.c deleted file mode 100644 index d515586..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.c +++ /dev/null @@ -1,313 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/low_cmd__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/low_cmd__functions.h" -#include "unitree_go/msg/detail/low_cmd__struct.h" - - -// Include directives for member types -// Member `motor_cmd` -#include "unitree_go/msg/motor_cmd.h" -// Member `motor_cmd` -#include "unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_c.h" -// Member `bms_cmd` -#include "unitree_go/msg/bms_cmd.h" -// Member `bms_cmd` -#include "unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_c.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void LowCmd__rosidl_typesupport_introspection_c__LowCmd_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__LowCmd__init(message_memory); -} - -void LowCmd__rosidl_typesupport_introspection_c__LowCmd_fini_function(void * message_memory) -{ - unitree_go__msg__LowCmd__fini(message_memory); -} - -size_t LowCmd__rosidl_typesupport_introspection_c__size_function__MotorCmd__motor_cmd( - const void * untyped_member) -{ - (void)untyped_member; - return 20; -} - -const void * LowCmd__rosidl_typesupport_introspection_c__get_const_function__MotorCmd__motor_cmd( - const void * untyped_member, size_t index) -{ - const unitree_go__msg__MotorCmd ** member = - (const unitree_go__msg__MotorCmd **)(untyped_member); - return &(*member)[index]; -} - -void * LowCmd__rosidl_typesupport_introspection_c__get_function__MotorCmd__motor_cmd( - void * untyped_member, size_t index) -{ - unitree_go__msg__MotorCmd ** member = - (unitree_go__msg__MotorCmd **)(untyped_member); - return &(*member)[index]; -} - -static rosidl_typesupport_introspection_c__MessageMember LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_member_array[14] = { - { - "head", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, head), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "level_flag", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, level_flag), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "frame_reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, frame_reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "sn", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, sn), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "version", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, version), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "bandwidth", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT16, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, bandwidth), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "motor_cmd", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - true, // is array - 20, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, motor_cmd), // bytes offset in struct - NULL, // default value - LowCmd__rosidl_typesupport_introspection_c__size_function__MotorCmd__motor_cmd, // size() function pointer - LowCmd__rosidl_typesupport_introspection_c__get_const_function__MotorCmd__motor_cmd, // get_const(index) function pointer - LowCmd__rosidl_typesupport_introspection_c__get_function__MotorCmd__motor_cmd, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "bms_cmd", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, bms_cmd), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "wireless_remote", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 40, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, wireless_remote), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "led", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 12, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, led), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "fan", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, fan), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "gpio", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, gpio), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "crc", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowCmd, crc), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_members = { - "unitree_go__msg", // message namespace - "LowCmd", // message name - 14, // number of fields - sizeof(unitree_go__msg__LowCmd), - LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_member_array, // message members - LowCmd__rosidl_typesupport_introspection_c__LowCmd_init_function, // function to initialize message memory (memory has to be allocated) - LowCmd__rosidl_typesupport_introspection_c__LowCmd_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_type_support_handle = { - 0, - &LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, LowCmd)() { - LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_member_array[6].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, MotorCmd)(); - LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_member_array[7].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, BmsCmd)(); - if (!LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_type_support_handle.typesupport_identifier) { - LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &LowCmd__rosidl_typesupport_introspection_c__LowCmd_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.cpp deleted file mode 100644 index 5ecc5d0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.cpp +++ /dev/null @@ -1,442 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/low_cmd__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void LowCmd_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::LowCmd(_init); -} - -void LowCmd_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~LowCmd(); -} - -size_t size_function__LowCmd__head(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__LowCmd__head(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowCmd__head(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowCmd__sn(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__LowCmd__sn(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowCmd__sn(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowCmd__version(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__LowCmd__version(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowCmd__version(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowCmd__motor_cmd(const void * untyped_member) -{ - (void)untyped_member; - return 20; -} - -const void * get_const_function__LowCmd__motor_cmd(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowCmd__motor_cmd(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowCmd__wireless_remote(const void * untyped_member) -{ - (void)untyped_member; - return 40; -} - -const void * get_const_function__LowCmd__wireless_remote(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowCmd__wireless_remote(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowCmd__led(const void * untyped_member) -{ - (void)untyped_member; - return 12; -} - -const void * get_const_function__LowCmd__led(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowCmd__led(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowCmd__fan(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__LowCmd__fan(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowCmd__fan(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember LowCmd_message_member_array[14] = { - { - "head", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, head), // bytes offset in struct - nullptr, // default value - size_function__LowCmd__head, // size() function pointer - get_const_function__LowCmd__head, // get_const(index) function pointer - get_function__LowCmd__head, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "level_flag", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, level_flag), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "frame_reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, frame_reserve), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "sn", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, sn), // bytes offset in struct - nullptr, // default value - size_function__LowCmd__sn, // size() function pointer - get_const_function__LowCmd__sn, // get_const(index) function pointer - get_function__LowCmd__sn, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "version", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, version), // bytes offset in struct - nullptr, // default value - size_function__LowCmd__version, // size() function pointer - get_const_function__LowCmd__version, // get_const(index) function pointer - get_function__LowCmd__version, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "bandwidth", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT16, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, bandwidth), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "motor_cmd", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - true, // is array - 20, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, motor_cmd), // bytes offset in struct - nullptr, // default value - size_function__LowCmd__motor_cmd, // size() function pointer - get_const_function__LowCmd__motor_cmd, // get_const(index) function pointer - get_function__LowCmd__motor_cmd, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "bms_cmd", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, bms_cmd), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "wireless_remote", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 40, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, wireless_remote), // bytes offset in struct - nullptr, // default value - size_function__LowCmd__wireless_remote, // size() function pointer - get_const_function__LowCmd__wireless_remote, // get_const(index) function pointer - get_function__LowCmd__wireless_remote, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "led", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 12, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, led), // bytes offset in struct - nullptr, // default value - size_function__LowCmd__led, // size() function pointer - get_const_function__LowCmd__led, // get_const(index) function pointer - get_function__LowCmd__led, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "fan", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, fan), // bytes offset in struct - nullptr, // default value - size_function__LowCmd__fan, // size() function pointer - get_const_function__LowCmd__fan, // get_const(index) function pointer - get_function__LowCmd__fan, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "gpio", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, gpio), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, reserve), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "crc", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowCmd, crc), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers LowCmd_message_members = { - "unitree_go::msg", // message namespace - "LowCmd", // message name - 14, // number of fields - sizeof(unitree_go::msg::LowCmd), - LowCmd_message_member_array, // message members - LowCmd_init_function, // function to initialize message memory (memory has to be allocated) - LowCmd_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t LowCmd_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &LowCmd_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::LowCmd_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, LowCmd)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::LowCmd_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.h deleted file mode 100644 index 6575c55..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - LowCmd -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.hpp deleted file mode 100644 index 1b3a9bd..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_cmd__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_CMD__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_CMD__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - LowCmd -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_CMD__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__builder.hpp deleted file mode 100644 index 9b82bde..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__builder.hpp +++ /dev/null @@ -1,391 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__BUILDER_HPP_ - -#include "unitree_go/msg/detail/low_state__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_LowState_crc -{ -public: - explicit Init_LowState_crc(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - ::unitree_go::msg::LowState crc(::unitree_go::msg::LowState::_crc_type arg) - { - msg_.crc = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_reserve -{ -public: - explicit Init_LowState_reserve(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_crc reserve(::unitree_go::msg::LowState::_reserve_type arg) - { - msg_.reserve = std::move(arg); - return Init_LowState_crc(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_fan_frequency -{ -public: - explicit Init_LowState_fan_frequency(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_reserve fan_frequency(::unitree_go::msg::LowState::_fan_frequency_type arg) - { - msg_.fan_frequency = std::move(arg); - return Init_LowState_reserve(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_power_a -{ -public: - explicit Init_LowState_power_a(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_fan_frequency power_a(::unitree_go::msg::LowState::_power_a_type arg) - { - msg_.power_a = std::move(arg); - return Init_LowState_fan_frequency(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_power_v -{ -public: - explicit Init_LowState_power_v(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_power_a power_v(::unitree_go::msg::LowState::_power_v_type arg) - { - msg_.power_v = std::move(arg); - return Init_LowState_power_a(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_temperature_ntc2 -{ -public: - explicit Init_LowState_temperature_ntc2(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_power_v temperature_ntc2(::unitree_go::msg::LowState::_temperature_ntc2_type arg) - { - msg_.temperature_ntc2 = std::move(arg); - return Init_LowState_power_v(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_temperature_ntc1 -{ -public: - explicit Init_LowState_temperature_ntc1(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_temperature_ntc2 temperature_ntc1(::unitree_go::msg::LowState::_temperature_ntc1_type arg) - { - msg_.temperature_ntc1 = std::move(arg); - return Init_LowState_temperature_ntc2(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_adc_reel -{ -public: - explicit Init_LowState_adc_reel(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_temperature_ntc1 adc_reel(::unitree_go::msg::LowState::_adc_reel_type arg) - { - msg_.adc_reel = std::move(arg); - return Init_LowState_temperature_ntc1(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_bit_flag -{ -public: - explicit Init_LowState_bit_flag(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_adc_reel bit_flag(::unitree_go::msg::LowState::_bit_flag_type arg) - { - msg_.bit_flag = std::move(arg); - return Init_LowState_adc_reel(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_wireless_remote -{ -public: - explicit Init_LowState_wireless_remote(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_bit_flag wireless_remote(::unitree_go::msg::LowState::_wireless_remote_type arg) - { - msg_.wireless_remote = std::move(arg); - return Init_LowState_bit_flag(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_tick -{ -public: - explicit Init_LowState_tick(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_wireless_remote tick(::unitree_go::msg::LowState::_tick_type arg) - { - msg_.tick = std::move(arg); - return Init_LowState_wireless_remote(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_foot_force_est -{ -public: - explicit Init_LowState_foot_force_est(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_tick foot_force_est(::unitree_go::msg::LowState::_foot_force_est_type arg) - { - msg_.foot_force_est = std::move(arg); - return Init_LowState_tick(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_foot_force -{ -public: - explicit Init_LowState_foot_force(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_foot_force_est foot_force(::unitree_go::msg::LowState::_foot_force_type arg) - { - msg_.foot_force = std::move(arg); - return Init_LowState_foot_force_est(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_bms_state -{ -public: - explicit Init_LowState_bms_state(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_foot_force bms_state(::unitree_go::msg::LowState::_bms_state_type arg) - { - msg_.bms_state = std::move(arg); - return Init_LowState_foot_force(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_motor_state -{ -public: - explicit Init_LowState_motor_state(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_bms_state motor_state(::unitree_go::msg::LowState::_motor_state_type arg) - { - msg_.motor_state = std::move(arg); - return Init_LowState_bms_state(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_imu_state -{ -public: - explicit Init_LowState_imu_state(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_motor_state imu_state(::unitree_go::msg::LowState::_imu_state_type arg) - { - msg_.imu_state = std::move(arg); - return Init_LowState_motor_state(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_bandwidth -{ -public: - explicit Init_LowState_bandwidth(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_imu_state bandwidth(::unitree_go::msg::LowState::_bandwidth_type arg) - { - msg_.bandwidth = std::move(arg); - return Init_LowState_imu_state(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_version -{ -public: - explicit Init_LowState_version(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_bandwidth version(::unitree_go::msg::LowState::_version_type arg) - { - msg_.version = std::move(arg); - return Init_LowState_bandwidth(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_sn -{ -public: - explicit Init_LowState_sn(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_version sn(::unitree_go::msg::LowState::_sn_type arg) - { - msg_.sn = std::move(arg); - return Init_LowState_version(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_frame_reserve -{ -public: - explicit Init_LowState_frame_reserve(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_sn frame_reserve(::unitree_go::msg::LowState::_frame_reserve_type arg) - { - msg_.frame_reserve = std::move(arg); - return Init_LowState_sn(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_level_flag -{ -public: - explicit Init_LowState_level_flag(::unitree_go::msg::LowState & msg) - : msg_(msg) - {} - Init_LowState_frame_reserve level_flag(::unitree_go::msg::LowState::_level_flag_type arg) - { - msg_.level_flag = std::move(arg); - return Init_LowState_frame_reserve(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -class Init_LowState_head -{ -public: - Init_LowState_head() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_LowState_level_flag head(::unitree_go::msg::LowState::_head_type arg) - { - msg_.head = std::move(arg); - return Init_LowState_level_flag(msg_); - } - -private: - ::unitree_go::msg::LowState msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::LowState>() -{ - return unitree_go::msg::builder::Init_LowState_head(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.c deleted file mode 100644 index 2a1acd1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.c +++ /dev/null @@ -1,476 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/low_state__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `imu_state` -#include "unitree_go/msg/detail/imu_state__functions.h" -// Member `motor_state` -#include "unitree_go/msg/detail/motor_state__functions.h" -// Member `bms_state` -#include "unitree_go/msg/detail/bms_state__functions.h" - -bool -unitree_go__msg__LowState__init(unitree_go__msg__LowState * msg) -{ - if (!msg) { - return false; - } - // head - // level_flag - // frame_reserve - // sn - // version - // bandwidth - // imu_state - if (!unitree_go__msg__IMUState__init(&msg->imu_state)) { - unitree_go__msg__LowState__fini(msg); - return false; - } - // motor_state - for (size_t i = 0; i < 20; ++i) { - if (!unitree_go__msg__MotorState__init(&msg->motor_state[i])) { - unitree_go__msg__LowState__fini(msg); - return false; - } - } - // bms_state - if (!unitree_go__msg__BmsState__init(&msg->bms_state)) { - unitree_go__msg__LowState__fini(msg); - return false; - } - // foot_force - // foot_force_est - // tick - // wireless_remote - // bit_flag - // adc_reel - // temperature_ntc1 - // temperature_ntc2 - // power_v - // power_a - // fan_frequency - // reserve - // crc - return true; -} - -void -unitree_go__msg__LowState__fini(unitree_go__msg__LowState * msg) -{ - if (!msg) { - return; - } - // head - // level_flag - // frame_reserve - // sn - // version - // bandwidth - // imu_state - unitree_go__msg__IMUState__fini(&msg->imu_state); - // motor_state - for (size_t i = 0; i < 20; ++i) { - unitree_go__msg__MotorState__fini(&msg->motor_state[i]); - } - // bms_state - unitree_go__msg__BmsState__fini(&msg->bms_state); - // foot_force - // foot_force_est - // tick - // wireless_remote - // bit_flag - // adc_reel - // temperature_ntc1 - // temperature_ntc2 - // power_v - // power_a - // fan_frequency - // reserve - // crc -} - -bool -unitree_go__msg__LowState__are_equal(const unitree_go__msg__LowState * lhs, const unitree_go__msg__LowState * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // head - for (size_t i = 0; i < 2; ++i) { - if (lhs->head[i] != rhs->head[i]) { - return false; - } - } - // level_flag - if (lhs->level_flag != rhs->level_flag) { - return false; - } - // frame_reserve - if (lhs->frame_reserve != rhs->frame_reserve) { - return false; - } - // sn - for (size_t i = 0; i < 2; ++i) { - if (lhs->sn[i] != rhs->sn[i]) { - return false; - } - } - // version - for (size_t i = 0; i < 2; ++i) { - if (lhs->version[i] != rhs->version[i]) { - return false; - } - } - // bandwidth - if (lhs->bandwidth != rhs->bandwidth) { - return false; - } - // imu_state - if (!unitree_go__msg__IMUState__are_equal( - &(lhs->imu_state), &(rhs->imu_state))) - { - return false; - } - // motor_state - for (size_t i = 0; i < 20; ++i) { - if (!unitree_go__msg__MotorState__are_equal( - &(lhs->motor_state[i]), &(rhs->motor_state[i]))) - { - return false; - } - } - // bms_state - if (!unitree_go__msg__BmsState__are_equal( - &(lhs->bms_state), &(rhs->bms_state))) - { - return false; - } - // foot_force - for (size_t i = 0; i < 4; ++i) { - if (lhs->foot_force[i] != rhs->foot_force[i]) { - return false; - } - } - // foot_force_est - for (size_t i = 0; i < 4; ++i) { - if (lhs->foot_force_est[i] != rhs->foot_force_est[i]) { - return false; - } - } - // tick - if (lhs->tick != rhs->tick) { - return false; - } - // wireless_remote - for (size_t i = 0; i < 40; ++i) { - if (lhs->wireless_remote[i] != rhs->wireless_remote[i]) { - return false; - } - } - // bit_flag - if (lhs->bit_flag != rhs->bit_flag) { - return false; - } - // adc_reel - if (lhs->adc_reel != rhs->adc_reel) { - return false; - } - // temperature_ntc1 - if (lhs->temperature_ntc1 != rhs->temperature_ntc1) { - return false; - } - // temperature_ntc2 - if (lhs->temperature_ntc2 != rhs->temperature_ntc2) { - return false; - } - // power_v - if (lhs->power_v != rhs->power_v) { - return false; - } - // power_a - if (lhs->power_a != rhs->power_a) { - return false; - } - // fan_frequency - for (size_t i = 0; i < 4; ++i) { - if (lhs->fan_frequency[i] != rhs->fan_frequency[i]) { - return false; - } - } - // reserve - if (lhs->reserve != rhs->reserve) { - return false; - } - // crc - if (lhs->crc != rhs->crc) { - return false; - } - return true; -} - -bool -unitree_go__msg__LowState__copy( - const unitree_go__msg__LowState * input, - unitree_go__msg__LowState * output) -{ - if (!input || !output) { - return false; - } - // head - for (size_t i = 0; i < 2; ++i) { - output->head[i] = input->head[i]; - } - // level_flag - output->level_flag = input->level_flag; - // frame_reserve - output->frame_reserve = input->frame_reserve; - // sn - for (size_t i = 0; i < 2; ++i) { - output->sn[i] = input->sn[i]; - } - // version - for (size_t i = 0; i < 2; ++i) { - output->version[i] = input->version[i]; - } - // bandwidth - output->bandwidth = input->bandwidth; - // imu_state - if (!unitree_go__msg__IMUState__copy( - &(input->imu_state), &(output->imu_state))) - { - return false; - } - // motor_state - for (size_t i = 0; i < 20; ++i) { - if (!unitree_go__msg__MotorState__copy( - &(input->motor_state[i]), &(output->motor_state[i]))) - { - return false; - } - } - // bms_state - if (!unitree_go__msg__BmsState__copy( - &(input->bms_state), &(output->bms_state))) - { - return false; - } - // foot_force - for (size_t i = 0; i < 4; ++i) { - output->foot_force[i] = input->foot_force[i]; - } - // foot_force_est - for (size_t i = 0; i < 4; ++i) { - output->foot_force_est[i] = input->foot_force_est[i]; - } - // tick - output->tick = input->tick; - // wireless_remote - for (size_t i = 0; i < 40; ++i) { - output->wireless_remote[i] = input->wireless_remote[i]; - } - // bit_flag - output->bit_flag = input->bit_flag; - // adc_reel - output->adc_reel = input->adc_reel; - // temperature_ntc1 - output->temperature_ntc1 = input->temperature_ntc1; - // temperature_ntc2 - output->temperature_ntc2 = input->temperature_ntc2; - // power_v - output->power_v = input->power_v; - // power_a - output->power_a = input->power_a; - // fan_frequency - for (size_t i = 0; i < 4; ++i) { - output->fan_frequency[i] = input->fan_frequency[i]; - } - // reserve - output->reserve = input->reserve; - // crc - output->crc = input->crc; - return true; -} - -unitree_go__msg__LowState * -unitree_go__msg__LowState__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LowState * msg = (unitree_go__msg__LowState *)allocator.allocate(sizeof(unitree_go__msg__LowState), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__LowState)); - bool success = unitree_go__msg__LowState__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__LowState__destroy(unitree_go__msg__LowState * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__LowState__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__LowState__Sequence__init(unitree_go__msg__LowState__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LowState * data = NULL; - - if (size) { - data = (unitree_go__msg__LowState *)allocator.zero_allocate(size, sizeof(unitree_go__msg__LowState), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__LowState__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__LowState__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__LowState__Sequence__fini(unitree_go__msg__LowState__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__LowState__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__LowState__Sequence * -unitree_go__msg__LowState__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__LowState__Sequence * array = (unitree_go__msg__LowState__Sequence *)allocator.allocate(sizeof(unitree_go__msg__LowState__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__LowState__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__LowState__Sequence__destroy(unitree_go__msg__LowState__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__LowState__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__LowState__Sequence__are_equal(const unitree_go__msg__LowState__Sequence * lhs, const unitree_go__msg__LowState__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__LowState__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__LowState__Sequence__copy( - const unitree_go__msg__LowState__Sequence * input, - unitree_go__msg__LowState__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__LowState); - unitree_go__msg__LowState * data = - (unitree_go__msg__LowState *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__LowState__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__LowState__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__LowState__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.h deleted file mode 100644 index 8f73c27..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/low_state__struct.h" - -/// Initialize msg/LowState message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__LowState - * )) before or use - * unitree_go__msg__LowState__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowState__init(unitree_go__msg__LowState * msg); - -/// Finalize msg/LowState message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowState__fini(unitree_go__msg__LowState * msg); - -/// Create msg/LowState message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__LowState__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__LowState * -unitree_go__msg__LowState__create(); - -/// Destroy msg/LowState message. -/** - * It calls - * unitree_go__msg__LowState__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowState__destroy(unitree_go__msg__LowState * msg); - -/// Check for msg/LowState message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowState__are_equal(const unitree_go__msg__LowState * lhs, const unitree_go__msg__LowState * rhs); - -/// Copy a msg/LowState message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowState__copy( - const unitree_go__msg__LowState * input, - unitree_go__msg__LowState * output); - -/// Initialize array of msg/LowState messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__LowState__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowState__Sequence__init(unitree_go__msg__LowState__Sequence * array, size_t size); - -/// Finalize array of msg/LowState messages. -/** - * It calls - * unitree_go__msg__LowState__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowState__Sequence__fini(unitree_go__msg__LowState__Sequence * array); - -/// Create array of msg/LowState messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__LowState__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__LowState__Sequence * -unitree_go__msg__LowState__Sequence__create(size_t size); - -/// Destroy array of msg/LowState messages. -/** - * It calls - * unitree_go__msg__LowState__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__LowState__Sequence__destroy(unitree_go__msg__LowState__Sequence * array); - -/// Check for msg/LowState message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowState__Sequence__are_equal(const unitree_go__msg__LowState__Sequence * lhs, const unitree_go__msg__LowState__Sequence * rhs); - -/// Copy an array of msg/LowState messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__LowState__Sequence__copy( - const unitree_go__msg__LowState__Sequence * input, - unitree_go__msg__LowState__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index c6e07b6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__LowState( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__LowState( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, LowState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 311b055..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/low_state__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::LowState & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::LowState & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::LowState & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_LowState( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, LowState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 9aeb2d0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, LowState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index c6c5d40..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, LowState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.h deleted file mode 100644 index 4300ff0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.h +++ /dev/null @@ -1,69 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'imu_state' -#include "unitree_go/msg/detail/imu_state__struct.h" -// Member 'motor_state' -#include "unitree_go/msg/detail/motor_state__struct.h" -// Member 'bms_state' -#include "unitree_go/msg/detail/bms_state__struct.h" - -// Struct defined in msg/LowState in the package unitree_go. -typedef struct unitree_go__msg__LowState -{ - uint8_t head[2]; - uint8_t level_flag; - uint8_t frame_reserve; - uint32_t sn[2]; - uint32_t version[2]; - uint16_t bandwidth; - unitree_go__msg__IMUState imu_state; - unitree_go__msg__MotorState motor_state[20]; - unitree_go__msg__BmsState bms_state; - int16_t foot_force[4]; - int16_t foot_force_est[4]; - uint32_t tick; - uint8_t wireless_remote[40]; - uint8_t bit_flag; - float adc_reel; - int8_t temperature_ntc1; - int8_t temperature_ntc2; - float power_v; - float power_a; - uint16_t fan_frequency[4]; - uint32_t reserve; - uint32_t crc; -} unitree_go__msg__LowState; - -// Struct for a sequence of unitree_go__msg__LowState. -typedef struct unitree_go__msg__LowState__Sequence -{ - unitree_go__msg__LowState * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__LowState__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.hpp deleted file mode 100644 index 1168725..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__struct.hpp +++ /dev/null @@ -1,439 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'imu_state' -#include "unitree_go/msg/detail/imu_state__struct.hpp" -// Member 'motor_state' -#include "unitree_go/msg/detail/motor_state__struct.hpp" -// Member 'bms_state' -#include "unitree_go/msg/detail/bms_state__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__LowState __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__LowState __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct LowState_ -{ - using Type = LowState_; - - explicit LowState_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : imu_state(_init), - bms_state(_init) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, uint8_t>(this->head.begin(), this->head.end(), 0); - this->level_flag = 0; - this->frame_reserve = 0; - std::fill::iterator, uint32_t>(this->sn.begin(), this->sn.end(), 0ul); - std::fill::iterator, uint32_t>(this->version.begin(), this->version.end(), 0ul); - this->bandwidth = 0; - this->motor_state.fill(unitree_go::msg::MotorState_{_init}); - std::fill::iterator, int16_t>(this->foot_force.begin(), this->foot_force.end(), 0); - std::fill::iterator, int16_t>(this->foot_force_est.begin(), this->foot_force_est.end(), 0); - this->tick = 0ul; - std::fill::iterator, uint8_t>(this->wireless_remote.begin(), this->wireless_remote.end(), 0); - this->bit_flag = 0; - this->adc_reel = 0.0f; - this->temperature_ntc1 = 0; - this->temperature_ntc2 = 0; - this->power_v = 0.0f; - this->power_a = 0.0f; - std::fill::iterator, uint16_t>(this->fan_frequency.begin(), this->fan_frequency.end(), 0); - this->reserve = 0ul; - this->crc = 0ul; - } - } - - explicit LowState_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : head(_alloc), - sn(_alloc), - version(_alloc), - imu_state(_alloc, _init), - motor_state(_alloc), - bms_state(_alloc, _init), - foot_force(_alloc), - foot_force_est(_alloc), - wireless_remote(_alloc), - fan_frequency(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, uint8_t>(this->head.begin(), this->head.end(), 0); - this->level_flag = 0; - this->frame_reserve = 0; - std::fill::iterator, uint32_t>(this->sn.begin(), this->sn.end(), 0ul); - std::fill::iterator, uint32_t>(this->version.begin(), this->version.end(), 0ul); - this->bandwidth = 0; - this->motor_state.fill(unitree_go::msg::MotorState_{_alloc, _init}); - std::fill::iterator, int16_t>(this->foot_force.begin(), this->foot_force.end(), 0); - std::fill::iterator, int16_t>(this->foot_force_est.begin(), this->foot_force_est.end(), 0); - this->tick = 0ul; - std::fill::iterator, uint8_t>(this->wireless_remote.begin(), this->wireless_remote.end(), 0); - this->bit_flag = 0; - this->adc_reel = 0.0f; - this->temperature_ntc1 = 0; - this->temperature_ntc2 = 0; - this->power_v = 0.0f; - this->power_a = 0.0f; - std::fill::iterator, uint16_t>(this->fan_frequency.begin(), this->fan_frequency.end(), 0); - this->reserve = 0ul; - this->crc = 0ul; - } - } - - // field types and members - using _head_type = - std::array; - _head_type head; - using _level_flag_type = - uint8_t; - _level_flag_type level_flag; - using _frame_reserve_type = - uint8_t; - _frame_reserve_type frame_reserve; - using _sn_type = - std::array; - _sn_type sn; - using _version_type = - std::array; - _version_type version; - using _bandwidth_type = - uint16_t; - _bandwidth_type bandwidth; - using _imu_state_type = - unitree_go::msg::IMUState_; - _imu_state_type imu_state; - using _motor_state_type = - std::array, 20>; - _motor_state_type motor_state; - using _bms_state_type = - unitree_go::msg::BmsState_; - _bms_state_type bms_state; - using _foot_force_type = - std::array; - _foot_force_type foot_force; - using _foot_force_est_type = - std::array; - _foot_force_est_type foot_force_est; - using _tick_type = - uint32_t; - _tick_type tick; - using _wireless_remote_type = - std::array; - _wireless_remote_type wireless_remote; - using _bit_flag_type = - uint8_t; - _bit_flag_type bit_flag; - using _adc_reel_type = - float; - _adc_reel_type adc_reel; - using _temperature_ntc1_type = - int8_t; - _temperature_ntc1_type temperature_ntc1; - using _temperature_ntc2_type = - int8_t; - _temperature_ntc2_type temperature_ntc2; - using _power_v_type = - float; - _power_v_type power_v; - using _power_a_type = - float; - _power_a_type power_a; - using _fan_frequency_type = - std::array; - _fan_frequency_type fan_frequency; - using _reserve_type = - uint32_t; - _reserve_type reserve; - using _crc_type = - uint32_t; - _crc_type crc; - - // setters for named parameter idiom - Type & set__head( - const std::array & _arg) - { - this->head = _arg; - return *this; - } - Type & set__level_flag( - const uint8_t & _arg) - { - this->level_flag = _arg; - return *this; - } - Type & set__frame_reserve( - const uint8_t & _arg) - { - this->frame_reserve = _arg; - return *this; - } - Type & set__sn( - const std::array & _arg) - { - this->sn = _arg; - return *this; - } - Type & set__version( - const std::array & _arg) - { - this->version = _arg; - return *this; - } - Type & set__bandwidth( - const uint16_t & _arg) - { - this->bandwidth = _arg; - return *this; - } - Type & set__imu_state( - const unitree_go::msg::IMUState_ & _arg) - { - this->imu_state = _arg; - return *this; - } - Type & set__motor_state( - const std::array, 20> & _arg) - { - this->motor_state = _arg; - return *this; - } - Type & set__bms_state( - const unitree_go::msg::BmsState_ & _arg) - { - this->bms_state = _arg; - return *this; - } - Type & set__foot_force( - const std::array & _arg) - { - this->foot_force = _arg; - return *this; - } - Type & set__foot_force_est( - const std::array & _arg) - { - this->foot_force_est = _arg; - return *this; - } - Type & set__tick( - const uint32_t & _arg) - { - this->tick = _arg; - return *this; - } - Type & set__wireless_remote( - const std::array & _arg) - { - this->wireless_remote = _arg; - return *this; - } - Type & set__bit_flag( - const uint8_t & _arg) - { - this->bit_flag = _arg; - return *this; - } - Type & set__adc_reel( - const float & _arg) - { - this->adc_reel = _arg; - return *this; - } - Type & set__temperature_ntc1( - const int8_t & _arg) - { - this->temperature_ntc1 = _arg; - return *this; - } - Type & set__temperature_ntc2( - const int8_t & _arg) - { - this->temperature_ntc2 = _arg; - return *this; - } - Type & set__power_v( - const float & _arg) - { - this->power_v = _arg; - return *this; - } - Type & set__power_a( - const float & _arg) - { - this->power_a = _arg; - return *this; - } - Type & set__fan_frequency( - const std::array & _arg) - { - this->fan_frequency = _arg; - return *this; - } - Type & set__reserve( - const uint32_t & _arg) - { - this->reserve = _arg; - return *this; - } - Type & set__crc( - const uint32_t & _arg) - { - this->crc = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::LowState_ *; - using ConstRawPtr = - const unitree_go::msg::LowState_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__LowState - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__LowState - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const LowState_ & other) const - { - if (this->head != other.head) { - return false; - } - if (this->level_flag != other.level_flag) { - return false; - } - if (this->frame_reserve != other.frame_reserve) { - return false; - } - if (this->sn != other.sn) { - return false; - } - if (this->version != other.version) { - return false; - } - if (this->bandwidth != other.bandwidth) { - return false; - } - if (this->imu_state != other.imu_state) { - return false; - } - if (this->motor_state != other.motor_state) { - return false; - } - if (this->bms_state != other.bms_state) { - return false; - } - if (this->foot_force != other.foot_force) { - return false; - } - if (this->foot_force_est != other.foot_force_est) { - return false; - } - if (this->tick != other.tick) { - return false; - } - if (this->wireless_remote != other.wireless_remote) { - return false; - } - if (this->bit_flag != other.bit_flag) { - return false; - } - if (this->adc_reel != other.adc_reel) { - return false; - } - if (this->temperature_ntc1 != other.temperature_ntc1) { - return false; - } - if (this->temperature_ntc2 != other.temperature_ntc2) { - return false; - } - if (this->power_v != other.power_v) { - return false; - } - if (this->power_a != other.power_a) { - return false; - } - if (this->fan_frequency != other.fan_frequency) { - return false; - } - if (this->reserve != other.reserve) { - return false; - } - if (this->crc != other.crc) { - return false; - } - return true; - } - bool operator!=(const LowState_ & other) const - { - return !this->operator==(other); - } -}; // struct LowState_ - -// alias to use template instance with default allocator -using LowState = - unitree_go::msg::LowState_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__traits.hpp deleted file mode 100644 index 1a80d34..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__traits.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__TRAITS_HPP_ - -#include "unitree_go/msg/detail/low_state__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'imu_state' -#include "unitree_go/msg/detail/imu_state__traits.hpp" -// Member 'motor_state' -#include "unitree_go/msg/detail/motor_state__traits.hpp" -// Member 'bms_state' -#include "unitree_go/msg/detail/bms_state__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::LowState"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/LowState"; -} - -template<> -struct has_fixed_size - : std::integral_constant::value && has_fixed_size::value && has_fixed_size::value> {}; - -template<> -struct has_bounded_size - : std::integral_constant::value && has_bounded_size::value && has_bounded_size::value> {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.c deleted file mode 100644 index efa7f04..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.c +++ /dev/null @@ -1,439 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/low_state__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/low_state__functions.h" -#include "unitree_go/msg/detail/low_state__struct.h" - - -// Include directives for member types -// Member `imu_state` -#include "unitree_go/msg/imu_state.h" -// Member `imu_state` -#include "unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_c.h" -// Member `motor_state` -#include "unitree_go/msg/motor_state.h" -// Member `motor_state` -#include "unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_c.h" -// Member `bms_state` -#include "unitree_go/msg/bms_state.h" -// Member `bms_state` -#include "unitree_go/msg/detail/bms_state__rosidl_typesupport_introspection_c.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void LowState__rosidl_typesupport_introspection_c__LowState_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__LowState__init(message_memory); -} - -void LowState__rosidl_typesupport_introspection_c__LowState_fini_function(void * message_memory) -{ - unitree_go__msg__LowState__fini(message_memory); -} - -size_t LowState__rosidl_typesupport_introspection_c__size_function__MotorState__motor_state( - const void * untyped_member) -{ - (void)untyped_member; - return 20; -} - -const void * LowState__rosidl_typesupport_introspection_c__get_const_function__MotorState__motor_state( - const void * untyped_member, size_t index) -{ - const unitree_go__msg__MotorState ** member = - (const unitree_go__msg__MotorState **)(untyped_member); - return &(*member)[index]; -} - -void * LowState__rosidl_typesupport_introspection_c__get_function__MotorState__motor_state( - void * untyped_member, size_t index) -{ - unitree_go__msg__MotorState ** member = - (unitree_go__msg__MotorState **)(untyped_member); - return &(*member)[index]; -} - -static rosidl_typesupport_introspection_c__MessageMember LowState__rosidl_typesupport_introspection_c__LowState_message_member_array[22] = { - { - "head", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, head), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "level_flag", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, level_flag), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "frame_reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, frame_reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "sn", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, sn), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "version", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, version), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "bandwidth", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT16, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, bandwidth), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "imu_state", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, imu_state), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "motor_state", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - true, // is array - 20, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, motor_state), // bytes offset in struct - NULL, // default value - LowState__rosidl_typesupport_introspection_c__size_function__MotorState__motor_state, // size() function pointer - LowState__rosidl_typesupport_introspection_c__get_const_function__MotorState__motor_state, // get_const(index) function pointer - LowState__rosidl_typesupport_introspection_c__get_function__MotorState__motor_state, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "bms_state", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, bms_state), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "foot_force", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT16, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, foot_force), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "foot_force_est", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT16, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, foot_force_est), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "tick", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, tick), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "wireless_remote", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 40, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, wireless_remote), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "bit_flag", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, bit_flag), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "adc_reel", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, adc_reel), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "temperature_ntc1", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, temperature_ntc1), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "temperature_ntc2", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, temperature_ntc2), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "power_v", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, power_v), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "power_a", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, power_a), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "fan_frequency", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT16, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, fan_frequency), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "crc", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__LowState, crc), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers LowState__rosidl_typesupport_introspection_c__LowState_message_members = { - "unitree_go__msg", // message namespace - "LowState", // message name - 22, // number of fields - sizeof(unitree_go__msg__LowState), - LowState__rosidl_typesupport_introspection_c__LowState_message_member_array, // message members - LowState__rosidl_typesupport_introspection_c__LowState_init_function, // function to initialize message memory (memory has to be allocated) - LowState__rosidl_typesupport_introspection_c__LowState_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t LowState__rosidl_typesupport_introspection_c__LowState_message_type_support_handle = { - 0, - &LowState__rosidl_typesupport_introspection_c__LowState_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, LowState)() { - LowState__rosidl_typesupport_introspection_c__LowState_message_member_array[6].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, IMUState)(); - LowState__rosidl_typesupport_introspection_c__LowState_message_member_array[7].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, MotorState)(); - LowState__rosidl_typesupport_introspection_c__LowState_message_member_array[8].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, BmsState)(); - if (!LowState__rosidl_typesupport_introspection_c__LowState_message_type_support_handle.typesupport_identifier) { - LowState__rosidl_typesupport_introspection_c__LowState_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &LowState__rosidl_typesupport_introspection_c__LowState_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.cpp deleted file mode 100644 index f7c2ef1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.cpp +++ /dev/null @@ -1,582 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/low_state__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void LowState_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::LowState(_init); -} - -void LowState_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~LowState(); -} - -size_t size_function__LowState__head(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__LowState__head(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__head(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowState__sn(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__LowState__sn(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__sn(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowState__version(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__LowState__version(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__version(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowState__motor_state(const void * untyped_member) -{ - (void)untyped_member; - return 20; -} - -const void * get_const_function__LowState__motor_state(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__motor_state(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowState__foot_force(const void * untyped_member) -{ - (void)untyped_member; - return 4; -} - -const void * get_const_function__LowState__foot_force(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__foot_force(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowState__foot_force_est(const void * untyped_member) -{ - (void)untyped_member; - return 4; -} - -const void * get_const_function__LowState__foot_force_est(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__foot_force_est(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowState__wireless_remote(const void * untyped_member) -{ - (void)untyped_member; - return 40; -} - -const void * get_const_function__LowState__wireless_remote(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__wireless_remote(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__LowState__fan_frequency(const void * untyped_member) -{ - (void)untyped_member; - return 4; -} - -const void * get_const_function__LowState__fan_frequency(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__LowState__fan_frequency(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember LowState_message_member_array[22] = { - { - "head", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, head), // bytes offset in struct - nullptr, // default value - size_function__LowState__head, // size() function pointer - get_const_function__LowState__head, // get_const(index) function pointer - get_function__LowState__head, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "level_flag", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, level_flag), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "frame_reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, frame_reserve), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "sn", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, sn), // bytes offset in struct - nullptr, // default value - size_function__LowState__sn, // size() function pointer - get_const_function__LowState__sn, // get_const(index) function pointer - get_function__LowState__sn, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "version", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, version), // bytes offset in struct - nullptr, // default value - size_function__LowState__version, // size() function pointer - get_const_function__LowState__version, // get_const(index) function pointer - get_function__LowState__version, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "bandwidth", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT16, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, bandwidth), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "imu_state", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, imu_state), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "motor_state", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - true, // is array - 20, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, motor_state), // bytes offset in struct - nullptr, // default value - size_function__LowState__motor_state, // size() function pointer - get_const_function__LowState__motor_state, // get_const(index) function pointer - get_function__LowState__motor_state, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "bms_state", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, bms_state), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "foot_force", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT16, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, foot_force), // bytes offset in struct - nullptr, // default value - size_function__LowState__foot_force, // size() function pointer - get_const_function__LowState__foot_force, // get_const(index) function pointer - get_function__LowState__foot_force, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "foot_force_est", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT16, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, foot_force_est), // bytes offset in struct - nullptr, // default value - size_function__LowState__foot_force_est, // size() function pointer - get_const_function__LowState__foot_force_est, // get_const(index) function pointer - get_function__LowState__foot_force_est, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "tick", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, tick), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "wireless_remote", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 40, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, wireless_remote), // bytes offset in struct - nullptr, // default value - size_function__LowState__wireless_remote, // size() function pointer - get_const_function__LowState__wireless_remote, // get_const(index) function pointer - get_function__LowState__wireless_remote, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "bit_flag", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, bit_flag), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "adc_reel", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, adc_reel), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "temperature_ntc1", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, temperature_ntc1), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "temperature_ntc2", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, temperature_ntc2), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "power_v", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, power_v), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "power_a", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, power_a), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "fan_frequency", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT16, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, fan_frequency), // bytes offset in struct - nullptr, // default value - size_function__LowState__fan_frequency, // size() function pointer - get_const_function__LowState__fan_frequency, // get_const(index) function pointer - get_function__LowState__fan_frequency, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, reserve), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "crc", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::LowState, crc), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers LowState_message_members = { - "unitree_go::msg", // message namespace - "LowState", // message name - 22, // number of fields - sizeof(unitree_go::msg::LowState), - LowState_message_member_array, // message members - LowState_init_function, // function to initialize message memory (memory has to be allocated) - LowState_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t LowState_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &LowState_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::LowState_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, LowState)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::LowState_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.h deleted file mode 100644 index 7a261b9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - LowState -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.hpp deleted file mode 100644 index 28235cf..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/low_state__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__LOW_STATE__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__LOW_STATE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - LowState -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__LOW_STATE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__builder.hpp deleted file mode 100644 index 964d0bb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__builder.hpp +++ /dev/null @@ -1,151 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__BUILDER_HPP_ - -#include "unitree_go/msg/detail/motor_cmd__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_MotorCmd_reserve -{ -public: - explicit Init_MotorCmd_reserve(::unitree_go::msg::MotorCmd & msg) - : msg_(msg) - {} - ::unitree_go::msg::MotorCmd reserve(::unitree_go::msg::MotorCmd::_reserve_type arg) - { - msg_.reserve = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::MotorCmd msg_; -}; - -class Init_MotorCmd_kd -{ -public: - explicit Init_MotorCmd_kd(::unitree_go::msg::MotorCmd & msg) - : msg_(msg) - {} - Init_MotorCmd_reserve kd(::unitree_go::msg::MotorCmd::_kd_type arg) - { - msg_.kd = std::move(arg); - return Init_MotorCmd_reserve(msg_); - } - -private: - ::unitree_go::msg::MotorCmd msg_; -}; - -class Init_MotorCmd_kp -{ -public: - explicit Init_MotorCmd_kp(::unitree_go::msg::MotorCmd & msg) - : msg_(msg) - {} - Init_MotorCmd_kd kp(::unitree_go::msg::MotorCmd::_kp_type arg) - { - msg_.kp = std::move(arg); - return Init_MotorCmd_kd(msg_); - } - -private: - ::unitree_go::msg::MotorCmd msg_; -}; - -class Init_MotorCmd_tau -{ -public: - explicit Init_MotorCmd_tau(::unitree_go::msg::MotorCmd & msg) - : msg_(msg) - {} - Init_MotorCmd_kp tau(::unitree_go::msg::MotorCmd::_tau_type arg) - { - msg_.tau = std::move(arg); - return Init_MotorCmd_kp(msg_); - } - -private: - ::unitree_go::msg::MotorCmd msg_; -}; - -class Init_MotorCmd_dq -{ -public: - explicit Init_MotorCmd_dq(::unitree_go::msg::MotorCmd & msg) - : msg_(msg) - {} - Init_MotorCmd_tau dq(::unitree_go::msg::MotorCmd::_dq_type arg) - { - msg_.dq = std::move(arg); - return Init_MotorCmd_tau(msg_); - } - -private: - ::unitree_go::msg::MotorCmd msg_; -}; - -class Init_MotorCmd_q -{ -public: - explicit Init_MotorCmd_q(::unitree_go::msg::MotorCmd & msg) - : msg_(msg) - {} - Init_MotorCmd_dq q(::unitree_go::msg::MotorCmd::_q_type arg) - { - msg_.q = std::move(arg); - return Init_MotorCmd_dq(msg_); - } - -private: - ::unitree_go::msg::MotorCmd msg_; -}; - -class Init_MotorCmd_mode -{ -public: - Init_MotorCmd_mode() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_MotorCmd_q mode(::unitree_go::msg::MotorCmd::_mode_type arg) - { - msg_.mode = std::move(arg); - return Init_MotorCmd_q(msg_); - } - -private: - ::unitree_go::msg::MotorCmd msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::MotorCmd>() -{ - return unitree_go::msg::builder::Init_MotorCmd_mode(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.c deleted file mode 100644 index e644e1e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.c +++ /dev/null @@ -1,283 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/motor_cmd__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__MotorCmd__init(unitree_go__msg__MotorCmd * msg) -{ - if (!msg) { - return false; - } - // mode - // q - // dq - // tau - // kp - // kd - // reserve - return true; -} - -void -unitree_go__msg__MotorCmd__fini(unitree_go__msg__MotorCmd * msg) -{ - if (!msg) { - return; - } - // mode - // q - // dq - // tau - // kp - // kd - // reserve -} - -bool -unitree_go__msg__MotorCmd__are_equal(const unitree_go__msg__MotorCmd * lhs, const unitree_go__msg__MotorCmd * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // mode - if (lhs->mode != rhs->mode) { - return false; - } - // q - if (lhs->q != rhs->q) { - return false; - } - // dq - if (lhs->dq != rhs->dq) { - return false; - } - // tau - if (lhs->tau != rhs->tau) { - return false; - } - // kp - if (lhs->kp != rhs->kp) { - return false; - } - // kd - if (lhs->kd != rhs->kd) { - return false; - } - // reserve - for (size_t i = 0; i < 3; ++i) { - if (lhs->reserve[i] != rhs->reserve[i]) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__MotorCmd__copy( - const unitree_go__msg__MotorCmd * input, - unitree_go__msg__MotorCmd * output) -{ - if (!input || !output) { - return false; - } - // mode - output->mode = input->mode; - // q - output->q = input->q; - // dq - output->dq = input->dq; - // tau - output->tau = input->tau; - // kp - output->kp = input->kp; - // kd - output->kd = input->kd; - // reserve - for (size_t i = 0; i < 3; ++i) { - output->reserve[i] = input->reserve[i]; - } - return true; -} - -unitree_go__msg__MotorCmd * -unitree_go__msg__MotorCmd__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__MotorCmd * msg = (unitree_go__msg__MotorCmd *)allocator.allocate(sizeof(unitree_go__msg__MotorCmd), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__MotorCmd)); - bool success = unitree_go__msg__MotorCmd__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__MotorCmd__destroy(unitree_go__msg__MotorCmd * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__MotorCmd__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__MotorCmd__Sequence__init(unitree_go__msg__MotorCmd__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__MotorCmd * data = NULL; - - if (size) { - data = (unitree_go__msg__MotorCmd *)allocator.zero_allocate(size, sizeof(unitree_go__msg__MotorCmd), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__MotorCmd__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__MotorCmd__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__MotorCmd__Sequence__fini(unitree_go__msg__MotorCmd__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__MotorCmd__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__MotorCmd__Sequence * -unitree_go__msg__MotorCmd__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__MotorCmd__Sequence * array = (unitree_go__msg__MotorCmd__Sequence *)allocator.allocate(sizeof(unitree_go__msg__MotorCmd__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__MotorCmd__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__MotorCmd__Sequence__destroy(unitree_go__msg__MotorCmd__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__MotorCmd__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__MotorCmd__Sequence__are_equal(const unitree_go__msg__MotorCmd__Sequence * lhs, const unitree_go__msg__MotorCmd__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__MotorCmd__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__MotorCmd__Sequence__copy( - const unitree_go__msg__MotorCmd__Sequence * input, - unitree_go__msg__MotorCmd__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__MotorCmd); - unitree_go__msg__MotorCmd * data = - (unitree_go__msg__MotorCmd *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__MotorCmd__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__MotorCmd__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__MotorCmd__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.h deleted file mode 100644 index a8876fb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/motor_cmd__struct.h" - -/// Initialize msg/MotorCmd message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__MotorCmd - * )) before or use - * unitree_go__msg__MotorCmd__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorCmd__init(unitree_go__msg__MotorCmd * msg); - -/// Finalize msg/MotorCmd message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorCmd__fini(unitree_go__msg__MotorCmd * msg); - -/// Create msg/MotorCmd message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__MotorCmd__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__MotorCmd * -unitree_go__msg__MotorCmd__create(); - -/// Destroy msg/MotorCmd message. -/** - * It calls - * unitree_go__msg__MotorCmd__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorCmd__destroy(unitree_go__msg__MotorCmd * msg); - -/// Check for msg/MotorCmd message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorCmd__are_equal(const unitree_go__msg__MotorCmd * lhs, const unitree_go__msg__MotorCmd * rhs); - -/// Copy a msg/MotorCmd message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorCmd__copy( - const unitree_go__msg__MotorCmd * input, - unitree_go__msg__MotorCmd * output); - -/// Initialize array of msg/MotorCmd messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__MotorCmd__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorCmd__Sequence__init(unitree_go__msg__MotorCmd__Sequence * array, size_t size); - -/// Finalize array of msg/MotorCmd messages. -/** - * It calls - * unitree_go__msg__MotorCmd__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorCmd__Sequence__fini(unitree_go__msg__MotorCmd__Sequence * array); - -/// Create array of msg/MotorCmd messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__MotorCmd__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__MotorCmd__Sequence * -unitree_go__msg__MotorCmd__Sequence__create(size_t size); - -/// Destroy array of msg/MotorCmd messages. -/** - * It calls - * unitree_go__msg__MotorCmd__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorCmd__Sequence__destroy(unitree_go__msg__MotorCmd__Sequence * array); - -/// Check for msg/MotorCmd message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorCmd__Sequence__are_equal(const unitree_go__msg__MotorCmd__Sequence * lhs, const unitree_go__msg__MotorCmd__Sequence * rhs); - -/// Copy an array of msg/MotorCmd messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorCmd__Sequence__copy( - const unitree_go__msg__MotorCmd__Sequence * input, - unitree_go__msg__MotorCmd__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index b57aab6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__MotorCmd( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__MotorCmd( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, MotorCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index a29343c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/motor_cmd__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::MotorCmd & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::MotorCmd & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::MotorCmd & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_MotorCmd( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, MotorCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_c.h deleted file mode 100644 index b0ab8a8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, MotorCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 7c49286..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, MotorCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.h deleted file mode 100644 index 08580f3..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.h +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/MotorCmd in the package unitree_go. -typedef struct unitree_go__msg__MotorCmd -{ - uint8_t mode; - float q; - float dq; - float tau; - float kp; - float kd; - uint32_t reserve[3]; -} unitree_go__msg__MotorCmd; - -// Struct for a sequence of unitree_go__msg__MotorCmd. -typedef struct unitree_go__msg__MotorCmd__Sequence -{ - unitree_go__msg__MotorCmd * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__MotorCmd__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.hpp deleted file mode 100644 index 987eb7a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__struct.hpp +++ /dev/null @@ -1,214 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__MotorCmd __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__MotorCmd __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct MotorCmd_ -{ - using Type = MotorCmd_; - - explicit MotorCmd_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->q = 0.0f; - this->dq = 0.0f; - this->tau = 0.0f; - this->kp = 0.0f; - this->kd = 0.0f; - std::fill::iterator, uint32_t>(this->reserve.begin(), this->reserve.end(), 0ul); - } - } - - explicit MotorCmd_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : reserve(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->q = 0.0f; - this->dq = 0.0f; - this->tau = 0.0f; - this->kp = 0.0f; - this->kd = 0.0f; - std::fill::iterator, uint32_t>(this->reserve.begin(), this->reserve.end(), 0ul); - } - } - - // field types and members - using _mode_type = - uint8_t; - _mode_type mode; - using _q_type = - float; - _q_type q; - using _dq_type = - float; - _dq_type dq; - using _tau_type = - float; - _tau_type tau; - using _kp_type = - float; - _kp_type kp; - using _kd_type = - float; - _kd_type kd; - using _reserve_type = - std::array; - _reserve_type reserve; - - // setters for named parameter idiom - Type & set__mode( - const uint8_t & _arg) - { - this->mode = _arg; - return *this; - } - Type & set__q( - const float & _arg) - { - this->q = _arg; - return *this; - } - Type & set__dq( - const float & _arg) - { - this->dq = _arg; - return *this; - } - Type & set__tau( - const float & _arg) - { - this->tau = _arg; - return *this; - } - Type & set__kp( - const float & _arg) - { - this->kp = _arg; - return *this; - } - Type & set__kd( - const float & _arg) - { - this->kd = _arg; - return *this; - } - Type & set__reserve( - const std::array & _arg) - { - this->reserve = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::MotorCmd_ *; - using ConstRawPtr = - const unitree_go::msg::MotorCmd_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__MotorCmd - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__MotorCmd - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const MotorCmd_ & other) const - { - if (this->mode != other.mode) { - return false; - } - if (this->q != other.q) { - return false; - } - if (this->dq != other.dq) { - return false; - } - if (this->tau != other.tau) { - return false; - } - if (this->kp != other.kp) { - return false; - } - if (this->kd != other.kd) { - return false; - } - if (this->reserve != other.reserve) { - return false; - } - return true; - } - bool operator!=(const MotorCmd_ & other) const - { - return !this->operator==(other); - } -}; // struct MotorCmd_ - -// alias to use template instance with default allocator -using MotorCmd = - unitree_go::msg::MotorCmd_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__traits.hpp deleted file mode 100644 index c1ea718..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TRAITS_HPP_ - -#include "unitree_go/msg/detail/motor_cmd__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::MotorCmd"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/MotorCmd"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.c deleted file mode 100644 index 7a7b7b6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.c +++ /dev/null @@ -1,171 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/motor_cmd__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/motor_cmd__functions.h" -#include "unitree_go/msg/detail/motor_cmd__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__MotorCmd__init(message_memory); -} - -void MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_fini_function(void * message_memory) -{ - unitree_go__msg__MotorCmd__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_member_array[7] = { - { - "mode", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorCmd, mode), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "q", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorCmd, q), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "dq", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorCmd, dq), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "tau", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorCmd, tau), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "kp", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorCmd, kp), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "kd", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorCmd, kd), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorCmd, reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_members = { - "unitree_go__msg", // message namespace - "MotorCmd", // message name - 7, // number of fields - sizeof(unitree_go__msg__MotorCmd), - MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_member_array, // message members - MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_init_function, // function to initialize message memory (memory has to be allocated) - MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_type_support_handle = { - 0, - &MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, MotorCmd)() { - if (!MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_type_support_handle.typesupport_identifier) { - MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &MotorCmd__rosidl_typesupport_introspection_c__MotorCmd_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.cpp deleted file mode 100644 index acbca4f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.cpp +++ /dev/null @@ -1,217 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/motor_cmd__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void MotorCmd_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::MotorCmd(_init); -} - -void MotorCmd_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~MotorCmd(); -} - -size_t size_function__MotorCmd__reserve(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__MotorCmd__reserve(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__MotorCmd__reserve(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember MotorCmd_message_member_array[7] = { - { - "mode", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorCmd, mode), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "q", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorCmd, q), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "dq", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorCmd, dq), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "tau", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorCmd, tau), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "kp", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorCmd, kp), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "kd", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorCmd, kd), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorCmd, reserve), // bytes offset in struct - nullptr, // default value - size_function__MotorCmd__reserve, // size() function pointer - get_const_function__MotorCmd__reserve, // get_const(index) function pointer - get_function__MotorCmd__reserve, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers MotorCmd_message_members = { - "unitree_go::msg", // message namespace - "MotorCmd", // message name - 7, // number of fields - sizeof(unitree_go::msg::MotorCmd), - MotorCmd_message_member_array, // message members - MotorCmd_init_function, // function to initialize message memory (memory has to be allocated) - MotorCmd_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t MotorCmd_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &MotorCmd_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::MotorCmd_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, MotorCmd)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::MotorCmd_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.h deleted file mode 100644 index 3592b44..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - MotorCmd -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.hpp deleted file mode 100644 index f5a4dd5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_cmd__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - MotorCmd -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_CMD__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__builder.hpp deleted file mode 100644 index bf44597..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__builder.hpp +++ /dev/null @@ -1,215 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__BUILDER_HPP_ - -#include "unitree_go/msg/detail/motor_state__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_MotorState_reserve -{ -public: - explicit Init_MotorState_reserve(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - ::unitree_go::msg::MotorState reserve(::unitree_go::msg::MotorState::_reserve_type arg) - { - msg_.reserve = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_lost -{ -public: - explicit Init_MotorState_lost(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_reserve lost(::unitree_go::msg::MotorState::_lost_type arg) - { - msg_.lost = std::move(arg); - return Init_MotorState_reserve(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_temperature -{ -public: - explicit Init_MotorState_temperature(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_lost temperature(::unitree_go::msg::MotorState::_temperature_type arg) - { - msg_.temperature = std::move(arg); - return Init_MotorState_lost(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_ddq_raw -{ -public: - explicit Init_MotorState_ddq_raw(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_temperature ddq_raw(::unitree_go::msg::MotorState::_ddq_raw_type arg) - { - msg_.ddq_raw = std::move(arg); - return Init_MotorState_temperature(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_dq_raw -{ -public: - explicit Init_MotorState_dq_raw(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_ddq_raw dq_raw(::unitree_go::msg::MotorState::_dq_raw_type arg) - { - msg_.dq_raw = std::move(arg); - return Init_MotorState_ddq_raw(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_q_raw -{ -public: - explicit Init_MotorState_q_raw(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_dq_raw q_raw(::unitree_go::msg::MotorState::_q_raw_type arg) - { - msg_.q_raw = std::move(arg); - return Init_MotorState_dq_raw(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_tau_est -{ -public: - explicit Init_MotorState_tau_est(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_q_raw tau_est(::unitree_go::msg::MotorState::_tau_est_type arg) - { - msg_.tau_est = std::move(arg); - return Init_MotorState_q_raw(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_ddq -{ -public: - explicit Init_MotorState_ddq(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_tau_est ddq(::unitree_go::msg::MotorState::_ddq_type arg) - { - msg_.ddq = std::move(arg); - return Init_MotorState_tau_est(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_dq -{ -public: - explicit Init_MotorState_dq(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_ddq dq(::unitree_go::msg::MotorState::_dq_type arg) - { - msg_.dq = std::move(arg); - return Init_MotorState_ddq(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_q -{ -public: - explicit Init_MotorState_q(::unitree_go::msg::MotorState & msg) - : msg_(msg) - {} - Init_MotorState_dq q(::unitree_go::msg::MotorState::_q_type arg) - { - msg_.q = std::move(arg); - return Init_MotorState_dq(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -class Init_MotorState_mode -{ -public: - Init_MotorState_mode() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_MotorState_q mode(::unitree_go::msg::MotorState::_mode_type arg) - { - msg_.mode = std::move(arg); - return Init_MotorState_q(msg_); - } - -private: - ::unitree_go::msg::MotorState msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::MotorState>() -{ - return unitree_go::msg::builder::Init_MotorState_mode(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.c deleted file mode 100644 index ff2301e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.c +++ /dev/null @@ -1,315 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/motor_state__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__MotorState__init(unitree_go__msg__MotorState * msg) -{ - if (!msg) { - return false; - } - // mode - // q - // dq - // ddq - // tau_est - // q_raw - // dq_raw - // ddq_raw - // temperature - // lost - // reserve - return true; -} - -void -unitree_go__msg__MotorState__fini(unitree_go__msg__MotorState * msg) -{ - if (!msg) { - return; - } - // mode - // q - // dq - // ddq - // tau_est - // q_raw - // dq_raw - // ddq_raw - // temperature - // lost - // reserve -} - -bool -unitree_go__msg__MotorState__are_equal(const unitree_go__msg__MotorState * lhs, const unitree_go__msg__MotorState * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // mode - if (lhs->mode != rhs->mode) { - return false; - } - // q - if (lhs->q != rhs->q) { - return false; - } - // dq - if (lhs->dq != rhs->dq) { - return false; - } - // ddq - if (lhs->ddq != rhs->ddq) { - return false; - } - // tau_est - if (lhs->tau_est != rhs->tau_est) { - return false; - } - // q_raw - if (lhs->q_raw != rhs->q_raw) { - return false; - } - // dq_raw - if (lhs->dq_raw != rhs->dq_raw) { - return false; - } - // ddq_raw - if (lhs->ddq_raw != rhs->ddq_raw) { - return false; - } - // temperature - if (lhs->temperature != rhs->temperature) { - return false; - } - // lost - if (lhs->lost != rhs->lost) { - return false; - } - // reserve - for (size_t i = 0; i < 2; ++i) { - if (lhs->reserve[i] != rhs->reserve[i]) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__MotorState__copy( - const unitree_go__msg__MotorState * input, - unitree_go__msg__MotorState * output) -{ - if (!input || !output) { - return false; - } - // mode - output->mode = input->mode; - // q - output->q = input->q; - // dq - output->dq = input->dq; - // ddq - output->ddq = input->ddq; - // tau_est - output->tau_est = input->tau_est; - // q_raw - output->q_raw = input->q_raw; - // dq_raw - output->dq_raw = input->dq_raw; - // ddq_raw - output->ddq_raw = input->ddq_raw; - // temperature - output->temperature = input->temperature; - // lost - output->lost = input->lost; - // reserve - for (size_t i = 0; i < 2; ++i) { - output->reserve[i] = input->reserve[i]; - } - return true; -} - -unitree_go__msg__MotorState * -unitree_go__msg__MotorState__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__MotorState * msg = (unitree_go__msg__MotorState *)allocator.allocate(sizeof(unitree_go__msg__MotorState), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__MotorState)); - bool success = unitree_go__msg__MotorState__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__MotorState__destroy(unitree_go__msg__MotorState * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__MotorState__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__MotorState__Sequence__init(unitree_go__msg__MotorState__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__MotorState * data = NULL; - - if (size) { - data = (unitree_go__msg__MotorState *)allocator.zero_allocate(size, sizeof(unitree_go__msg__MotorState), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__MotorState__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__MotorState__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__MotorState__Sequence__fini(unitree_go__msg__MotorState__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__MotorState__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__MotorState__Sequence * -unitree_go__msg__MotorState__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__MotorState__Sequence * array = (unitree_go__msg__MotorState__Sequence *)allocator.allocate(sizeof(unitree_go__msg__MotorState__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__MotorState__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__MotorState__Sequence__destroy(unitree_go__msg__MotorState__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__MotorState__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__MotorState__Sequence__are_equal(const unitree_go__msg__MotorState__Sequence * lhs, const unitree_go__msg__MotorState__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__MotorState__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__MotorState__Sequence__copy( - const unitree_go__msg__MotorState__Sequence * input, - unitree_go__msg__MotorState__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__MotorState); - unitree_go__msg__MotorState * data = - (unitree_go__msg__MotorState *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__MotorState__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__MotorState__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__MotorState__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.h deleted file mode 100644 index ed99679..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/motor_state__struct.h" - -/// Initialize msg/MotorState message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__MotorState - * )) before or use - * unitree_go__msg__MotorState__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorState__init(unitree_go__msg__MotorState * msg); - -/// Finalize msg/MotorState message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorState__fini(unitree_go__msg__MotorState * msg); - -/// Create msg/MotorState message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__MotorState__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__MotorState * -unitree_go__msg__MotorState__create(); - -/// Destroy msg/MotorState message. -/** - * It calls - * unitree_go__msg__MotorState__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorState__destroy(unitree_go__msg__MotorState * msg); - -/// Check for msg/MotorState message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorState__are_equal(const unitree_go__msg__MotorState * lhs, const unitree_go__msg__MotorState * rhs); - -/// Copy a msg/MotorState message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorState__copy( - const unitree_go__msg__MotorState * input, - unitree_go__msg__MotorState * output); - -/// Initialize array of msg/MotorState messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__MotorState__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorState__Sequence__init(unitree_go__msg__MotorState__Sequence * array, size_t size); - -/// Finalize array of msg/MotorState messages. -/** - * It calls - * unitree_go__msg__MotorState__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorState__Sequence__fini(unitree_go__msg__MotorState__Sequence * array); - -/// Create array of msg/MotorState messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__MotorState__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__MotorState__Sequence * -unitree_go__msg__MotorState__Sequence__create(size_t size); - -/// Destroy array of msg/MotorState messages. -/** - * It calls - * unitree_go__msg__MotorState__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__MotorState__Sequence__destroy(unitree_go__msg__MotorState__Sequence * array); - -/// Check for msg/MotorState message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorState__Sequence__are_equal(const unitree_go__msg__MotorState__Sequence * lhs, const unitree_go__msg__MotorState__Sequence * rhs); - -/// Copy an array of msg/MotorState messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__MotorState__Sequence__copy( - const unitree_go__msg__MotorState__Sequence * input, - unitree_go__msg__MotorState__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index c3b4398..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__MotorState( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__MotorState( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, MotorState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 5698ffb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/motor_state__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::MotorState & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::MotorState & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::MotorState & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_MotorState( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, MotorState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 75a202a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, MotorState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 1213021..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, MotorState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.h deleted file mode 100644 index c662d90..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.h +++ /dev/null @@ -1,50 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/MotorState in the package unitree_go. -typedef struct unitree_go__msg__MotorState -{ - uint8_t mode; - float q; - float dq; - float ddq; - float tau_est; - float q_raw; - float dq_raw; - float ddq_raw; - int8_t temperature; - uint32_t lost; - uint32_t reserve[2]; -} unitree_go__msg__MotorState; - -// Struct for a sequence of unitree_go__msg__MotorState. -typedef struct unitree_go__msg__MotorState__Sequence -{ - unitree_go__msg__MotorState * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__MotorState__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.hpp deleted file mode 100644 index 5b3a0ad..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__struct.hpp +++ /dev/null @@ -1,270 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__MotorState __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__MotorState __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct MotorState_ -{ - using Type = MotorState_; - - explicit MotorState_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->q = 0.0f; - this->dq = 0.0f; - this->ddq = 0.0f; - this->tau_est = 0.0f; - this->q_raw = 0.0f; - this->dq_raw = 0.0f; - this->ddq_raw = 0.0f; - this->temperature = 0; - this->lost = 0ul; - std::fill::iterator, uint32_t>(this->reserve.begin(), this->reserve.end(), 0ul); - } - } - - explicit MotorState_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : reserve(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->q = 0.0f; - this->dq = 0.0f; - this->ddq = 0.0f; - this->tau_est = 0.0f; - this->q_raw = 0.0f; - this->dq_raw = 0.0f; - this->ddq_raw = 0.0f; - this->temperature = 0; - this->lost = 0ul; - std::fill::iterator, uint32_t>(this->reserve.begin(), this->reserve.end(), 0ul); - } - } - - // field types and members - using _mode_type = - uint8_t; - _mode_type mode; - using _q_type = - float; - _q_type q; - using _dq_type = - float; - _dq_type dq; - using _ddq_type = - float; - _ddq_type ddq; - using _tau_est_type = - float; - _tau_est_type tau_est; - using _q_raw_type = - float; - _q_raw_type q_raw; - using _dq_raw_type = - float; - _dq_raw_type dq_raw; - using _ddq_raw_type = - float; - _ddq_raw_type ddq_raw; - using _temperature_type = - int8_t; - _temperature_type temperature; - using _lost_type = - uint32_t; - _lost_type lost; - using _reserve_type = - std::array; - _reserve_type reserve; - - // setters for named parameter idiom - Type & set__mode( - const uint8_t & _arg) - { - this->mode = _arg; - return *this; - } - Type & set__q( - const float & _arg) - { - this->q = _arg; - return *this; - } - Type & set__dq( - const float & _arg) - { - this->dq = _arg; - return *this; - } - Type & set__ddq( - const float & _arg) - { - this->ddq = _arg; - return *this; - } - Type & set__tau_est( - const float & _arg) - { - this->tau_est = _arg; - return *this; - } - Type & set__q_raw( - const float & _arg) - { - this->q_raw = _arg; - return *this; - } - Type & set__dq_raw( - const float & _arg) - { - this->dq_raw = _arg; - return *this; - } - Type & set__ddq_raw( - const float & _arg) - { - this->ddq_raw = _arg; - return *this; - } - Type & set__temperature( - const int8_t & _arg) - { - this->temperature = _arg; - return *this; - } - Type & set__lost( - const uint32_t & _arg) - { - this->lost = _arg; - return *this; - } - Type & set__reserve( - const std::array & _arg) - { - this->reserve = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::MotorState_ *; - using ConstRawPtr = - const unitree_go::msg::MotorState_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__MotorState - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__MotorState - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const MotorState_ & other) const - { - if (this->mode != other.mode) { - return false; - } - if (this->q != other.q) { - return false; - } - if (this->dq != other.dq) { - return false; - } - if (this->ddq != other.ddq) { - return false; - } - if (this->tau_est != other.tau_est) { - return false; - } - if (this->q_raw != other.q_raw) { - return false; - } - if (this->dq_raw != other.dq_raw) { - return false; - } - if (this->ddq_raw != other.ddq_raw) { - return false; - } - if (this->temperature != other.temperature) { - return false; - } - if (this->lost != other.lost) { - return false; - } - if (this->reserve != other.reserve) { - return false; - } - return true; - } - bool operator!=(const MotorState_ & other) const - { - return !this->operator==(other); - } -}; // struct MotorState_ - -// alias to use template instance with default allocator -using MotorState = - unitree_go::msg::MotorState_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__traits.hpp deleted file mode 100644 index b928e75..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TRAITS_HPP_ - -#include "unitree_go/msg/detail/motor_state__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::MotorState"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/MotorState"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.c deleted file mode 100644 index 7ea060c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.c +++ /dev/null @@ -1,231 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/motor_state__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/motor_state__functions.h" -#include "unitree_go/msg/detail/motor_state__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void MotorState__rosidl_typesupport_introspection_c__MotorState_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__MotorState__init(message_memory); -} - -void MotorState__rosidl_typesupport_introspection_c__MotorState_fini_function(void * message_memory) -{ - unitree_go__msg__MotorState__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember MotorState__rosidl_typesupport_introspection_c__MotorState_message_member_array[11] = { - { - "mode", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, mode), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "q", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, q), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "dq", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, dq), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "ddq", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, ddq), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "tau_est", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, tau_est), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "q_raw", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, q_raw), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "dq_raw", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, dq_raw), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "ddq_raw", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, ddq_raw), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "temperature", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, temperature), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "lost", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, lost), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "reserve", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__MotorState, reserve), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers MotorState__rosidl_typesupport_introspection_c__MotorState_message_members = { - "unitree_go__msg", // message namespace - "MotorState", // message name - 11, // number of fields - sizeof(unitree_go__msg__MotorState), - MotorState__rosidl_typesupport_introspection_c__MotorState_message_member_array, // message members - MotorState__rosidl_typesupport_introspection_c__MotorState_init_function, // function to initialize message memory (memory has to be allocated) - MotorState__rosidl_typesupport_introspection_c__MotorState_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t MotorState__rosidl_typesupport_introspection_c__MotorState_message_type_support_handle = { - 0, - &MotorState__rosidl_typesupport_introspection_c__MotorState_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, MotorState)() { - if (!MotorState__rosidl_typesupport_introspection_c__MotorState_message_type_support_handle.typesupport_identifier) { - MotorState__rosidl_typesupport_introspection_c__MotorState_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &MotorState__rosidl_typesupport_introspection_c__MotorState_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.cpp deleted file mode 100644 index 2f9d84c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.cpp +++ /dev/null @@ -1,277 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/motor_state__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void MotorState_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::MotorState(_init); -} - -void MotorState_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~MotorState(); -} - -size_t size_function__MotorState__reserve(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__MotorState__reserve(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__MotorState__reserve(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember MotorState_message_member_array[11] = { - { - "mode", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, mode), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "q", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, q), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "dq", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, dq), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "ddq", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, ddq), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "tau_est", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, tau_est), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "q_raw", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, q_raw), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "dq_raw", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, dq_raw), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "ddq_raw", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, ddq_raw), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "temperature", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, temperature), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "lost", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, lost), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "reserve", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::MotorState, reserve), // bytes offset in struct - nullptr, // default value - size_function__MotorState__reserve, // size() function pointer - get_const_function__MotorState__reserve, // get_const(index) function pointer - get_function__MotorState__reserve, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers MotorState_message_members = { - "unitree_go::msg", // message namespace - "MotorState", // message name - 11, // number of fields - sizeof(unitree_go::msg::MotorState), - MotorState_message_member_array, // message members - MotorState_init_function, // function to initialize message memory (memory has to be allocated) - MotorState_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t MotorState_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &MotorState_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::MotorState_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, MotorState)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::MotorState_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.h deleted file mode 100644 index 656c602..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - MotorState -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.hpp deleted file mode 100644 index c551d2d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/motor_state__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - MotorState -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__MOTOR_STATE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__builder.hpp deleted file mode 100644 index 480e4f7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__builder.hpp +++ /dev/null @@ -1,151 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__BUILDER_HPP_ - -#include "unitree_go/msg/detail/path_point__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_PathPoint_vyaw -{ -public: - explicit Init_PathPoint_vyaw(::unitree_go::msg::PathPoint & msg) - : msg_(msg) - {} - ::unitree_go::msg::PathPoint vyaw(::unitree_go::msg::PathPoint::_vyaw_type arg) - { - msg_.vyaw = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::PathPoint msg_; -}; - -class Init_PathPoint_vy -{ -public: - explicit Init_PathPoint_vy(::unitree_go::msg::PathPoint & msg) - : msg_(msg) - {} - Init_PathPoint_vyaw vy(::unitree_go::msg::PathPoint::_vy_type arg) - { - msg_.vy = std::move(arg); - return Init_PathPoint_vyaw(msg_); - } - -private: - ::unitree_go::msg::PathPoint msg_; -}; - -class Init_PathPoint_vx -{ -public: - explicit Init_PathPoint_vx(::unitree_go::msg::PathPoint & msg) - : msg_(msg) - {} - Init_PathPoint_vy vx(::unitree_go::msg::PathPoint::_vx_type arg) - { - msg_.vx = std::move(arg); - return Init_PathPoint_vy(msg_); - } - -private: - ::unitree_go::msg::PathPoint msg_; -}; - -class Init_PathPoint_yaw -{ -public: - explicit Init_PathPoint_yaw(::unitree_go::msg::PathPoint & msg) - : msg_(msg) - {} - Init_PathPoint_vx yaw(::unitree_go::msg::PathPoint::_yaw_type arg) - { - msg_.yaw = std::move(arg); - return Init_PathPoint_vx(msg_); - } - -private: - ::unitree_go::msg::PathPoint msg_; -}; - -class Init_PathPoint_y -{ -public: - explicit Init_PathPoint_y(::unitree_go::msg::PathPoint & msg) - : msg_(msg) - {} - Init_PathPoint_yaw y(::unitree_go::msg::PathPoint::_y_type arg) - { - msg_.y = std::move(arg); - return Init_PathPoint_yaw(msg_); - } - -private: - ::unitree_go::msg::PathPoint msg_; -}; - -class Init_PathPoint_x -{ -public: - explicit Init_PathPoint_x(::unitree_go::msg::PathPoint & msg) - : msg_(msg) - {} - Init_PathPoint_y x(::unitree_go::msg::PathPoint::_x_type arg) - { - msg_.x = std::move(arg); - return Init_PathPoint_y(msg_); - } - -private: - ::unitree_go::msg::PathPoint msg_; -}; - -class Init_PathPoint_t_from_start -{ -public: - Init_PathPoint_t_from_start() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_PathPoint_x t_from_start(::unitree_go::msg::PathPoint::_t_from_start_type arg) - { - msg_.t_from_start = std::move(arg); - return Init_PathPoint_x(msg_); - } - -private: - ::unitree_go::msg::PathPoint msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::PathPoint>() -{ - return unitree_go::msg::builder::Init_PathPoint_t_from_start(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.c deleted file mode 100644 index ee9e885..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.c +++ /dev/null @@ -1,279 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/path_point__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__PathPoint__init(unitree_go__msg__PathPoint * msg) -{ - if (!msg) { - return false; - } - // t_from_start - // x - // y - // yaw - // vx - // vy - // vyaw - return true; -} - -void -unitree_go__msg__PathPoint__fini(unitree_go__msg__PathPoint * msg) -{ - if (!msg) { - return; - } - // t_from_start - // x - // y - // yaw - // vx - // vy - // vyaw -} - -bool -unitree_go__msg__PathPoint__are_equal(const unitree_go__msg__PathPoint * lhs, const unitree_go__msg__PathPoint * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // t_from_start - if (lhs->t_from_start != rhs->t_from_start) { - return false; - } - // x - if (lhs->x != rhs->x) { - return false; - } - // y - if (lhs->y != rhs->y) { - return false; - } - // yaw - if (lhs->yaw != rhs->yaw) { - return false; - } - // vx - if (lhs->vx != rhs->vx) { - return false; - } - // vy - if (lhs->vy != rhs->vy) { - return false; - } - // vyaw - if (lhs->vyaw != rhs->vyaw) { - return false; - } - return true; -} - -bool -unitree_go__msg__PathPoint__copy( - const unitree_go__msg__PathPoint * input, - unitree_go__msg__PathPoint * output) -{ - if (!input || !output) { - return false; - } - // t_from_start - output->t_from_start = input->t_from_start; - // x - output->x = input->x; - // y - output->y = input->y; - // yaw - output->yaw = input->yaw; - // vx - output->vx = input->vx; - // vy - output->vy = input->vy; - // vyaw - output->vyaw = input->vyaw; - return true; -} - -unitree_go__msg__PathPoint * -unitree_go__msg__PathPoint__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__PathPoint * msg = (unitree_go__msg__PathPoint *)allocator.allocate(sizeof(unitree_go__msg__PathPoint), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__PathPoint)); - bool success = unitree_go__msg__PathPoint__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__PathPoint__destroy(unitree_go__msg__PathPoint * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__PathPoint__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__PathPoint__Sequence__init(unitree_go__msg__PathPoint__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__PathPoint * data = NULL; - - if (size) { - data = (unitree_go__msg__PathPoint *)allocator.zero_allocate(size, sizeof(unitree_go__msg__PathPoint), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__PathPoint__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__PathPoint__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__PathPoint__Sequence__fini(unitree_go__msg__PathPoint__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__PathPoint__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__PathPoint__Sequence * -unitree_go__msg__PathPoint__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__PathPoint__Sequence * array = (unitree_go__msg__PathPoint__Sequence *)allocator.allocate(sizeof(unitree_go__msg__PathPoint__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__PathPoint__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__PathPoint__Sequence__destroy(unitree_go__msg__PathPoint__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__PathPoint__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__PathPoint__Sequence__are_equal(const unitree_go__msg__PathPoint__Sequence * lhs, const unitree_go__msg__PathPoint__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__PathPoint__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__PathPoint__Sequence__copy( - const unitree_go__msg__PathPoint__Sequence * input, - unitree_go__msg__PathPoint__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__PathPoint); - unitree_go__msg__PathPoint * data = - (unitree_go__msg__PathPoint *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__PathPoint__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__PathPoint__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__PathPoint__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.h deleted file mode 100644 index 679f242..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/path_point__struct.h" - -/// Initialize msg/PathPoint message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__PathPoint - * )) before or use - * unitree_go__msg__PathPoint__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__PathPoint__init(unitree_go__msg__PathPoint * msg); - -/// Finalize msg/PathPoint message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__PathPoint__fini(unitree_go__msg__PathPoint * msg); - -/// Create msg/PathPoint message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__PathPoint__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__PathPoint * -unitree_go__msg__PathPoint__create(); - -/// Destroy msg/PathPoint message. -/** - * It calls - * unitree_go__msg__PathPoint__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__PathPoint__destroy(unitree_go__msg__PathPoint * msg); - -/// Check for msg/PathPoint message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__PathPoint__are_equal(const unitree_go__msg__PathPoint * lhs, const unitree_go__msg__PathPoint * rhs); - -/// Copy a msg/PathPoint message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__PathPoint__copy( - const unitree_go__msg__PathPoint * input, - unitree_go__msg__PathPoint * output); - -/// Initialize array of msg/PathPoint messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__PathPoint__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__PathPoint__Sequence__init(unitree_go__msg__PathPoint__Sequence * array, size_t size); - -/// Finalize array of msg/PathPoint messages. -/** - * It calls - * unitree_go__msg__PathPoint__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__PathPoint__Sequence__fini(unitree_go__msg__PathPoint__Sequence * array); - -/// Create array of msg/PathPoint messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__PathPoint__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__PathPoint__Sequence * -unitree_go__msg__PathPoint__Sequence__create(size_t size); - -/// Destroy array of msg/PathPoint messages. -/** - * It calls - * unitree_go__msg__PathPoint__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__PathPoint__Sequence__destroy(unitree_go__msg__PathPoint__Sequence * array); - -/// Check for msg/PathPoint message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__PathPoint__Sequence__are_equal(const unitree_go__msg__PathPoint__Sequence * lhs, const unitree_go__msg__PathPoint__Sequence * rhs); - -/// Copy an array of msg/PathPoint messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__PathPoint__Sequence__copy( - const unitree_go__msg__PathPoint__Sequence * input, - unitree_go__msg__PathPoint__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index f1ee400..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__PathPoint( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__PathPoint( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, PathPoint)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 2218e77..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/path_point__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::PathPoint & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::PathPoint & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::PathPoint & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_PathPoint( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, PathPoint)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_c.h deleted file mode 100644 index a3d256b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, PathPoint)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 26eaf44..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, PathPoint)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.h deleted file mode 100644 index 10d75fe..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.h +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/PathPoint in the package unitree_go. -typedef struct unitree_go__msg__PathPoint -{ - float t_from_start; - float x; - float y; - float yaw; - float vx; - float vy; - float vyaw; -} unitree_go__msg__PathPoint; - -// Struct for a sequence of unitree_go__msg__PathPoint. -typedef struct unitree_go__msg__PathPoint__Sequence -{ - unitree_go__msg__PathPoint * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__PathPoint__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.hpp deleted file mode 100644 index 81630fb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__struct.hpp +++ /dev/null @@ -1,214 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__PathPoint __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__PathPoint __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct PathPoint_ -{ - using Type = PathPoint_; - - explicit PathPoint_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->t_from_start = 0.0f; - this->x = 0.0f; - this->y = 0.0f; - this->yaw = 0.0f; - this->vx = 0.0f; - this->vy = 0.0f; - this->vyaw = 0.0f; - } - } - - explicit PathPoint_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->t_from_start = 0.0f; - this->x = 0.0f; - this->y = 0.0f; - this->yaw = 0.0f; - this->vx = 0.0f; - this->vy = 0.0f; - this->vyaw = 0.0f; - } - } - - // field types and members - using _t_from_start_type = - float; - _t_from_start_type t_from_start; - using _x_type = - float; - _x_type x; - using _y_type = - float; - _y_type y; - using _yaw_type = - float; - _yaw_type yaw; - using _vx_type = - float; - _vx_type vx; - using _vy_type = - float; - _vy_type vy; - using _vyaw_type = - float; - _vyaw_type vyaw; - - // setters for named parameter idiom - Type & set__t_from_start( - const float & _arg) - { - this->t_from_start = _arg; - return *this; - } - Type & set__x( - const float & _arg) - { - this->x = _arg; - return *this; - } - Type & set__y( - const float & _arg) - { - this->y = _arg; - return *this; - } - Type & set__yaw( - const float & _arg) - { - this->yaw = _arg; - return *this; - } - Type & set__vx( - const float & _arg) - { - this->vx = _arg; - return *this; - } - Type & set__vy( - const float & _arg) - { - this->vy = _arg; - return *this; - } - Type & set__vyaw( - const float & _arg) - { - this->vyaw = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::PathPoint_ *; - using ConstRawPtr = - const unitree_go::msg::PathPoint_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__PathPoint - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__PathPoint - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const PathPoint_ & other) const - { - if (this->t_from_start != other.t_from_start) { - return false; - } - if (this->x != other.x) { - return false; - } - if (this->y != other.y) { - return false; - } - if (this->yaw != other.yaw) { - return false; - } - if (this->vx != other.vx) { - return false; - } - if (this->vy != other.vy) { - return false; - } - if (this->vyaw != other.vyaw) { - return false; - } - return true; - } - bool operator!=(const PathPoint_ & other) const - { - return !this->operator==(other); - } -}; // struct PathPoint_ - -// alias to use template instance with default allocator -using PathPoint = - unitree_go::msg::PathPoint_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__traits.hpp deleted file mode 100644 index ed48ad0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__TRAITS_HPP_ - -#include "unitree_go/msg/detail/path_point__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::PathPoint"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/PathPoint"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.c deleted file mode 100644 index 866f188..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.c +++ /dev/null @@ -1,171 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/path_point__functions.h" -#include "unitree_go/msg/detail/path_point__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void PathPoint__rosidl_typesupport_introspection_c__PathPoint_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__PathPoint__init(message_memory); -} - -void PathPoint__rosidl_typesupport_introspection_c__PathPoint_fini_function(void * message_memory) -{ - unitree_go__msg__PathPoint__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_member_array[7] = { - { - "t_from_start", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__PathPoint, t_from_start), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "x", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__PathPoint, x), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "y", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__PathPoint, y), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "yaw", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__PathPoint, yaw), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "vx", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__PathPoint, vx), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "vy", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__PathPoint, vy), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "vyaw", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__PathPoint, vyaw), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_members = { - "unitree_go__msg", // message namespace - "PathPoint", // message name - 7, // number of fields - sizeof(unitree_go__msg__PathPoint), - PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_member_array, // message members - PathPoint__rosidl_typesupport_introspection_c__PathPoint_init_function, // function to initialize message memory (memory has to be allocated) - PathPoint__rosidl_typesupport_introspection_c__PathPoint_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_type_support_handle = { - 0, - &PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, PathPoint)() { - if (!PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_type_support_handle.typesupport_identifier) { - PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &PathPoint__rosidl_typesupport_introspection_c__PathPoint_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.cpp deleted file mode 100644 index 1b07bc5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.cpp +++ /dev/null @@ -1,197 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/path_point__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void PathPoint_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::PathPoint(_init); -} - -void PathPoint_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~PathPoint(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember PathPoint_message_member_array[7] = { - { - "t_from_start", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::PathPoint, t_from_start), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "x", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::PathPoint, x), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "y", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::PathPoint, y), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "yaw", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::PathPoint, yaw), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "vx", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::PathPoint, vx), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "vy", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::PathPoint, vy), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "vyaw", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::PathPoint, vyaw), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers PathPoint_message_members = { - "unitree_go::msg", // message namespace - "PathPoint", // message name - 7, // number of fields - sizeof(unitree_go::msg::PathPoint), - PathPoint_message_member_array, // message members - PathPoint_init_function, // function to initialize message memory (memory has to be allocated) - PathPoint_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t PathPoint_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &PathPoint_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::PathPoint_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, PathPoint)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::PathPoint_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.h deleted file mode 100644 index 78f2d25..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - PathPoint -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.hpp deleted file mode 100644 index f890102..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/path_point__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__PATH_POINT__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__PATH_POINT__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - PathPoint -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__PATH_POINT__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__builder.hpp deleted file mode 100644 index ee1922b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__REQ__BUILDER_HPP_ - -#include "unitree_go/msg/detail/req__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_Req_body -{ -public: - explicit Init_Req_body(::unitree_go::msg::Req & msg) - : msg_(msg) - {} - ::unitree_go::msg::Req body(::unitree_go::msg::Req::_body_type arg) - { - msg_.body = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::Req msg_; -}; - -class Init_Req_uuid -{ -public: - Init_Req_uuid() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_Req_body uuid(::unitree_go::msg::Req::_uuid_type arg) - { - msg_.uuid = std::move(arg); - return Init_Req_body(msg_); - } - -private: - ::unitree_go::msg::Req msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::Req>() -{ - return unitree_go::msg::builder::Init_Req_uuid(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__REQ__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.c deleted file mode 100644 index 648e054..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.c +++ /dev/null @@ -1,266 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/req__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `uuid` -// Member `body` -#include "rosidl_runtime_c/string_functions.h" - -bool -unitree_go__msg__Req__init(unitree_go__msg__Req * msg) -{ - if (!msg) { - return false; - } - // uuid - if (!rosidl_runtime_c__String__init(&msg->uuid)) { - unitree_go__msg__Req__fini(msg); - return false; - } - // body - if (!rosidl_runtime_c__String__init(&msg->body)) { - unitree_go__msg__Req__fini(msg); - return false; - } - return true; -} - -void -unitree_go__msg__Req__fini(unitree_go__msg__Req * msg) -{ - if (!msg) { - return; - } - // uuid - rosidl_runtime_c__String__fini(&msg->uuid); - // body - rosidl_runtime_c__String__fini(&msg->body); -} - -bool -unitree_go__msg__Req__are_equal(const unitree_go__msg__Req * lhs, const unitree_go__msg__Req * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // uuid - if (!rosidl_runtime_c__String__are_equal( - &(lhs->uuid), &(rhs->uuid))) - { - return false; - } - // body - if (!rosidl_runtime_c__String__are_equal( - &(lhs->body), &(rhs->body))) - { - return false; - } - return true; -} - -bool -unitree_go__msg__Req__copy( - const unitree_go__msg__Req * input, - unitree_go__msg__Req * output) -{ - if (!input || !output) { - return false; - } - // uuid - if (!rosidl_runtime_c__String__copy( - &(input->uuid), &(output->uuid))) - { - return false; - } - // body - if (!rosidl_runtime_c__String__copy( - &(input->body), &(output->body))) - { - return false; - } - return true; -} - -unitree_go__msg__Req * -unitree_go__msg__Req__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Req * msg = (unitree_go__msg__Req *)allocator.allocate(sizeof(unitree_go__msg__Req), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__Req)); - bool success = unitree_go__msg__Req__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__Req__destroy(unitree_go__msg__Req * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__Req__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__Req__Sequence__init(unitree_go__msg__Req__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Req * data = NULL; - - if (size) { - data = (unitree_go__msg__Req *)allocator.zero_allocate(size, sizeof(unitree_go__msg__Req), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__Req__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__Req__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__Req__Sequence__fini(unitree_go__msg__Req__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__Req__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__Req__Sequence * -unitree_go__msg__Req__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Req__Sequence * array = (unitree_go__msg__Req__Sequence *)allocator.allocate(sizeof(unitree_go__msg__Req__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__Req__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__Req__Sequence__destroy(unitree_go__msg__Req__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__Req__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__Req__Sequence__are_equal(const unitree_go__msg__Req__Sequence * lhs, const unitree_go__msg__Req__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__Req__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__Req__Sequence__copy( - const unitree_go__msg__Req__Sequence * input, - unitree_go__msg__Req__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__Req); - unitree_go__msg__Req * data = - (unitree_go__msg__Req *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__Req__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__Req__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__Req__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.h deleted file mode 100644 index 32d6d67..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__REQ__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/req__struct.h" - -/// Initialize msg/Req message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__Req - * )) before or use - * unitree_go__msg__Req__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Req__init(unitree_go__msg__Req * msg); - -/// Finalize msg/Req message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Req__fini(unitree_go__msg__Req * msg); - -/// Create msg/Req message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__Req__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Req * -unitree_go__msg__Req__create(); - -/// Destroy msg/Req message. -/** - * It calls - * unitree_go__msg__Req__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Req__destroy(unitree_go__msg__Req * msg); - -/// Check for msg/Req message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Req__are_equal(const unitree_go__msg__Req * lhs, const unitree_go__msg__Req * rhs); - -/// Copy a msg/Req message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Req__copy( - const unitree_go__msg__Req * input, - unitree_go__msg__Req * output); - -/// Initialize array of msg/Req messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__Req__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Req__Sequence__init(unitree_go__msg__Req__Sequence * array, size_t size); - -/// Finalize array of msg/Req messages. -/** - * It calls - * unitree_go__msg__Req__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Req__Sequence__fini(unitree_go__msg__Req__Sequence * array); - -/// Create array of msg/Req messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__Req__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Req__Sequence * -unitree_go__msg__Req__Sequence__create(size_t size); - -/// Destroy array of msg/Req messages. -/** - * It calls - * unitree_go__msg__Req__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Req__Sequence__destroy(unitree_go__msg__Req__Sequence * array); - -/// Check for msg/Req message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Req__Sequence__are_equal(const unitree_go__msg__Req__Sequence * lhs, const unitree_go__msg__Req__Sequence * rhs); - -/// Copy an array of msg/Req messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Req__Sequence__copy( - const unitree_go__msg__Req__Sequence * input, - unitree_go__msg__Req__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 8a60f3b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__Req( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__Req( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, Req)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index b888527..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/req__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::Req & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::Req & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::Req & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_Req( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, Req)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 76f8331..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Req)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 1c49e1e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Req)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.h deleted file mode 100644 index dfda661..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.h +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__REQ__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'uuid' -// Member 'body' -#include "rosidl_runtime_c/string.h" - -// Struct defined in msg/Req in the package unitree_go. -typedef struct unitree_go__msg__Req -{ - rosidl_runtime_c__String uuid; - rosidl_runtime_c__String body; -} unitree_go__msg__Req; - -// Struct for a sequence of unitree_go__msg__Req. -typedef struct unitree_go__msg__Req__Sequence -{ - unitree_go__msg__Req * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__Req__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.hpp deleted file mode 100644 index c21935c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__struct.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__REQ__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__Req __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__Req __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct Req_ -{ - using Type = Req_; - - explicit Req_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->uuid = ""; - this->body = ""; - } - } - - explicit Req_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : uuid(_alloc), - body(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->uuid = ""; - this->body = ""; - } - } - - // field types and members - using _uuid_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _uuid_type uuid; - using _body_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _body_type body; - - // setters for named parameter idiom - Type & set__uuid( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->uuid = _arg; - return *this; - } - Type & set__body( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->body = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::Req_ *; - using ConstRawPtr = - const unitree_go::msg::Req_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__Req - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__Req - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const Req_ & other) const - { - if (this->uuid != other.uuid) { - return false; - } - if (this->body != other.body) { - return false; - } - return true; - } - bool operator!=(const Req_ & other) const - { - return !this->operator==(other); - } -}; // struct Req_ - -// alias to use template instance with default allocator -using Req = - unitree_go::msg::Req_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__REQ__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__traits.hpp deleted file mode 100644 index 5fc99c1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__REQ__TRAITS_HPP_ - -#include "unitree_go/msg/detail/req__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::Req"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/Req"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__REQ__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.c deleted file mode 100644 index 29996a1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.c +++ /dev/null @@ -1,101 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/req__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/req__functions.h" -#include "unitree_go/msg/detail/req__struct.h" - - -// Include directives for member types -// Member `uuid` -// Member `body` -#include "rosidl_runtime_c/string_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void Req__rosidl_typesupport_introspection_c__Req_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__Req__init(message_memory); -} - -void Req__rosidl_typesupport_introspection_c__Req_fini_function(void * message_memory) -{ - unitree_go__msg__Req__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember Req__rosidl_typesupport_introspection_c__Req_message_member_array[2] = { - { - "uuid", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Req, uuid), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "body", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Req, body), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers Req__rosidl_typesupport_introspection_c__Req_message_members = { - "unitree_go__msg", // message namespace - "Req", // message name - 2, // number of fields - sizeof(unitree_go__msg__Req), - Req__rosidl_typesupport_introspection_c__Req_message_member_array, // message members - Req__rosidl_typesupport_introspection_c__Req_init_function, // function to initialize message memory (memory has to be allocated) - Req__rosidl_typesupport_introspection_c__Req_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t Req__rosidl_typesupport_introspection_c__Req_message_type_support_handle = { - 0, - &Req__rosidl_typesupport_introspection_c__Req_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Req)() { - if (!Req__rosidl_typesupport_introspection_c__Req_message_type_support_handle.typesupport_identifier) { - Req__rosidl_typesupport_introspection_c__Req_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &Req__rosidl_typesupport_introspection_c__Req_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.cpp deleted file mode 100644 index 0f8d54e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/req__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void Req_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::Req(_init); -} - -void Req_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~Req(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember Req_message_member_array[2] = { - { - "uuid", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Req, uuid), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "body", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Req, body), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers Req_message_members = { - "unitree_go::msg", // message namespace - "Req", // message name - 2, // number of fields - sizeof(unitree_go::msg::Req), - Req_message_member_array, // message members - Req_init_function, // function to initialize message memory (memory has to be allocated) - Req_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t Req_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &Req_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Req_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Req)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Req_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.h deleted file mode 100644 index b62b1e6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__REQ__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - Req -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.hpp deleted file mode 100644 index f7ee4bc..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/req__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__REQ__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__REQ__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - Req -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__REQ__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__builder.hpp deleted file mode 100644 index 734b284..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__builder.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__RES__BUILDER_HPP_ - -#include "unitree_go/msg/detail/res__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_Res_body -{ -public: - explicit Init_Res_body(::unitree_go::msg::Res & msg) - : msg_(msg) - {} - ::unitree_go::msg::Res body(::unitree_go::msg::Res::_body_type arg) - { - msg_.body = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::Res msg_; -}; - -class Init_Res_data -{ -public: - explicit Init_Res_data(::unitree_go::msg::Res & msg) - : msg_(msg) - {} - Init_Res_body data(::unitree_go::msg::Res::_data_type arg) - { - msg_.data = std::move(arg); - return Init_Res_body(msg_); - } - -private: - ::unitree_go::msg::Res msg_; -}; - -class Init_Res_uuid -{ -public: - Init_Res_uuid() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_Res_data uuid(::unitree_go::msg::Res::_uuid_type arg) - { - msg_.uuid = std::move(arg); - return Init_Res_data(msg_); - } - -private: - ::unitree_go::msg::Res msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::Res>() -{ - return unitree_go::msg::builder::Init_Res_uuid(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__RES__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.c deleted file mode 100644 index 1a6194e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.c +++ /dev/null @@ -1,287 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/res__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `uuid` -// Member `body` -#include "rosidl_runtime_c/string_functions.h" -// Member `data` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool -unitree_go__msg__Res__init(unitree_go__msg__Res * msg) -{ - if (!msg) { - return false; - } - // uuid - if (!rosidl_runtime_c__String__init(&msg->uuid)) { - unitree_go__msg__Res__fini(msg); - return false; - } - // data - if (!rosidl_runtime_c__uint8__Sequence__init(&msg->data, 0)) { - unitree_go__msg__Res__fini(msg); - return false; - } - // body - if (!rosidl_runtime_c__String__init(&msg->body)) { - unitree_go__msg__Res__fini(msg); - return false; - } - return true; -} - -void -unitree_go__msg__Res__fini(unitree_go__msg__Res * msg) -{ - if (!msg) { - return; - } - // uuid - rosidl_runtime_c__String__fini(&msg->uuid); - // data - rosidl_runtime_c__uint8__Sequence__fini(&msg->data); - // body - rosidl_runtime_c__String__fini(&msg->body); -} - -bool -unitree_go__msg__Res__are_equal(const unitree_go__msg__Res * lhs, const unitree_go__msg__Res * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // uuid - if (!rosidl_runtime_c__String__are_equal( - &(lhs->uuid), &(rhs->uuid))) - { - return false; - } - // data - if (!rosidl_runtime_c__uint8__Sequence__are_equal( - &(lhs->data), &(rhs->data))) - { - return false; - } - // body - if (!rosidl_runtime_c__String__are_equal( - &(lhs->body), &(rhs->body))) - { - return false; - } - return true; -} - -bool -unitree_go__msg__Res__copy( - const unitree_go__msg__Res * input, - unitree_go__msg__Res * output) -{ - if (!input || !output) { - return false; - } - // uuid - if (!rosidl_runtime_c__String__copy( - &(input->uuid), &(output->uuid))) - { - return false; - } - // data - if (!rosidl_runtime_c__uint8__Sequence__copy( - &(input->data), &(output->data))) - { - return false; - } - // body - if (!rosidl_runtime_c__String__copy( - &(input->body), &(output->body))) - { - return false; - } - return true; -} - -unitree_go__msg__Res * -unitree_go__msg__Res__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Res * msg = (unitree_go__msg__Res *)allocator.allocate(sizeof(unitree_go__msg__Res), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__Res)); - bool success = unitree_go__msg__Res__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__Res__destroy(unitree_go__msg__Res * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__Res__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__Res__Sequence__init(unitree_go__msg__Res__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Res * data = NULL; - - if (size) { - data = (unitree_go__msg__Res *)allocator.zero_allocate(size, sizeof(unitree_go__msg__Res), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__Res__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__Res__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__Res__Sequence__fini(unitree_go__msg__Res__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__Res__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__Res__Sequence * -unitree_go__msg__Res__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__Res__Sequence * array = (unitree_go__msg__Res__Sequence *)allocator.allocate(sizeof(unitree_go__msg__Res__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__Res__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__Res__Sequence__destroy(unitree_go__msg__Res__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__Res__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__Res__Sequence__are_equal(const unitree_go__msg__Res__Sequence * lhs, const unitree_go__msg__Res__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__Res__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__Res__Sequence__copy( - const unitree_go__msg__Res__Sequence * input, - unitree_go__msg__Res__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__Res); - unitree_go__msg__Res * data = - (unitree_go__msg__Res *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__Res__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__Res__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__Res__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.h deleted file mode 100644 index 81fddbe..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__RES__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/res__struct.h" - -/// Initialize msg/Res message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__Res - * )) before or use - * unitree_go__msg__Res__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Res__init(unitree_go__msg__Res * msg); - -/// Finalize msg/Res message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Res__fini(unitree_go__msg__Res * msg); - -/// Create msg/Res message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__Res__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Res * -unitree_go__msg__Res__create(); - -/// Destroy msg/Res message. -/** - * It calls - * unitree_go__msg__Res__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Res__destroy(unitree_go__msg__Res * msg); - -/// Check for msg/Res message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Res__are_equal(const unitree_go__msg__Res * lhs, const unitree_go__msg__Res * rhs); - -/// Copy a msg/Res message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Res__copy( - const unitree_go__msg__Res * input, - unitree_go__msg__Res * output); - -/// Initialize array of msg/Res messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__Res__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Res__Sequence__init(unitree_go__msg__Res__Sequence * array, size_t size); - -/// Finalize array of msg/Res messages. -/** - * It calls - * unitree_go__msg__Res__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Res__Sequence__fini(unitree_go__msg__Res__Sequence * array); - -/// Create array of msg/Res messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__Res__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__Res__Sequence * -unitree_go__msg__Res__Sequence__create(size_t size); - -/// Destroy array of msg/Res messages. -/** - * It calls - * unitree_go__msg__Res__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__Res__Sequence__destroy(unitree_go__msg__Res__Sequence * array); - -/// Check for msg/Res message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Res__Sequence__are_equal(const unitree_go__msg__Res__Sequence * lhs, const unitree_go__msg__Res__Sequence * rhs); - -/// Copy an array of msg/Res messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__Res__Sequence__copy( - const unitree_go__msg__Res__Sequence * input, - unitree_go__msg__Res__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 40ae30f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__Res( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__Res( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, Res)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index eacf6e5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/res__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::Res & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::Res & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::Res & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_Res( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, Res)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_c.h deleted file mode 100644 index a4af5bd..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Res)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index d3e3967..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Res)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.h deleted file mode 100644 index ac3ce4b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.h +++ /dev/null @@ -1,49 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__RES__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'uuid' -// Member 'body' -#include "rosidl_runtime_c/string.h" -// Member 'data' -#include "rosidl_runtime_c/primitives_sequence.h" - -// Struct defined in msg/Res in the package unitree_go. -typedef struct unitree_go__msg__Res -{ - rosidl_runtime_c__String uuid; - rosidl_runtime_c__uint8__Sequence data; - rosidl_runtime_c__String body; -} unitree_go__msg__Res; - -// Struct for a sequence of unitree_go__msg__Res. -typedef struct unitree_go__msg__Res__Sequence -{ - unitree_go__msg__Res * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__Res__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.hpp deleted file mode 100644 index 6b17a00..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__struct.hpp +++ /dev/null @@ -1,157 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__RES__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__Res __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__Res __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct Res_ -{ - using Type = Res_; - - explicit Res_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->uuid = ""; - this->body = ""; - } - } - - explicit Res_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : uuid(_alloc), - body(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->uuid = ""; - this->body = ""; - } - } - - // field types and members - using _uuid_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _uuid_type uuid; - using _data_type = - std::vector::other>; - _data_type data; - using _body_type = - std::basic_string, typename ContainerAllocator::template rebind::other>; - _body_type body; - - // setters for named parameter idiom - Type & set__uuid( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->uuid = _arg; - return *this; - } - Type & set__data( - const std::vector::other> & _arg) - { - this->data = _arg; - return *this; - } - Type & set__body( - const std::basic_string, typename ContainerAllocator::template rebind::other> & _arg) - { - this->body = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::Res_ *; - using ConstRawPtr = - const unitree_go::msg::Res_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__Res - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__Res - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const Res_ & other) const - { - if (this->uuid != other.uuid) { - return false; - } - if (this->data != other.data) { - return false; - } - if (this->body != other.body) { - return false; - } - return true; - } - bool operator!=(const Res_ & other) const - { - return !this->operator==(other); - } -}; // struct Res_ - -// alias to use template instance with default allocator -using Res = - unitree_go::msg::Res_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__RES__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__traits.hpp deleted file mode 100644 index f75a121..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__RES__TRAITS_HPP_ - -#include "unitree_go/msg/detail/res__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::Res"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/Res"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__RES__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.c deleted file mode 100644 index bec88c1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.c +++ /dev/null @@ -1,118 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/res__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/res__functions.h" -#include "unitree_go/msg/detail/res__struct.h" - - -// Include directives for member types -// Member `uuid` -// Member `body` -#include "rosidl_runtime_c/string_functions.h" -// Member `data` -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void Res__rosidl_typesupport_introspection_c__Res_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__Res__init(message_memory); -} - -void Res__rosidl_typesupport_introspection_c__Res_fini_function(void * message_memory) -{ - unitree_go__msg__Res__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember Res__rosidl_typesupport_introspection_c__Res_message_member_array[3] = { - { - "uuid", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Res, uuid), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "data", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Res, data), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "body", // name - rosidl_typesupport_introspection_c__ROS_TYPE_STRING, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__Res, body), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers Res__rosidl_typesupport_introspection_c__Res_message_members = { - "unitree_go__msg", // message namespace - "Res", // message name - 3, // number of fields - sizeof(unitree_go__msg__Res), - Res__rosidl_typesupport_introspection_c__Res_message_member_array, // message members - Res__rosidl_typesupport_introspection_c__Res_init_function, // function to initialize message memory (memory has to be allocated) - Res__rosidl_typesupport_introspection_c__Res_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t Res__rosidl_typesupport_introspection_c__Res_message_type_support_handle = { - 0, - &Res__rosidl_typesupport_introspection_c__Res_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, Res)() { - if (!Res__rosidl_typesupport_introspection_c__Res_message_type_support_handle.typesupport_identifier) { - Res__rosidl_typesupport_introspection_c__Res_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &Res__rosidl_typesupport_introspection_c__Res_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.cpp deleted file mode 100644 index e489ff8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/res__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void Res_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::Res(_init); -} - -void Res_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~Res(); -} - -size_t size_function__Res__data(const void * untyped_member) -{ - const auto * member = reinterpret_cast *>(untyped_member); - return member->size(); -} - -const void * get_const_function__Res__data(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__Res__data(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void resize_function__Res__data(void * untyped_member, size_t size) -{ - auto * member = - reinterpret_cast *>(untyped_member); - member->resize(size); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember Res_message_member_array[3] = { - { - "uuid", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Res, uuid), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "data", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Res, data), // bytes offset in struct - nullptr, // default value - size_function__Res__data, // size() function pointer - get_const_function__Res__data, // get_const(index) function pointer - get_function__Res__data, // get(index) function pointer - resize_function__Res__data // resize(index) function pointer - }, - { - "body", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_STRING, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::Res, body), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers Res_message_members = { - "unitree_go::msg", // message namespace - "Res", // message name - 3, // number of fields - sizeof(unitree_go::msg::Res), - Res_message_member_array, // message members - Res_init_function, // function to initialize message memory (memory has to be allocated) - Res_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t Res_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &Res_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Res_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, Res)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::Res_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.h deleted file mode 100644 index cdc5a32..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__RES__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - Res -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.hpp deleted file mode 100644 index 910817b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/res__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__RES__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__RES__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - Res -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__RES__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__builder.hpp deleted file mode 100644 index 1763725..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__builder.hpp +++ /dev/null @@ -1,215 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__BUILDER_HPP_ - -#include "unitree_go/msg/detail/sport_mode_cmd__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_SportModeCmd_path_point -{ -public: - explicit Init_SportModeCmd_path_point(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - ::unitree_go::msg::SportModeCmd path_point(::unitree_go::msg::SportModeCmd::_path_point_type arg) - { - msg_.path_point = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_bms_cmd -{ -public: - explicit Init_SportModeCmd_bms_cmd(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_path_point bms_cmd(::unitree_go::msg::SportModeCmd::_bms_cmd_type arg) - { - msg_.bms_cmd = std::move(arg); - return Init_SportModeCmd_path_point(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_yaw_speed -{ -public: - explicit Init_SportModeCmd_yaw_speed(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_bms_cmd yaw_speed(::unitree_go::msg::SportModeCmd::_yaw_speed_type arg) - { - msg_.yaw_speed = std::move(arg); - return Init_SportModeCmd_bms_cmd(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_velocity -{ -public: - explicit Init_SportModeCmd_velocity(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_yaw_speed velocity(::unitree_go::msg::SportModeCmd::_velocity_type arg) - { - msg_.velocity = std::move(arg); - return Init_SportModeCmd_yaw_speed(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_euler -{ -public: - explicit Init_SportModeCmd_euler(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_velocity euler(::unitree_go::msg::SportModeCmd::_euler_type arg) - { - msg_.euler = std::move(arg); - return Init_SportModeCmd_velocity(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_position -{ -public: - explicit Init_SportModeCmd_position(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_euler position(::unitree_go::msg::SportModeCmd::_position_type arg) - { - msg_.position = std::move(arg); - return Init_SportModeCmd_euler(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_body_height -{ -public: - explicit Init_SportModeCmd_body_height(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_position body_height(::unitree_go::msg::SportModeCmd::_body_height_type arg) - { - msg_.body_height = std::move(arg); - return Init_SportModeCmd_position(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_foot_raise_height -{ -public: - explicit Init_SportModeCmd_foot_raise_height(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_body_height foot_raise_height(::unitree_go::msg::SportModeCmd::_foot_raise_height_type arg) - { - msg_.foot_raise_height = std::move(arg); - return Init_SportModeCmd_body_height(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_speed_level -{ -public: - explicit Init_SportModeCmd_speed_level(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_foot_raise_height speed_level(::unitree_go::msg::SportModeCmd::_speed_level_type arg) - { - msg_.speed_level = std::move(arg); - return Init_SportModeCmd_foot_raise_height(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_gait_type -{ -public: - explicit Init_SportModeCmd_gait_type(::unitree_go::msg::SportModeCmd & msg) - : msg_(msg) - {} - Init_SportModeCmd_speed_level gait_type(::unitree_go::msg::SportModeCmd::_gait_type_type arg) - { - msg_.gait_type = std::move(arg); - return Init_SportModeCmd_speed_level(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -class Init_SportModeCmd_mode -{ -public: - Init_SportModeCmd_mode() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_SportModeCmd_gait_type mode(::unitree_go::msg::SportModeCmd::_mode_type arg) - { - msg_.mode = std::move(arg); - return Init_SportModeCmd_gait_type(msg_); - } - -private: - ::unitree_go::msg::SportModeCmd msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::SportModeCmd>() -{ - return unitree_go::msg::builder::Init_SportModeCmd_mode(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.c deleted file mode 100644 index 9f72fd6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.c +++ /dev/null @@ -1,359 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/sport_mode_cmd__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `bms_cmd` -#include "unitree_go/msg/detail/bms_cmd__functions.h" -// Member `path_point` -#include "unitree_go/msg/detail/path_point__functions.h" - -bool -unitree_go__msg__SportModeCmd__init(unitree_go__msg__SportModeCmd * msg) -{ - if (!msg) { - return false; - } - // mode - // gait_type - // speed_level - // foot_raise_height - // body_height - // position - // euler - // velocity - // yaw_speed - // bms_cmd - if (!unitree_go__msg__BmsCmd__init(&msg->bms_cmd)) { - unitree_go__msg__SportModeCmd__fini(msg); - return false; - } - // path_point - for (size_t i = 0; i < 30; ++i) { - if (!unitree_go__msg__PathPoint__init(&msg->path_point[i])) { - unitree_go__msg__SportModeCmd__fini(msg); - return false; - } - } - return true; -} - -void -unitree_go__msg__SportModeCmd__fini(unitree_go__msg__SportModeCmd * msg) -{ - if (!msg) { - return; - } - // mode - // gait_type - // speed_level - // foot_raise_height - // body_height - // position - // euler - // velocity - // yaw_speed - // bms_cmd - unitree_go__msg__BmsCmd__fini(&msg->bms_cmd); - // path_point - for (size_t i = 0; i < 30; ++i) { - unitree_go__msg__PathPoint__fini(&msg->path_point[i]); - } -} - -bool -unitree_go__msg__SportModeCmd__are_equal(const unitree_go__msg__SportModeCmd * lhs, const unitree_go__msg__SportModeCmd * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // mode - if (lhs->mode != rhs->mode) { - return false; - } - // gait_type - if (lhs->gait_type != rhs->gait_type) { - return false; - } - // speed_level - if (lhs->speed_level != rhs->speed_level) { - return false; - } - // foot_raise_height - if (lhs->foot_raise_height != rhs->foot_raise_height) { - return false; - } - // body_height - if (lhs->body_height != rhs->body_height) { - return false; - } - // position - for (size_t i = 0; i < 2; ++i) { - if (lhs->position[i] != rhs->position[i]) { - return false; - } - } - // euler - for (size_t i = 0; i < 3; ++i) { - if (lhs->euler[i] != rhs->euler[i]) { - return false; - } - } - // velocity - for (size_t i = 0; i < 2; ++i) { - if (lhs->velocity[i] != rhs->velocity[i]) { - return false; - } - } - // yaw_speed - if (lhs->yaw_speed != rhs->yaw_speed) { - return false; - } - // bms_cmd - if (!unitree_go__msg__BmsCmd__are_equal( - &(lhs->bms_cmd), &(rhs->bms_cmd))) - { - return false; - } - // path_point - for (size_t i = 0; i < 30; ++i) { - if (!unitree_go__msg__PathPoint__are_equal( - &(lhs->path_point[i]), &(rhs->path_point[i]))) - { - return false; - } - } - return true; -} - -bool -unitree_go__msg__SportModeCmd__copy( - const unitree_go__msg__SportModeCmd * input, - unitree_go__msg__SportModeCmd * output) -{ - if (!input || !output) { - return false; - } - // mode - output->mode = input->mode; - // gait_type - output->gait_type = input->gait_type; - // speed_level - output->speed_level = input->speed_level; - // foot_raise_height - output->foot_raise_height = input->foot_raise_height; - // body_height - output->body_height = input->body_height; - // position - for (size_t i = 0; i < 2; ++i) { - output->position[i] = input->position[i]; - } - // euler - for (size_t i = 0; i < 3; ++i) { - output->euler[i] = input->euler[i]; - } - // velocity - for (size_t i = 0; i < 2; ++i) { - output->velocity[i] = input->velocity[i]; - } - // yaw_speed - output->yaw_speed = input->yaw_speed; - // bms_cmd - if (!unitree_go__msg__BmsCmd__copy( - &(input->bms_cmd), &(output->bms_cmd))) - { - return false; - } - // path_point - for (size_t i = 0; i < 30; ++i) { - if (!unitree_go__msg__PathPoint__copy( - &(input->path_point[i]), &(output->path_point[i]))) - { - return false; - } - } - return true; -} - -unitree_go__msg__SportModeCmd * -unitree_go__msg__SportModeCmd__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__SportModeCmd * msg = (unitree_go__msg__SportModeCmd *)allocator.allocate(sizeof(unitree_go__msg__SportModeCmd), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__SportModeCmd)); - bool success = unitree_go__msg__SportModeCmd__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__SportModeCmd__destroy(unitree_go__msg__SportModeCmd * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__SportModeCmd__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__SportModeCmd__Sequence__init(unitree_go__msg__SportModeCmd__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__SportModeCmd * data = NULL; - - if (size) { - data = (unitree_go__msg__SportModeCmd *)allocator.zero_allocate(size, sizeof(unitree_go__msg__SportModeCmd), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__SportModeCmd__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__SportModeCmd__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__SportModeCmd__Sequence__fini(unitree_go__msg__SportModeCmd__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__SportModeCmd__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__SportModeCmd__Sequence * -unitree_go__msg__SportModeCmd__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__SportModeCmd__Sequence * array = (unitree_go__msg__SportModeCmd__Sequence *)allocator.allocate(sizeof(unitree_go__msg__SportModeCmd__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__SportModeCmd__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__SportModeCmd__Sequence__destroy(unitree_go__msg__SportModeCmd__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__SportModeCmd__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__SportModeCmd__Sequence__are_equal(const unitree_go__msg__SportModeCmd__Sequence * lhs, const unitree_go__msg__SportModeCmd__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__SportModeCmd__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__SportModeCmd__Sequence__copy( - const unitree_go__msg__SportModeCmd__Sequence * input, - unitree_go__msg__SportModeCmd__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__SportModeCmd); - unitree_go__msg__SportModeCmd * data = - (unitree_go__msg__SportModeCmd *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__SportModeCmd__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__SportModeCmd__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__SportModeCmd__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.h deleted file mode 100644 index d8208f1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/sport_mode_cmd__struct.h" - -/// Initialize msg/SportModeCmd message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__SportModeCmd - * )) before or use - * unitree_go__msg__SportModeCmd__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeCmd__init(unitree_go__msg__SportModeCmd * msg); - -/// Finalize msg/SportModeCmd message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeCmd__fini(unitree_go__msg__SportModeCmd * msg); - -/// Create msg/SportModeCmd message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__SportModeCmd__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__SportModeCmd * -unitree_go__msg__SportModeCmd__create(); - -/// Destroy msg/SportModeCmd message. -/** - * It calls - * unitree_go__msg__SportModeCmd__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeCmd__destroy(unitree_go__msg__SportModeCmd * msg); - -/// Check for msg/SportModeCmd message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeCmd__are_equal(const unitree_go__msg__SportModeCmd * lhs, const unitree_go__msg__SportModeCmd * rhs); - -/// Copy a msg/SportModeCmd message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeCmd__copy( - const unitree_go__msg__SportModeCmd * input, - unitree_go__msg__SportModeCmd * output); - -/// Initialize array of msg/SportModeCmd messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__SportModeCmd__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeCmd__Sequence__init(unitree_go__msg__SportModeCmd__Sequence * array, size_t size); - -/// Finalize array of msg/SportModeCmd messages. -/** - * It calls - * unitree_go__msg__SportModeCmd__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeCmd__Sequence__fini(unitree_go__msg__SportModeCmd__Sequence * array); - -/// Create array of msg/SportModeCmd messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__SportModeCmd__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__SportModeCmd__Sequence * -unitree_go__msg__SportModeCmd__Sequence__create(size_t size); - -/// Destroy array of msg/SportModeCmd messages. -/** - * It calls - * unitree_go__msg__SportModeCmd__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeCmd__Sequence__destroy(unitree_go__msg__SportModeCmd__Sequence * array); - -/// Check for msg/SportModeCmd message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeCmd__Sequence__are_equal(const unitree_go__msg__SportModeCmd__Sequence * lhs, const unitree_go__msg__SportModeCmd__Sequence * rhs); - -/// Copy an array of msg/SportModeCmd messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeCmd__Sequence__copy( - const unitree_go__msg__SportModeCmd__Sequence * input, - unitree_go__msg__SportModeCmd__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index d0dd1a6..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__SportModeCmd( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__SportModeCmd( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, SportModeCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index e7ba0cc..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/sport_mode_cmd__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::SportModeCmd & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::SportModeCmd & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::SportModeCmd & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_SportModeCmd( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, SportModeCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_c.h deleted file mode 100644 index 9a221af..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, SportModeCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 4c17d5f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, SportModeCmd)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.h deleted file mode 100644 index 94d8bb7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.h +++ /dev/null @@ -1,56 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'bms_cmd' -#include "unitree_go/msg/detail/bms_cmd__struct.h" -// Member 'path_point' -#include "unitree_go/msg/detail/path_point__struct.h" - -// Struct defined in msg/SportModeCmd in the package unitree_go. -typedef struct unitree_go__msg__SportModeCmd -{ - uint8_t mode; - uint8_t gait_type; - uint8_t speed_level; - float foot_raise_height; - float body_height; - float position[2]; - float euler[3]; - float velocity[2]; - float yaw_speed; - unitree_go__msg__BmsCmd bms_cmd; - unitree_go__msg__PathPoint path_point[30]; -} unitree_go__msg__SportModeCmd; - -// Struct for a sequence of unitree_go__msg__SportModeCmd. -typedef struct unitree_go__msg__SportModeCmd__Sequence -{ - unitree_go__msg__SportModeCmd * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__SportModeCmd__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.hpp deleted file mode 100644 index 7c92570..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__struct.hpp +++ /dev/null @@ -1,279 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'bms_cmd' -#include "unitree_go/msg/detail/bms_cmd__struct.hpp" -// Member 'path_point' -#include "unitree_go/msg/detail/path_point__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__SportModeCmd __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__SportModeCmd __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct SportModeCmd_ -{ - using Type = SportModeCmd_; - - explicit SportModeCmd_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : bms_cmd(_init) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->gait_type = 0; - this->speed_level = 0; - this->foot_raise_height = 0.0f; - this->body_height = 0.0f; - std::fill::iterator, float>(this->position.begin(), this->position.end(), 0.0f); - std::fill::iterator, float>(this->euler.begin(), this->euler.end(), 0.0f); - std::fill::iterator, float>(this->velocity.begin(), this->velocity.end(), 0.0f); - this->yaw_speed = 0.0f; - this->path_point.fill(unitree_go::msg::PathPoint_{_init}); - } - } - - explicit SportModeCmd_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : position(_alloc), - euler(_alloc), - velocity(_alloc), - bms_cmd(_alloc, _init), - path_point(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->mode = 0; - this->gait_type = 0; - this->speed_level = 0; - this->foot_raise_height = 0.0f; - this->body_height = 0.0f; - std::fill::iterator, float>(this->position.begin(), this->position.end(), 0.0f); - std::fill::iterator, float>(this->euler.begin(), this->euler.end(), 0.0f); - std::fill::iterator, float>(this->velocity.begin(), this->velocity.end(), 0.0f); - this->yaw_speed = 0.0f; - this->path_point.fill(unitree_go::msg::PathPoint_{_alloc, _init}); - } - } - - // field types and members - using _mode_type = - uint8_t; - _mode_type mode; - using _gait_type_type = - uint8_t; - _gait_type_type gait_type; - using _speed_level_type = - uint8_t; - _speed_level_type speed_level; - using _foot_raise_height_type = - float; - _foot_raise_height_type foot_raise_height; - using _body_height_type = - float; - _body_height_type body_height; - using _position_type = - std::array; - _position_type position; - using _euler_type = - std::array; - _euler_type euler; - using _velocity_type = - std::array; - _velocity_type velocity; - using _yaw_speed_type = - float; - _yaw_speed_type yaw_speed; - using _bms_cmd_type = - unitree_go::msg::BmsCmd_; - _bms_cmd_type bms_cmd; - using _path_point_type = - std::array, 30>; - _path_point_type path_point; - - // setters for named parameter idiom - Type & set__mode( - const uint8_t & _arg) - { - this->mode = _arg; - return *this; - } - Type & set__gait_type( - const uint8_t & _arg) - { - this->gait_type = _arg; - return *this; - } - Type & set__speed_level( - const uint8_t & _arg) - { - this->speed_level = _arg; - return *this; - } - Type & set__foot_raise_height( - const float & _arg) - { - this->foot_raise_height = _arg; - return *this; - } - Type & set__body_height( - const float & _arg) - { - this->body_height = _arg; - return *this; - } - Type & set__position( - const std::array & _arg) - { - this->position = _arg; - return *this; - } - Type & set__euler( - const std::array & _arg) - { - this->euler = _arg; - return *this; - } - Type & set__velocity( - const std::array & _arg) - { - this->velocity = _arg; - return *this; - } - Type & set__yaw_speed( - const float & _arg) - { - this->yaw_speed = _arg; - return *this; - } - Type & set__bms_cmd( - const unitree_go::msg::BmsCmd_ & _arg) - { - this->bms_cmd = _arg; - return *this; - } - Type & set__path_point( - const std::array, 30> & _arg) - { - this->path_point = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::SportModeCmd_ *; - using ConstRawPtr = - const unitree_go::msg::SportModeCmd_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__SportModeCmd - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__SportModeCmd - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const SportModeCmd_ & other) const - { - if (this->mode != other.mode) { - return false; - } - if (this->gait_type != other.gait_type) { - return false; - } - if (this->speed_level != other.speed_level) { - return false; - } - if (this->foot_raise_height != other.foot_raise_height) { - return false; - } - if (this->body_height != other.body_height) { - return false; - } - if (this->position != other.position) { - return false; - } - if (this->euler != other.euler) { - return false; - } - if (this->velocity != other.velocity) { - return false; - } - if (this->yaw_speed != other.yaw_speed) { - return false; - } - if (this->bms_cmd != other.bms_cmd) { - return false; - } - if (this->path_point != other.path_point) { - return false; - } - return true; - } - bool operator!=(const SportModeCmd_ & other) const - { - return !this->operator==(other); - } -}; // struct SportModeCmd_ - -// alias to use template instance with default allocator -using SportModeCmd = - unitree_go::msg::SportModeCmd_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__traits.hpp deleted file mode 100644 index 90843ed..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__traits.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TRAITS_HPP_ - -#include "unitree_go/msg/detail/sport_mode_cmd__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'bms_cmd' -#include "unitree_go/msg/detail/bms_cmd__traits.hpp" -// Member 'path_point' -#include "unitree_go/msg/detail/path_point__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::SportModeCmd"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/SportModeCmd"; -} - -template<> -struct has_fixed_size - : std::integral_constant::value && has_fixed_size::value> {}; - -template<> -struct has_bounded_size - : std::integral_constant::value && has_bounded_size::value> {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.c deleted file mode 100644 index 722d826..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.c +++ /dev/null @@ -1,268 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/sport_mode_cmd__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/sport_mode_cmd__functions.h" -#include "unitree_go/msg/detail/sport_mode_cmd__struct.h" - - -// Include directives for member types -// Member `bms_cmd` -#include "unitree_go/msg/bms_cmd.h" -// Member `bms_cmd` -#include "unitree_go/msg/detail/bms_cmd__rosidl_typesupport_introspection_c.h" -// Member `path_point` -#include "unitree_go/msg/path_point.h" -// Member `path_point` -#include "unitree_go/msg/detail/path_point__rosidl_typesupport_introspection_c.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__SportModeCmd__init(message_memory); -} - -void SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_fini_function(void * message_memory) -{ - unitree_go__msg__SportModeCmd__fini(message_memory); -} - -size_t SportModeCmd__rosidl_typesupport_introspection_c__size_function__PathPoint__path_point( - const void * untyped_member) -{ - (void)untyped_member; - return 30; -} - -const void * SportModeCmd__rosidl_typesupport_introspection_c__get_const_function__PathPoint__path_point( - const void * untyped_member, size_t index) -{ - const unitree_go__msg__PathPoint ** member = - (const unitree_go__msg__PathPoint **)(untyped_member); - return &(*member)[index]; -} - -void * SportModeCmd__rosidl_typesupport_introspection_c__get_function__PathPoint__path_point( - void * untyped_member, size_t index) -{ - unitree_go__msg__PathPoint ** member = - (unitree_go__msg__PathPoint **)(untyped_member); - return &(*member)[index]; -} - -static rosidl_typesupport_introspection_c__MessageMember SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_member_array[11] = { - { - "mode", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, mode), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "gait_type", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, gait_type), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "speed_level", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, speed_level), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "foot_raise_height", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, foot_raise_height), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "body_height", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, body_height), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "position", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, position), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "euler", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, euler), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "velocity", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, velocity), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "yaw_speed", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, yaw_speed), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "bms_cmd", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, bms_cmd), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "path_point", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - true, // is array - 30, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeCmd, path_point), // bytes offset in struct - NULL, // default value - SportModeCmd__rosidl_typesupport_introspection_c__size_function__PathPoint__path_point, // size() function pointer - SportModeCmd__rosidl_typesupport_introspection_c__get_const_function__PathPoint__path_point, // get_const(index) function pointer - SportModeCmd__rosidl_typesupport_introspection_c__get_function__PathPoint__path_point, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_members = { - "unitree_go__msg", // message namespace - "SportModeCmd", // message name - 11, // number of fields - sizeof(unitree_go__msg__SportModeCmd), - SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_member_array, // message members - SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_init_function, // function to initialize message memory (memory has to be allocated) - SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_type_support_handle = { - 0, - &SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, SportModeCmd)() { - SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_member_array[9].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, BmsCmd)(); - SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_member_array[10].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, PathPoint)(); - if (!SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_type_support_handle.typesupport_identifier) { - SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &SportModeCmd__rosidl_typesupport_introspection_c__SportModeCmd_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.cpp deleted file mode 100644 index 6dbc31b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.cpp +++ /dev/null @@ -1,337 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/sport_mode_cmd__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void SportModeCmd_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::SportModeCmd(_init); -} - -void SportModeCmd_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~SportModeCmd(); -} - -size_t size_function__SportModeCmd__position(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__SportModeCmd__position(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeCmd__position(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeCmd__euler(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__SportModeCmd__euler(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeCmd__euler(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeCmd__velocity(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__SportModeCmd__velocity(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeCmd__velocity(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeCmd__path_point(const void * untyped_member) -{ - (void)untyped_member; - return 30; -} - -const void * get_const_function__SportModeCmd__path_point(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeCmd__path_point(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember SportModeCmd_message_member_array[11] = { - { - "mode", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, mode), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "gait_type", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, gait_type), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "speed_level", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, speed_level), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "foot_raise_height", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, foot_raise_height), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "body_height", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, body_height), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "position", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, position), // bytes offset in struct - nullptr, // default value - size_function__SportModeCmd__position, // size() function pointer - get_const_function__SportModeCmd__position, // get_const(index) function pointer - get_function__SportModeCmd__position, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "euler", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, euler), // bytes offset in struct - nullptr, // default value - size_function__SportModeCmd__euler, // size() function pointer - get_const_function__SportModeCmd__euler, // get_const(index) function pointer - get_function__SportModeCmd__euler, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "velocity", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, velocity), // bytes offset in struct - nullptr, // default value - size_function__SportModeCmd__velocity, // size() function pointer - get_const_function__SportModeCmd__velocity, // get_const(index) function pointer - get_function__SportModeCmd__velocity, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "yaw_speed", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, yaw_speed), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "bms_cmd", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, bms_cmd), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "path_point", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - true, // is array - 30, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeCmd, path_point), // bytes offset in struct - nullptr, // default value - size_function__SportModeCmd__path_point, // size() function pointer - get_const_function__SportModeCmd__path_point, // get_const(index) function pointer - get_function__SportModeCmd__path_point, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers SportModeCmd_message_members = { - "unitree_go::msg", // message namespace - "SportModeCmd", // message name - 11, // number of fields - sizeof(unitree_go::msg::SportModeCmd), - SportModeCmd_message_member_array, // message members - SportModeCmd_init_function, // function to initialize message memory (memory has to be allocated) - SportModeCmd_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t SportModeCmd_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &SportModeCmd_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::SportModeCmd_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, SportModeCmd)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::SportModeCmd_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.h deleted file mode 100644 index 4d9c4cb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - SportModeCmd -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.hpp deleted file mode 100644 index 70d77da..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_cmd__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - SportModeCmd -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_CMD__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__builder.hpp deleted file mode 100644 index d4a8fe8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__builder.hpp +++ /dev/null @@ -1,279 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__BUILDER_HPP_ - -#include "unitree_go/msg/detail/sport_mode_state__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_SportModeState_foot_speed_body -{ -public: - explicit Init_SportModeState_foot_speed_body(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - ::unitree_go::msg::SportModeState foot_speed_body(::unitree_go::msg::SportModeState::_foot_speed_body_type arg) - { - msg_.foot_speed_body = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_foot_position_body -{ -public: - explicit Init_SportModeState_foot_position_body(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_foot_speed_body foot_position_body(::unitree_go::msg::SportModeState::_foot_position_body_type arg) - { - msg_.foot_position_body = std::move(arg); - return Init_SportModeState_foot_speed_body(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_foot_force -{ -public: - explicit Init_SportModeState_foot_force(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_foot_position_body foot_force(::unitree_go::msg::SportModeState::_foot_force_type arg) - { - msg_.foot_force = std::move(arg); - return Init_SportModeState_foot_position_body(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_range_obstacle -{ -public: - explicit Init_SportModeState_range_obstacle(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_foot_force range_obstacle(::unitree_go::msg::SportModeState::_range_obstacle_type arg) - { - msg_.range_obstacle = std::move(arg); - return Init_SportModeState_foot_force(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_yaw_speed -{ -public: - explicit Init_SportModeState_yaw_speed(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_range_obstacle yaw_speed(::unitree_go::msg::SportModeState::_yaw_speed_type arg) - { - msg_.yaw_speed = std::move(arg); - return Init_SportModeState_range_obstacle(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_velocity -{ -public: - explicit Init_SportModeState_velocity(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_yaw_speed velocity(::unitree_go::msg::SportModeState::_velocity_type arg) - { - msg_.velocity = std::move(arg); - return Init_SportModeState_yaw_speed(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_body_height -{ -public: - explicit Init_SportModeState_body_height(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_velocity body_height(::unitree_go::msg::SportModeState::_body_height_type arg) - { - msg_.body_height = std::move(arg); - return Init_SportModeState_velocity(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_position -{ -public: - explicit Init_SportModeState_position(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_body_height position(::unitree_go::msg::SportModeState::_position_type arg) - { - msg_.position = std::move(arg); - return Init_SportModeState_body_height(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_foot_raise_height -{ -public: - explicit Init_SportModeState_foot_raise_height(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_position foot_raise_height(::unitree_go::msg::SportModeState::_foot_raise_height_type arg) - { - msg_.foot_raise_height = std::move(arg); - return Init_SportModeState_position(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_gait_type -{ -public: - explicit Init_SportModeState_gait_type(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_foot_raise_height gait_type(::unitree_go::msg::SportModeState::_gait_type_type arg) - { - msg_.gait_type = std::move(arg); - return Init_SportModeState_foot_raise_height(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_progress -{ -public: - explicit Init_SportModeState_progress(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_gait_type progress(::unitree_go::msg::SportModeState::_progress_type arg) - { - msg_.progress = std::move(arg); - return Init_SportModeState_gait_type(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_mode -{ -public: - explicit Init_SportModeState_mode(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_progress mode(::unitree_go::msg::SportModeState::_mode_type arg) - { - msg_.mode = std::move(arg); - return Init_SportModeState_progress(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_imu_state -{ -public: - explicit Init_SportModeState_imu_state(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_mode imu_state(::unitree_go::msg::SportModeState::_imu_state_type arg) - { - msg_.imu_state = std::move(arg); - return Init_SportModeState_mode(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_error_code -{ -public: - explicit Init_SportModeState_error_code(::unitree_go::msg::SportModeState & msg) - : msg_(msg) - {} - Init_SportModeState_imu_state error_code(::unitree_go::msg::SportModeState::_error_code_type arg) - { - msg_.error_code = std::move(arg); - return Init_SportModeState_imu_state(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -class Init_SportModeState_stamp -{ -public: - Init_SportModeState_stamp() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_SportModeState_error_code stamp(::unitree_go::msg::SportModeState::_stamp_type arg) - { - msg_.stamp = std::move(arg); - return Init_SportModeState_error_code(msg_); - } - -private: - ::unitree_go::msg::SportModeState msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::SportModeState>() -{ - return unitree_go::msg::builder::Init_SportModeState_stamp(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.c deleted file mode 100644 index 4b9bfd1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.c +++ /dev/null @@ -1,395 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/sport_mode_state__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -// Include directives for member types -// Member `stamp` -#include "unitree_go/msg/detail/time_spec__functions.h" -// Member `imu_state` -#include "unitree_go/msg/detail/imu_state__functions.h" - -bool -unitree_go__msg__SportModeState__init(unitree_go__msg__SportModeState * msg) -{ - if (!msg) { - return false; - } - // stamp - if (!unitree_go__msg__TimeSpec__init(&msg->stamp)) { - unitree_go__msg__SportModeState__fini(msg); - return false; - } - // error_code - // imu_state - if (!unitree_go__msg__IMUState__init(&msg->imu_state)) { - unitree_go__msg__SportModeState__fini(msg); - return false; - } - // mode - // progress - // gait_type - // foot_raise_height - // position - // body_height - // velocity - // yaw_speed - // range_obstacle - // foot_force - // foot_position_body - // foot_speed_body - return true; -} - -void -unitree_go__msg__SportModeState__fini(unitree_go__msg__SportModeState * msg) -{ - if (!msg) { - return; - } - // stamp - unitree_go__msg__TimeSpec__fini(&msg->stamp); - // error_code - // imu_state - unitree_go__msg__IMUState__fini(&msg->imu_state); - // mode - // progress - // gait_type - // foot_raise_height - // position - // body_height - // velocity - // yaw_speed - // range_obstacle - // foot_force - // foot_position_body - // foot_speed_body -} - -bool -unitree_go__msg__SportModeState__are_equal(const unitree_go__msg__SportModeState * lhs, const unitree_go__msg__SportModeState * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // stamp - if (!unitree_go__msg__TimeSpec__are_equal( - &(lhs->stamp), &(rhs->stamp))) - { - return false; - } - // error_code - if (lhs->error_code != rhs->error_code) { - return false; - } - // imu_state - if (!unitree_go__msg__IMUState__are_equal( - &(lhs->imu_state), &(rhs->imu_state))) - { - return false; - } - // mode - if (lhs->mode != rhs->mode) { - return false; - } - // progress - if (lhs->progress != rhs->progress) { - return false; - } - // gait_type - if (lhs->gait_type != rhs->gait_type) { - return false; - } - // foot_raise_height - if (lhs->foot_raise_height != rhs->foot_raise_height) { - return false; - } - // position - for (size_t i = 0; i < 3; ++i) { - if (lhs->position[i] != rhs->position[i]) { - return false; - } - } - // body_height - if (lhs->body_height != rhs->body_height) { - return false; - } - // velocity - for (size_t i = 0; i < 3; ++i) { - if (lhs->velocity[i] != rhs->velocity[i]) { - return false; - } - } - // yaw_speed - if (lhs->yaw_speed != rhs->yaw_speed) { - return false; - } - // range_obstacle - for (size_t i = 0; i < 4; ++i) { - if (lhs->range_obstacle[i] != rhs->range_obstacle[i]) { - return false; - } - } - // foot_force - for (size_t i = 0; i < 4; ++i) { - if (lhs->foot_force[i] != rhs->foot_force[i]) { - return false; - } - } - // foot_position_body - for (size_t i = 0; i < 12; ++i) { - if (lhs->foot_position_body[i] != rhs->foot_position_body[i]) { - return false; - } - } - // foot_speed_body - for (size_t i = 0; i < 12; ++i) { - if (lhs->foot_speed_body[i] != rhs->foot_speed_body[i]) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__SportModeState__copy( - const unitree_go__msg__SportModeState * input, - unitree_go__msg__SportModeState * output) -{ - if (!input || !output) { - return false; - } - // stamp - if (!unitree_go__msg__TimeSpec__copy( - &(input->stamp), &(output->stamp))) - { - return false; - } - // error_code - output->error_code = input->error_code; - // imu_state - if (!unitree_go__msg__IMUState__copy( - &(input->imu_state), &(output->imu_state))) - { - return false; - } - // mode - output->mode = input->mode; - // progress - output->progress = input->progress; - // gait_type - output->gait_type = input->gait_type; - // foot_raise_height - output->foot_raise_height = input->foot_raise_height; - // position - for (size_t i = 0; i < 3; ++i) { - output->position[i] = input->position[i]; - } - // body_height - output->body_height = input->body_height; - // velocity - for (size_t i = 0; i < 3; ++i) { - output->velocity[i] = input->velocity[i]; - } - // yaw_speed - output->yaw_speed = input->yaw_speed; - // range_obstacle - for (size_t i = 0; i < 4; ++i) { - output->range_obstacle[i] = input->range_obstacle[i]; - } - // foot_force - for (size_t i = 0; i < 4; ++i) { - output->foot_force[i] = input->foot_force[i]; - } - // foot_position_body - for (size_t i = 0; i < 12; ++i) { - output->foot_position_body[i] = input->foot_position_body[i]; - } - // foot_speed_body - for (size_t i = 0; i < 12; ++i) { - output->foot_speed_body[i] = input->foot_speed_body[i]; - } - return true; -} - -unitree_go__msg__SportModeState * -unitree_go__msg__SportModeState__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__SportModeState * msg = (unitree_go__msg__SportModeState *)allocator.allocate(sizeof(unitree_go__msg__SportModeState), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__SportModeState)); - bool success = unitree_go__msg__SportModeState__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__SportModeState__destroy(unitree_go__msg__SportModeState * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__SportModeState__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__SportModeState__Sequence__init(unitree_go__msg__SportModeState__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__SportModeState * data = NULL; - - if (size) { - data = (unitree_go__msg__SportModeState *)allocator.zero_allocate(size, sizeof(unitree_go__msg__SportModeState), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__SportModeState__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__SportModeState__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__SportModeState__Sequence__fini(unitree_go__msg__SportModeState__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__SportModeState__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__SportModeState__Sequence * -unitree_go__msg__SportModeState__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__SportModeState__Sequence * array = (unitree_go__msg__SportModeState__Sequence *)allocator.allocate(sizeof(unitree_go__msg__SportModeState__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__SportModeState__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__SportModeState__Sequence__destroy(unitree_go__msg__SportModeState__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__SportModeState__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__SportModeState__Sequence__are_equal(const unitree_go__msg__SportModeState__Sequence * lhs, const unitree_go__msg__SportModeState__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__SportModeState__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__SportModeState__Sequence__copy( - const unitree_go__msg__SportModeState__Sequence * input, - unitree_go__msg__SportModeState__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__SportModeState); - unitree_go__msg__SportModeState * data = - (unitree_go__msg__SportModeState *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__SportModeState__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__SportModeState__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__SportModeState__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.h deleted file mode 100644 index 5943f7e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/sport_mode_state__struct.h" - -/// Initialize msg/SportModeState message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__SportModeState - * )) before or use - * unitree_go__msg__SportModeState__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeState__init(unitree_go__msg__SportModeState * msg); - -/// Finalize msg/SportModeState message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeState__fini(unitree_go__msg__SportModeState * msg); - -/// Create msg/SportModeState message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__SportModeState__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__SportModeState * -unitree_go__msg__SportModeState__create(); - -/// Destroy msg/SportModeState message. -/** - * It calls - * unitree_go__msg__SportModeState__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeState__destroy(unitree_go__msg__SportModeState * msg); - -/// Check for msg/SportModeState message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeState__are_equal(const unitree_go__msg__SportModeState * lhs, const unitree_go__msg__SportModeState * rhs); - -/// Copy a msg/SportModeState message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeState__copy( - const unitree_go__msg__SportModeState * input, - unitree_go__msg__SportModeState * output); - -/// Initialize array of msg/SportModeState messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__SportModeState__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeState__Sequence__init(unitree_go__msg__SportModeState__Sequence * array, size_t size); - -/// Finalize array of msg/SportModeState messages. -/** - * It calls - * unitree_go__msg__SportModeState__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeState__Sequence__fini(unitree_go__msg__SportModeState__Sequence * array); - -/// Create array of msg/SportModeState messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__SportModeState__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__SportModeState__Sequence * -unitree_go__msg__SportModeState__Sequence__create(size_t size); - -/// Destroy array of msg/SportModeState messages. -/** - * It calls - * unitree_go__msg__SportModeState__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__SportModeState__Sequence__destroy(unitree_go__msg__SportModeState__Sequence * array); - -/// Check for msg/SportModeState message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeState__Sequence__are_equal(const unitree_go__msg__SportModeState__Sequence * lhs, const unitree_go__msg__SportModeState__Sequence * rhs); - -/// Copy an array of msg/SportModeState messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__SportModeState__Sequence__copy( - const unitree_go__msg__SportModeState__Sequence * input, - unitree_go__msg__SportModeState__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 6ea7d97..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__SportModeState( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__SportModeState( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, SportModeState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index a254bc2..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/sport_mode_state__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::SportModeState & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::SportModeState & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::SportModeState & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_SportModeState( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, SportModeState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_c.h deleted file mode 100644 index a6c7219..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, SportModeState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 44fc169..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, SportModeState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.h deleted file mode 100644 index fd4313d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.h +++ /dev/null @@ -1,60 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Include directives for member types -// Member 'stamp' -#include "unitree_go/msg/detail/time_spec__struct.h" -// Member 'imu_state' -#include "unitree_go/msg/detail/imu_state__struct.h" - -// Struct defined in msg/SportModeState in the package unitree_go. -typedef struct unitree_go__msg__SportModeState -{ - unitree_go__msg__TimeSpec stamp; - uint32_t error_code; - unitree_go__msg__IMUState imu_state; - uint8_t mode; - float progress; - uint8_t gait_type; - float foot_raise_height; - float position[3]; - float body_height; - float velocity[3]; - float yaw_speed; - float range_obstacle[4]; - int16_t foot_force[4]; - float foot_position_body[12]; - float foot_speed_body[12]; -} unitree_go__msg__SportModeState; - -// Struct for a sequence of unitree_go__msg__SportModeState. -typedef struct unitree_go__msg__SportModeState__Sequence -{ - unitree_go__msg__SportModeState * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__SportModeState__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.hpp deleted file mode 100644 index 96823eb..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__struct.hpp +++ /dev/null @@ -1,337 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -// Include directives for member types -// Member 'stamp' -#include "unitree_go/msg/detail/time_spec__struct.hpp" -// Member 'imu_state' -#include "unitree_go/msg/detail/imu_state__struct.hpp" - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__SportModeState __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__SportModeState __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct SportModeState_ -{ - using Type = SportModeState_; - - explicit SportModeState_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : stamp(_init), - imu_state(_init) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->error_code = 0ul; - this->mode = 0; - this->progress = 0.0f; - this->gait_type = 0; - this->foot_raise_height = 0.0f; - std::fill::iterator, float>(this->position.begin(), this->position.end(), 0.0f); - this->body_height = 0.0f; - std::fill::iterator, float>(this->velocity.begin(), this->velocity.end(), 0.0f); - this->yaw_speed = 0.0f; - std::fill::iterator, float>(this->range_obstacle.begin(), this->range_obstacle.end(), 0.0f); - std::fill::iterator, int16_t>(this->foot_force.begin(), this->foot_force.end(), 0); - std::fill::iterator, float>(this->foot_position_body.begin(), this->foot_position_body.end(), 0.0f); - std::fill::iterator, float>(this->foot_speed_body.begin(), this->foot_speed_body.end(), 0.0f); - } - } - - explicit SportModeState_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : stamp(_alloc, _init), - imu_state(_alloc, _init), - position(_alloc), - velocity(_alloc), - range_obstacle(_alloc), - foot_force(_alloc), - foot_position_body(_alloc), - foot_speed_body(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->error_code = 0ul; - this->mode = 0; - this->progress = 0.0f; - this->gait_type = 0; - this->foot_raise_height = 0.0f; - std::fill::iterator, float>(this->position.begin(), this->position.end(), 0.0f); - this->body_height = 0.0f; - std::fill::iterator, float>(this->velocity.begin(), this->velocity.end(), 0.0f); - this->yaw_speed = 0.0f; - std::fill::iterator, float>(this->range_obstacle.begin(), this->range_obstacle.end(), 0.0f); - std::fill::iterator, int16_t>(this->foot_force.begin(), this->foot_force.end(), 0); - std::fill::iterator, float>(this->foot_position_body.begin(), this->foot_position_body.end(), 0.0f); - std::fill::iterator, float>(this->foot_speed_body.begin(), this->foot_speed_body.end(), 0.0f); - } - } - - // field types and members - using _stamp_type = - unitree_go::msg::TimeSpec_; - _stamp_type stamp; - using _error_code_type = - uint32_t; - _error_code_type error_code; - using _imu_state_type = - unitree_go::msg::IMUState_; - _imu_state_type imu_state; - using _mode_type = - uint8_t; - _mode_type mode; - using _progress_type = - float; - _progress_type progress; - using _gait_type_type = - uint8_t; - _gait_type_type gait_type; - using _foot_raise_height_type = - float; - _foot_raise_height_type foot_raise_height; - using _position_type = - std::array; - _position_type position; - using _body_height_type = - float; - _body_height_type body_height; - using _velocity_type = - std::array; - _velocity_type velocity; - using _yaw_speed_type = - float; - _yaw_speed_type yaw_speed; - using _range_obstacle_type = - std::array; - _range_obstacle_type range_obstacle; - using _foot_force_type = - std::array; - _foot_force_type foot_force; - using _foot_position_body_type = - std::array; - _foot_position_body_type foot_position_body; - using _foot_speed_body_type = - std::array; - _foot_speed_body_type foot_speed_body; - - // setters for named parameter idiom - Type & set__stamp( - const unitree_go::msg::TimeSpec_ & _arg) - { - this->stamp = _arg; - return *this; - } - Type & set__error_code( - const uint32_t & _arg) - { - this->error_code = _arg; - return *this; - } - Type & set__imu_state( - const unitree_go::msg::IMUState_ & _arg) - { - this->imu_state = _arg; - return *this; - } - Type & set__mode( - const uint8_t & _arg) - { - this->mode = _arg; - return *this; - } - Type & set__progress( - const float & _arg) - { - this->progress = _arg; - return *this; - } - Type & set__gait_type( - const uint8_t & _arg) - { - this->gait_type = _arg; - return *this; - } - Type & set__foot_raise_height( - const float & _arg) - { - this->foot_raise_height = _arg; - return *this; - } - Type & set__position( - const std::array & _arg) - { - this->position = _arg; - return *this; - } - Type & set__body_height( - const float & _arg) - { - this->body_height = _arg; - return *this; - } - Type & set__velocity( - const std::array & _arg) - { - this->velocity = _arg; - return *this; - } - Type & set__yaw_speed( - const float & _arg) - { - this->yaw_speed = _arg; - return *this; - } - Type & set__range_obstacle( - const std::array & _arg) - { - this->range_obstacle = _arg; - return *this; - } - Type & set__foot_force( - const std::array & _arg) - { - this->foot_force = _arg; - return *this; - } - Type & set__foot_position_body( - const std::array & _arg) - { - this->foot_position_body = _arg; - return *this; - } - Type & set__foot_speed_body( - const std::array & _arg) - { - this->foot_speed_body = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::SportModeState_ *; - using ConstRawPtr = - const unitree_go::msg::SportModeState_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__SportModeState - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__SportModeState - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const SportModeState_ & other) const - { - if (this->stamp != other.stamp) { - return false; - } - if (this->error_code != other.error_code) { - return false; - } - if (this->imu_state != other.imu_state) { - return false; - } - if (this->mode != other.mode) { - return false; - } - if (this->progress != other.progress) { - return false; - } - if (this->gait_type != other.gait_type) { - return false; - } - if (this->foot_raise_height != other.foot_raise_height) { - return false; - } - if (this->position != other.position) { - return false; - } - if (this->body_height != other.body_height) { - return false; - } - if (this->velocity != other.velocity) { - return false; - } - if (this->yaw_speed != other.yaw_speed) { - return false; - } - if (this->range_obstacle != other.range_obstacle) { - return false; - } - if (this->foot_force != other.foot_force) { - return false; - } - if (this->foot_position_body != other.foot_position_body) { - return false; - } - if (this->foot_speed_body != other.foot_speed_body) { - return false; - } - return true; - } - bool operator!=(const SportModeState_ & other) const - { - return !this->operator==(other); - } -}; // struct SportModeState_ - -// alias to use template instance with default allocator -using SportModeState = - unitree_go::msg::SportModeState_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__traits.hpp deleted file mode 100644 index e71869f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__traits.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TRAITS_HPP_ - -#include "unitree_go/msg/detail/sport_mode_state__struct.hpp" -#include -#include -#include - -// Include directives for member types -// Member 'stamp' -#include "unitree_go/msg/detail/time_spec__traits.hpp" -// Member 'imu_state' -#include "unitree_go/msg/detail/imu_state__traits.hpp" - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::SportModeState"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/SportModeState"; -} - -template<> -struct has_fixed_size - : std::integral_constant::value && has_fixed_size::value> {}; - -template<> -struct has_bounded_size - : std::integral_constant::value && has_bounded_size::value> {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.c deleted file mode 100644 index 83ba35b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.c +++ /dev/null @@ -1,305 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/sport_mode_state__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/sport_mode_state__functions.h" -#include "unitree_go/msg/detail/sport_mode_state__struct.h" - - -// Include directives for member types -// Member `stamp` -#include "unitree_go/msg/time_spec.h" -// Member `stamp` -#include "unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_c.h" -// Member `imu_state` -#include "unitree_go/msg/imu_state.h" -// Member `imu_state` -#include "unitree_go/msg/detail/imu_state__rosidl_typesupport_introspection_c.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void SportModeState__rosidl_typesupport_introspection_c__SportModeState_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__SportModeState__init(message_memory); -} - -void SportModeState__rosidl_typesupport_introspection_c__SportModeState_fini_function(void * message_memory) -{ - unitree_go__msg__SportModeState__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_member_array[15] = { - { - "stamp", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, stamp), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "error_code", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, error_code), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "imu_state", // name - rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - NULL, // members of sub message (initialized later) - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, imu_state), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "mode", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, mode), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "progress", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, progress), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "gait_type", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, gait_type), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "foot_raise_height", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, foot_raise_height), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "position", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, position), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "body_height", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, body_height), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "velocity", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, velocity), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "yaw_speed", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, yaw_speed), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "range_obstacle", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, range_obstacle), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "foot_force", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT16, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, foot_force), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "foot_position_body", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 12, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, foot_position_body), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "foot_speed_body", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 12, // array size - false, // is upper bound - offsetof(unitree_go__msg__SportModeState, foot_speed_body), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_members = { - "unitree_go__msg", // message namespace - "SportModeState", // message name - 15, // number of fields - sizeof(unitree_go__msg__SportModeState), - SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_member_array, // message members - SportModeState__rosidl_typesupport_introspection_c__SportModeState_init_function, // function to initialize message memory (memory has to be allocated) - SportModeState__rosidl_typesupport_introspection_c__SportModeState_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_type_support_handle = { - 0, - &SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, SportModeState)() { - SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_member_array[0].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, TimeSpec)(); - SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_member_array[2].members_ = - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, IMUState)(); - if (!SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_type_support_handle.typesupport_identifier) { - SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &SportModeState__rosidl_typesupport_introspection_c__SportModeState_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.cpp deleted file mode 100644 index 6386bc1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.cpp +++ /dev/null @@ -1,437 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/sport_mode_state__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void SportModeState_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::SportModeState(_init); -} - -void SportModeState_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~SportModeState(); -} - -size_t size_function__SportModeState__position(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__SportModeState__position(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeState__position(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeState__velocity(const void * untyped_member) -{ - (void)untyped_member; - return 3; -} - -const void * get_const_function__SportModeState__velocity(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeState__velocity(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeState__range_obstacle(const void * untyped_member) -{ - (void)untyped_member; - return 4; -} - -const void * get_const_function__SportModeState__range_obstacle(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeState__range_obstacle(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeState__foot_force(const void * untyped_member) -{ - (void)untyped_member; - return 4; -} - -const void * get_const_function__SportModeState__foot_force(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeState__foot_force(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeState__foot_position_body(const void * untyped_member) -{ - (void)untyped_member; - return 12; -} - -const void * get_const_function__SportModeState__foot_position_body(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeState__foot_position_body(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__SportModeState__foot_speed_body(const void * untyped_member) -{ - (void)untyped_member; - return 12; -} - -const void * get_const_function__SportModeState__foot_speed_body(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__SportModeState__foot_speed_body(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember SportModeState_message_member_array[15] = { - { - "stamp", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, stamp), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "error_code", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, error_code), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "imu_state", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE, // type - 0, // upper bound of string - ::rosidl_typesupport_introspection_cpp::get_message_type_support_handle(), // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, imu_state), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "mode", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, mode), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "progress", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, progress), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "gait_type", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, gait_type), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "foot_raise_height", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, foot_raise_height), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "position", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, position), // bytes offset in struct - nullptr, // default value - size_function__SportModeState__position, // size() function pointer - get_const_function__SportModeState__position, // get_const(index) function pointer - get_function__SportModeState__position, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "body_height", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, body_height), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "velocity", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 3, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, velocity), // bytes offset in struct - nullptr, // default value - size_function__SportModeState__velocity, // size() function pointer - get_const_function__SportModeState__velocity, // get_const(index) function pointer - get_function__SportModeState__velocity, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "yaw_speed", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, yaw_speed), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "range_obstacle", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, range_obstacle), // bytes offset in struct - nullptr, // default value - size_function__SportModeState__range_obstacle, // size() function pointer - get_const_function__SportModeState__range_obstacle, // get_const(index) function pointer - get_function__SportModeState__range_obstacle, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "foot_force", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT16, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 4, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, foot_force), // bytes offset in struct - nullptr, // default value - size_function__SportModeState__foot_force, // size() function pointer - get_const_function__SportModeState__foot_force, // get_const(index) function pointer - get_function__SportModeState__foot_force, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "foot_position_body", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 12, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, foot_position_body), // bytes offset in struct - nullptr, // default value - size_function__SportModeState__foot_position_body, // size() function pointer - get_const_function__SportModeState__foot_position_body, // get_const(index) function pointer - get_function__SportModeState__foot_position_body, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "foot_speed_body", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 12, // array size - false, // is upper bound - offsetof(unitree_go::msg::SportModeState, foot_speed_body), // bytes offset in struct - nullptr, // default value - size_function__SportModeState__foot_speed_body, // size() function pointer - get_const_function__SportModeState__foot_speed_body, // get_const(index) function pointer - get_function__SportModeState__foot_speed_body, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers SportModeState_message_members = { - "unitree_go::msg", // message namespace - "SportModeState", // message name - 15, // number of fields - sizeof(unitree_go::msg::SportModeState), - SportModeState_message_member_array, // message members - SportModeState_init_function, // function to initialize message memory (memory has to be allocated) - SportModeState_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t SportModeState_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &SportModeState_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::SportModeState_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, SportModeState)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::SportModeState_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.h deleted file mode 100644 index c6e4e33..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - SportModeState -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.hpp deleted file mode 100644 index 529a760..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/sport_mode_state__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - SportModeState -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__SPORT_MODE_STATE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__builder.hpp deleted file mode 100644 index ffe947e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__builder.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__BUILDER_HPP_ - -#include "unitree_go/msg/detail/time_spec__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_TimeSpec_nanosec -{ -public: - explicit Init_TimeSpec_nanosec(::unitree_go::msg::TimeSpec & msg) - : msg_(msg) - {} - ::unitree_go::msg::TimeSpec nanosec(::unitree_go::msg::TimeSpec::_nanosec_type arg) - { - msg_.nanosec = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::TimeSpec msg_; -}; - -class Init_TimeSpec_sec -{ -public: - Init_TimeSpec_sec() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_TimeSpec_nanosec sec(::unitree_go::msg::TimeSpec::_sec_type arg) - { - msg_.sec = std::move(arg); - return Init_TimeSpec_nanosec(msg_); - } - -private: - ::unitree_go::msg::TimeSpec msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::TimeSpec>() -{ - return unitree_go::msg::builder::Init_TimeSpec_sec(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.c deleted file mode 100644 index 4f84c74..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.c +++ /dev/null @@ -1,239 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/time_spec__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__TimeSpec__init(unitree_go__msg__TimeSpec * msg) -{ - if (!msg) { - return false; - } - // sec - // nanosec - return true; -} - -void -unitree_go__msg__TimeSpec__fini(unitree_go__msg__TimeSpec * msg) -{ - if (!msg) { - return; - } - // sec - // nanosec -} - -bool -unitree_go__msg__TimeSpec__are_equal(const unitree_go__msg__TimeSpec * lhs, const unitree_go__msg__TimeSpec * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // sec - if (lhs->sec != rhs->sec) { - return false; - } - // nanosec - if (lhs->nanosec != rhs->nanosec) { - return false; - } - return true; -} - -bool -unitree_go__msg__TimeSpec__copy( - const unitree_go__msg__TimeSpec * input, - unitree_go__msg__TimeSpec * output) -{ - if (!input || !output) { - return false; - } - // sec - output->sec = input->sec; - // nanosec - output->nanosec = input->nanosec; - return true; -} - -unitree_go__msg__TimeSpec * -unitree_go__msg__TimeSpec__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__TimeSpec * msg = (unitree_go__msg__TimeSpec *)allocator.allocate(sizeof(unitree_go__msg__TimeSpec), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__TimeSpec)); - bool success = unitree_go__msg__TimeSpec__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__TimeSpec__destroy(unitree_go__msg__TimeSpec * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__TimeSpec__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__TimeSpec__Sequence__init(unitree_go__msg__TimeSpec__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__TimeSpec * data = NULL; - - if (size) { - data = (unitree_go__msg__TimeSpec *)allocator.zero_allocate(size, sizeof(unitree_go__msg__TimeSpec), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__TimeSpec__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__TimeSpec__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__TimeSpec__Sequence__fini(unitree_go__msg__TimeSpec__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__TimeSpec__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__TimeSpec__Sequence * -unitree_go__msg__TimeSpec__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__TimeSpec__Sequence * array = (unitree_go__msg__TimeSpec__Sequence *)allocator.allocate(sizeof(unitree_go__msg__TimeSpec__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__TimeSpec__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__TimeSpec__Sequence__destroy(unitree_go__msg__TimeSpec__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__TimeSpec__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__TimeSpec__Sequence__are_equal(const unitree_go__msg__TimeSpec__Sequence * lhs, const unitree_go__msg__TimeSpec__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__TimeSpec__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__TimeSpec__Sequence__copy( - const unitree_go__msg__TimeSpec__Sequence * input, - unitree_go__msg__TimeSpec__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__TimeSpec); - unitree_go__msg__TimeSpec * data = - (unitree_go__msg__TimeSpec *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__TimeSpec__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__TimeSpec__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__TimeSpec__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.h deleted file mode 100644 index b563a81..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/time_spec__struct.h" - -/// Initialize msg/TimeSpec message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__TimeSpec - * )) before or use - * unitree_go__msg__TimeSpec__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__TimeSpec__init(unitree_go__msg__TimeSpec * msg); - -/// Finalize msg/TimeSpec message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__TimeSpec__fini(unitree_go__msg__TimeSpec * msg); - -/// Create msg/TimeSpec message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__TimeSpec__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__TimeSpec * -unitree_go__msg__TimeSpec__create(); - -/// Destroy msg/TimeSpec message. -/** - * It calls - * unitree_go__msg__TimeSpec__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__TimeSpec__destroy(unitree_go__msg__TimeSpec * msg); - -/// Check for msg/TimeSpec message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__TimeSpec__are_equal(const unitree_go__msg__TimeSpec * lhs, const unitree_go__msg__TimeSpec * rhs); - -/// Copy a msg/TimeSpec message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__TimeSpec__copy( - const unitree_go__msg__TimeSpec * input, - unitree_go__msg__TimeSpec * output); - -/// Initialize array of msg/TimeSpec messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__TimeSpec__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__TimeSpec__Sequence__init(unitree_go__msg__TimeSpec__Sequence * array, size_t size); - -/// Finalize array of msg/TimeSpec messages. -/** - * It calls - * unitree_go__msg__TimeSpec__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__TimeSpec__Sequence__fini(unitree_go__msg__TimeSpec__Sequence * array); - -/// Create array of msg/TimeSpec messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__TimeSpec__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__TimeSpec__Sequence * -unitree_go__msg__TimeSpec__Sequence__create(size_t size); - -/// Destroy array of msg/TimeSpec messages. -/** - * It calls - * unitree_go__msg__TimeSpec__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__TimeSpec__Sequence__destroy(unitree_go__msg__TimeSpec__Sequence * array); - -/// Check for msg/TimeSpec message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__TimeSpec__Sequence__are_equal(const unitree_go__msg__TimeSpec__Sequence * lhs, const unitree_go__msg__TimeSpec__Sequence * rhs); - -/// Copy an array of msg/TimeSpec messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__TimeSpec__Sequence__copy( - const unitree_go__msg__TimeSpec__Sequence * input, - unitree_go__msg__TimeSpec__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 3196f3c..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__TimeSpec( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__TimeSpec( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, TimeSpec)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index b4988b4..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/time_spec__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::TimeSpec & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::TimeSpec & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::TimeSpec & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_TimeSpec( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, TimeSpec)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_c.h deleted file mode 100644 index a30a269..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, TimeSpec)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 7289a13..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, TimeSpec)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.h deleted file mode 100644 index b45f61e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.h +++ /dev/null @@ -1,41 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/TimeSpec in the package unitree_go. -typedef struct unitree_go__msg__TimeSpec -{ - int32_t sec; - uint32_t nanosec; -} unitree_go__msg__TimeSpec; - -// Struct for a sequence of unitree_go__msg__TimeSpec. -typedef struct unitree_go__msg__TimeSpec__Sequence -{ - unitree_go__msg__TimeSpec * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__TimeSpec__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.hpp deleted file mode 100644 index cb9f15b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__struct.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__TimeSpec __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__TimeSpec __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct TimeSpec_ -{ - using Type = TimeSpec_; - - explicit TimeSpec_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->sec = 0l; - this->nanosec = 0ul; - } - } - - explicit TimeSpec_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->sec = 0l; - this->nanosec = 0ul; - } - } - - // field types and members - using _sec_type = - int32_t; - _sec_type sec; - using _nanosec_type = - uint32_t; - _nanosec_type nanosec; - - // setters for named parameter idiom - Type & set__sec( - const int32_t & _arg) - { - this->sec = _arg; - return *this; - } - Type & set__nanosec( - const uint32_t & _arg) - { - this->nanosec = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::TimeSpec_ *; - using ConstRawPtr = - const unitree_go::msg::TimeSpec_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__TimeSpec - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__TimeSpec - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const TimeSpec_ & other) const - { - if (this->sec != other.sec) { - return false; - } - if (this->nanosec != other.nanosec) { - return false; - } - return true; - } - bool operator!=(const TimeSpec_ & other) const - { - return !this->operator==(other); - } -}; // struct TimeSpec_ - -// alias to use template instance with default allocator -using TimeSpec = - unitree_go::msg::TimeSpec_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__traits.hpp deleted file mode 100644 index 80eb861..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__TRAITS_HPP_ - -#include "unitree_go/msg/detail/time_spec__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::TimeSpec"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/TimeSpec"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.c deleted file mode 100644 index d4b9497..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.c +++ /dev/null @@ -1,96 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/time_spec__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/time_spec__functions.h" -#include "unitree_go/msg/detail/time_spec__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__TimeSpec__init(message_memory); -} - -void TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_fini_function(void * message_memory) -{ - unitree_go__msg__TimeSpec__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_member_array[2] = { - { - "sec", // name - rosidl_typesupport_introspection_c__ROS_TYPE_INT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__TimeSpec, sec), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "nanosec", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT32, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__TimeSpec, nanosec), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_members = { - "unitree_go__msg", // message namespace - "TimeSpec", // message name - 2, // number of fields - sizeof(unitree_go__msg__TimeSpec), - TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_member_array, // message members - TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_init_function, // function to initialize message memory (memory has to be allocated) - TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_type_support_handle = { - 0, - &TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, TimeSpec)() { - if (!TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_type_support_handle.typesupport_identifier) { - TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &TimeSpec__rosidl_typesupport_introspection_c__TimeSpec_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.cpp deleted file mode 100644 index 9babcb7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/time_spec__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void TimeSpec_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::TimeSpec(_init); -} - -void TimeSpec_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~TimeSpec(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember TimeSpec_message_member_array[2] = { - { - "sec", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_INT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::TimeSpec, sec), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "nanosec", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT32, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::TimeSpec, nanosec), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers TimeSpec_message_members = { - "unitree_go::msg", // message namespace - "TimeSpec", // message name - 2, // number of fields - sizeof(unitree_go::msg::TimeSpec), - TimeSpec_message_member_array, // message members - TimeSpec_init_function, // function to initialize message memory (memory has to be allocated) - TimeSpec_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t TimeSpec_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &TimeSpec_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::TimeSpec_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, TimeSpec)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::TimeSpec_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.h deleted file mode 100644 index 50d475d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - TimeSpec -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.hpp deleted file mode 100644 index dbe73c7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/time_spec__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__TIME_SPEC__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__TIME_SPEC__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - TimeSpec -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__TIME_SPEC__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__builder.hpp deleted file mode 100644 index 267c72e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__builder.hpp +++ /dev/null @@ -1,311 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__BUILDER_HPP_ - -#include "unitree_go/msg/detail/uwb_state__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_UwbState_enabled_from_app -{ -public: - explicit Init_UwbState_enabled_from_app(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - ::unitree_go::msg::UwbState enabled_from_app(::unitree_go::msg::UwbState::_enabled_from_app_type arg) - { - msg_.enabled_from_app = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_buttons -{ -public: - explicit Init_UwbState_buttons(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_enabled_from_app buttons(::unitree_go::msg::UwbState::_buttons_type arg) - { - msg_.buttons = std::move(arg); - return Init_UwbState_enabled_from_app(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_error_state -{ -public: - explicit Init_UwbState_error_state(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_buttons error_state(::unitree_go::msg::UwbState::_error_state_type arg) - { - msg_.error_state = std::move(arg); - return Init_UwbState_buttons(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_joystick -{ -public: - explicit Init_UwbState_joystick(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_error_state joystick(::unitree_go::msg::UwbState::_joystick_type arg) - { - msg_.joystick = std::move(arg); - return Init_UwbState_error_state(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_base_yaw -{ -public: - explicit Init_UwbState_base_yaw(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_joystick base_yaw(::unitree_go::msg::UwbState::_base_yaw_type arg) - { - msg_.base_yaw = std::move(arg); - return Init_UwbState_joystick(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_base_pitch -{ -public: - explicit Init_UwbState_base_pitch(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_base_yaw base_pitch(::unitree_go::msg::UwbState::_base_pitch_type arg) - { - msg_.base_pitch = std::move(arg); - return Init_UwbState_base_yaw(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_base_roll -{ -public: - explicit Init_UwbState_base_roll(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_base_pitch base_roll(::unitree_go::msg::UwbState::_base_roll_type arg) - { - msg_.base_roll = std::move(arg); - return Init_UwbState_base_pitch(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_tag_yaw -{ -public: - explicit Init_UwbState_tag_yaw(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_base_roll tag_yaw(::unitree_go::msg::UwbState::_tag_yaw_type arg) - { - msg_.tag_yaw = std::move(arg); - return Init_UwbState_base_roll(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_tag_pitch -{ -public: - explicit Init_UwbState_tag_pitch(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_tag_yaw tag_pitch(::unitree_go::msg::UwbState::_tag_pitch_type arg) - { - msg_.tag_pitch = std::move(arg); - return Init_UwbState_tag_yaw(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_tag_roll -{ -public: - explicit Init_UwbState_tag_roll(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_tag_pitch tag_roll(::unitree_go::msg::UwbState::_tag_roll_type arg) - { - msg_.tag_roll = std::move(arg); - return Init_UwbState_tag_pitch(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_yaw_est -{ -public: - explicit Init_UwbState_yaw_est(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_tag_roll yaw_est(::unitree_go::msg::UwbState::_yaw_est_type arg) - { - msg_.yaw_est = std::move(arg); - return Init_UwbState_tag_roll(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_distance_est -{ -public: - explicit Init_UwbState_distance_est(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_yaw_est distance_est(::unitree_go::msg::UwbState::_distance_est_type arg) - { - msg_.distance_est = std::move(arg); - return Init_UwbState_yaw_est(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_pitch_est -{ -public: - explicit Init_UwbState_pitch_est(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_distance_est pitch_est(::unitree_go::msg::UwbState::_pitch_est_type arg) - { - msg_.pitch_est = std::move(arg); - return Init_UwbState_distance_est(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_orientation_est -{ -public: - explicit Init_UwbState_orientation_est(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_pitch_est orientation_est(::unitree_go::msg::UwbState::_orientation_est_type arg) - { - msg_.orientation_est = std::move(arg); - return Init_UwbState_pitch_est(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_joy_mode -{ -public: - explicit Init_UwbState_joy_mode(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_orientation_est joy_mode(::unitree_go::msg::UwbState::_joy_mode_type arg) - { - msg_.joy_mode = std::move(arg); - return Init_UwbState_orientation_est(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_channel -{ -public: - explicit Init_UwbState_channel(::unitree_go::msg::UwbState & msg) - : msg_(msg) - {} - Init_UwbState_joy_mode channel(::unitree_go::msg::UwbState::_channel_type arg) - { - msg_.channel = std::move(arg); - return Init_UwbState_joy_mode(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -class Init_UwbState_version -{ -public: - Init_UwbState_version() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_UwbState_channel version(::unitree_go::msg::UwbState::_version_type arg) - { - msg_.version = std::move(arg); - return Init_UwbState_channel(msg_); - } - -private: - ::unitree_go::msg::UwbState msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::UwbState>() -{ - return unitree_go::msg::builder::Init_UwbState_version(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.c deleted file mode 100644 index 5479884..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.c +++ /dev/null @@ -1,367 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/uwb_state__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__UwbState__init(unitree_go__msg__UwbState * msg) -{ - if (!msg) { - return false; - } - // version - // channel - // joy_mode - // orientation_est - // pitch_est - // distance_est - // yaw_est - // tag_roll - // tag_pitch - // tag_yaw - // base_roll - // base_pitch - // base_yaw - // joystick - // error_state - // buttons - // enabled_from_app - return true; -} - -void -unitree_go__msg__UwbState__fini(unitree_go__msg__UwbState * msg) -{ - if (!msg) { - return; - } - // version - // channel - // joy_mode - // orientation_est - // pitch_est - // distance_est - // yaw_est - // tag_roll - // tag_pitch - // tag_yaw - // base_roll - // base_pitch - // base_yaw - // joystick - // error_state - // buttons - // enabled_from_app -} - -bool -unitree_go__msg__UwbState__are_equal(const unitree_go__msg__UwbState * lhs, const unitree_go__msg__UwbState * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // version - for (size_t i = 0; i < 2; ++i) { - if (lhs->version[i] != rhs->version[i]) { - return false; - } - } - // channel - if (lhs->channel != rhs->channel) { - return false; - } - // joy_mode - if (lhs->joy_mode != rhs->joy_mode) { - return false; - } - // orientation_est - if (lhs->orientation_est != rhs->orientation_est) { - return false; - } - // pitch_est - if (lhs->pitch_est != rhs->pitch_est) { - return false; - } - // distance_est - if (lhs->distance_est != rhs->distance_est) { - return false; - } - // yaw_est - if (lhs->yaw_est != rhs->yaw_est) { - return false; - } - // tag_roll - if (lhs->tag_roll != rhs->tag_roll) { - return false; - } - // tag_pitch - if (lhs->tag_pitch != rhs->tag_pitch) { - return false; - } - // tag_yaw - if (lhs->tag_yaw != rhs->tag_yaw) { - return false; - } - // base_roll - if (lhs->base_roll != rhs->base_roll) { - return false; - } - // base_pitch - if (lhs->base_pitch != rhs->base_pitch) { - return false; - } - // base_yaw - if (lhs->base_yaw != rhs->base_yaw) { - return false; - } - // joystick - for (size_t i = 0; i < 2; ++i) { - if (lhs->joystick[i] != rhs->joystick[i]) { - return false; - } - } - // error_state - if (lhs->error_state != rhs->error_state) { - return false; - } - // buttons - if (lhs->buttons != rhs->buttons) { - return false; - } - // enabled_from_app - if (lhs->enabled_from_app != rhs->enabled_from_app) { - return false; - } - return true; -} - -bool -unitree_go__msg__UwbState__copy( - const unitree_go__msg__UwbState * input, - unitree_go__msg__UwbState * output) -{ - if (!input || !output) { - return false; - } - // version - for (size_t i = 0; i < 2; ++i) { - output->version[i] = input->version[i]; - } - // channel - output->channel = input->channel; - // joy_mode - output->joy_mode = input->joy_mode; - // orientation_est - output->orientation_est = input->orientation_est; - // pitch_est - output->pitch_est = input->pitch_est; - // distance_est - output->distance_est = input->distance_est; - // yaw_est - output->yaw_est = input->yaw_est; - // tag_roll - output->tag_roll = input->tag_roll; - // tag_pitch - output->tag_pitch = input->tag_pitch; - // tag_yaw - output->tag_yaw = input->tag_yaw; - // base_roll - output->base_roll = input->base_roll; - // base_pitch - output->base_pitch = input->base_pitch; - // base_yaw - output->base_yaw = input->base_yaw; - // joystick - for (size_t i = 0; i < 2; ++i) { - output->joystick[i] = input->joystick[i]; - } - // error_state - output->error_state = input->error_state; - // buttons - output->buttons = input->buttons; - // enabled_from_app - output->enabled_from_app = input->enabled_from_app; - return true; -} - -unitree_go__msg__UwbState * -unitree_go__msg__UwbState__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__UwbState * msg = (unitree_go__msg__UwbState *)allocator.allocate(sizeof(unitree_go__msg__UwbState), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__UwbState)); - bool success = unitree_go__msg__UwbState__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__UwbState__destroy(unitree_go__msg__UwbState * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__UwbState__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__UwbState__Sequence__init(unitree_go__msg__UwbState__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__UwbState * data = NULL; - - if (size) { - data = (unitree_go__msg__UwbState *)allocator.zero_allocate(size, sizeof(unitree_go__msg__UwbState), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__UwbState__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__UwbState__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__UwbState__Sequence__fini(unitree_go__msg__UwbState__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__UwbState__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__UwbState__Sequence * -unitree_go__msg__UwbState__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__UwbState__Sequence * array = (unitree_go__msg__UwbState__Sequence *)allocator.allocate(sizeof(unitree_go__msg__UwbState__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__UwbState__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__UwbState__Sequence__destroy(unitree_go__msg__UwbState__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__UwbState__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__UwbState__Sequence__are_equal(const unitree_go__msg__UwbState__Sequence * lhs, const unitree_go__msg__UwbState__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__UwbState__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__UwbState__Sequence__copy( - const unitree_go__msg__UwbState__Sequence * input, - unitree_go__msg__UwbState__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__UwbState); - unitree_go__msg__UwbState * data = - (unitree_go__msg__UwbState *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__UwbState__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__UwbState__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__UwbState__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.h deleted file mode 100644 index 5e5eeed..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/uwb_state__struct.h" - -/// Initialize msg/UwbState message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__UwbState - * )) before or use - * unitree_go__msg__UwbState__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbState__init(unitree_go__msg__UwbState * msg); - -/// Finalize msg/UwbState message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbState__fini(unitree_go__msg__UwbState * msg); - -/// Create msg/UwbState message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__UwbState__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__UwbState * -unitree_go__msg__UwbState__create(); - -/// Destroy msg/UwbState message. -/** - * It calls - * unitree_go__msg__UwbState__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbState__destroy(unitree_go__msg__UwbState * msg); - -/// Check for msg/UwbState message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbState__are_equal(const unitree_go__msg__UwbState * lhs, const unitree_go__msg__UwbState * rhs); - -/// Copy a msg/UwbState message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbState__copy( - const unitree_go__msg__UwbState * input, - unitree_go__msg__UwbState * output); - -/// Initialize array of msg/UwbState messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__UwbState__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbState__Sequence__init(unitree_go__msg__UwbState__Sequence * array, size_t size); - -/// Finalize array of msg/UwbState messages. -/** - * It calls - * unitree_go__msg__UwbState__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbState__Sequence__fini(unitree_go__msg__UwbState__Sequence * array); - -/// Create array of msg/UwbState messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__UwbState__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__UwbState__Sequence * -unitree_go__msg__UwbState__Sequence__create(size_t size); - -/// Destroy array of msg/UwbState messages. -/** - * It calls - * unitree_go__msg__UwbState__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbState__Sequence__destroy(unitree_go__msg__UwbState__Sequence * array); - -/// Check for msg/UwbState message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbState__Sequence__are_equal(const unitree_go__msg__UwbState__Sequence * lhs, const unitree_go__msg__UwbState__Sequence * rhs); - -/// Copy an array of msg/UwbState messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbState__Sequence__copy( - const unitree_go__msg__UwbState__Sequence * input, - unitree_go__msg__UwbState__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index b17eaef..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__UwbState( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__UwbState( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, UwbState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 710fd84..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/uwb_state__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::UwbState & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::UwbState & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::UwbState & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_UwbState( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, UwbState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_c.h deleted file mode 100644 index efe19ed..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, UwbState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index bfd599d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, UwbState)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.h deleted file mode 100644 index 406e537..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.h +++ /dev/null @@ -1,56 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/UwbState in the package unitree_go. -typedef struct unitree_go__msg__UwbState -{ - uint8_t version[2]; - uint8_t channel; - uint8_t joy_mode; - float orientation_est; - float pitch_est; - float distance_est; - float yaw_est; - float tag_roll; - float tag_pitch; - float tag_yaw; - float base_roll; - float base_pitch; - float base_yaw; - float joystick[2]; - uint8_t error_state; - uint8_t buttons; - uint8_t enabled_from_app; -} unitree_go__msg__UwbState; - -// Struct for a sequence of unitree_go__msg__UwbState. -typedef struct unitree_go__msg__UwbState__Sequence -{ - unitree_go__msg__UwbState * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__UwbState__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.hpp deleted file mode 100644 index 0d63dc7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__struct.hpp +++ /dev/null @@ -1,355 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__UwbState __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__UwbState __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct UwbState_ -{ - using Type = UwbState_; - - explicit UwbState_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, uint8_t>(this->version.begin(), this->version.end(), 0); - this->channel = 0; - this->joy_mode = 0; - this->orientation_est = 0.0f; - this->pitch_est = 0.0f; - this->distance_est = 0.0f; - this->yaw_est = 0.0f; - this->tag_roll = 0.0f; - this->tag_pitch = 0.0f; - this->tag_yaw = 0.0f; - this->base_roll = 0.0f; - this->base_pitch = 0.0f; - this->base_yaw = 0.0f; - std::fill::iterator, float>(this->joystick.begin(), this->joystick.end(), 0.0f); - this->error_state = 0; - this->buttons = 0; - this->enabled_from_app = 0; - } - } - - explicit UwbState_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - : version(_alloc), - joystick(_alloc) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - std::fill::iterator, uint8_t>(this->version.begin(), this->version.end(), 0); - this->channel = 0; - this->joy_mode = 0; - this->orientation_est = 0.0f; - this->pitch_est = 0.0f; - this->distance_est = 0.0f; - this->yaw_est = 0.0f; - this->tag_roll = 0.0f; - this->tag_pitch = 0.0f; - this->tag_yaw = 0.0f; - this->base_roll = 0.0f; - this->base_pitch = 0.0f; - this->base_yaw = 0.0f; - std::fill::iterator, float>(this->joystick.begin(), this->joystick.end(), 0.0f); - this->error_state = 0; - this->buttons = 0; - this->enabled_from_app = 0; - } - } - - // field types and members - using _version_type = - std::array; - _version_type version; - using _channel_type = - uint8_t; - _channel_type channel; - using _joy_mode_type = - uint8_t; - _joy_mode_type joy_mode; - using _orientation_est_type = - float; - _orientation_est_type orientation_est; - using _pitch_est_type = - float; - _pitch_est_type pitch_est; - using _distance_est_type = - float; - _distance_est_type distance_est; - using _yaw_est_type = - float; - _yaw_est_type yaw_est; - using _tag_roll_type = - float; - _tag_roll_type tag_roll; - using _tag_pitch_type = - float; - _tag_pitch_type tag_pitch; - using _tag_yaw_type = - float; - _tag_yaw_type tag_yaw; - using _base_roll_type = - float; - _base_roll_type base_roll; - using _base_pitch_type = - float; - _base_pitch_type base_pitch; - using _base_yaw_type = - float; - _base_yaw_type base_yaw; - using _joystick_type = - std::array; - _joystick_type joystick; - using _error_state_type = - uint8_t; - _error_state_type error_state; - using _buttons_type = - uint8_t; - _buttons_type buttons; - using _enabled_from_app_type = - uint8_t; - _enabled_from_app_type enabled_from_app; - - // setters for named parameter idiom - Type & set__version( - const std::array & _arg) - { - this->version = _arg; - return *this; - } - Type & set__channel( - const uint8_t & _arg) - { - this->channel = _arg; - return *this; - } - Type & set__joy_mode( - const uint8_t & _arg) - { - this->joy_mode = _arg; - return *this; - } - Type & set__orientation_est( - const float & _arg) - { - this->orientation_est = _arg; - return *this; - } - Type & set__pitch_est( - const float & _arg) - { - this->pitch_est = _arg; - return *this; - } - Type & set__distance_est( - const float & _arg) - { - this->distance_est = _arg; - return *this; - } - Type & set__yaw_est( - const float & _arg) - { - this->yaw_est = _arg; - return *this; - } - Type & set__tag_roll( - const float & _arg) - { - this->tag_roll = _arg; - return *this; - } - Type & set__tag_pitch( - const float & _arg) - { - this->tag_pitch = _arg; - return *this; - } - Type & set__tag_yaw( - const float & _arg) - { - this->tag_yaw = _arg; - return *this; - } - Type & set__base_roll( - const float & _arg) - { - this->base_roll = _arg; - return *this; - } - Type & set__base_pitch( - const float & _arg) - { - this->base_pitch = _arg; - return *this; - } - Type & set__base_yaw( - const float & _arg) - { - this->base_yaw = _arg; - return *this; - } - Type & set__joystick( - const std::array & _arg) - { - this->joystick = _arg; - return *this; - } - Type & set__error_state( - const uint8_t & _arg) - { - this->error_state = _arg; - return *this; - } - Type & set__buttons( - const uint8_t & _arg) - { - this->buttons = _arg; - return *this; - } - Type & set__enabled_from_app( - const uint8_t & _arg) - { - this->enabled_from_app = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::UwbState_ *; - using ConstRawPtr = - const unitree_go::msg::UwbState_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__UwbState - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__UwbState - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const UwbState_ & other) const - { - if (this->version != other.version) { - return false; - } - if (this->channel != other.channel) { - return false; - } - if (this->joy_mode != other.joy_mode) { - return false; - } - if (this->orientation_est != other.orientation_est) { - return false; - } - if (this->pitch_est != other.pitch_est) { - return false; - } - if (this->distance_est != other.distance_est) { - return false; - } - if (this->yaw_est != other.yaw_est) { - return false; - } - if (this->tag_roll != other.tag_roll) { - return false; - } - if (this->tag_pitch != other.tag_pitch) { - return false; - } - if (this->tag_yaw != other.tag_yaw) { - return false; - } - if (this->base_roll != other.base_roll) { - return false; - } - if (this->base_pitch != other.base_pitch) { - return false; - } - if (this->base_yaw != other.base_yaw) { - return false; - } - if (this->joystick != other.joystick) { - return false; - } - if (this->error_state != other.error_state) { - return false; - } - if (this->buttons != other.buttons) { - return false; - } - if (this->enabled_from_app != other.enabled_from_app) { - return false; - } - return true; - } - bool operator!=(const UwbState_ & other) const - { - return !this->operator==(other); - } -}; // struct UwbState_ - -// alias to use template instance with default allocator -using UwbState = - unitree_go::msg::UwbState_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__traits.hpp deleted file mode 100644 index cc7b0cd..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__TRAITS_HPP_ - -#include "unitree_go/msg/detail/uwb_state__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::UwbState"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/UwbState"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.c deleted file mode 100644 index 79ba49b..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.c +++ /dev/null @@ -1,321 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/uwb_state__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/uwb_state__functions.h" -#include "unitree_go/msg/detail/uwb_state__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void UwbState__rosidl_typesupport_introspection_c__UwbState_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__UwbState__init(message_memory); -} - -void UwbState__rosidl_typesupport_introspection_c__UwbState_fini_function(void * message_memory) -{ - unitree_go__msg__UwbState__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember UwbState__rosidl_typesupport_introspection_c__UwbState_message_member_array[17] = { - { - "version", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, version), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "channel", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, channel), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "joy_mode", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, joy_mode), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "orientation_est", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, orientation_est), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "pitch_est", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, pitch_est), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "distance_est", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, distance_est), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "yaw_est", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, yaw_est), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "tag_roll", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, tag_roll), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "tag_pitch", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, tag_pitch), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "tag_yaw", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, tag_yaw), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "base_roll", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, base_roll), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "base_pitch", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, base_pitch), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "base_yaw", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, base_yaw), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "joystick", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, joystick), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "error_state", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, error_state), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "buttons", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, buttons), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "enabled_from_app", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbState, enabled_from_app), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers UwbState__rosidl_typesupport_introspection_c__UwbState_message_members = { - "unitree_go__msg", // message namespace - "UwbState", // message name - 17, // number of fields - sizeof(unitree_go__msg__UwbState), - UwbState__rosidl_typesupport_introspection_c__UwbState_message_member_array, // message members - UwbState__rosidl_typesupport_introspection_c__UwbState_init_function, // function to initialize message memory (memory has to be allocated) - UwbState__rosidl_typesupport_introspection_c__UwbState_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t UwbState__rosidl_typesupport_introspection_c__UwbState_message_type_support_handle = { - 0, - &UwbState__rosidl_typesupport_introspection_c__UwbState_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, UwbState)() { - if (!UwbState__rosidl_typesupport_introspection_c__UwbState_message_type_support_handle.typesupport_identifier) { - UwbState__rosidl_typesupport_introspection_c__UwbState_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &UwbState__rosidl_typesupport_introspection_c__UwbState_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.cpp deleted file mode 100644 index ef785d2..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.cpp +++ /dev/null @@ -1,387 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/uwb_state__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void UwbState_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::UwbState(_init); -} - -void UwbState_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~UwbState(); -} - -size_t size_function__UwbState__version(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__UwbState__version(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__UwbState__version(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -size_t size_function__UwbState__joystick(const void * untyped_member) -{ - (void)untyped_member; - return 2; -} - -const void * get_const_function__UwbState__joystick(const void * untyped_member, size_t index) -{ - const auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -void * get_function__UwbState__joystick(void * untyped_member, size_t index) -{ - auto & member = - *reinterpret_cast *>(untyped_member); - return &member[index]; -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember UwbState_message_member_array[17] = { - { - "version", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, version), // bytes offset in struct - nullptr, // default value - size_function__UwbState__version, // size() function pointer - get_const_function__UwbState__version, // get_const(index) function pointer - get_function__UwbState__version, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "channel", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, channel), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "joy_mode", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, joy_mode), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "orientation_est", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, orientation_est), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "pitch_est", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, pitch_est), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "distance_est", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, distance_est), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "yaw_est", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, yaw_est), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "tag_roll", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, tag_roll), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "tag_pitch", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, tag_pitch), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "tag_yaw", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, tag_yaw), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "base_roll", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, base_roll), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "base_pitch", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, base_pitch), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "base_yaw", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, base_yaw), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "joystick", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - true, // is array - 2, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, joystick), // bytes offset in struct - nullptr, // default value - size_function__UwbState__joystick, // size() function pointer - get_const_function__UwbState__joystick, // get_const(index) function pointer - get_function__UwbState__joystick, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "error_state", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, error_state), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "buttons", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, buttons), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "enabled_from_app", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbState, enabled_from_app), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers UwbState_message_members = { - "unitree_go::msg", // message namespace - "UwbState", // message name - 17, // number of fields - sizeof(unitree_go::msg::UwbState), - UwbState_message_member_array, // message members - UwbState_init_function, // function to initialize message memory (memory has to be allocated) - UwbState_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t UwbState_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &UwbState_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::UwbState_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, UwbState)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::UwbState_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.h deleted file mode 100644 index edda64e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - UwbState -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.hpp deleted file mode 100644 index c2bdb62..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_state__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_STATE__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_STATE__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - UwbState -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_STATE__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__builder.hpp deleted file mode 100644 index 9f6dc91..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__builder.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__BUILDER_HPP_ - -#include "unitree_go/msg/detail/uwb_switch__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_UwbSwitch_enabled -{ -public: - Init_UwbSwitch_enabled() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - ::unitree_go::msg::UwbSwitch enabled(::unitree_go::msg::UwbSwitch::_enabled_type arg) - { - msg_.enabled = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::UwbSwitch msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::UwbSwitch>() -{ - return unitree_go::msg::builder::Init_UwbSwitch_enabled(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.c deleted file mode 100644 index de538ba..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.c +++ /dev/null @@ -1,231 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/uwb_switch__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__UwbSwitch__init(unitree_go__msg__UwbSwitch * msg) -{ - if (!msg) { - return false; - } - // enabled - return true; -} - -void -unitree_go__msg__UwbSwitch__fini(unitree_go__msg__UwbSwitch * msg) -{ - if (!msg) { - return; - } - // enabled -} - -bool -unitree_go__msg__UwbSwitch__are_equal(const unitree_go__msg__UwbSwitch * lhs, const unitree_go__msg__UwbSwitch * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // enabled - if (lhs->enabled != rhs->enabled) { - return false; - } - return true; -} - -bool -unitree_go__msg__UwbSwitch__copy( - const unitree_go__msg__UwbSwitch * input, - unitree_go__msg__UwbSwitch * output) -{ - if (!input || !output) { - return false; - } - // enabled - output->enabled = input->enabled; - return true; -} - -unitree_go__msg__UwbSwitch * -unitree_go__msg__UwbSwitch__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__UwbSwitch * msg = (unitree_go__msg__UwbSwitch *)allocator.allocate(sizeof(unitree_go__msg__UwbSwitch), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__UwbSwitch)); - bool success = unitree_go__msg__UwbSwitch__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__UwbSwitch__destroy(unitree_go__msg__UwbSwitch * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__UwbSwitch__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__UwbSwitch__Sequence__init(unitree_go__msg__UwbSwitch__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__UwbSwitch * data = NULL; - - if (size) { - data = (unitree_go__msg__UwbSwitch *)allocator.zero_allocate(size, sizeof(unitree_go__msg__UwbSwitch), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__UwbSwitch__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__UwbSwitch__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__UwbSwitch__Sequence__fini(unitree_go__msg__UwbSwitch__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__UwbSwitch__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__UwbSwitch__Sequence * -unitree_go__msg__UwbSwitch__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__UwbSwitch__Sequence * array = (unitree_go__msg__UwbSwitch__Sequence *)allocator.allocate(sizeof(unitree_go__msg__UwbSwitch__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__UwbSwitch__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__UwbSwitch__Sequence__destroy(unitree_go__msg__UwbSwitch__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__UwbSwitch__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__UwbSwitch__Sequence__are_equal(const unitree_go__msg__UwbSwitch__Sequence * lhs, const unitree_go__msg__UwbSwitch__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__UwbSwitch__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__UwbSwitch__Sequence__copy( - const unitree_go__msg__UwbSwitch__Sequence * input, - unitree_go__msg__UwbSwitch__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__UwbSwitch); - unitree_go__msg__UwbSwitch * data = - (unitree_go__msg__UwbSwitch *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__UwbSwitch__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__UwbSwitch__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__UwbSwitch__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.h deleted file mode 100644 index 03b8a4f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/uwb_switch__struct.h" - -/// Initialize msg/UwbSwitch message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__UwbSwitch - * )) before or use - * unitree_go__msg__UwbSwitch__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbSwitch__init(unitree_go__msg__UwbSwitch * msg); - -/// Finalize msg/UwbSwitch message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbSwitch__fini(unitree_go__msg__UwbSwitch * msg); - -/// Create msg/UwbSwitch message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__UwbSwitch__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__UwbSwitch * -unitree_go__msg__UwbSwitch__create(); - -/// Destroy msg/UwbSwitch message. -/** - * It calls - * unitree_go__msg__UwbSwitch__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbSwitch__destroy(unitree_go__msg__UwbSwitch * msg); - -/// Check for msg/UwbSwitch message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbSwitch__are_equal(const unitree_go__msg__UwbSwitch * lhs, const unitree_go__msg__UwbSwitch * rhs); - -/// Copy a msg/UwbSwitch message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbSwitch__copy( - const unitree_go__msg__UwbSwitch * input, - unitree_go__msg__UwbSwitch * output); - -/// Initialize array of msg/UwbSwitch messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__UwbSwitch__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbSwitch__Sequence__init(unitree_go__msg__UwbSwitch__Sequence * array, size_t size); - -/// Finalize array of msg/UwbSwitch messages. -/** - * It calls - * unitree_go__msg__UwbSwitch__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbSwitch__Sequence__fini(unitree_go__msg__UwbSwitch__Sequence * array); - -/// Create array of msg/UwbSwitch messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__UwbSwitch__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__UwbSwitch__Sequence * -unitree_go__msg__UwbSwitch__Sequence__create(size_t size); - -/// Destroy array of msg/UwbSwitch messages. -/** - * It calls - * unitree_go__msg__UwbSwitch__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__UwbSwitch__Sequence__destroy(unitree_go__msg__UwbSwitch__Sequence * array); - -/// Check for msg/UwbSwitch message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbSwitch__Sequence__are_equal(const unitree_go__msg__UwbSwitch__Sequence * lhs, const unitree_go__msg__UwbSwitch__Sequence * rhs); - -/// Copy an array of msg/UwbSwitch messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__UwbSwitch__Sequence__copy( - const unitree_go__msg__UwbSwitch__Sequence * input, - unitree_go__msg__UwbSwitch__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index dd73301..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__UwbSwitch( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__UwbSwitch( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, UwbSwitch)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index e361630..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/uwb_switch__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::UwbSwitch & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::UwbSwitch & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::UwbSwitch & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_UwbSwitch( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, UwbSwitch)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_c.h deleted file mode 100644 index dfd5ad9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, UwbSwitch)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index 3a61be8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, UwbSwitch)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.h deleted file mode 100644 index 5ef47e3..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.h +++ /dev/null @@ -1,40 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/UwbSwitch in the package unitree_go. -typedef struct unitree_go__msg__UwbSwitch -{ - uint8_t enabled; -} unitree_go__msg__UwbSwitch; - -// Struct for a sequence of unitree_go__msg__UwbSwitch. -typedef struct unitree_go__msg__UwbSwitch__Sequence -{ - unitree_go__msg__UwbSwitch * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__UwbSwitch__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.hpp deleted file mode 100644 index 53687e1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__struct.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__UwbSwitch __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__UwbSwitch __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct UwbSwitch_ -{ - using Type = UwbSwitch_; - - explicit UwbSwitch_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->enabled = 0; - } - } - - explicit UwbSwitch_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->enabled = 0; - } - } - - // field types and members - using _enabled_type = - uint8_t; - _enabled_type enabled; - - // setters for named parameter idiom - Type & set__enabled( - const uint8_t & _arg) - { - this->enabled = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::UwbSwitch_ *; - using ConstRawPtr = - const unitree_go::msg::UwbSwitch_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__UwbSwitch - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__UwbSwitch - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const UwbSwitch_ & other) const - { - if (this->enabled != other.enabled) { - return false; - } - return true; - } - bool operator!=(const UwbSwitch_ & other) const - { - return !this->operator==(other); - } -}; // struct UwbSwitch_ - -// alias to use template instance with default allocator -using UwbSwitch = - unitree_go::msg::UwbSwitch_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__traits.hpp deleted file mode 100644 index c7a7d65..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TRAITS_HPP_ - -#include "unitree_go/msg/detail/uwb_switch__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::UwbSwitch"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/UwbSwitch"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.c deleted file mode 100644 index 19a4eb9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.c +++ /dev/null @@ -1,81 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/uwb_switch__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/uwb_switch__functions.h" -#include "unitree_go/msg/detail/uwb_switch__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__UwbSwitch__init(message_memory); -} - -void UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_fini_function(void * message_memory) -{ - unitree_go__msg__UwbSwitch__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_member_array[1] = { - { - "enabled", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT8, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__UwbSwitch, enabled), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_members = { - "unitree_go__msg", // message namespace - "UwbSwitch", // message name - 1, // number of fields - sizeof(unitree_go__msg__UwbSwitch), - UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_member_array, // message members - UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_init_function, // function to initialize message memory (memory has to be allocated) - UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_type_support_handle = { - 0, - &UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, UwbSwitch)() { - if (!UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_type_support_handle.typesupport_identifier) { - UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &UwbSwitch__rosidl_typesupport_introspection_c__UwbSwitch_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.cpp deleted file mode 100644 index 655a906..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/uwb_switch__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void UwbSwitch_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::UwbSwitch(_init); -} - -void UwbSwitch_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~UwbSwitch(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember UwbSwitch_message_member_array[1] = { - { - "enabled", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT8, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::UwbSwitch, enabled), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers UwbSwitch_message_members = { - "unitree_go::msg", // message namespace - "UwbSwitch", // message name - 1, // number of fields - sizeof(unitree_go::msg::UwbSwitch), - UwbSwitch_message_member_array, // message members - UwbSwitch_init_function, // function to initialize message memory (memory has to be allocated) - UwbSwitch_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t UwbSwitch_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &UwbSwitch_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::UwbSwitch_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, UwbSwitch)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::UwbSwitch_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.h deleted file mode 100644 index 5e0c51d..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - UwbSwitch -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.hpp deleted file mode 100644 index 6a267cc..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/uwb_switch__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - UwbSwitch -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__UWB_SWITCH__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__builder.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__builder.hpp deleted file mode 100644 index 66ec9e5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__builder.hpp +++ /dev/null @@ -1,119 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__builder.hpp.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__BUILDER_HPP_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__BUILDER_HPP_ - -#include "unitree_go/msg/detail/wireless_controller__struct.hpp" -#include -#include -#include - - -namespace unitree_go -{ - -namespace msg -{ - -namespace builder -{ - -class Init_WirelessController_keys -{ -public: - explicit Init_WirelessController_keys(::unitree_go::msg::WirelessController & msg) - : msg_(msg) - {} - ::unitree_go::msg::WirelessController keys(::unitree_go::msg::WirelessController::_keys_type arg) - { - msg_.keys = std::move(arg); - return std::move(msg_); - } - -private: - ::unitree_go::msg::WirelessController msg_; -}; - -class Init_WirelessController_ry -{ -public: - explicit Init_WirelessController_ry(::unitree_go::msg::WirelessController & msg) - : msg_(msg) - {} - Init_WirelessController_keys ry(::unitree_go::msg::WirelessController::_ry_type arg) - { - msg_.ry = std::move(arg); - return Init_WirelessController_keys(msg_); - } - -private: - ::unitree_go::msg::WirelessController msg_; -}; - -class Init_WirelessController_rx -{ -public: - explicit Init_WirelessController_rx(::unitree_go::msg::WirelessController & msg) - : msg_(msg) - {} - Init_WirelessController_ry rx(::unitree_go::msg::WirelessController::_rx_type arg) - { - msg_.rx = std::move(arg); - return Init_WirelessController_ry(msg_); - } - -private: - ::unitree_go::msg::WirelessController msg_; -}; - -class Init_WirelessController_ly -{ -public: - explicit Init_WirelessController_ly(::unitree_go::msg::WirelessController & msg) - : msg_(msg) - {} - Init_WirelessController_rx ly(::unitree_go::msg::WirelessController::_ly_type arg) - { - msg_.ly = std::move(arg); - return Init_WirelessController_rx(msg_); - } - -private: - ::unitree_go::msg::WirelessController msg_; -}; - -class Init_WirelessController_lx -{ -public: - Init_WirelessController_lx() - : msg_(::rosidl_runtime_cpp::MessageInitialization::SKIP) - {} - Init_WirelessController_ly lx(::unitree_go::msg::WirelessController::_lx_type arg) - { - msg_.lx = std::move(arg); - return Init_WirelessController_ly(msg_); - } - -private: - ::unitree_go::msg::WirelessController msg_; -}; - -} // namespace builder - -} // namespace msg - -template -auto build(); - -template<> -inline -auto build<::unitree_go::msg::WirelessController>() -{ - return unitree_go::msg::builder::Init_WirelessController_lx(); -} - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__BUILDER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.c deleted file mode 100644 index 24d212f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.c +++ /dev/null @@ -1,263 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.c.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/detail/wireless_controller__functions.h" - -#include -#include -#include -#include - -#include "rcutils/allocator.h" - - -bool -unitree_go__msg__WirelessController__init(unitree_go__msg__WirelessController * msg) -{ - if (!msg) { - return false; - } - // lx - // ly - // rx - // ry - // keys - return true; -} - -void -unitree_go__msg__WirelessController__fini(unitree_go__msg__WirelessController * msg) -{ - if (!msg) { - return; - } - // lx - // ly - // rx - // ry - // keys -} - -bool -unitree_go__msg__WirelessController__are_equal(const unitree_go__msg__WirelessController * lhs, const unitree_go__msg__WirelessController * rhs) -{ - if (!lhs || !rhs) { - return false; - } - // lx - if (lhs->lx != rhs->lx) { - return false; - } - // ly - if (lhs->ly != rhs->ly) { - return false; - } - // rx - if (lhs->rx != rhs->rx) { - return false; - } - // ry - if (lhs->ry != rhs->ry) { - return false; - } - // keys - if (lhs->keys != rhs->keys) { - return false; - } - return true; -} - -bool -unitree_go__msg__WirelessController__copy( - const unitree_go__msg__WirelessController * input, - unitree_go__msg__WirelessController * output) -{ - if (!input || !output) { - return false; - } - // lx - output->lx = input->lx; - // ly - output->ly = input->ly; - // rx - output->rx = input->rx; - // ry - output->ry = input->ry; - // keys - output->keys = input->keys; - return true; -} - -unitree_go__msg__WirelessController * -unitree_go__msg__WirelessController__create() -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__WirelessController * msg = (unitree_go__msg__WirelessController *)allocator.allocate(sizeof(unitree_go__msg__WirelessController), allocator.state); - if (!msg) { - return NULL; - } - memset(msg, 0, sizeof(unitree_go__msg__WirelessController)); - bool success = unitree_go__msg__WirelessController__init(msg); - if (!success) { - allocator.deallocate(msg, allocator.state); - return NULL; - } - return msg; -} - -void -unitree_go__msg__WirelessController__destroy(unitree_go__msg__WirelessController * msg) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (msg) { - unitree_go__msg__WirelessController__fini(msg); - } - allocator.deallocate(msg, allocator.state); -} - - -bool -unitree_go__msg__WirelessController__Sequence__init(unitree_go__msg__WirelessController__Sequence * array, size_t size) -{ - if (!array) { - return false; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__WirelessController * data = NULL; - - if (size) { - data = (unitree_go__msg__WirelessController *)allocator.zero_allocate(size, sizeof(unitree_go__msg__WirelessController), allocator.state); - if (!data) { - return false; - } - // initialize all array elements - size_t i; - for (i = 0; i < size; ++i) { - bool success = unitree_go__msg__WirelessController__init(&data[i]); - if (!success) { - break; - } - } - if (i < size) { - // if initialization failed finalize the already initialized array elements - for (; i > 0; --i) { - unitree_go__msg__WirelessController__fini(&data[i - 1]); - } - allocator.deallocate(data, allocator.state); - return false; - } - } - array->data = data; - array->size = size; - array->capacity = size; - return true; -} - -void -unitree_go__msg__WirelessController__Sequence__fini(unitree_go__msg__WirelessController__Sequence * array) -{ - if (!array) { - return; - } - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - - if (array->data) { - // ensure that data and capacity values are consistent - assert(array->capacity > 0); - // finalize all array elements - for (size_t i = 0; i < array->capacity; ++i) { - unitree_go__msg__WirelessController__fini(&array->data[i]); - } - allocator.deallocate(array->data, allocator.state); - array->data = NULL; - array->size = 0; - array->capacity = 0; - } else { - // ensure that data, size, and capacity values are consistent - assert(0 == array->size); - assert(0 == array->capacity); - } -} - -unitree_go__msg__WirelessController__Sequence * -unitree_go__msg__WirelessController__Sequence__create(size_t size) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - unitree_go__msg__WirelessController__Sequence * array = (unitree_go__msg__WirelessController__Sequence *)allocator.allocate(sizeof(unitree_go__msg__WirelessController__Sequence), allocator.state); - if (!array) { - return NULL; - } - bool success = unitree_go__msg__WirelessController__Sequence__init(array, size); - if (!success) { - allocator.deallocate(array, allocator.state); - return NULL; - } - return array; -} - -void -unitree_go__msg__WirelessController__Sequence__destroy(unitree_go__msg__WirelessController__Sequence * array) -{ - rcutils_allocator_t allocator = rcutils_get_default_allocator(); - if (array) { - unitree_go__msg__WirelessController__Sequence__fini(array); - } - allocator.deallocate(array, allocator.state); -} - -bool -unitree_go__msg__WirelessController__Sequence__are_equal(const unitree_go__msg__WirelessController__Sequence * lhs, const unitree_go__msg__WirelessController__Sequence * rhs) -{ - if (!lhs || !rhs) { - return false; - } - if (lhs->size != rhs->size) { - return false; - } - for (size_t i = 0; i < lhs->size; ++i) { - if (!unitree_go__msg__WirelessController__are_equal(&(lhs->data[i]), &(rhs->data[i]))) { - return false; - } - } - return true; -} - -bool -unitree_go__msg__WirelessController__Sequence__copy( - const unitree_go__msg__WirelessController__Sequence * input, - unitree_go__msg__WirelessController__Sequence * output) -{ - if (!input || !output) { - return false; - } - if (output->capacity < input->size) { - const size_t allocation_size = - input->size * sizeof(unitree_go__msg__WirelessController); - unitree_go__msg__WirelessController * data = - (unitree_go__msg__WirelessController *)realloc(output->data, allocation_size); - if (!data) { - return false; - } - for (size_t i = output->capacity; i < input->size; ++i) { - if (!unitree_go__msg__WirelessController__init(&data[i])) { - /* free currently allocated and return false */ - for (; i-- > output->capacity; ) { - unitree_go__msg__WirelessController__fini(&data[i]); - } - free(data); - return false; - } - } - output->data = data; - output->capacity = input->size; - } - output->size = input->size; - for (size_t i = 0; i < input->size; ++i) { - if (!unitree_go__msg__WirelessController__copy( - &(input->data[i]), &(output->data[i]))) - { - return false; - } - } - return true; -} diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.h deleted file mode 100644 index 0172ba8..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__functions.h +++ /dev/null @@ -1,177 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__functions.h.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__FUNCTIONS_H_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__FUNCTIONS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include - -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#include "unitree_go/msg/detail/wireless_controller__struct.h" - -/// Initialize msg/WirelessController message. -/** - * If the init function is called twice for the same message without - * calling fini inbetween previously allocated memory will be leaked. - * \param[in,out] msg The previously allocated message pointer. - * Fields without a default value will not be initialized by this function. - * You might want to call memset(msg, 0, sizeof( - * unitree_go__msg__WirelessController - * )) before or use - * unitree_go__msg__WirelessController__create() - * to allocate and initialize the message. - * \return true if initialization was successful, otherwise false - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__WirelessController__init(unitree_go__msg__WirelessController * msg); - -/// Finalize msg/WirelessController message. -/** - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__WirelessController__fini(unitree_go__msg__WirelessController * msg); - -/// Create msg/WirelessController message. -/** - * It allocates the memory for the message, sets the memory to zero, and - * calls - * unitree_go__msg__WirelessController__init(). - * \return The pointer to the initialized message if successful, - * otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__WirelessController * -unitree_go__msg__WirelessController__create(); - -/// Destroy msg/WirelessController message. -/** - * It calls - * unitree_go__msg__WirelessController__fini() - * and frees the memory of the message. - * \param[in,out] msg The allocated message pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__WirelessController__destroy(unitree_go__msg__WirelessController * msg); - -/// Check for msg/WirelessController message equality. -/** - * \param[in] lhs The message on the left hand size of the equality operator. - * \param[in] rhs The message on the right hand size of the equality operator. - * \return true if messages are equal, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__WirelessController__are_equal(const unitree_go__msg__WirelessController * lhs, const unitree_go__msg__WirelessController * rhs); - -/// Copy a msg/WirelessController message. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source message pointer. - * \param[out] output The target message pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer is null - * or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__WirelessController__copy( - const unitree_go__msg__WirelessController * input, - unitree_go__msg__WirelessController * output); - -/// Initialize array of msg/WirelessController messages. -/** - * It allocates the memory for the number of elements and calls - * unitree_go__msg__WirelessController__init() - * for each element of the array. - * \param[in,out] array The allocated array pointer. - * \param[in] size The size / capacity of the array. - * \return true if initialization was successful, otherwise false - * If the array pointer is valid and the size is zero it is guaranteed - # to return true. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__WirelessController__Sequence__init(unitree_go__msg__WirelessController__Sequence * array, size_t size); - -/// Finalize array of msg/WirelessController messages. -/** - * It calls - * unitree_go__msg__WirelessController__fini() - * for each element of the array and frees the memory for the number of - * elements. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__WirelessController__Sequence__fini(unitree_go__msg__WirelessController__Sequence * array); - -/// Create array of msg/WirelessController messages. -/** - * It allocates the memory for the array and calls - * unitree_go__msg__WirelessController__Sequence__init(). - * \param[in] size The size / capacity of the array. - * \return The pointer to the initialized array if successful, otherwise NULL - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -unitree_go__msg__WirelessController__Sequence * -unitree_go__msg__WirelessController__Sequence__create(size_t size); - -/// Destroy array of msg/WirelessController messages. -/** - * It calls - * unitree_go__msg__WirelessController__Sequence__fini() - * on the array, - * and frees the memory of the array. - * \param[in,out] array The initialized array pointer. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -void -unitree_go__msg__WirelessController__Sequence__destroy(unitree_go__msg__WirelessController__Sequence * array); - -/// Check for msg/WirelessController message array equality. -/** - * \param[in] lhs The message array on the left hand size of the equality operator. - * \param[in] rhs The message array on the right hand size of the equality operator. - * \return true if message arrays are equal in size and content, otherwise false. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__WirelessController__Sequence__are_equal(const unitree_go__msg__WirelessController__Sequence * lhs, const unitree_go__msg__WirelessController__Sequence * rhs); - -/// Copy an array of msg/WirelessController messages. -/** - * This functions performs a deep copy, as opposed to the shallow copy that - * plain assignment yields. - * - * \param[in] input The source array pointer. - * \param[out] output The target array pointer, which must - * have been initialized before calling this function. - * \return true if successful, or false if either pointer - * is null or memory allocation fails. - */ -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -bool -unitree_go__msg__WirelessController__Sequence__copy( - const unitree_go__msg__WirelessController__Sequence * input, - unitree_go__msg__WirelessController__Sequence * output); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__FUNCTIONS_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_c.h deleted file mode 100644 index 588e22f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_c.h +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_c/resource/idl__rosidl_typesupport_fastrtps_c.h.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ - - -#include -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t get_serialized_size_unitree_go__msg__WirelessController( - const void * untyped_ros_message, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -size_t max_serialized_size_unitree_go__msg__WirelessController( - bool & full_bounded, - size_t current_alignment); - -ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_c, unitree_go, msg, WirelessController)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_FASTRTPS_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_cpp.hpp deleted file mode 100644 index 408d255..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_fastrtps_cpp.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// generated from rosidl_typesupport_fastrtps_cpp/resource/idl__rosidl_typesupport_fastrtps_cpp.hpp.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h" -#include "unitree_go/msg/detail/wireless_controller__struct.hpp" - -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-parameter" -# ifdef __clang__ -# pragma clang diagnostic ignored "-Wdeprecated-register" -# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" -# endif -#endif -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif - -#include "fastcdr/Cdr.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace typesupport_fastrtps_cpp -{ - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_serialize( - const unitree_go::msg::WirelessController & ros_message, - eprosima::fastcdr::Cdr & cdr); - -bool -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -cdr_deserialize( - eprosima::fastcdr::Cdr & cdr, - unitree_go::msg::WirelessController & ros_message); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -get_serialized_size( - const unitree_go::msg::WirelessController & ros_message, - size_t current_alignment); - -size_t -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -max_serialized_size_WirelessController( - bool & full_bounded, - size_t current_alignment); - -} // namespace typesupport_fastrtps_cpp - -} // namespace msg - -} // namespace unitree_go - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_fastrtps_cpp, unitree_go, msg, WirelessController)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_FASTRTPS_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_c.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_c.h deleted file mode 100644 index e8a8623..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_c.h +++ /dev/null @@ -1,26 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__rosidl_typesupport_introspection_c.h.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, WirelessController)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_INTROSPECTION_C_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_cpp.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_cpp.hpp deleted file mode 100644 index cbaa473..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_cpp.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__rosidl_typesupport_introspection_cpp.h.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ - - -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_interface/macros.h" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -// TODO(dirk-thomas) these visibility macros should be message package specific -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, WirelessController)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.h deleted file mode 100644 index fe23990..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.h +++ /dev/null @@ -1,44 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__struct.h.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__STRUCT_H_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__STRUCT_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include - - -// Constants defined in the message - -// Struct defined in msg/WirelessController in the package unitree_go. -typedef struct unitree_go__msg__WirelessController -{ - float lx; - float ly; - float rx; - float ry; - uint16_t keys; -} unitree_go__msg__WirelessController; - -// Struct for a sequence of unitree_go__msg__WirelessController. -typedef struct unitree_go__msg__WirelessController__Sequence -{ - unitree_go__msg__WirelessController * data; - /// The number of valid items in data - size_t size; - /// The number of allocated items in data - size_t capacity; -} unitree_go__msg__WirelessController__Sequence; - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__STRUCT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.hpp deleted file mode 100644 index a77cab5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__struct.hpp +++ /dev/null @@ -1,186 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__struct.hpp.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__STRUCT_HPP_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__STRUCT_HPP_ - -#include -#include -#include -#include -#include -#include -#include - - -#ifndef _WIN32 -# define DEPRECATED__unitree_go__msg__WirelessController __attribute__((deprecated)) -#else -# define DEPRECATED__unitree_go__msg__WirelessController __declspec(deprecated) -#endif - -namespace unitree_go -{ - -namespace msg -{ - -// message struct -template -struct WirelessController_ -{ - using Type = WirelessController_; - - explicit WirelessController_(rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->lx = 0.0f; - this->ly = 0.0f; - this->rx = 0.0f; - this->ry = 0.0f; - this->keys = 0; - } - } - - explicit WirelessController_(const ContainerAllocator & _alloc, rosidl_runtime_cpp::MessageInitialization _init = rosidl_runtime_cpp::MessageInitialization::ALL) - { - (void)_alloc; - if (rosidl_runtime_cpp::MessageInitialization::ALL == _init || - rosidl_runtime_cpp::MessageInitialization::ZERO == _init) - { - this->lx = 0.0f; - this->ly = 0.0f; - this->rx = 0.0f; - this->ry = 0.0f; - this->keys = 0; - } - } - - // field types and members - using _lx_type = - float; - _lx_type lx; - using _ly_type = - float; - _ly_type ly; - using _rx_type = - float; - _rx_type rx; - using _ry_type = - float; - _ry_type ry; - using _keys_type = - uint16_t; - _keys_type keys; - - // setters for named parameter idiom - Type & set__lx( - const float & _arg) - { - this->lx = _arg; - return *this; - } - Type & set__ly( - const float & _arg) - { - this->ly = _arg; - return *this; - } - Type & set__rx( - const float & _arg) - { - this->rx = _arg; - return *this; - } - Type & set__ry( - const float & _arg) - { - this->ry = _arg; - return *this; - } - Type & set__keys( - const uint16_t & _arg) - { - this->keys = _arg; - return *this; - } - - // constant declarations - - // pointer types - using RawPtr = - unitree_go::msg::WirelessController_ *; - using ConstRawPtr = - const unitree_go::msg::WirelessController_ *; - using SharedPtr = - std::shared_ptr>; - using ConstSharedPtr = - std::shared_ptr const>; - - template>> - using UniquePtrWithDeleter = - std::unique_ptr, Deleter>; - - using UniquePtr = UniquePtrWithDeleter<>; - - template>> - using ConstUniquePtrWithDeleter = - std::unique_ptr const, Deleter>; - using ConstUniquePtr = ConstUniquePtrWithDeleter<>; - - using WeakPtr = - std::weak_ptr>; - using ConstWeakPtr = - std::weak_ptr const>; - - // pointer types similar to ROS 1, use SharedPtr / ConstSharedPtr instead - // NOTE: Can't use 'using' here because GNU C++ can't parse attributes properly - typedef DEPRECATED__unitree_go__msg__WirelessController - std::shared_ptr> - Ptr; - typedef DEPRECATED__unitree_go__msg__WirelessController - std::shared_ptr const> - ConstPtr; - - // comparison operators - bool operator==(const WirelessController_ & other) const - { - if (this->lx != other.lx) { - return false; - } - if (this->ly != other.ly) { - return false; - } - if (this->rx != other.rx) { - return false; - } - if (this->ry != other.ry) { - return false; - } - if (this->keys != other.keys) { - return false; - } - return true; - } - bool operator!=(const WirelessController_ & other) const - { - return !this->operator==(other); - } -}; // struct WirelessController_ - -// alias to use template instance with default allocator -using WirelessController = - unitree_go::msg::WirelessController_>; - -// constant definitions - -} // namespace msg - -} // namespace unitree_go - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__STRUCT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__traits.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__traits.hpp deleted file mode 100644 index b1ecefe..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__traits.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TRAITS_HPP_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TRAITS_HPP_ - -#include "unitree_go/msg/detail/wireless_controller__struct.hpp" -#include -#include -#include - -namespace rosidl_generator_traits -{ - -template<> -inline const char * data_type() -{ - return "unitree_go::msg::WirelessController"; -} - -template<> -inline const char * name() -{ - return "unitree_go/msg/WirelessController"; -} - -template<> -struct has_fixed_size - : std::integral_constant {}; - -template<> -struct has_bounded_size - : std::integral_constant {}; - -template<> -struct is_message - : std::true_type {}; - -} // namespace rosidl_generator_traits - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TRAITS_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.c b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.c deleted file mode 100644 index 20f8522..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.c +++ /dev/null @@ -1,141 +0,0 @@ -// generated from rosidl_typesupport_introspection_c/resource/idl__type_support.c.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#include -#include "unitree_go/msg/detail/wireless_controller__rosidl_typesupport_introspection_c.h" -#include "unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h" -#include "rosidl_typesupport_introspection_c/field_types.h" -#include "rosidl_typesupport_introspection_c/identifier.h" -#include "rosidl_typesupport_introspection_c/message_introspection.h" -#include "unitree_go/msg/detail/wireless_controller__functions.h" -#include "unitree_go/msg/detail/wireless_controller__struct.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - -void WirelessController__rosidl_typesupport_introspection_c__WirelessController_init_function( - void * message_memory, enum rosidl_runtime_c__message_initialization _init) -{ - // TODO(karsten1987): initializers are not yet implemented for typesupport c - // see https://github.com/ros2/ros2/issues/397 - (void) _init; - unitree_go__msg__WirelessController__init(message_memory); -} - -void WirelessController__rosidl_typesupport_introspection_c__WirelessController_fini_function(void * message_memory) -{ - unitree_go__msg__WirelessController__fini(message_memory); -} - -static rosidl_typesupport_introspection_c__MessageMember WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_member_array[5] = { - { - "lx", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__WirelessController, lx), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "ly", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__WirelessController, ly), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "rx", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__WirelessController, rx), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "ry", // name - rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__WirelessController, ry), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - }, - { - "keys", // name - rosidl_typesupport_introspection_c__ROS_TYPE_UINT16, // type - 0, // upper bound of string - NULL, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go__msg__WirelessController, keys), // bytes offset in struct - NULL, // default value - NULL, // size() function pointer - NULL, // get_const(index) function pointer - NULL, // get(index) function pointer - NULL // resize(index) function pointer - } -}; - -static const rosidl_typesupport_introspection_c__MessageMembers WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_members = { - "unitree_go__msg", // message namespace - "WirelessController", // message name - 5, // number of fields - sizeof(unitree_go__msg__WirelessController), - WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_member_array, // message members - WirelessController__rosidl_typesupport_introspection_c__WirelessController_init_function, // function to initialize message memory (memory has to be allocated) - WirelessController__rosidl_typesupport_introspection_c__WirelessController_fini_function // function to terminate message instance (will not free memory) -}; - -// this is not const since it must be initialized on first access -// since C does not allow non-integral compile-time constants -static rosidl_message_type_support_t WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_type_support_handle = { - 0, - &WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_members, - get_message_typesupport_handle_function, -}; - -ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_c, unitree_go, msg, WirelessController)() { - if (!WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_type_support_handle.typesupport_identifier) { - WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_type_support_handle.typesupport_identifier = - rosidl_typesupport_introspection_c__identifier; - } - return &WirelessController__rosidl_typesupport_introspection_c__WirelessController_message_type_support_handle; -} -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.cpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.cpp deleted file mode 100644 index b12627f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.cpp +++ /dev/null @@ -1,167 +0,0 @@ -// generated from rosidl_typesupport_introspection_cpp/resource/idl__type_support.cpp.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#include "array" -#include "cstddef" -#include "string" -#include "vector" -#include "rosidl_runtime_c/message_type_support_struct.h" -#include "rosidl_typesupport_cpp/message_type_support.hpp" -#include "rosidl_typesupport_interface/macros.h" -#include "unitree_go/msg/detail/wireless_controller__struct.hpp" -#include "rosidl_typesupport_introspection_cpp/field_types.hpp" -#include "rosidl_typesupport_introspection_cpp/identifier.hpp" -#include "rosidl_typesupport_introspection_cpp/message_introspection.hpp" -#include "rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp" -#include "rosidl_typesupport_introspection_cpp/visibility_control.h" - -namespace unitree_go -{ - -namespace msg -{ - -namespace rosidl_typesupport_introspection_cpp -{ - -void WirelessController_init_function( - void * message_memory, rosidl_runtime_cpp::MessageInitialization _init) -{ - new (message_memory) unitree_go::msg::WirelessController(_init); -} - -void WirelessController_fini_function(void * message_memory) -{ - auto typed_message = static_cast(message_memory); - typed_message->~WirelessController(); -} - -static const ::rosidl_typesupport_introspection_cpp::MessageMember WirelessController_message_member_array[5] = { - { - "lx", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::WirelessController, lx), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "ly", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::WirelessController, ly), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "rx", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::WirelessController, rx), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "ry", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::WirelessController, ry), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - }, - { - "keys", // name - ::rosidl_typesupport_introspection_cpp::ROS_TYPE_UINT16, // type - 0, // upper bound of string - nullptr, // members of sub message - false, // is array - 0, // array size - false, // is upper bound - offsetof(unitree_go::msg::WirelessController, keys), // bytes offset in struct - nullptr, // default value - nullptr, // size() function pointer - nullptr, // get_const(index) function pointer - nullptr, // get(index) function pointer - nullptr // resize(index) function pointer - } -}; - -static const ::rosidl_typesupport_introspection_cpp::MessageMembers WirelessController_message_members = { - "unitree_go::msg", // message namespace - "WirelessController", // message name - 5, // number of fields - sizeof(unitree_go::msg::WirelessController), - WirelessController_message_member_array, // message members - WirelessController_init_function, // function to initialize message memory (memory has to be allocated) - WirelessController_fini_function // function to terminate message instance (will not free memory) -}; - -static const rosidl_message_type_support_t WirelessController_message_type_support_handle = { - ::rosidl_typesupport_introspection_cpp::typesupport_identifier, - &WirelessController_message_members, - get_message_typesupport_handle_function, -}; - -} // namespace rosidl_typesupport_introspection_cpp - -} // namespace msg - -} // namespace unitree_go - - -namespace rosidl_typesupport_introspection_cpp -{ - -template<> -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -get_message_type_support_handle() -{ - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::WirelessController_message_type_support_handle; -} - -} // namespace rosidl_typesupport_introspection_cpp - -#ifdef __cplusplus -extern "C" -{ -#endif - -ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(rosidl_typesupport_introspection_cpp, unitree_go, msg, WirelessController)() { - return &::unitree_go::msg::rosidl_typesupport_introspection_cpp::WirelessController_message_type_support_handle; -} - -#ifdef __cplusplus -} -#endif diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.h deleted file mode 100644 index e40fb74..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.h +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_c/resource/idl__type_support.h.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TYPE_SUPPORT_H_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TYPE_SUPPORT_H_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_c__visibility_control.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "rosidl_runtime_c/message_type_support_struct.h" - -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_C_PUBLIC_unitree_go -const rosidl_message_type_support_t * -ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - unitree_go, - msg, - WirelessController -)(); - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TYPE_SUPPORT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.hpp deleted file mode 100644 index 7fee35e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/detail/wireless_controller__type_support.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl__type_support.hpp.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TYPE_SUPPORT_HPP_ -#define UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TYPE_SUPPORT_HPP_ - -#include "rosidl_typesupport_interface/macros.h" - -#include "unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp" - -#include "rosidl_typesupport_cpp/message_type_support.hpp" - -#ifdef __cplusplus -extern "C" -{ -#endif -// Forward declare the get type support functions for this type. -ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go -const rosidl_message_type_support_t * - ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME( - rosidl_typesupport_cpp, - unitree_go, - msg, - WirelessController -)(); -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__DETAIL__WIRELESS_CONTROLLER__TYPE_SUPPORT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.h deleted file mode 100644 index d34d457..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__ERROR_H_ -#define UNITREE_GO__MSG__ERROR_H_ - -#include "unitree_go/msg/detail/error__struct.h" -#include "unitree_go/msg/detail/error__functions.h" -#include "unitree_go/msg/detail/error__type_support.h" - -#endif // UNITREE_GO__MSG__ERROR_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.hpp deleted file mode 100644 index 69d03b2..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/error.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__ERROR_HPP_ -#define UNITREE_GO__MSG__ERROR_HPP_ - -#include "unitree_go/msg/detail/error__struct.hpp" -#include "unitree_go/msg/detail/error__builder.hpp" -#include "unitree_go/msg/detail/error__traits.hpp" -#include "unitree_go/msg/detail/error__type_support.hpp" - -#endif // UNITREE_GO__MSG__ERROR_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.h deleted file mode 100644 index 8030eaa..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__GO2_FRONT_VIDEO_DATA_H_ -#define UNITREE_GO__MSG__GO2_FRONT_VIDEO_DATA_H_ - -#include "unitree_go/msg/detail/go2_front_video_data__struct.h" -#include "unitree_go/msg/detail/go2_front_video_data__functions.h" -#include "unitree_go/msg/detail/go2_front_video_data__type_support.h" - -#endif // UNITREE_GO__MSG__GO2_FRONT_VIDEO_DATA_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.hpp deleted file mode 100644 index 2818e32..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/go2_front_video_data.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__GO2_FRONT_VIDEO_DATA_HPP_ -#define UNITREE_GO__MSG__GO2_FRONT_VIDEO_DATA_HPP_ - -#include "unitree_go/msg/detail/go2_front_video_data__struct.hpp" -#include "unitree_go/msg/detail/go2_front_video_data__builder.hpp" -#include "unitree_go/msg/detail/go2_front_video_data__traits.hpp" -#include "unitree_go/msg/detail/go2_front_video_data__type_support.hpp" - -#endif // UNITREE_GO__MSG__GO2_FRONT_VIDEO_DATA_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.h deleted file mode 100644 index 1d43b49..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__HEIGHT_MAP_H_ -#define UNITREE_GO__MSG__HEIGHT_MAP_H_ - -#include "unitree_go/msg/detail/height_map__struct.h" -#include "unitree_go/msg/detail/height_map__functions.h" -#include "unitree_go/msg/detail/height_map__type_support.h" - -#endif // UNITREE_GO__MSG__HEIGHT_MAP_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.hpp deleted file mode 100644 index 5e89a32..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/height_map.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__HEIGHT_MAP_HPP_ -#define UNITREE_GO__MSG__HEIGHT_MAP_HPP_ - -#include "unitree_go/msg/detail/height_map__struct.hpp" -#include "unitree_go/msg/detail/height_map__builder.hpp" -#include "unitree_go/msg/detail/height_map__traits.hpp" -#include "unitree_go/msg/detail/height_map__type_support.hpp" - -#endif // UNITREE_GO__MSG__HEIGHT_MAP_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.h deleted file mode 100644 index 811c6bc..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__IMU_STATE_H_ -#define UNITREE_GO__MSG__IMU_STATE_H_ - -#include "unitree_go/msg/detail/imu_state__struct.h" -#include "unitree_go/msg/detail/imu_state__functions.h" -#include "unitree_go/msg/detail/imu_state__type_support.h" - -#endif // UNITREE_GO__MSG__IMU_STATE_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.hpp deleted file mode 100644 index d3ecf23..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/imu_state.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__IMU_STATE_HPP_ -#define UNITREE_GO__MSG__IMU_STATE_HPP_ - -#include "unitree_go/msg/detail/imu_state__struct.hpp" -#include "unitree_go/msg/detail/imu_state__builder.hpp" -#include "unitree_go/msg/detail/imu_state__traits.hpp" -#include "unitree_go/msg/detail/imu_state__type_support.hpp" - -#endif // UNITREE_GO__MSG__IMU_STATE_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.h deleted file mode 100644 index f32bb9e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__INTERFACE_CONFIG_H_ -#define UNITREE_GO__MSG__INTERFACE_CONFIG_H_ - -#include "unitree_go/msg/detail/interface_config__struct.h" -#include "unitree_go/msg/detail/interface_config__functions.h" -#include "unitree_go/msg/detail/interface_config__type_support.h" - -#endif // UNITREE_GO__MSG__INTERFACE_CONFIG_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.hpp deleted file mode 100644 index 3da4e0a..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/interface_config.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__INTERFACE_CONFIG_HPP_ -#define UNITREE_GO__MSG__INTERFACE_CONFIG_HPP_ - -#include "unitree_go/msg/detail/interface_config__struct.hpp" -#include "unitree_go/msg/detail/interface_config__builder.hpp" -#include "unitree_go/msg/detail/interface_config__traits.hpp" -#include "unitree_go/msg/detail/interface_config__type_support.hpp" - -#endif // UNITREE_GO__MSG__INTERFACE_CONFIG_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.h deleted file mode 100644 index 40a1aa9..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__LIDAR_STATE_H_ -#define UNITREE_GO__MSG__LIDAR_STATE_H_ - -#include "unitree_go/msg/detail/lidar_state__struct.h" -#include "unitree_go/msg/detail/lidar_state__functions.h" -#include "unitree_go/msg/detail/lidar_state__type_support.h" - -#endif // UNITREE_GO__MSG__LIDAR_STATE_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.hpp deleted file mode 100644 index e0972ac..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/lidar_state.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__LIDAR_STATE_HPP_ -#define UNITREE_GO__MSG__LIDAR_STATE_HPP_ - -#include "unitree_go/msg/detail/lidar_state__struct.hpp" -#include "unitree_go/msg/detail/lidar_state__builder.hpp" -#include "unitree_go/msg/detail/lidar_state__traits.hpp" -#include "unitree_go/msg/detail/lidar_state__type_support.hpp" - -#endif // UNITREE_GO__MSG__LIDAR_STATE_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.h deleted file mode 100644 index e341923..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__LOW_CMD_H_ -#define UNITREE_GO__MSG__LOW_CMD_H_ - -#include "unitree_go/msg/detail/low_cmd__struct.h" -#include "unitree_go/msg/detail/low_cmd__functions.h" -#include "unitree_go/msg/detail/low_cmd__type_support.h" - -#endif // UNITREE_GO__MSG__LOW_CMD_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.hpp deleted file mode 100644 index 72b89c0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_cmd.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__LOW_CMD_HPP_ -#define UNITREE_GO__MSG__LOW_CMD_HPP_ - -#include "unitree_go/msg/detail/low_cmd__struct.hpp" -#include "unitree_go/msg/detail/low_cmd__builder.hpp" -#include "unitree_go/msg/detail/low_cmd__traits.hpp" -#include "unitree_go/msg/detail/low_cmd__type_support.hpp" - -#endif // UNITREE_GO__MSG__LOW_CMD_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.h deleted file mode 100644 index 37a0af7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__LOW_STATE_H_ -#define UNITREE_GO__MSG__LOW_STATE_H_ - -#include "unitree_go/msg/detail/low_state__struct.h" -#include "unitree_go/msg/detail/low_state__functions.h" -#include "unitree_go/msg/detail/low_state__type_support.h" - -#endif // UNITREE_GO__MSG__LOW_STATE_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.hpp deleted file mode 100644 index bca19a5..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/low_state.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__LOW_STATE_HPP_ -#define UNITREE_GO__MSG__LOW_STATE_HPP_ - -#include "unitree_go/msg/detail/low_state__struct.hpp" -#include "unitree_go/msg/detail/low_state__builder.hpp" -#include "unitree_go/msg/detail/low_state__traits.hpp" -#include "unitree_go/msg/detail/low_state__type_support.hpp" - -#endif // UNITREE_GO__MSG__LOW_STATE_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.h deleted file mode 100644 index 68b630f..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__MOTOR_CMD_H_ -#define UNITREE_GO__MSG__MOTOR_CMD_H_ - -#include "unitree_go/msg/detail/motor_cmd__struct.h" -#include "unitree_go/msg/detail/motor_cmd__functions.h" -#include "unitree_go/msg/detail/motor_cmd__type_support.h" - -#endif // UNITREE_GO__MSG__MOTOR_CMD_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.hpp deleted file mode 100644 index 6b572ee..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_cmd.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__MOTOR_CMD_HPP_ -#define UNITREE_GO__MSG__MOTOR_CMD_HPP_ - -#include "unitree_go/msg/detail/motor_cmd__struct.hpp" -#include "unitree_go/msg/detail/motor_cmd__builder.hpp" -#include "unitree_go/msg/detail/motor_cmd__traits.hpp" -#include "unitree_go/msg/detail/motor_cmd__type_support.hpp" - -#endif // UNITREE_GO__MSG__MOTOR_CMD_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.h deleted file mode 100644 index 11a6aba..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__MOTOR_STATE_H_ -#define UNITREE_GO__MSG__MOTOR_STATE_H_ - -#include "unitree_go/msg/detail/motor_state__struct.h" -#include "unitree_go/msg/detail/motor_state__functions.h" -#include "unitree_go/msg/detail/motor_state__type_support.h" - -#endif // UNITREE_GO__MSG__MOTOR_STATE_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.hpp deleted file mode 100644 index 97aa176..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/motor_state.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__MOTOR_STATE_HPP_ -#define UNITREE_GO__MSG__MOTOR_STATE_HPP_ - -#include "unitree_go/msg/detail/motor_state__struct.hpp" -#include "unitree_go/msg/detail/motor_state__builder.hpp" -#include "unitree_go/msg/detail/motor_state__traits.hpp" -#include "unitree_go/msg/detail/motor_state__type_support.hpp" - -#endif // UNITREE_GO__MSG__MOTOR_STATE_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.h deleted file mode 100644 index f96e7b1..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__PATH_POINT_H_ -#define UNITREE_GO__MSG__PATH_POINT_H_ - -#include "unitree_go/msg/detail/path_point__struct.h" -#include "unitree_go/msg/detail/path_point__functions.h" -#include "unitree_go/msg/detail/path_point__type_support.h" - -#endif // UNITREE_GO__MSG__PATH_POINT_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.hpp deleted file mode 100644 index 621cdab..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/path_point.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__PATH_POINT_HPP_ -#define UNITREE_GO__MSG__PATH_POINT_HPP_ - -#include "unitree_go/msg/detail/path_point__struct.hpp" -#include "unitree_go/msg/detail/path_point__builder.hpp" -#include "unitree_go/msg/detail/path_point__traits.hpp" -#include "unitree_go/msg/detail/path_point__type_support.hpp" - -#endif // UNITREE_GO__MSG__PATH_POINT_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.h deleted file mode 100644 index 77124a4..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__REQ_H_ -#define UNITREE_GO__MSG__REQ_H_ - -#include "unitree_go/msg/detail/req__struct.h" -#include "unitree_go/msg/detail/req__functions.h" -#include "unitree_go/msg/detail/req__type_support.h" - -#endif // UNITREE_GO__MSG__REQ_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.hpp deleted file mode 100644 index 1409e67..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/req.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__REQ_HPP_ -#define UNITREE_GO__MSG__REQ_HPP_ - -#include "unitree_go/msg/detail/req__struct.hpp" -#include "unitree_go/msg/detail/req__builder.hpp" -#include "unitree_go/msg/detail/req__traits.hpp" -#include "unitree_go/msg/detail/req__type_support.hpp" - -#endif // UNITREE_GO__MSG__REQ_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.h deleted file mode 100644 index 21f7767..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__RES_H_ -#define UNITREE_GO__MSG__RES_H_ - -#include "unitree_go/msg/detail/res__struct.h" -#include "unitree_go/msg/detail/res__functions.h" -#include "unitree_go/msg/detail/res__type_support.h" - -#endif // UNITREE_GO__MSG__RES_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.hpp deleted file mode 100644 index faa1ac4..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/res.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__RES_HPP_ -#define UNITREE_GO__MSG__RES_HPP_ - -#include "unitree_go/msg/detail/res__struct.hpp" -#include "unitree_go/msg/detail/res__builder.hpp" -#include "unitree_go/msg/detail/res__traits.hpp" -#include "unitree_go/msg/detail/res__type_support.hpp" - -#endif // UNITREE_GO__MSG__RES_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_c__visibility_control.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_c__visibility_control.h deleted file mode 100644 index 1416935..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_c__visibility_control.h +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_c/resource/rosidl_generator_c__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_ -#define UNITREE_GO__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_GENERATOR_C_EXPORT_unitree_go __attribute__ ((dllexport)) - #define ROSIDL_GENERATOR_C_IMPORT_unitree_go __attribute__ ((dllimport)) - #else - #define ROSIDL_GENERATOR_C_EXPORT_unitree_go __declspec(dllexport) - #define ROSIDL_GENERATOR_C_IMPORT_unitree_go __declspec(dllimport) - #endif - #ifdef ROSIDL_GENERATOR_C_BUILDING_DLL_unitree_go - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_go ROSIDL_GENERATOR_C_EXPORT_unitree_go - #else - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_go ROSIDL_GENERATOR_C_IMPORT_unitree_go - #endif -#else - #define ROSIDL_GENERATOR_C_EXPORT_unitree_go __attribute__ ((visibility("default"))) - #define ROSIDL_GENERATOR_C_IMPORT_unitree_go - #if __GNUC__ >= 4 - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_go __attribute__ ((visibility("default"))) - #else - #define ROSIDL_GENERATOR_C_PUBLIC_unitree_go - #endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__ROSIDL_GENERATOR_C__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp deleted file mode 100644 index ef63cae..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_generator_cpp__visibility_control.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// generated from rosidl_generator_cpp/resource/rosidl_generator_cpp__visibility_control.hpp.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_ -#define UNITREE_GO__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_GENERATOR_CPP_EXPORT_unitree_go __attribute__ ((dllexport)) - #define ROSIDL_GENERATOR_CPP_IMPORT_unitree_go __attribute__ ((dllimport)) - #else - #define ROSIDL_GENERATOR_CPP_EXPORT_unitree_go __declspec(dllexport) - #define ROSIDL_GENERATOR_CPP_IMPORT_unitree_go __declspec(dllimport) - #endif - #ifdef ROSIDL_GENERATOR_CPP_BUILDING_DLL_unitree_go - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go ROSIDL_GENERATOR_CPP_EXPORT_unitree_go - #else - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go ROSIDL_GENERATOR_CPP_IMPORT_unitree_go - #endif -#else - #define ROSIDL_GENERATOR_CPP_EXPORT_unitree_go __attribute__ ((visibility("default"))) - #define ROSIDL_GENERATOR_CPP_IMPORT_unitree_go - #if __GNUC__ >= 4 - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go __attribute__ ((visibility("default"))) - #else - #define ROSIDL_GENERATOR_CPP_PUBLIC_unitree_go - #endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__ROSIDL_GENERATOR_CPP__VISIBILITY_CONTROL_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h deleted file mode 100644 index dbbaa78..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_c__visibility_control.h +++ /dev/null @@ -1,43 +0,0 @@ -// generated from -// rosidl_typesupport_fastrtps_c/resource/rosidl_typesupport_fastrtps_c__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_ -#define UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_ - -#if __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_go __attribute__ ((dllexport)) - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_go __attribute__ ((dllimport)) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_go __declspec(dllexport) - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_go __declspec(dllimport) - #endif - #ifdef ROSIDL_TYPESUPPORT_FASTRTPS_C_BUILDING_DLL_unitree_go - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_go - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_go - #endif -#else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_EXPORT_unitree_go __attribute__ ((visibility("default"))) - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_IMPORT_unitree_go - #if __GNUC__ >= 4 - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go __attribute__ ((visibility("default"))) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_C_PUBLIC_unitree_go - #endif -#endif - -#if __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_C__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h deleted file mode 100644 index 9334613..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h +++ /dev/null @@ -1,43 +0,0 @@ -// generated from -// rosidl_typesupport_fastrtps_cpp/resource/rosidl_typesupport_fastrtps_cpp__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_ -#define UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_ - -#if __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_go __attribute__ ((dllexport)) - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_go __attribute__ ((dllimport)) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_go __declspec(dllexport) - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_go __declspec(dllimport) - #endif - #ifdef ROSIDL_TYPESUPPORT_FASTRTPS_CPP_BUILDING_DLL_unitree_go - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_go - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_go - #endif -#else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_EXPORT_unitree_go __attribute__ ((visibility("default"))) - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_IMPORT_unitree_go - #if __GNUC__ >= 4 - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go __attribute__ ((visibility("default"))) - #else - #define ROSIDL_TYPESUPPORT_FASTRTPS_CPP_PUBLIC_unitree_go - #endif -#endif - -#if __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_FASTRTPS_CPP__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h deleted file mode 100644 index 8191c90..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/rosidl_typesupport_introspection_c__visibility_control.h +++ /dev/null @@ -1,43 +0,0 @@ -// generated from -// rosidl_typesupport_introspection_c/resource/rosidl_typesupport_introspection_c__visibility_control.h.in -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_ -#define UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -// This logic was borrowed (then namespaced) from the examples on the gcc wiki: -// https://gcc.gnu.org/wiki/Visibility - -#if defined _WIN32 || defined __CYGWIN__ - #ifdef __GNUC__ - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go __attribute__ ((dllexport)) - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_go __attribute__ ((dllimport)) - #else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go __declspec(dllexport) - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_go __declspec(dllimport) - #endif - #ifdef ROSIDL_TYPESUPPORT_INTROSPECTION_C_BUILDING_DLL_unitree_go - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go - #else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_go - #endif -#else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_EXPORT_unitree_go __attribute__ ((visibility("default"))) - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_IMPORT_unitree_go - #if __GNUC__ >= 4 - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go __attribute__ ((visibility("default"))) - #else - #define ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC_unitree_go - #endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif // UNITREE_GO__MSG__ROSIDL_TYPESUPPORT_INTROSPECTION_C__VISIBILITY_CONTROL_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.h deleted file mode 100644 index 77b5ab7..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__SPORT_MODE_CMD_H_ -#define UNITREE_GO__MSG__SPORT_MODE_CMD_H_ - -#include "unitree_go/msg/detail/sport_mode_cmd__struct.h" -#include "unitree_go/msg/detail/sport_mode_cmd__functions.h" -#include "unitree_go/msg/detail/sport_mode_cmd__type_support.h" - -#endif // UNITREE_GO__MSG__SPORT_MODE_CMD_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.hpp deleted file mode 100644 index 08f5667..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_cmd.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__SPORT_MODE_CMD_HPP_ -#define UNITREE_GO__MSG__SPORT_MODE_CMD_HPP_ - -#include "unitree_go/msg/detail/sport_mode_cmd__struct.hpp" -#include "unitree_go/msg/detail/sport_mode_cmd__builder.hpp" -#include "unitree_go/msg/detail/sport_mode_cmd__traits.hpp" -#include "unitree_go/msg/detail/sport_mode_cmd__type_support.hpp" - -#endif // UNITREE_GO__MSG__SPORT_MODE_CMD_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.h deleted file mode 100644 index f8c2660..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__SPORT_MODE_STATE_H_ -#define UNITREE_GO__MSG__SPORT_MODE_STATE_H_ - -#include "unitree_go/msg/detail/sport_mode_state__struct.h" -#include "unitree_go/msg/detail/sport_mode_state__functions.h" -#include "unitree_go/msg/detail/sport_mode_state__type_support.h" - -#endif // UNITREE_GO__MSG__SPORT_MODE_STATE_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.hpp deleted file mode 100644 index d61ced0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/sport_mode_state.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__SPORT_MODE_STATE_HPP_ -#define UNITREE_GO__MSG__SPORT_MODE_STATE_HPP_ - -#include "unitree_go/msg/detail/sport_mode_state__struct.hpp" -#include "unitree_go/msg/detail/sport_mode_state__builder.hpp" -#include "unitree_go/msg/detail/sport_mode_state__traits.hpp" -#include "unitree_go/msg/detail/sport_mode_state__type_support.hpp" - -#endif // UNITREE_GO__MSG__SPORT_MODE_STATE_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.h deleted file mode 100644 index 2c05811..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__TIME_SPEC_H_ -#define UNITREE_GO__MSG__TIME_SPEC_H_ - -#include "unitree_go/msg/detail/time_spec__struct.h" -#include "unitree_go/msg/detail/time_spec__functions.h" -#include "unitree_go/msg/detail/time_spec__type_support.h" - -#endif // UNITREE_GO__MSG__TIME_SPEC_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.hpp deleted file mode 100644 index 42f8731..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/time_spec.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__TIME_SPEC_HPP_ -#define UNITREE_GO__MSG__TIME_SPEC_HPP_ - -#include "unitree_go/msg/detail/time_spec__struct.hpp" -#include "unitree_go/msg/detail/time_spec__builder.hpp" -#include "unitree_go/msg/detail/time_spec__traits.hpp" -#include "unitree_go/msg/detail/time_spec__type_support.hpp" - -#endif // UNITREE_GO__MSG__TIME_SPEC_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.h deleted file mode 100644 index 743aaae..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__UWB_STATE_H_ -#define UNITREE_GO__MSG__UWB_STATE_H_ - -#include "unitree_go/msg/detail/uwb_state__struct.h" -#include "unitree_go/msg/detail/uwb_state__functions.h" -#include "unitree_go/msg/detail/uwb_state__type_support.h" - -#endif // UNITREE_GO__MSG__UWB_STATE_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.hpp deleted file mode 100644 index 6bbacba..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_state.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__UWB_STATE_HPP_ -#define UNITREE_GO__MSG__UWB_STATE_HPP_ - -#include "unitree_go/msg/detail/uwb_state__struct.hpp" -#include "unitree_go/msg/detail/uwb_state__builder.hpp" -#include "unitree_go/msg/detail/uwb_state__traits.hpp" -#include "unitree_go/msg/detail/uwb_state__type_support.hpp" - -#endif // UNITREE_GO__MSG__UWB_STATE_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.h deleted file mode 100644 index d80e55e..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__UWB_SWITCH_H_ -#define UNITREE_GO__MSG__UWB_SWITCH_H_ - -#include "unitree_go/msg/detail/uwb_switch__struct.h" -#include "unitree_go/msg/detail/uwb_switch__functions.h" -#include "unitree_go/msg/detail/uwb_switch__type_support.h" - -#endif // UNITREE_GO__MSG__UWB_SWITCH_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.hpp deleted file mode 100644 index 9845594..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/uwb_switch.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__UWB_SWITCH_HPP_ -#define UNITREE_GO__MSG__UWB_SWITCH_HPP_ - -#include "unitree_go/msg/detail/uwb_switch__struct.hpp" -#include "unitree_go/msg/detail/uwb_switch__builder.hpp" -#include "unitree_go/msg/detail/uwb_switch__traits.hpp" -#include "unitree_go/msg/detail/uwb_switch__type_support.hpp" - -#endif // UNITREE_GO__MSG__UWB_SWITCH_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.h b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.h deleted file mode 100644 index 67783ce..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.h +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_c/resource/idl.h.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__WIRELESS_CONTROLLER_H_ -#define UNITREE_GO__MSG__WIRELESS_CONTROLLER_H_ - -#include "unitree_go/msg/detail/wireless_controller__struct.h" -#include "unitree_go/msg/detail/wireless_controller__functions.h" -#include "unitree_go/msg/detail/wireless_controller__type_support.h" - -#endif // UNITREE_GO__MSG__WIRELESS_CONTROLLER_H_ diff --git a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.hpp b/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.hpp deleted file mode 100644 index 17aa9c0..0000000 --- a/deploy/robot_ws/install/unitree_go/include/unitree_go/msg/wireless_controller.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_generator_cpp/resource/idl.hpp.em -// generated code does not contain a copyright notice - -#ifndef UNITREE_GO__MSG__WIRELESS_CONTROLLER_HPP_ -#define UNITREE_GO__MSG__WIRELESS_CONTROLLER_HPP_ - -#include "unitree_go/msg/detail/wireless_controller__struct.hpp" -#include "unitree_go/msg/detail/wireless_controller__builder.hpp" -#include "unitree_go/msg/detail/wireless_controller__traits.hpp" -#include "unitree_go/msg/detail/wireless_controller__type_support.hpp" - -#endif // UNITREE_GO__MSG__WIRELESS_CONTROLLER_HPP_ diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/__init__.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/__init__.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/__init__.py deleted file mode 100644 index 5c00080..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -from unitree_go.msg._audio_data import AudioData # noqa: F401 -from unitree_go.msg._bms_cmd import BmsCmd # noqa: F401 -from unitree_go.msg._bms_state import BmsState # noqa: F401 -from unitree_go.msg._error import Error # noqa: F401 -from unitree_go.msg._go2_front_video_data import Go2FrontVideoData # noqa: F401 -from unitree_go.msg._height_map import HeightMap # noqa: F401 -from unitree_go.msg._imu_state import IMUState # noqa: F401 -from unitree_go.msg._interface_config import InterfaceConfig # noqa: F401 -from unitree_go.msg._lidar_state import LidarState # noqa: F401 -from unitree_go.msg._low_cmd import LowCmd # noqa: F401 -from unitree_go.msg._low_state import LowState # noqa: F401 -from unitree_go.msg._motor_cmd import MotorCmd # noqa: F401 -from unitree_go.msg._motor_state import MotorState # noqa: F401 -from unitree_go.msg._path_point import PathPoint # noqa: F401 -from unitree_go.msg._req import Req # noqa: F401 -from unitree_go.msg._res import Res # noqa: F401 -from unitree_go.msg._sport_mode_cmd import SportModeCmd # noqa: F401 -from unitree_go.msg._sport_mode_state import SportModeState # noqa: F401 -from unitree_go.msg._time_spec import TimeSpec # noqa: F401 -from unitree_go.msg._uwb_state import UwbState # noqa: F401 -from unitree_go.msg._uwb_switch import UwbSwitch # noqa: F401 -from unitree_go.msg._wireless_controller import WirelessController # noqa: F401 diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data.py deleted file mode 100644 index 9c9cf86..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data.py +++ /dev/null @@ -1,161 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/AudioData.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'data' -import array # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_AudioData(type): - """Metaclass of message 'AudioData'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.AudioData') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__audio_data - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__audio_data - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__audio_data - cls._TYPE_SUPPORT = module.type_support_msg__msg__audio_data - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__audio_data - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class AudioData(metaclass=Metaclass_AudioData): - """Message class 'AudioData'.""" - - __slots__ = [ - '_time_frame', - '_data', - ] - - _fields_and_field_types = { - 'time_frame': 'uint64', - 'data': 'sequence', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint64'), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('uint8')), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.time_frame = kwargs.get('time_frame', int()) - self.data = array.array('B', kwargs.get('data', [])) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.time_frame != other.time_frame: - return False - if self.data != other.data: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def time_frame(self): - """Message field 'time_frame'.""" - return self._time_frame - - @time_frame.setter - def time_frame(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'time_frame' field must be of type 'int'" - assert value >= 0 and value < 18446744073709551616, \ - "The 'time_frame' field must be an unsigned integer in [0, 18446744073709551615]" - self._time_frame = value - - @property - def data(self): - """Message field 'data'.""" - return self._data - - @data.setter - def data(self, value): - if isinstance(value, array.array): - assert value.typecode == 'B', \ - "The 'data' array.array() must have the type code of 'B'" - self._data = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'data' field must be a set or sequence and each value of type 'int' and each unsigned integer in [0, 255]" - self._data = array.array('B', value) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data_s.c deleted file mode 100644 index e85e1b1..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_audio_data_s.c +++ /dev/null @@ -1,221 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/audio_data__struct.h" -#include "unitree_go/msg/detail/audio_data__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__audio_data__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[37]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._audio_data.AudioData", full_classname_dest, 36) == 0); - } - unitree_go__msg__AudioData * ros_message = _ros_message; - { // time_frame - PyObject * field = PyObject_GetAttrString(_pymsg, "time_frame"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->time_frame = PyLong_AsUnsignedLongLong(field); - Py_DECREF(field); - } - { // data - PyObject * field = PyObject_GetAttrString(_pymsg, "data"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(uint8_t); - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->data), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->data.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'data'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->data), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->data.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyLong_Check(item)); - uint8_t tmp = (uint8_t)PyLong_AsUnsignedLong(item); - - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__audio_data__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of AudioData */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._audio_data"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "AudioData"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__AudioData * ros_message = (unitree_go__msg__AudioData *)raw_ros_message; - { // time_frame - PyObject * field = NULL; - field = PyLong_FromUnsignedLongLong(ros_message->time_frame); - { - int rc = PyObject_SetAttrString(_pymessage, "time_frame", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // data - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "data"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(uint8_t)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->data.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - uint8_t * src = &(ros_message->data.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->data.size * sizeof(uint8_t)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd.py deleted file mode 100644 index 6034fde..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd.py +++ /dev/null @@ -1,168 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/BmsCmd.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'reserve' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_BmsCmd(type): - """Metaclass of message 'BmsCmd'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.BmsCmd') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__bms_cmd - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__bms_cmd - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__bms_cmd - cls._TYPE_SUPPORT = module.type_support_msg__msg__bms_cmd - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__bms_cmd - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class BmsCmd(metaclass=Metaclass_BmsCmd): - """Message class 'BmsCmd'.""" - - __slots__ = [ - '_off', - '_reserve', - ] - - _fields_and_field_types = { - 'off': 'uint8', - 'reserve': 'uint8[3]', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 3), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.off = kwargs.get('off', int()) - if 'reserve' not in kwargs: - self.reserve = numpy.zeros(3, dtype=numpy.uint8) - else: - self.reserve = numpy.array(kwargs.get('reserve'), dtype=numpy.uint8) - assert self.reserve.shape == (3, ) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.off != other.off: - return False - if all(self.reserve != other.reserve): - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def off(self): - """Message field 'off'.""" - return self._off - - @off.setter - def off(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'off' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'off' field must be an unsigned integer in [0, 255]" - self._off = value - - @property - def reserve(self): - """Message field 'reserve'.""" - return self._reserve - - @reserve.setter - def reserve(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'reserve' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 3, \ - "The 'reserve' numpy.ndarray() must have a size of 3" - self._reserve = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'reserve' field must be a set or sequence with length 3 and each value of type 'int' and each unsigned integer in [0, 255]" - self._reserve = numpy.array(value, dtype=numpy.uint8) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd_s.c deleted file mode 100644 index 6c1efbd..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_cmd_s.c +++ /dev/null @@ -1,143 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/bms_cmd__struct.h" -#include "unitree_go/msg/detail/bms_cmd__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__bms_cmd__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[31]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._bms_cmd.BmsCmd", full_classname_dest, 30) == 0); - } - unitree_go__msg__BmsCmd * ros_message = _ros_message; - { // off - PyObject * field = PyObject_GetAttrString(_pymsg, "off"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->off = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "reserve"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 3; - uint8_t * dest = ros_message->reserve; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__bms_cmd__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of BmsCmd */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._bms_cmd"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "BmsCmd"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__BmsCmd * ros_message = (unitree_go__msg__BmsCmd *)raw_ros_message; - { // off - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->off); - { - int rc = PyObject_SetAttrString(_pymessage, "off", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // reserve - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "reserve"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->reserve[0]); - memcpy(dst, src, 3 * sizeof(uint8_t)); - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state.py deleted file mode 100644 index e727d62..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state.py +++ /dev/null @@ -1,357 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/BmsState.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'bq_ntc' -# Member 'mcu_ntc' -# Member 'cell_vol' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_BmsState(type): - """Metaclass of message 'BmsState'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.BmsState') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__bms_state - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__bms_state - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__bms_state - cls._TYPE_SUPPORT = module.type_support_msg__msg__bms_state - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__bms_state - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class BmsState(metaclass=Metaclass_BmsState): - """Message class 'BmsState'.""" - - __slots__ = [ - '_version_high', - '_version_low', - '_status', - '_soc', - '_current', - '_cycle', - '_bq_ntc', - '_mcu_ntc', - '_cell_vol', - ] - - _fields_and_field_types = { - 'version_high': 'uint8', - 'version_low': 'uint8', - 'status': 'uint8', - 'soc': 'uint8', - 'current': 'int32', - 'cycle': 'uint16', - 'bq_ntc': 'int8[2]', - 'mcu_ntc': 'int8[2]', - 'cell_vol': 'uint16[15]', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('int32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint16'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('int8'), 2), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('int8'), 2), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint16'), 15), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.version_high = kwargs.get('version_high', int()) - self.version_low = kwargs.get('version_low', int()) - self.status = kwargs.get('status', int()) - self.soc = kwargs.get('soc', int()) - self.current = kwargs.get('current', int()) - self.cycle = kwargs.get('cycle', int()) - if 'bq_ntc' not in kwargs: - self.bq_ntc = numpy.zeros(2, dtype=numpy.int8) - else: - self.bq_ntc = numpy.array(kwargs.get('bq_ntc'), dtype=numpy.int8) - assert self.bq_ntc.shape == (2, ) - if 'mcu_ntc' not in kwargs: - self.mcu_ntc = numpy.zeros(2, dtype=numpy.int8) - else: - self.mcu_ntc = numpy.array(kwargs.get('mcu_ntc'), dtype=numpy.int8) - assert self.mcu_ntc.shape == (2, ) - if 'cell_vol' not in kwargs: - self.cell_vol = numpy.zeros(15, dtype=numpy.uint16) - else: - self.cell_vol = numpy.array(kwargs.get('cell_vol'), dtype=numpy.uint16) - assert self.cell_vol.shape == (15, ) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.version_high != other.version_high: - return False - if self.version_low != other.version_low: - return False - if self.status != other.status: - return False - if self.soc != other.soc: - return False - if self.current != other.current: - return False - if self.cycle != other.cycle: - return False - if all(self.bq_ntc != other.bq_ntc): - return False - if all(self.mcu_ntc != other.mcu_ntc): - return False - if all(self.cell_vol != other.cell_vol): - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def version_high(self): - """Message field 'version_high'.""" - return self._version_high - - @version_high.setter - def version_high(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'version_high' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'version_high' field must be an unsigned integer in [0, 255]" - self._version_high = value - - @property - def version_low(self): - """Message field 'version_low'.""" - return self._version_low - - @version_low.setter - def version_low(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'version_low' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'version_low' field must be an unsigned integer in [0, 255]" - self._version_low = value - - @property - def status(self): - """Message field 'status'.""" - return self._status - - @status.setter - def status(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'status' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'status' field must be an unsigned integer in [0, 255]" - self._status = value - - @property - def soc(self): - """Message field 'soc'.""" - return self._soc - - @soc.setter - def soc(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'soc' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'soc' field must be an unsigned integer in [0, 255]" - self._soc = value - - @property - def current(self): - """Message field 'current'.""" - return self._current - - @current.setter - def current(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'current' field must be of type 'int'" - assert value >= -2147483648 and value < 2147483648, \ - "The 'current' field must be an integer in [-2147483648, 2147483647]" - self._current = value - - @property - def cycle(self): - """Message field 'cycle'.""" - return self._cycle - - @cycle.setter - def cycle(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'cycle' field must be of type 'int'" - assert value >= 0 and value < 65536, \ - "The 'cycle' field must be an unsigned integer in [0, 65535]" - self._cycle = value - - @property - def bq_ntc(self): - """Message field 'bq_ntc'.""" - return self._bq_ntc - - @bq_ntc.setter - def bq_ntc(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.int8, \ - "The 'bq_ntc' numpy.ndarray() must have the dtype of 'numpy.int8'" - assert value.size == 2, \ - "The 'bq_ntc' numpy.ndarray() must have a size of 2" - self._bq_ntc = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= -128 and val < 128 for val in value)), \ - "The 'bq_ntc' field must be a set or sequence with length 2 and each value of type 'int' and each integer in [-128, 127]" - self._bq_ntc = numpy.array(value, dtype=numpy.int8) - - @property - def mcu_ntc(self): - """Message field 'mcu_ntc'.""" - return self._mcu_ntc - - @mcu_ntc.setter - def mcu_ntc(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.int8, \ - "The 'mcu_ntc' numpy.ndarray() must have the dtype of 'numpy.int8'" - assert value.size == 2, \ - "The 'mcu_ntc' numpy.ndarray() must have a size of 2" - self._mcu_ntc = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= -128 and val < 128 for val in value)), \ - "The 'mcu_ntc' field must be a set or sequence with length 2 and each value of type 'int' and each integer in [-128, 127]" - self._mcu_ntc = numpy.array(value, dtype=numpy.int8) - - @property - def cell_vol(self): - """Message field 'cell_vol'.""" - return self._cell_vol - - @cell_vol.setter - def cell_vol(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint16, \ - "The 'cell_vol' numpy.ndarray() must have the dtype of 'numpy.uint16'" - assert value.size == 15, \ - "The 'cell_vol' numpy.ndarray() must have a size of 15" - self._cell_vol = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 15 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 65536 for val in value)), \ - "The 'cell_vol' field must be a set or sequence with length 15 and each value of type 'int' and each unsigned integer in [0, 65535]" - self._cell_vol = numpy.array(value, dtype=numpy.uint16) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state_s.c deleted file mode 100644 index 6e26973..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_bms_state_s.c +++ /dev/null @@ -1,327 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/bms_state__struct.h" -#include "unitree_go/msg/detail/bms_state__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__bms_state__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[35]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._bms_state.BmsState", full_classname_dest, 34) == 0); - } - unitree_go__msg__BmsState * ros_message = _ros_message; - { // version_high - PyObject * field = PyObject_GetAttrString(_pymsg, "version_high"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->version_high = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // version_low - PyObject * field = PyObject_GetAttrString(_pymsg, "version_low"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->version_low = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // status - PyObject * field = PyObject_GetAttrString(_pymsg, "status"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->status = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // soc - PyObject * field = PyObject_GetAttrString(_pymsg, "soc"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->soc = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // current - PyObject * field = PyObject_GetAttrString(_pymsg, "current"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->current = (int32_t)PyLong_AsLong(field); - Py_DECREF(field); - } - { // cycle - PyObject * field = PyObject_GetAttrString(_pymsg, "cycle"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->cycle = (uint16_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // bq_ntc - PyObject * field = PyObject_GetAttrString(_pymsg, "bq_ntc"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT8); - Py_ssize_t size = 2; - int8_t * dest = ros_message->bq_ntc; - for (Py_ssize_t i = 0; i < size; ++i) { - int8_t tmp = *(npy_int8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(int8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // mcu_ntc - PyObject * field = PyObject_GetAttrString(_pymsg, "mcu_ntc"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT8); - Py_ssize_t size = 2; - int8_t * dest = ros_message->mcu_ntc; - for (Py_ssize_t i = 0; i < size; ++i) { - int8_t tmp = *(npy_int8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(int8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // cell_vol - PyObject * field = PyObject_GetAttrString(_pymsg, "cell_vol"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT16); - Py_ssize_t size = 15; - uint16_t * dest = ros_message->cell_vol; - for (Py_ssize_t i = 0; i < size; ++i) { - uint16_t tmp = *(npy_uint16 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint16_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__bms_state__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of BmsState */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._bms_state"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "BmsState"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__BmsState * ros_message = (unitree_go__msg__BmsState *)raw_ros_message; - { // version_high - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->version_high); - { - int rc = PyObject_SetAttrString(_pymessage, "version_high", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // version_low - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->version_low); - { - int rc = PyObject_SetAttrString(_pymessage, "version_low", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // status - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->status); - { - int rc = PyObject_SetAttrString(_pymessage, "status", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // soc - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->soc); - { - int rc = PyObject_SetAttrString(_pymessage, "soc", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // current - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->current); - { - int rc = PyObject_SetAttrString(_pymessage, "current", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // cycle - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->cycle); - { - int rc = PyObject_SetAttrString(_pymessage, "cycle", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // bq_ntc - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "bq_ntc"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT8); - assert(sizeof(npy_int8) == sizeof(int8_t)); - npy_int8 * dst = (npy_int8 *)PyArray_GETPTR1(seq_field, 0); - int8_t * src = &(ros_message->bq_ntc[0]); - memcpy(dst, src, 2 * sizeof(int8_t)); - Py_DECREF(field); - } - { // mcu_ntc - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "mcu_ntc"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT8); - assert(sizeof(npy_int8) == sizeof(int8_t)); - npy_int8 * dst = (npy_int8 *)PyArray_GETPTR1(seq_field, 0); - int8_t * src = &(ros_message->mcu_ntc[0]); - memcpy(dst, src, 2 * sizeof(int8_t)); - Py_DECREF(field); - } - { // cell_vol - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "cell_vol"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT16); - assert(sizeof(npy_uint16) == sizeof(uint16_t)); - npy_uint16 * dst = (npy_uint16 *)PyArray_GETPTR1(seq_field, 0); - uint16_t * src = &(ros_message->cell_vol[0]); - memcpy(dst, src, 15 * sizeof(uint16_t)); - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error.py deleted file mode 100644 index 142341a..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error.py +++ /dev/null @@ -1,145 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/Error.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_Error(type): - """Metaclass of message 'Error'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.Error') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__error - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__error - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__error - cls._TYPE_SUPPORT = module.type_support_msg__msg__error - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__error - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class Error(metaclass=Metaclass_Error): - """Message class 'Error'.""" - - __slots__ = [ - '_source', - '_state', - ] - - _fields_and_field_types = { - 'source': 'uint32', - 'state': 'uint32', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.source = kwargs.get('source', int()) - self.state = kwargs.get('state', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.source != other.source: - return False - if self.state != other.state: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def source(self): - """Message field 'source'.""" - return self._source - - @source.setter - def source(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'source' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'source' field must be an unsigned integer in [0, 4294967295]" - self._source = value - - @property - def state(self): - """Message field 'state'.""" - return self._state - - @state.setter - def state(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'state' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'state' field must be an unsigned integer in [0, 4294967295]" - self._state = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error_s.c deleted file mode 100644 index 4cafeba..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_error_s.c +++ /dev/null @@ -1,118 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/error__struct.h" -#include "unitree_go/msg/detail/error__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__error__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[28]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._error.Error", full_classname_dest, 27) == 0); - } - unitree_go__msg__Error * ros_message = _ros_message; - { // source - PyObject * field = PyObject_GetAttrString(_pymsg, "source"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->source = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // state - PyObject * field = PyObject_GetAttrString(_pymsg, "state"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->state = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__error__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of Error */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._error"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "Error"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__Error * ros_message = (unitree_go__msg__Error *)raw_ros_message; - { // source - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->source); - { - int rc = PyObject_SetAttrString(_pymessage, "source", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // state - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->state); - { - int rc = PyObject_SetAttrString(_pymessage, "state", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data.py deleted file mode 100644 index 81c366c..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data.py +++ /dev/null @@ -1,231 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/Go2FrontVideoData.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'video720p' -# Member 'video360p' -# Member 'video180p' -import array # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_Go2FrontVideoData(type): - """Metaclass of message 'Go2FrontVideoData'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.Go2FrontVideoData') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__go2_front_video_data - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__go2_front_video_data - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__go2_front_video_data - cls._TYPE_SUPPORT = module.type_support_msg__msg__go2_front_video_data - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__go2_front_video_data - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class Go2FrontVideoData(metaclass=Metaclass_Go2FrontVideoData): - """Message class 'Go2FrontVideoData'.""" - - __slots__ = [ - '_time_frame', - '_video720p', - '_video360p', - '_video180p', - ] - - _fields_and_field_types = { - 'time_frame': 'uint64', - 'video720p': 'sequence', - 'video360p': 'sequence', - 'video180p': 'sequence', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint64'), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('uint8')), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('uint8')), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('uint8')), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.time_frame = kwargs.get('time_frame', int()) - self.video720p = array.array('B', kwargs.get('video720p', [])) - self.video360p = array.array('B', kwargs.get('video360p', [])) - self.video180p = array.array('B', kwargs.get('video180p', [])) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.time_frame != other.time_frame: - return False - if self.video720p != other.video720p: - return False - if self.video360p != other.video360p: - return False - if self.video180p != other.video180p: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def time_frame(self): - """Message field 'time_frame'.""" - return self._time_frame - - @time_frame.setter - def time_frame(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'time_frame' field must be of type 'int'" - assert value >= 0 and value < 18446744073709551616, \ - "The 'time_frame' field must be an unsigned integer in [0, 18446744073709551615]" - self._time_frame = value - - @property - def video720p(self): - """Message field 'video720p'.""" - return self._video720p - - @video720p.setter - def video720p(self, value): - if isinstance(value, array.array): - assert value.typecode == 'B', \ - "The 'video720p' array.array() must have the type code of 'B'" - self._video720p = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'video720p' field must be a set or sequence and each value of type 'int' and each unsigned integer in [0, 255]" - self._video720p = array.array('B', value) - - @property - def video360p(self): - """Message field 'video360p'.""" - return self._video360p - - @video360p.setter - def video360p(self, value): - if isinstance(value, array.array): - assert value.typecode == 'B', \ - "The 'video360p' array.array() must have the type code of 'B'" - self._video360p = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'video360p' field must be a set or sequence and each value of type 'int' and each unsigned integer in [0, 255]" - self._video360p = array.array('B', value) - - @property - def video180p(self): - """Message field 'video180p'.""" - return self._video180p - - @video180p.setter - def video180p(self, value): - if isinstance(value, array.array): - assert value.typecode == 'B', \ - "The 'video180p' array.array() must have the type code of 'B'" - self._video180p = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'video180p' field must be a set or sequence and each value of type 'int' and each unsigned integer in [0, 255]" - self._video180p = array.array('B', value) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data_s.c deleted file mode 100644 index 2492f40..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_go2_front_video_data_s.c +++ /dev/null @@ -1,461 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/go2_front_video_data__struct.h" -#include "unitree_go/msg/detail/go2_front_video_data__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__go2_front_video_data__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[55]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._go2_front_video_data.Go2FrontVideoData", full_classname_dest, 54) == 0); - } - unitree_go__msg__Go2FrontVideoData * ros_message = _ros_message; - { // time_frame - PyObject * field = PyObject_GetAttrString(_pymsg, "time_frame"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->time_frame = PyLong_AsUnsignedLongLong(field); - Py_DECREF(field); - } - { // video720p - PyObject * field = PyObject_GetAttrString(_pymsg, "video720p"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(uint8_t); - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->video720p), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->video720p.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'video720p'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->video720p), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->video720p.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyLong_Check(item)); - uint8_t tmp = (uint8_t)PyLong_AsUnsignedLong(item); - - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // video360p - PyObject * field = PyObject_GetAttrString(_pymsg, "video360p"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(uint8_t); - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->video360p), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->video360p.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'video360p'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->video360p), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->video360p.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyLong_Check(item)); - uint8_t tmp = (uint8_t)PyLong_AsUnsignedLong(item); - - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // video180p - PyObject * field = PyObject_GetAttrString(_pymsg, "video180p"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(uint8_t); - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->video180p), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->video180p.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'video180p'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->video180p), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->video180p.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyLong_Check(item)); - uint8_t tmp = (uint8_t)PyLong_AsUnsignedLong(item); - - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__go2_front_video_data__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of Go2FrontVideoData */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._go2_front_video_data"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "Go2FrontVideoData"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__Go2FrontVideoData * ros_message = (unitree_go__msg__Go2FrontVideoData *)raw_ros_message; - { // time_frame - PyObject * field = NULL; - field = PyLong_FromUnsignedLongLong(ros_message->time_frame); - { - int rc = PyObject_SetAttrString(_pymessage, "time_frame", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // video720p - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "video720p"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(uint8_t)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->video720p.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - uint8_t * src = &(ros_message->video720p.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->video720p.size * sizeof(uint8_t)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - { // video360p - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "video360p"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(uint8_t)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->video360p.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - uint8_t * src = &(ros_message->video360p.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->video360p.size * sizeof(uint8_t)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - { // video180p - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "video180p"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(uint8_t)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->video180p.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - uint8_t * src = &(ros_message->video180p.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->video180p.size * sizeof(uint8_t)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map.py deleted file mode 100644 index 935feda..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map.py +++ /dev/null @@ -1,283 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/HeightMap.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'data' -import array # noqa: E402, I100 - -# Member 'origin' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_HeightMap(type): - """Metaclass of message 'HeightMap'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.HeightMap') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__height_map - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__height_map - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__height_map - cls._TYPE_SUPPORT = module.type_support_msg__msg__height_map - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__height_map - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class HeightMap(metaclass=Metaclass_HeightMap): - """Message class 'HeightMap'.""" - - __slots__ = [ - '_stamp', - '_frame_id', - '_resolution', - '_width', - '_height', - '_origin', - '_data', - ] - - _fields_and_field_types = { - 'stamp': 'double', - 'frame_id': 'string', - 'resolution': 'float', - 'width': 'uint32', - 'height': 'uint32', - 'origin': 'float[2]', - 'data': 'sequence', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('double'), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 2), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('float')), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.stamp = kwargs.get('stamp', float()) - self.frame_id = kwargs.get('frame_id', str()) - self.resolution = kwargs.get('resolution', float()) - self.width = kwargs.get('width', int()) - self.height = kwargs.get('height', int()) - if 'origin' not in kwargs: - self.origin = numpy.zeros(2, dtype=numpy.float32) - else: - self.origin = numpy.array(kwargs.get('origin'), dtype=numpy.float32) - assert self.origin.shape == (2, ) - self.data = array.array('f', kwargs.get('data', [])) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.stamp != other.stamp: - return False - if self.frame_id != other.frame_id: - return False - if self.resolution != other.resolution: - return False - if self.width != other.width: - return False - if self.height != other.height: - return False - if all(self.origin != other.origin): - return False - if self.data != other.data: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def stamp(self): - """Message field 'stamp'.""" - return self._stamp - - @stamp.setter - def stamp(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'stamp' field must be of type 'float'" - self._stamp = value - - @property - def frame_id(self): - """Message field 'frame_id'.""" - return self._frame_id - - @frame_id.setter - def frame_id(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'frame_id' field must be of type 'str'" - self._frame_id = value - - @property - def resolution(self): - """Message field 'resolution'.""" - return self._resolution - - @resolution.setter - def resolution(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'resolution' field must be of type 'float'" - self._resolution = value - - @property - def width(self): - """Message field 'width'.""" - return self._width - - @width.setter - def width(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'width' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'width' field must be an unsigned integer in [0, 4294967295]" - self._width = value - - @property - def height(self): - """Message field 'height'.""" - return self._height - - @height.setter - def height(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'height' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'height' field must be an unsigned integer in [0, 4294967295]" - self._height = value - - @property - def origin(self): - """Message field 'origin'.""" - return self._origin - - @origin.setter - def origin(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'origin' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 2, \ - "The 'origin' numpy.ndarray() must have a size of 2" - self._origin = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'origin' field must be a set or sequence with length 2 and each value of type 'float'" - self._origin = numpy.array(value, dtype=numpy.float32) - - @property - def data(self): - """Message field 'data'.""" - return self._data - - @data.setter - def data(self, value): - if isinstance(value, array.array): - assert value.typecode == 'f', \ - "The 'data' array.array() must have the type code of 'f'" - self._data = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, float) for v in value) and - True), \ - "The 'data' field must be a set or sequence and each value of type 'float'" - self._data = array.array('f', value) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map_s.c deleted file mode 100644 index c8b312c..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_height_map_s.c +++ /dev/null @@ -1,357 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/height_map__struct.h" -#include "unitree_go/msg/detail/height_map__functions.h" - -#include "rosidl_runtime_c/string.h" -#include "rosidl_runtime_c/string_functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__height_map__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[37]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._height_map.HeightMap", full_classname_dest, 36) == 0); - } - unitree_go__msg__HeightMap * ros_message = _ros_message; - { // stamp - PyObject * field = PyObject_GetAttrString(_pymsg, "stamp"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->stamp = PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // frame_id - PyObject * field = PyObject_GetAttrString(_pymsg, "frame_id"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->frame_id, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // resolution - PyObject * field = PyObject_GetAttrString(_pymsg, "resolution"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->resolution = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // width - PyObject * field = PyObject_GetAttrString(_pymsg, "width"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->width = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // height - PyObject * field = PyObject_GetAttrString(_pymsg, "height"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->height = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // origin - PyObject * field = PyObject_GetAttrString(_pymsg, "origin"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 2; - float * dest = ros_message->origin; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // data - PyObject * field = PyObject_GetAttrString(_pymsg, "data"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(float); - if (!rosidl_runtime_c__float__Sequence__init(&(ros_message->data), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create float__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - float * dest = ros_message->data.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'data'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__float__Sequence__init(&(ros_message->data), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create float__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - float * dest = ros_message->data.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyFloat_Check(item)); - float tmp = (float)PyFloat_AS_DOUBLE(item); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__height_map__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of HeightMap */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._height_map"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "HeightMap"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__HeightMap * ros_message = (unitree_go__msg__HeightMap *)raw_ros_message; - { // stamp - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->stamp); - { - int rc = PyObject_SetAttrString(_pymessage, "stamp", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // frame_id - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->frame_id.data, - strlen(ros_message->frame_id.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "frame_id", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // resolution - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->resolution); - { - int rc = PyObject_SetAttrString(_pymessage, "resolution", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // width - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->width); - { - int rc = PyObject_SetAttrString(_pymessage, "width", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // height - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->height); - { - int rc = PyObject_SetAttrString(_pymessage, "height", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // origin - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "origin"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->origin[0]); - memcpy(dst, src, 2 * sizeof(float)); - Py_DECREF(field); - } - { // data - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "data"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(float)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->data.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - float * src = &(ros_message->data.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->data.size * sizeof(float)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state.py deleted file mode 100644 index 78f6d31..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state.py +++ /dev/null @@ -1,294 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/IMUState.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'quaternion' -# Member 'gyroscope' -# Member 'accelerometer' -# Member 'rpy' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_IMUState(type): - """Metaclass of message 'IMUState'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.IMUState') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__imu_state - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__imu_state - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__imu_state - cls._TYPE_SUPPORT = module.type_support_msg__msg__imu_state - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__imu_state - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class IMUState(metaclass=Metaclass_IMUState): - """Message class 'IMUState'.""" - - __slots__ = [ - '_quaternion', - '_gyroscope', - '_accelerometer', - '_rpy', - '_temperature', - ] - - _fields_and_field_types = { - 'quaternion': 'float[4]', - 'gyroscope': 'float[3]', - 'accelerometer': 'float[3]', - 'rpy': 'float[3]', - 'temperature': 'int8', - } - - SLOT_TYPES = ( - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 4), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 3), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 3), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 3), # noqa: E501 - rosidl_parser.definition.BasicType('int8'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - if 'quaternion' not in kwargs: - self.quaternion = numpy.zeros(4, dtype=numpy.float32) - else: - self.quaternion = numpy.array(kwargs.get('quaternion'), dtype=numpy.float32) - assert self.quaternion.shape == (4, ) - if 'gyroscope' not in kwargs: - self.gyroscope = numpy.zeros(3, dtype=numpy.float32) - else: - self.gyroscope = numpy.array(kwargs.get('gyroscope'), dtype=numpy.float32) - assert self.gyroscope.shape == (3, ) - if 'accelerometer' not in kwargs: - self.accelerometer = numpy.zeros(3, dtype=numpy.float32) - else: - self.accelerometer = numpy.array(kwargs.get('accelerometer'), dtype=numpy.float32) - assert self.accelerometer.shape == (3, ) - if 'rpy' not in kwargs: - self.rpy = numpy.zeros(3, dtype=numpy.float32) - else: - self.rpy = numpy.array(kwargs.get('rpy'), dtype=numpy.float32) - assert self.rpy.shape == (3, ) - self.temperature = kwargs.get('temperature', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if all(self.quaternion != other.quaternion): - return False - if all(self.gyroscope != other.gyroscope): - return False - if all(self.accelerometer != other.accelerometer): - return False - if all(self.rpy != other.rpy): - return False - if self.temperature != other.temperature: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def quaternion(self): - """Message field 'quaternion'.""" - return self._quaternion - - @quaternion.setter - def quaternion(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'quaternion' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 4, \ - "The 'quaternion' numpy.ndarray() must have a size of 4" - self._quaternion = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 4 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'quaternion' field must be a set or sequence with length 4 and each value of type 'float'" - self._quaternion = numpy.array(value, dtype=numpy.float32) - - @property - def gyroscope(self): - """Message field 'gyroscope'.""" - return self._gyroscope - - @gyroscope.setter - def gyroscope(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'gyroscope' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 3, \ - "The 'gyroscope' numpy.ndarray() must have a size of 3" - self._gyroscope = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'gyroscope' field must be a set or sequence with length 3 and each value of type 'float'" - self._gyroscope = numpy.array(value, dtype=numpy.float32) - - @property - def accelerometer(self): - """Message field 'accelerometer'.""" - return self._accelerometer - - @accelerometer.setter - def accelerometer(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'accelerometer' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 3, \ - "The 'accelerometer' numpy.ndarray() must have a size of 3" - self._accelerometer = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'accelerometer' field must be a set or sequence with length 3 and each value of type 'float'" - self._accelerometer = numpy.array(value, dtype=numpy.float32) - - @property - def rpy(self): - """Message field 'rpy'.""" - return self._rpy - - @rpy.setter - def rpy(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'rpy' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 3, \ - "The 'rpy' numpy.ndarray() must have a size of 3" - self._rpy = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'rpy' field must be a set or sequence with length 3 and each value of type 'float'" - self._rpy = numpy.array(value, dtype=numpy.float32) - - @property - def temperature(self): - """Message field 'temperature'.""" - return self._temperature - - @temperature.setter - def temperature(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'temperature' field must be of type 'int'" - assert value >= -128 and value < 128, \ - "The 'temperature' field must be an integer in [-128, 127]" - self._temperature = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state_s.c deleted file mode 100644 index 55cdeb7..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_imu_state_s.c +++ /dev/null @@ -1,269 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/imu_state__struct.h" -#include "unitree_go/msg/detail/imu_state__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__imu_state__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[35]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._imu_state.IMUState", full_classname_dest, 34) == 0); - } - unitree_go__msg__IMUState * ros_message = _ros_message; - { // quaternion - PyObject * field = PyObject_GetAttrString(_pymsg, "quaternion"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 4; - float * dest = ros_message->quaternion; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // gyroscope - PyObject * field = PyObject_GetAttrString(_pymsg, "gyroscope"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 3; - float * dest = ros_message->gyroscope; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // accelerometer - PyObject * field = PyObject_GetAttrString(_pymsg, "accelerometer"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 3; - float * dest = ros_message->accelerometer; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // rpy - PyObject * field = PyObject_GetAttrString(_pymsg, "rpy"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 3; - float * dest = ros_message->rpy; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // temperature - PyObject * field = PyObject_GetAttrString(_pymsg, "temperature"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->temperature = (int8_t)PyLong_AsLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__imu_state__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of IMUState */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._imu_state"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "IMUState"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__IMUState * ros_message = (unitree_go__msg__IMUState *)raw_ros_message; - { // quaternion - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "quaternion"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->quaternion[0]); - memcpy(dst, src, 4 * sizeof(float)); - Py_DECREF(field); - } - { // gyroscope - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "gyroscope"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->gyroscope[0]); - memcpy(dst, src, 3 * sizeof(float)); - Py_DECREF(field); - } - { // accelerometer - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "accelerometer"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->accelerometer[0]); - memcpy(dst, src, 3 * sizeof(float)); - Py_DECREF(field); - } - { // rpy - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "rpy"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->rpy[0]); - memcpy(dst, src, 3 * sizeof(float)); - Py_DECREF(field); - } - { // temperature - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->temperature); - { - int rc = PyObject_SetAttrString(_pymessage, "temperature", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config.py deleted file mode 100644 index cee6940..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config.py +++ /dev/null @@ -1,189 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/InterfaceConfig.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'reserve' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_InterfaceConfig(type): - """Metaclass of message 'InterfaceConfig'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.InterfaceConfig') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__interface_config - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__interface_config - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__interface_config - cls._TYPE_SUPPORT = module.type_support_msg__msg__interface_config - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__interface_config - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class InterfaceConfig(metaclass=Metaclass_InterfaceConfig): - """Message class 'InterfaceConfig'.""" - - __slots__ = [ - '_mode', - '_value', - '_reserve', - ] - - _fields_and_field_types = { - 'mode': 'uint8', - 'value': 'uint8', - 'reserve': 'uint8[2]', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 2), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.mode = kwargs.get('mode', int()) - self.value = kwargs.get('value', int()) - if 'reserve' not in kwargs: - self.reserve = numpy.zeros(2, dtype=numpy.uint8) - else: - self.reserve = numpy.array(kwargs.get('reserve'), dtype=numpy.uint8) - assert self.reserve.shape == (2, ) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.mode != other.mode: - return False - if self.value != other.value: - return False - if all(self.reserve != other.reserve): - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def mode(self): - """Message field 'mode'.""" - return self._mode - - @mode.setter - def mode(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'mode' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'mode' field must be an unsigned integer in [0, 255]" - self._mode = value - - @property - def value(self): - """Message field 'value'.""" - return self._value - - @value.setter - def value(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'value' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'value' field must be an unsigned integer in [0, 255]" - self._value = value - - @property - def reserve(self): - """Message field 'reserve'.""" - return self._reserve - - @reserve.setter - def reserve(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'reserve' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 2, \ - "The 'reserve' numpy.ndarray() must have a size of 2" - self._reserve = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'reserve' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 255]" - self._reserve = numpy.array(value, dtype=numpy.uint8) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config_s.c deleted file mode 100644 index 024a5c5..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_interface_config_s.c +++ /dev/null @@ -1,163 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/interface_config__struct.h" -#include "unitree_go/msg/detail/interface_config__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__interface_config__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[49]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._interface_config.InterfaceConfig", full_classname_dest, 48) == 0); - } - unitree_go__msg__InterfaceConfig * ros_message = _ros_message; - { // mode - PyObject * field = PyObject_GetAttrString(_pymsg, "mode"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->mode = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // value - PyObject * field = PyObject_GetAttrString(_pymsg, "value"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->value = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "reserve"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 2; - uint8_t * dest = ros_message->reserve; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__interface_config__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of InterfaceConfig */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._interface_config"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "InterfaceConfig"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__InterfaceConfig * ros_message = (unitree_go__msg__InterfaceConfig *)raw_ros_message; - { // mode - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->mode); - { - int rc = PyObject_SetAttrString(_pymessage, "mode", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // value - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->value); - { - int rc = PyObject_SetAttrString(_pymessage, "value", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // reserve - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "reserve"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->reserve[0]); - memcpy(dst, src, 2 * sizeof(uint8_t)); - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state.py deleted file mode 100644 index 6b6da0b..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state.py +++ /dev/null @@ -1,461 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/LidarState.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'imu_rpy' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_LidarState(type): - """Metaclass of message 'LidarState'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.LidarState') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__lidar_state - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__lidar_state - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__lidar_state - cls._TYPE_SUPPORT = module.type_support_msg__msg__lidar_state - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__lidar_state - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class LidarState(metaclass=Metaclass_LidarState): - """Message class 'LidarState'.""" - - __slots__ = [ - '_stamp', - '_firmware_version', - '_software_version', - '_sdk_version', - '_sys_rotation_speed', - '_com_rotation_speed', - '_error_state', - '_cloud_frequency', - '_cloud_packet_loss_rate', - '_cloud_size', - '_cloud_scan_num', - '_imu_frequency', - '_imu_packet_loss_rate', - '_imu_rpy', - '_serial_recv_stamp', - '_serial_buffer_size', - '_serial_buffer_read', - ] - - _fields_and_field_types = { - 'stamp': 'double', - 'firmware_version': 'string', - 'software_version': 'string', - 'sdk_version': 'string', - 'sys_rotation_speed': 'float', - 'com_rotation_speed': 'float', - 'error_state': 'uint8', - 'cloud_frequency': 'float', - 'cloud_packet_loss_rate': 'float', - 'cloud_size': 'uint32', - 'cloud_scan_num': 'uint32', - 'imu_frequency': 'float', - 'imu_packet_loss_rate': 'float', - 'imu_rpy': 'float[3]', - 'serial_recv_stamp': 'double', - 'serial_buffer_size': 'uint32', - 'serial_buffer_read': 'uint32', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('double'), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 3), # noqa: E501 - rosidl_parser.definition.BasicType('double'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.stamp = kwargs.get('stamp', float()) - self.firmware_version = kwargs.get('firmware_version', str()) - self.software_version = kwargs.get('software_version', str()) - self.sdk_version = kwargs.get('sdk_version', str()) - self.sys_rotation_speed = kwargs.get('sys_rotation_speed', float()) - self.com_rotation_speed = kwargs.get('com_rotation_speed', float()) - self.error_state = kwargs.get('error_state', int()) - self.cloud_frequency = kwargs.get('cloud_frequency', float()) - self.cloud_packet_loss_rate = kwargs.get('cloud_packet_loss_rate', float()) - self.cloud_size = kwargs.get('cloud_size', int()) - self.cloud_scan_num = kwargs.get('cloud_scan_num', int()) - self.imu_frequency = kwargs.get('imu_frequency', float()) - self.imu_packet_loss_rate = kwargs.get('imu_packet_loss_rate', float()) - if 'imu_rpy' not in kwargs: - self.imu_rpy = numpy.zeros(3, dtype=numpy.float32) - else: - self.imu_rpy = numpy.array(kwargs.get('imu_rpy'), dtype=numpy.float32) - assert self.imu_rpy.shape == (3, ) - self.serial_recv_stamp = kwargs.get('serial_recv_stamp', float()) - self.serial_buffer_size = kwargs.get('serial_buffer_size', int()) - self.serial_buffer_read = kwargs.get('serial_buffer_read', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.stamp != other.stamp: - return False - if self.firmware_version != other.firmware_version: - return False - if self.software_version != other.software_version: - return False - if self.sdk_version != other.sdk_version: - return False - if self.sys_rotation_speed != other.sys_rotation_speed: - return False - if self.com_rotation_speed != other.com_rotation_speed: - return False - if self.error_state != other.error_state: - return False - if self.cloud_frequency != other.cloud_frequency: - return False - if self.cloud_packet_loss_rate != other.cloud_packet_loss_rate: - return False - if self.cloud_size != other.cloud_size: - return False - if self.cloud_scan_num != other.cloud_scan_num: - return False - if self.imu_frequency != other.imu_frequency: - return False - if self.imu_packet_loss_rate != other.imu_packet_loss_rate: - return False - if all(self.imu_rpy != other.imu_rpy): - return False - if self.serial_recv_stamp != other.serial_recv_stamp: - return False - if self.serial_buffer_size != other.serial_buffer_size: - return False - if self.serial_buffer_read != other.serial_buffer_read: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def stamp(self): - """Message field 'stamp'.""" - return self._stamp - - @stamp.setter - def stamp(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'stamp' field must be of type 'float'" - self._stamp = value - - @property - def firmware_version(self): - """Message field 'firmware_version'.""" - return self._firmware_version - - @firmware_version.setter - def firmware_version(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'firmware_version' field must be of type 'str'" - self._firmware_version = value - - @property - def software_version(self): - """Message field 'software_version'.""" - return self._software_version - - @software_version.setter - def software_version(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'software_version' field must be of type 'str'" - self._software_version = value - - @property - def sdk_version(self): - """Message field 'sdk_version'.""" - return self._sdk_version - - @sdk_version.setter - def sdk_version(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'sdk_version' field must be of type 'str'" - self._sdk_version = value - - @property - def sys_rotation_speed(self): - """Message field 'sys_rotation_speed'.""" - return self._sys_rotation_speed - - @sys_rotation_speed.setter - def sys_rotation_speed(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'sys_rotation_speed' field must be of type 'float'" - self._sys_rotation_speed = value - - @property - def com_rotation_speed(self): - """Message field 'com_rotation_speed'.""" - return self._com_rotation_speed - - @com_rotation_speed.setter - def com_rotation_speed(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'com_rotation_speed' field must be of type 'float'" - self._com_rotation_speed = value - - @property - def error_state(self): - """Message field 'error_state'.""" - return self._error_state - - @error_state.setter - def error_state(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'error_state' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'error_state' field must be an unsigned integer in [0, 255]" - self._error_state = value - - @property - def cloud_frequency(self): - """Message field 'cloud_frequency'.""" - return self._cloud_frequency - - @cloud_frequency.setter - def cloud_frequency(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'cloud_frequency' field must be of type 'float'" - self._cloud_frequency = value - - @property - def cloud_packet_loss_rate(self): - """Message field 'cloud_packet_loss_rate'.""" - return self._cloud_packet_loss_rate - - @cloud_packet_loss_rate.setter - def cloud_packet_loss_rate(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'cloud_packet_loss_rate' field must be of type 'float'" - self._cloud_packet_loss_rate = value - - @property - def cloud_size(self): - """Message field 'cloud_size'.""" - return self._cloud_size - - @cloud_size.setter - def cloud_size(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'cloud_size' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'cloud_size' field must be an unsigned integer in [0, 4294967295]" - self._cloud_size = value - - @property - def cloud_scan_num(self): - """Message field 'cloud_scan_num'.""" - return self._cloud_scan_num - - @cloud_scan_num.setter - def cloud_scan_num(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'cloud_scan_num' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'cloud_scan_num' field must be an unsigned integer in [0, 4294967295]" - self._cloud_scan_num = value - - @property - def imu_frequency(self): - """Message field 'imu_frequency'.""" - return self._imu_frequency - - @imu_frequency.setter - def imu_frequency(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'imu_frequency' field must be of type 'float'" - self._imu_frequency = value - - @property - def imu_packet_loss_rate(self): - """Message field 'imu_packet_loss_rate'.""" - return self._imu_packet_loss_rate - - @imu_packet_loss_rate.setter - def imu_packet_loss_rate(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'imu_packet_loss_rate' field must be of type 'float'" - self._imu_packet_loss_rate = value - - @property - def imu_rpy(self): - """Message field 'imu_rpy'.""" - return self._imu_rpy - - @imu_rpy.setter - def imu_rpy(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'imu_rpy' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 3, \ - "The 'imu_rpy' numpy.ndarray() must have a size of 3" - self._imu_rpy = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'imu_rpy' field must be a set or sequence with length 3 and each value of type 'float'" - self._imu_rpy = numpy.array(value, dtype=numpy.float32) - - @property - def serial_recv_stamp(self): - """Message field 'serial_recv_stamp'.""" - return self._serial_recv_stamp - - @serial_recv_stamp.setter - def serial_recv_stamp(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'serial_recv_stamp' field must be of type 'float'" - self._serial_recv_stamp = value - - @property - def serial_buffer_size(self): - """Message field 'serial_buffer_size'.""" - return self._serial_buffer_size - - @serial_buffer_size.setter - def serial_buffer_size(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'serial_buffer_size' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'serial_buffer_size' field must be an unsigned integer in [0, 4294967295]" - self._serial_buffer_size = value - - @property - def serial_buffer_read(self): - """Message field 'serial_buffer_read'.""" - return self._serial_buffer_read - - @serial_buffer_read.setter - def serial_buffer_read(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'serial_buffer_read' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'serial_buffer_read' field must be an unsigned integer in [0, 4294967295]" - self._serial_buffer_read = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state_s.c deleted file mode 100644 index fe94967..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_lidar_state_s.c +++ /dev/null @@ -1,482 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/lidar_state__struct.h" -#include "unitree_go/msg/detail/lidar_state__functions.h" - -#include "rosidl_runtime_c/string.h" -#include "rosidl_runtime_c/string_functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__lidar_state__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[39]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._lidar_state.LidarState", full_classname_dest, 38) == 0); - } - unitree_go__msg__LidarState * ros_message = _ros_message; - { // stamp - PyObject * field = PyObject_GetAttrString(_pymsg, "stamp"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->stamp = PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // firmware_version - PyObject * field = PyObject_GetAttrString(_pymsg, "firmware_version"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->firmware_version, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // software_version - PyObject * field = PyObject_GetAttrString(_pymsg, "software_version"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->software_version, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // sdk_version - PyObject * field = PyObject_GetAttrString(_pymsg, "sdk_version"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->sdk_version, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // sys_rotation_speed - PyObject * field = PyObject_GetAttrString(_pymsg, "sys_rotation_speed"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->sys_rotation_speed = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // com_rotation_speed - PyObject * field = PyObject_GetAttrString(_pymsg, "com_rotation_speed"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->com_rotation_speed = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // error_state - PyObject * field = PyObject_GetAttrString(_pymsg, "error_state"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->error_state = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // cloud_frequency - PyObject * field = PyObject_GetAttrString(_pymsg, "cloud_frequency"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->cloud_frequency = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // cloud_packet_loss_rate - PyObject * field = PyObject_GetAttrString(_pymsg, "cloud_packet_loss_rate"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->cloud_packet_loss_rate = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // cloud_size - PyObject * field = PyObject_GetAttrString(_pymsg, "cloud_size"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->cloud_size = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // cloud_scan_num - PyObject * field = PyObject_GetAttrString(_pymsg, "cloud_scan_num"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->cloud_scan_num = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // imu_frequency - PyObject * field = PyObject_GetAttrString(_pymsg, "imu_frequency"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->imu_frequency = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // imu_packet_loss_rate - PyObject * field = PyObject_GetAttrString(_pymsg, "imu_packet_loss_rate"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->imu_packet_loss_rate = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // imu_rpy - PyObject * field = PyObject_GetAttrString(_pymsg, "imu_rpy"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 3; - float * dest = ros_message->imu_rpy; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // serial_recv_stamp - PyObject * field = PyObject_GetAttrString(_pymsg, "serial_recv_stamp"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->serial_recv_stamp = PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // serial_buffer_size - PyObject * field = PyObject_GetAttrString(_pymsg, "serial_buffer_size"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->serial_buffer_size = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // serial_buffer_read - PyObject * field = PyObject_GetAttrString(_pymsg, "serial_buffer_read"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->serial_buffer_read = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__lidar_state__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of LidarState */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._lidar_state"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "LidarState"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__LidarState * ros_message = (unitree_go__msg__LidarState *)raw_ros_message; - { // stamp - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->stamp); - { - int rc = PyObject_SetAttrString(_pymessage, "stamp", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // firmware_version - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->firmware_version.data, - strlen(ros_message->firmware_version.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "firmware_version", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // software_version - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->software_version.data, - strlen(ros_message->software_version.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "software_version", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // sdk_version - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->sdk_version.data, - strlen(ros_message->sdk_version.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "sdk_version", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // sys_rotation_speed - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->sys_rotation_speed); - { - int rc = PyObject_SetAttrString(_pymessage, "sys_rotation_speed", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // com_rotation_speed - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->com_rotation_speed); - { - int rc = PyObject_SetAttrString(_pymessage, "com_rotation_speed", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // error_state - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->error_state); - { - int rc = PyObject_SetAttrString(_pymessage, "error_state", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // cloud_frequency - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->cloud_frequency); - { - int rc = PyObject_SetAttrString(_pymessage, "cloud_frequency", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // cloud_packet_loss_rate - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->cloud_packet_loss_rate); - { - int rc = PyObject_SetAttrString(_pymessage, "cloud_packet_loss_rate", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // cloud_size - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->cloud_size); - { - int rc = PyObject_SetAttrString(_pymessage, "cloud_size", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // cloud_scan_num - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->cloud_scan_num); - { - int rc = PyObject_SetAttrString(_pymessage, "cloud_scan_num", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // imu_frequency - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->imu_frequency); - { - int rc = PyObject_SetAttrString(_pymessage, "imu_frequency", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // imu_packet_loss_rate - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->imu_packet_loss_rate); - { - int rc = PyObject_SetAttrString(_pymessage, "imu_packet_loss_rate", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // imu_rpy - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "imu_rpy"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->imu_rpy[0]); - memcpy(dst, src, 3 * sizeof(float)); - Py_DECREF(field); - } - { // serial_recv_stamp - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->serial_recv_stamp); - { - int rc = PyObject_SetAttrString(_pymessage, "serial_recv_stamp", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // serial_buffer_size - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->serial_buffer_size); - { - int rc = PyObject_SetAttrString(_pymessage, "serial_buffer_size", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // serial_buffer_read - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->serial_buffer_read); - { - int rc = PyObject_SetAttrString(_pymessage, "serial_buffer_read", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd.py deleted file mode 100644 index 566e4de..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd.py +++ /dev/null @@ -1,547 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/LowCmd.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'head' -# Member 'sn' -# Member 'version' -# Member 'wireless_remote' -# Member 'led' -# Member 'fan' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_LowCmd(type): - """Metaclass of message 'LowCmd'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.LowCmd') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__low_cmd - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__low_cmd - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__low_cmd - cls._TYPE_SUPPORT = module.type_support_msg__msg__low_cmd - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__low_cmd - - from unitree_go.msg import BmsCmd - if BmsCmd.__class__._TYPE_SUPPORT is None: - BmsCmd.__class__.__import_type_support__() - - from unitree_go.msg import MotorCmd - if MotorCmd.__class__._TYPE_SUPPORT is None: - MotorCmd.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class LowCmd(metaclass=Metaclass_LowCmd): - """Message class 'LowCmd'.""" - - __slots__ = [ - '_head', - '_level_flag', - '_frame_reserve', - '_sn', - '_version', - '_bandwidth', - '_motor_cmd', - '_bms_cmd', - '_wireless_remote', - '_led', - '_fan', - '_gpio', - '_reserve', - '_crc', - ] - - _fields_and_field_types = { - 'head': 'uint8[2]', - 'level_flag': 'uint8', - 'frame_reserve': 'uint8', - 'sn': 'uint32[2]', - 'version': 'uint32[2]', - 'bandwidth': 'uint16', - 'motor_cmd': 'unitree_go/MotorCmd[20]', - 'bms_cmd': 'unitree_go/BmsCmd', - 'wireless_remote': 'uint8[40]', - 'led': 'uint8[12]', - 'fan': 'uint8[2]', - 'gpio': 'uint8', - 'reserve': 'uint32', - 'crc': 'uint32', - } - - SLOT_TYPES = ( - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint32'), 2), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint32'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('uint16'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'MotorCmd'), 20), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'BmsCmd'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 40), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 12), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - if 'head' not in kwargs: - self.head = numpy.zeros(2, dtype=numpy.uint8) - else: - self.head = numpy.array(kwargs.get('head'), dtype=numpy.uint8) - assert self.head.shape == (2, ) - self.level_flag = kwargs.get('level_flag', int()) - self.frame_reserve = kwargs.get('frame_reserve', int()) - if 'sn' not in kwargs: - self.sn = numpy.zeros(2, dtype=numpy.uint32) - else: - self.sn = numpy.array(kwargs.get('sn'), dtype=numpy.uint32) - assert self.sn.shape == (2, ) - if 'version' not in kwargs: - self.version = numpy.zeros(2, dtype=numpy.uint32) - else: - self.version = numpy.array(kwargs.get('version'), dtype=numpy.uint32) - assert self.version.shape == (2, ) - self.bandwidth = kwargs.get('bandwidth', int()) - from unitree_go.msg import MotorCmd - self.motor_cmd = kwargs.get( - 'motor_cmd', - [MotorCmd() for x in range(20)] - ) - from unitree_go.msg import BmsCmd - self.bms_cmd = kwargs.get('bms_cmd', BmsCmd()) - if 'wireless_remote' not in kwargs: - self.wireless_remote = numpy.zeros(40, dtype=numpy.uint8) - else: - self.wireless_remote = numpy.array(kwargs.get('wireless_remote'), dtype=numpy.uint8) - assert self.wireless_remote.shape == (40, ) - if 'led' not in kwargs: - self.led = numpy.zeros(12, dtype=numpy.uint8) - else: - self.led = numpy.array(kwargs.get('led'), dtype=numpy.uint8) - assert self.led.shape == (12, ) - if 'fan' not in kwargs: - self.fan = numpy.zeros(2, dtype=numpy.uint8) - else: - self.fan = numpy.array(kwargs.get('fan'), dtype=numpy.uint8) - assert self.fan.shape == (2, ) - self.gpio = kwargs.get('gpio', int()) - self.reserve = kwargs.get('reserve', int()) - self.crc = kwargs.get('crc', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if all(self.head != other.head): - return False - if self.level_flag != other.level_flag: - return False - if self.frame_reserve != other.frame_reserve: - return False - if all(self.sn != other.sn): - return False - if all(self.version != other.version): - return False - if self.bandwidth != other.bandwidth: - return False - if self.motor_cmd != other.motor_cmd: - return False - if self.bms_cmd != other.bms_cmd: - return False - if all(self.wireless_remote != other.wireless_remote): - return False - if all(self.led != other.led): - return False - if all(self.fan != other.fan): - return False - if self.gpio != other.gpio: - return False - if self.reserve != other.reserve: - return False - if self.crc != other.crc: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def head(self): - """Message field 'head'.""" - return self._head - - @head.setter - def head(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'head' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 2, \ - "The 'head' numpy.ndarray() must have a size of 2" - self._head = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'head' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 255]" - self._head = numpy.array(value, dtype=numpy.uint8) - - @property - def level_flag(self): - """Message field 'level_flag'.""" - return self._level_flag - - @level_flag.setter - def level_flag(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'level_flag' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'level_flag' field must be an unsigned integer in [0, 255]" - self._level_flag = value - - @property - def frame_reserve(self): - """Message field 'frame_reserve'.""" - return self._frame_reserve - - @frame_reserve.setter - def frame_reserve(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'frame_reserve' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'frame_reserve' field must be an unsigned integer in [0, 255]" - self._frame_reserve = value - - @property - def sn(self): - """Message field 'sn'.""" - return self._sn - - @sn.setter - def sn(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint32, \ - "The 'sn' numpy.ndarray() must have the dtype of 'numpy.uint32'" - assert value.size == 2, \ - "The 'sn' numpy.ndarray() must have a size of 2" - self._sn = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 4294967296 for val in value)), \ - "The 'sn' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 4294967295]" - self._sn = numpy.array(value, dtype=numpy.uint32) - - @property - def version(self): - """Message field 'version'.""" - return self._version - - @version.setter - def version(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint32, \ - "The 'version' numpy.ndarray() must have the dtype of 'numpy.uint32'" - assert value.size == 2, \ - "The 'version' numpy.ndarray() must have a size of 2" - self._version = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 4294967296 for val in value)), \ - "The 'version' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 4294967295]" - self._version = numpy.array(value, dtype=numpy.uint32) - - @property - def bandwidth(self): - """Message field 'bandwidth'.""" - return self._bandwidth - - @bandwidth.setter - def bandwidth(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'bandwidth' field must be of type 'int'" - assert value >= 0 and value < 65536, \ - "The 'bandwidth' field must be an unsigned integer in [0, 65535]" - self._bandwidth = value - - @property - def motor_cmd(self): - """Message field 'motor_cmd'.""" - return self._motor_cmd - - @motor_cmd.setter - def motor_cmd(self, value): - if __debug__: - from unitree_go.msg import MotorCmd - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 20 and - all(isinstance(v, MotorCmd) for v in value) and - True), \ - "The 'motor_cmd' field must be a set or sequence with length 20 and each value of type 'MotorCmd'" - self._motor_cmd = value - - @property - def bms_cmd(self): - """Message field 'bms_cmd'.""" - return self._bms_cmd - - @bms_cmd.setter - def bms_cmd(self, value): - if __debug__: - from unitree_go.msg import BmsCmd - assert \ - isinstance(value, BmsCmd), \ - "The 'bms_cmd' field must be a sub message of type 'BmsCmd'" - self._bms_cmd = value - - @property - def wireless_remote(self): - """Message field 'wireless_remote'.""" - return self._wireless_remote - - @wireless_remote.setter - def wireless_remote(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'wireless_remote' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 40, \ - "The 'wireless_remote' numpy.ndarray() must have a size of 40" - self._wireless_remote = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 40 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'wireless_remote' field must be a set or sequence with length 40 and each value of type 'int' and each unsigned integer in [0, 255]" - self._wireless_remote = numpy.array(value, dtype=numpy.uint8) - - @property - def led(self): - """Message field 'led'.""" - return self._led - - @led.setter - def led(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'led' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 12, \ - "The 'led' numpy.ndarray() must have a size of 12" - self._led = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 12 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'led' field must be a set or sequence with length 12 and each value of type 'int' and each unsigned integer in [0, 255]" - self._led = numpy.array(value, dtype=numpy.uint8) - - @property - def fan(self): - """Message field 'fan'.""" - return self._fan - - @fan.setter - def fan(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'fan' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 2, \ - "The 'fan' numpy.ndarray() must have a size of 2" - self._fan = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'fan' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 255]" - self._fan = numpy.array(value, dtype=numpy.uint8) - - @property - def gpio(self): - """Message field 'gpio'.""" - return self._gpio - - @gpio.setter - def gpio(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'gpio' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'gpio' field must be an unsigned integer in [0, 255]" - self._gpio = value - - @property - def reserve(self): - """Message field 'reserve'.""" - return self._reserve - - @reserve.setter - def reserve(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'reserve' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'reserve' field must be an unsigned integer in [0, 4294967295]" - self._reserve = value - - @property - def crc(self): - """Message field 'crc'.""" - return self._crc - - @crc.setter - def crc(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'crc' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'crc' field must be an unsigned integer in [0, 4294967295]" - self._crc = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd_s.c deleted file mode 100644 index d868365..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_cmd_s.c +++ /dev/null @@ -1,535 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/low_cmd__struct.h" -#include "unitree_go/msg/detail/low_cmd__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -// Nested array functions includes -#include "unitree_go/msg/detail/motor_cmd__functions.h" -// end nested array functions include -bool unitree_go__msg__motor_cmd__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__motor_cmd__convert_to_py(void * raw_ros_message); -bool unitree_go__msg__bms_cmd__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__bms_cmd__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__low_cmd__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[31]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._low_cmd.LowCmd", full_classname_dest, 30) == 0); - } - unitree_go__msg__LowCmd * ros_message = _ros_message; - { // head - PyObject * field = PyObject_GetAttrString(_pymsg, "head"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 2; - uint8_t * dest = ros_message->head; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // level_flag - PyObject * field = PyObject_GetAttrString(_pymsg, "level_flag"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->level_flag = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // frame_reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "frame_reserve"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->frame_reserve = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // sn - PyObject * field = PyObject_GetAttrString(_pymsg, "sn"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - Py_ssize_t size = 2; - uint32_t * dest = ros_message->sn; - for (Py_ssize_t i = 0; i < size; ++i) { - uint32_t tmp = *(npy_uint32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint32_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // version - PyObject * field = PyObject_GetAttrString(_pymsg, "version"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - Py_ssize_t size = 2; - uint32_t * dest = ros_message->version; - for (Py_ssize_t i = 0; i < size; ++i) { - uint32_t tmp = *(npy_uint32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint32_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // bandwidth - PyObject * field = PyObject_GetAttrString(_pymsg, "bandwidth"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->bandwidth = (uint16_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // motor_cmd - PyObject * field = PyObject_GetAttrString(_pymsg, "motor_cmd"); - if (!field) { - return false; - } - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'motor_cmd'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = 20; - unitree_go__msg__MotorCmd * dest = ros_message->motor_cmd; - for (Py_ssize_t i = 0; i < size; ++i) { - if (!unitree_go__msg__motor_cmd__convert_from_py(PySequence_Fast_GET_ITEM(seq_field, i), &dest[i])) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - } - Py_DECREF(seq_field); - Py_DECREF(field); - } - { // bms_cmd - PyObject * field = PyObject_GetAttrString(_pymsg, "bms_cmd"); - if (!field) { - return false; - } - if (!unitree_go__msg__bms_cmd__convert_from_py(field, &ros_message->bms_cmd)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // wireless_remote - PyObject * field = PyObject_GetAttrString(_pymsg, "wireless_remote"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 40; - uint8_t * dest = ros_message->wireless_remote; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // led - PyObject * field = PyObject_GetAttrString(_pymsg, "led"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 12; - uint8_t * dest = ros_message->led; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // fan - PyObject * field = PyObject_GetAttrString(_pymsg, "fan"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 2; - uint8_t * dest = ros_message->fan; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // gpio - PyObject * field = PyObject_GetAttrString(_pymsg, "gpio"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->gpio = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "reserve"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->reserve = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // crc - PyObject * field = PyObject_GetAttrString(_pymsg, "crc"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->crc = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__low_cmd__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of LowCmd */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._low_cmd"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "LowCmd"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__LowCmd * ros_message = (unitree_go__msg__LowCmd *)raw_ros_message; - { // head - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "head"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->head[0]); - memcpy(dst, src, 2 * sizeof(uint8_t)); - Py_DECREF(field); - } - { // level_flag - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->level_flag); - { - int rc = PyObject_SetAttrString(_pymessage, "level_flag", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // frame_reserve - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->frame_reserve); - { - int rc = PyObject_SetAttrString(_pymessage, "frame_reserve", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // sn - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "sn"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - assert(sizeof(npy_uint32) == sizeof(uint32_t)); - npy_uint32 * dst = (npy_uint32 *)PyArray_GETPTR1(seq_field, 0); - uint32_t * src = &(ros_message->sn[0]); - memcpy(dst, src, 2 * sizeof(uint32_t)); - Py_DECREF(field); - } - { // version - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "version"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - assert(sizeof(npy_uint32) == sizeof(uint32_t)); - npy_uint32 * dst = (npy_uint32 *)PyArray_GETPTR1(seq_field, 0); - uint32_t * src = &(ros_message->version[0]); - memcpy(dst, src, 2 * sizeof(uint32_t)); - Py_DECREF(field); - } - { // bandwidth - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->bandwidth); - { - int rc = PyObject_SetAttrString(_pymessage, "bandwidth", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // motor_cmd - PyObject * field = NULL; - size_t size = 20; - field = PyList_New(size); - if (!field) { - return NULL; - } - unitree_go__msg__MotorCmd * item; - for (size_t i = 0; i < size; ++i) { - item = &(ros_message->motor_cmd[i]); - PyObject * pyitem = unitree_go__msg__motor_cmd__convert_to_py(item); - if (!pyitem) { - Py_DECREF(field); - return NULL; - } - int rc = PyList_SetItem(field, i, pyitem); - (void)rc; - assert(rc == 0); - } - assert(PySequence_Check(field)); - { - int rc = PyObject_SetAttrString(_pymessage, "motor_cmd", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // bms_cmd - PyObject * field = NULL; - field = unitree_go__msg__bms_cmd__convert_to_py(&ros_message->bms_cmd); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "bms_cmd", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // wireless_remote - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "wireless_remote"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->wireless_remote[0]); - memcpy(dst, src, 40 * sizeof(uint8_t)); - Py_DECREF(field); - } - { // led - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "led"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->led[0]); - memcpy(dst, src, 12 * sizeof(uint8_t)); - Py_DECREF(field); - } - { // fan - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "fan"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->fan[0]); - memcpy(dst, src, 2 * sizeof(uint8_t)); - Py_DECREF(field); - } - { // gpio - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->gpio); - { - int rc = PyObject_SetAttrString(_pymessage, "gpio", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // reserve - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->reserve); - { - int rc = PyObject_SetAttrString(_pymessage, "reserve", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // crc - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->crc); - { - int rc = PyObject_SetAttrString(_pymessage, "crc", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state.py deleted file mode 100644 index 6c02bc4..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state.py +++ /dev/null @@ -1,734 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/LowState.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'head' -# Member 'sn' -# Member 'version' -# Member 'foot_force' -# Member 'foot_force_est' -# Member 'wireless_remote' -# Member 'fan_frequency' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_LowState(type): - """Metaclass of message 'LowState'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.LowState') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__low_state - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__low_state - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__low_state - cls._TYPE_SUPPORT = module.type_support_msg__msg__low_state - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__low_state - - from unitree_go.msg import BmsState - if BmsState.__class__._TYPE_SUPPORT is None: - BmsState.__class__.__import_type_support__() - - from unitree_go.msg import IMUState - if IMUState.__class__._TYPE_SUPPORT is None: - IMUState.__class__.__import_type_support__() - - from unitree_go.msg import MotorState - if MotorState.__class__._TYPE_SUPPORT is None: - MotorState.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class LowState(metaclass=Metaclass_LowState): - """Message class 'LowState'.""" - - __slots__ = [ - '_head', - '_level_flag', - '_frame_reserve', - '_sn', - '_version', - '_bandwidth', - '_imu_state', - '_motor_state', - '_bms_state', - '_foot_force', - '_foot_force_est', - '_tick', - '_wireless_remote', - '_bit_flag', - '_adc_reel', - '_temperature_ntc1', - '_temperature_ntc2', - '_power_v', - '_power_a', - '_fan_frequency', - '_reserve', - '_crc', - ] - - _fields_and_field_types = { - 'head': 'uint8[2]', - 'level_flag': 'uint8', - 'frame_reserve': 'uint8', - 'sn': 'uint32[2]', - 'version': 'uint32[2]', - 'bandwidth': 'uint16', - 'imu_state': 'unitree_go/IMUState', - 'motor_state': 'unitree_go/MotorState[20]', - 'bms_state': 'unitree_go/BmsState', - 'foot_force': 'int16[4]', - 'foot_force_est': 'int16[4]', - 'tick': 'uint32', - 'wireless_remote': 'uint8[40]', - 'bit_flag': 'uint8', - 'adc_reel': 'float', - 'temperature_ntc1': 'int8', - 'temperature_ntc2': 'int8', - 'power_v': 'float', - 'power_a': 'float', - 'fan_frequency': 'uint16[4]', - 'reserve': 'uint32', - 'crc': 'uint32', - } - - SLOT_TYPES = ( - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint32'), 2), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint32'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('uint16'), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'IMUState'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'MotorState'), 20), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'BmsState'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('int16'), 4), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('int16'), 4), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 40), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('int8'), # noqa: E501 - rosidl_parser.definition.BasicType('int8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint16'), 4), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - if 'head' not in kwargs: - self.head = numpy.zeros(2, dtype=numpy.uint8) - else: - self.head = numpy.array(kwargs.get('head'), dtype=numpy.uint8) - assert self.head.shape == (2, ) - self.level_flag = kwargs.get('level_flag', int()) - self.frame_reserve = kwargs.get('frame_reserve', int()) - if 'sn' not in kwargs: - self.sn = numpy.zeros(2, dtype=numpy.uint32) - else: - self.sn = numpy.array(kwargs.get('sn'), dtype=numpy.uint32) - assert self.sn.shape == (2, ) - if 'version' not in kwargs: - self.version = numpy.zeros(2, dtype=numpy.uint32) - else: - self.version = numpy.array(kwargs.get('version'), dtype=numpy.uint32) - assert self.version.shape == (2, ) - self.bandwidth = kwargs.get('bandwidth', int()) - from unitree_go.msg import IMUState - self.imu_state = kwargs.get('imu_state', IMUState()) - from unitree_go.msg import MotorState - self.motor_state = kwargs.get( - 'motor_state', - [MotorState() for x in range(20)] - ) - from unitree_go.msg import BmsState - self.bms_state = kwargs.get('bms_state', BmsState()) - if 'foot_force' not in kwargs: - self.foot_force = numpy.zeros(4, dtype=numpy.int16) - else: - self.foot_force = numpy.array(kwargs.get('foot_force'), dtype=numpy.int16) - assert self.foot_force.shape == (4, ) - if 'foot_force_est' not in kwargs: - self.foot_force_est = numpy.zeros(4, dtype=numpy.int16) - else: - self.foot_force_est = numpy.array(kwargs.get('foot_force_est'), dtype=numpy.int16) - assert self.foot_force_est.shape == (4, ) - self.tick = kwargs.get('tick', int()) - if 'wireless_remote' not in kwargs: - self.wireless_remote = numpy.zeros(40, dtype=numpy.uint8) - else: - self.wireless_remote = numpy.array(kwargs.get('wireless_remote'), dtype=numpy.uint8) - assert self.wireless_remote.shape == (40, ) - self.bit_flag = kwargs.get('bit_flag', int()) - self.adc_reel = kwargs.get('adc_reel', float()) - self.temperature_ntc1 = kwargs.get('temperature_ntc1', int()) - self.temperature_ntc2 = kwargs.get('temperature_ntc2', int()) - self.power_v = kwargs.get('power_v', float()) - self.power_a = kwargs.get('power_a', float()) - if 'fan_frequency' not in kwargs: - self.fan_frequency = numpy.zeros(4, dtype=numpy.uint16) - else: - self.fan_frequency = numpy.array(kwargs.get('fan_frequency'), dtype=numpy.uint16) - assert self.fan_frequency.shape == (4, ) - self.reserve = kwargs.get('reserve', int()) - self.crc = kwargs.get('crc', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if all(self.head != other.head): - return False - if self.level_flag != other.level_flag: - return False - if self.frame_reserve != other.frame_reserve: - return False - if all(self.sn != other.sn): - return False - if all(self.version != other.version): - return False - if self.bandwidth != other.bandwidth: - return False - if self.imu_state != other.imu_state: - return False - if self.motor_state != other.motor_state: - return False - if self.bms_state != other.bms_state: - return False - if all(self.foot_force != other.foot_force): - return False - if all(self.foot_force_est != other.foot_force_est): - return False - if self.tick != other.tick: - return False - if all(self.wireless_remote != other.wireless_remote): - return False - if self.bit_flag != other.bit_flag: - return False - if self.adc_reel != other.adc_reel: - return False - if self.temperature_ntc1 != other.temperature_ntc1: - return False - if self.temperature_ntc2 != other.temperature_ntc2: - return False - if self.power_v != other.power_v: - return False - if self.power_a != other.power_a: - return False - if all(self.fan_frequency != other.fan_frequency): - return False - if self.reserve != other.reserve: - return False - if self.crc != other.crc: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def head(self): - """Message field 'head'.""" - return self._head - - @head.setter - def head(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'head' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 2, \ - "The 'head' numpy.ndarray() must have a size of 2" - self._head = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'head' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 255]" - self._head = numpy.array(value, dtype=numpy.uint8) - - @property - def level_flag(self): - """Message field 'level_flag'.""" - return self._level_flag - - @level_flag.setter - def level_flag(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'level_flag' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'level_flag' field must be an unsigned integer in [0, 255]" - self._level_flag = value - - @property - def frame_reserve(self): - """Message field 'frame_reserve'.""" - return self._frame_reserve - - @frame_reserve.setter - def frame_reserve(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'frame_reserve' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'frame_reserve' field must be an unsigned integer in [0, 255]" - self._frame_reserve = value - - @property - def sn(self): - """Message field 'sn'.""" - return self._sn - - @sn.setter - def sn(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint32, \ - "The 'sn' numpy.ndarray() must have the dtype of 'numpy.uint32'" - assert value.size == 2, \ - "The 'sn' numpy.ndarray() must have a size of 2" - self._sn = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 4294967296 for val in value)), \ - "The 'sn' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 4294967295]" - self._sn = numpy.array(value, dtype=numpy.uint32) - - @property - def version(self): - """Message field 'version'.""" - return self._version - - @version.setter - def version(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint32, \ - "The 'version' numpy.ndarray() must have the dtype of 'numpy.uint32'" - assert value.size == 2, \ - "The 'version' numpy.ndarray() must have a size of 2" - self._version = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 4294967296 for val in value)), \ - "The 'version' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 4294967295]" - self._version = numpy.array(value, dtype=numpy.uint32) - - @property - def bandwidth(self): - """Message field 'bandwidth'.""" - return self._bandwidth - - @bandwidth.setter - def bandwidth(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'bandwidth' field must be of type 'int'" - assert value >= 0 and value < 65536, \ - "The 'bandwidth' field must be an unsigned integer in [0, 65535]" - self._bandwidth = value - - @property - def imu_state(self): - """Message field 'imu_state'.""" - return self._imu_state - - @imu_state.setter - def imu_state(self, value): - if __debug__: - from unitree_go.msg import IMUState - assert \ - isinstance(value, IMUState), \ - "The 'imu_state' field must be a sub message of type 'IMUState'" - self._imu_state = value - - @property - def motor_state(self): - """Message field 'motor_state'.""" - return self._motor_state - - @motor_state.setter - def motor_state(self, value): - if __debug__: - from unitree_go.msg import MotorState - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 20 and - all(isinstance(v, MotorState) for v in value) and - True), \ - "The 'motor_state' field must be a set or sequence with length 20 and each value of type 'MotorState'" - self._motor_state = value - - @property - def bms_state(self): - """Message field 'bms_state'.""" - return self._bms_state - - @bms_state.setter - def bms_state(self, value): - if __debug__: - from unitree_go.msg import BmsState - assert \ - isinstance(value, BmsState), \ - "The 'bms_state' field must be a sub message of type 'BmsState'" - self._bms_state = value - - @property - def foot_force(self): - """Message field 'foot_force'.""" - return self._foot_force - - @foot_force.setter - def foot_force(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.int16, \ - "The 'foot_force' numpy.ndarray() must have the dtype of 'numpy.int16'" - assert value.size == 4, \ - "The 'foot_force' numpy.ndarray() must have a size of 4" - self._foot_force = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 4 and - all(isinstance(v, int) for v in value) and - all(val >= -32768 and val < 32768 for val in value)), \ - "The 'foot_force' field must be a set or sequence with length 4 and each value of type 'int' and each integer in [-32768, 32767]" - self._foot_force = numpy.array(value, dtype=numpy.int16) - - @property - def foot_force_est(self): - """Message field 'foot_force_est'.""" - return self._foot_force_est - - @foot_force_est.setter - def foot_force_est(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.int16, \ - "The 'foot_force_est' numpy.ndarray() must have the dtype of 'numpy.int16'" - assert value.size == 4, \ - "The 'foot_force_est' numpy.ndarray() must have a size of 4" - self._foot_force_est = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 4 and - all(isinstance(v, int) for v in value) and - all(val >= -32768 and val < 32768 for val in value)), \ - "The 'foot_force_est' field must be a set or sequence with length 4 and each value of type 'int' and each integer in [-32768, 32767]" - self._foot_force_est = numpy.array(value, dtype=numpy.int16) - - @property - def tick(self): - """Message field 'tick'.""" - return self._tick - - @tick.setter - def tick(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'tick' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'tick' field must be an unsigned integer in [0, 4294967295]" - self._tick = value - - @property - def wireless_remote(self): - """Message field 'wireless_remote'.""" - return self._wireless_remote - - @wireless_remote.setter - def wireless_remote(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'wireless_remote' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 40, \ - "The 'wireless_remote' numpy.ndarray() must have a size of 40" - self._wireless_remote = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 40 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'wireless_remote' field must be a set or sequence with length 40 and each value of type 'int' and each unsigned integer in [0, 255]" - self._wireless_remote = numpy.array(value, dtype=numpy.uint8) - - @property - def bit_flag(self): - """Message field 'bit_flag'.""" - return self._bit_flag - - @bit_flag.setter - def bit_flag(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'bit_flag' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'bit_flag' field must be an unsigned integer in [0, 255]" - self._bit_flag = value - - @property - def adc_reel(self): - """Message field 'adc_reel'.""" - return self._adc_reel - - @adc_reel.setter - def adc_reel(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'adc_reel' field must be of type 'float'" - self._adc_reel = value - - @property - def temperature_ntc1(self): - """Message field 'temperature_ntc1'.""" - return self._temperature_ntc1 - - @temperature_ntc1.setter - def temperature_ntc1(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'temperature_ntc1' field must be of type 'int'" - assert value >= -128 and value < 128, \ - "The 'temperature_ntc1' field must be an integer in [-128, 127]" - self._temperature_ntc1 = value - - @property - def temperature_ntc2(self): - """Message field 'temperature_ntc2'.""" - return self._temperature_ntc2 - - @temperature_ntc2.setter - def temperature_ntc2(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'temperature_ntc2' field must be of type 'int'" - assert value >= -128 and value < 128, \ - "The 'temperature_ntc2' field must be an integer in [-128, 127]" - self._temperature_ntc2 = value - - @property - def power_v(self): - """Message field 'power_v'.""" - return self._power_v - - @power_v.setter - def power_v(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'power_v' field must be of type 'float'" - self._power_v = value - - @property - def power_a(self): - """Message field 'power_a'.""" - return self._power_a - - @power_a.setter - def power_a(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'power_a' field must be of type 'float'" - self._power_a = value - - @property - def fan_frequency(self): - """Message field 'fan_frequency'.""" - return self._fan_frequency - - @fan_frequency.setter - def fan_frequency(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint16, \ - "The 'fan_frequency' numpy.ndarray() must have the dtype of 'numpy.uint16'" - assert value.size == 4, \ - "The 'fan_frequency' numpy.ndarray() must have a size of 4" - self._fan_frequency = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 4 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 65536 for val in value)), \ - "The 'fan_frequency' field must be a set or sequence with length 4 and each value of type 'int' and each unsigned integer in [0, 65535]" - self._fan_frequency = numpy.array(value, dtype=numpy.uint16) - - @property - def reserve(self): - """Message field 'reserve'.""" - return self._reserve - - @reserve.setter - def reserve(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'reserve' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'reserve' field must be an unsigned integer in [0, 4294967295]" - self._reserve = value - - @property - def crc(self): - """Message field 'crc'.""" - return self._crc - - @crc.setter - def crc(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'crc' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'crc' field must be an unsigned integer in [0, 4294967295]" - self._crc = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state_s.c deleted file mode 100644 index ad3c234..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_low_state_s.c +++ /dev/null @@ -1,724 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/low_state__struct.h" -#include "unitree_go/msg/detail/low_state__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -// Nested array functions includes -#include "unitree_go/msg/detail/motor_state__functions.h" -// end nested array functions include -bool unitree_go__msg__imu_state__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__imu_state__convert_to_py(void * raw_ros_message); -bool unitree_go__msg__motor_state__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__motor_state__convert_to_py(void * raw_ros_message); -bool unitree_go__msg__bms_state__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__bms_state__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__low_state__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[35]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._low_state.LowState", full_classname_dest, 34) == 0); - } - unitree_go__msg__LowState * ros_message = _ros_message; - { // head - PyObject * field = PyObject_GetAttrString(_pymsg, "head"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 2; - uint8_t * dest = ros_message->head; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // level_flag - PyObject * field = PyObject_GetAttrString(_pymsg, "level_flag"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->level_flag = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // frame_reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "frame_reserve"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->frame_reserve = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // sn - PyObject * field = PyObject_GetAttrString(_pymsg, "sn"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - Py_ssize_t size = 2; - uint32_t * dest = ros_message->sn; - for (Py_ssize_t i = 0; i < size; ++i) { - uint32_t tmp = *(npy_uint32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint32_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // version - PyObject * field = PyObject_GetAttrString(_pymsg, "version"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - Py_ssize_t size = 2; - uint32_t * dest = ros_message->version; - for (Py_ssize_t i = 0; i < size; ++i) { - uint32_t tmp = *(npy_uint32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint32_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // bandwidth - PyObject * field = PyObject_GetAttrString(_pymsg, "bandwidth"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->bandwidth = (uint16_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // imu_state - PyObject * field = PyObject_GetAttrString(_pymsg, "imu_state"); - if (!field) { - return false; - } - if (!unitree_go__msg__imu_state__convert_from_py(field, &ros_message->imu_state)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // motor_state - PyObject * field = PyObject_GetAttrString(_pymsg, "motor_state"); - if (!field) { - return false; - } - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'motor_state'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = 20; - unitree_go__msg__MotorState * dest = ros_message->motor_state; - for (Py_ssize_t i = 0; i < size; ++i) { - if (!unitree_go__msg__motor_state__convert_from_py(PySequence_Fast_GET_ITEM(seq_field, i), &dest[i])) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - } - Py_DECREF(seq_field); - Py_DECREF(field); - } - { // bms_state - PyObject * field = PyObject_GetAttrString(_pymsg, "bms_state"); - if (!field) { - return false; - } - if (!unitree_go__msg__bms_state__convert_from_py(field, &ros_message->bms_state)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // foot_force - PyObject * field = PyObject_GetAttrString(_pymsg, "foot_force"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT16); - Py_ssize_t size = 4; - int16_t * dest = ros_message->foot_force; - for (Py_ssize_t i = 0; i < size; ++i) { - int16_t tmp = *(npy_int16 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(int16_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // foot_force_est - PyObject * field = PyObject_GetAttrString(_pymsg, "foot_force_est"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT16); - Py_ssize_t size = 4; - int16_t * dest = ros_message->foot_force_est; - for (Py_ssize_t i = 0; i < size; ++i) { - int16_t tmp = *(npy_int16 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(int16_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // tick - PyObject * field = PyObject_GetAttrString(_pymsg, "tick"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->tick = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // wireless_remote - PyObject * field = PyObject_GetAttrString(_pymsg, "wireless_remote"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 40; - uint8_t * dest = ros_message->wireless_remote; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // bit_flag - PyObject * field = PyObject_GetAttrString(_pymsg, "bit_flag"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->bit_flag = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // adc_reel - PyObject * field = PyObject_GetAttrString(_pymsg, "adc_reel"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->adc_reel = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // temperature_ntc1 - PyObject * field = PyObject_GetAttrString(_pymsg, "temperature_ntc1"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->temperature_ntc1 = (int8_t)PyLong_AsLong(field); - Py_DECREF(field); - } - { // temperature_ntc2 - PyObject * field = PyObject_GetAttrString(_pymsg, "temperature_ntc2"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->temperature_ntc2 = (int8_t)PyLong_AsLong(field); - Py_DECREF(field); - } - { // power_v - PyObject * field = PyObject_GetAttrString(_pymsg, "power_v"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->power_v = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // power_a - PyObject * field = PyObject_GetAttrString(_pymsg, "power_a"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->power_a = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // fan_frequency - PyObject * field = PyObject_GetAttrString(_pymsg, "fan_frequency"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT16); - Py_ssize_t size = 4; - uint16_t * dest = ros_message->fan_frequency; - for (Py_ssize_t i = 0; i < size; ++i) { - uint16_t tmp = *(npy_uint16 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint16_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "reserve"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->reserve = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // crc - PyObject * field = PyObject_GetAttrString(_pymsg, "crc"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->crc = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__low_state__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of LowState */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._low_state"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "LowState"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__LowState * ros_message = (unitree_go__msg__LowState *)raw_ros_message; - { // head - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "head"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->head[0]); - memcpy(dst, src, 2 * sizeof(uint8_t)); - Py_DECREF(field); - } - { // level_flag - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->level_flag); - { - int rc = PyObject_SetAttrString(_pymessage, "level_flag", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // frame_reserve - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->frame_reserve); - { - int rc = PyObject_SetAttrString(_pymessage, "frame_reserve", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // sn - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "sn"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - assert(sizeof(npy_uint32) == sizeof(uint32_t)); - npy_uint32 * dst = (npy_uint32 *)PyArray_GETPTR1(seq_field, 0); - uint32_t * src = &(ros_message->sn[0]); - memcpy(dst, src, 2 * sizeof(uint32_t)); - Py_DECREF(field); - } - { // version - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "version"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - assert(sizeof(npy_uint32) == sizeof(uint32_t)); - npy_uint32 * dst = (npy_uint32 *)PyArray_GETPTR1(seq_field, 0); - uint32_t * src = &(ros_message->version[0]); - memcpy(dst, src, 2 * sizeof(uint32_t)); - Py_DECREF(field); - } - { // bandwidth - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->bandwidth); - { - int rc = PyObject_SetAttrString(_pymessage, "bandwidth", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // imu_state - PyObject * field = NULL; - field = unitree_go__msg__imu_state__convert_to_py(&ros_message->imu_state); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "imu_state", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // motor_state - PyObject * field = NULL; - size_t size = 20; - field = PyList_New(size); - if (!field) { - return NULL; - } - unitree_go__msg__MotorState * item; - for (size_t i = 0; i < size; ++i) { - item = &(ros_message->motor_state[i]); - PyObject * pyitem = unitree_go__msg__motor_state__convert_to_py(item); - if (!pyitem) { - Py_DECREF(field); - return NULL; - } - int rc = PyList_SetItem(field, i, pyitem); - (void)rc; - assert(rc == 0); - } - assert(PySequence_Check(field)); - { - int rc = PyObject_SetAttrString(_pymessage, "motor_state", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // bms_state - PyObject * field = NULL; - field = unitree_go__msg__bms_state__convert_to_py(&ros_message->bms_state); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "bms_state", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // foot_force - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "foot_force"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT16); - assert(sizeof(npy_int16) == sizeof(int16_t)); - npy_int16 * dst = (npy_int16 *)PyArray_GETPTR1(seq_field, 0); - int16_t * src = &(ros_message->foot_force[0]); - memcpy(dst, src, 4 * sizeof(int16_t)); - Py_DECREF(field); - } - { // foot_force_est - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "foot_force_est"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT16); - assert(sizeof(npy_int16) == sizeof(int16_t)); - npy_int16 * dst = (npy_int16 *)PyArray_GETPTR1(seq_field, 0); - int16_t * src = &(ros_message->foot_force_est[0]); - memcpy(dst, src, 4 * sizeof(int16_t)); - Py_DECREF(field); - } - { // tick - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->tick); - { - int rc = PyObject_SetAttrString(_pymessage, "tick", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // wireless_remote - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "wireless_remote"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->wireless_remote[0]); - memcpy(dst, src, 40 * sizeof(uint8_t)); - Py_DECREF(field); - } - { // bit_flag - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->bit_flag); - { - int rc = PyObject_SetAttrString(_pymessage, "bit_flag", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // adc_reel - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->adc_reel); - { - int rc = PyObject_SetAttrString(_pymessage, "adc_reel", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // temperature_ntc1 - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->temperature_ntc1); - { - int rc = PyObject_SetAttrString(_pymessage, "temperature_ntc1", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // temperature_ntc2 - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->temperature_ntc2); - { - int rc = PyObject_SetAttrString(_pymessage, "temperature_ntc2", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // power_v - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->power_v); - { - int rc = PyObject_SetAttrString(_pymessage, "power_v", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // power_a - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->power_a); - { - int rc = PyObject_SetAttrString(_pymessage, "power_a", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // fan_frequency - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "fan_frequency"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT16); - assert(sizeof(npy_uint16) == sizeof(uint16_t)); - npy_uint16 * dst = (npy_uint16 *)PyArray_GETPTR1(seq_field, 0); - uint16_t * src = &(ros_message->fan_frequency[0]); - memcpy(dst, src, 4 * sizeof(uint16_t)); - Py_DECREF(field); - } - { // reserve - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->reserve); - { - int rc = PyObject_SetAttrString(_pymessage, "reserve", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // crc - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->crc); - { - int rc = PyObject_SetAttrString(_pymessage, "crc", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd.py deleted file mode 100644 index f580bd6..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd.py +++ /dev/null @@ -1,263 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/MotorCmd.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'reserve' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_MotorCmd(type): - """Metaclass of message 'MotorCmd'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.MotorCmd') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__motor_cmd - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__motor_cmd - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__motor_cmd - cls._TYPE_SUPPORT = module.type_support_msg__msg__motor_cmd - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__motor_cmd - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class MotorCmd(metaclass=Metaclass_MotorCmd): - """Message class 'MotorCmd'.""" - - __slots__ = [ - '_mode', - '_q', - '_dq', - '_tau', - '_kp', - '_kd', - '_reserve', - ] - - _fields_and_field_types = { - 'mode': 'uint8', - 'q': 'float', - 'dq': 'float', - 'tau': 'float', - 'kp': 'float', - 'kd': 'float', - 'reserve': 'uint32[3]', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint32'), 3), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.mode = kwargs.get('mode', int()) - self.q = kwargs.get('q', float()) - self.dq = kwargs.get('dq', float()) - self.tau = kwargs.get('tau', float()) - self.kp = kwargs.get('kp', float()) - self.kd = kwargs.get('kd', float()) - if 'reserve' not in kwargs: - self.reserve = numpy.zeros(3, dtype=numpy.uint32) - else: - self.reserve = numpy.array(kwargs.get('reserve'), dtype=numpy.uint32) - assert self.reserve.shape == (3, ) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.mode != other.mode: - return False - if self.q != other.q: - return False - if self.dq != other.dq: - return False - if self.tau != other.tau: - return False - if self.kp != other.kp: - return False - if self.kd != other.kd: - return False - if all(self.reserve != other.reserve): - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def mode(self): - """Message field 'mode'.""" - return self._mode - - @mode.setter - def mode(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'mode' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'mode' field must be an unsigned integer in [0, 255]" - self._mode = value - - @property - def q(self): - """Message field 'q'.""" - return self._q - - @q.setter - def q(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'q' field must be of type 'float'" - self._q = value - - @property - def dq(self): - """Message field 'dq'.""" - return self._dq - - @dq.setter - def dq(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'dq' field must be of type 'float'" - self._dq = value - - @property - def tau(self): - """Message field 'tau'.""" - return self._tau - - @tau.setter - def tau(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'tau' field must be of type 'float'" - self._tau = value - - @property - def kp(self): - """Message field 'kp'.""" - return self._kp - - @kp.setter - def kp(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'kp' field must be of type 'float'" - self._kp = value - - @property - def kd(self): - """Message field 'kd'.""" - return self._kd - - @kd.setter - def kd(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'kd' field must be of type 'float'" - self._kd = value - - @property - def reserve(self): - """Message field 'reserve'.""" - return self._reserve - - @reserve.setter - def reserve(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint32, \ - "The 'reserve' numpy.ndarray() must have the dtype of 'numpy.uint32'" - assert value.size == 3, \ - "The 'reserve' numpy.ndarray() must have a size of 3" - self._reserve = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 4294967296 for val in value)), \ - "The 'reserve' field must be a set or sequence with length 3 and each value of type 'int' and each unsigned integer in [0, 4294967295]" - self._reserve = numpy.array(value, dtype=numpy.uint32) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd_s.c deleted file mode 100644 index 64fa078..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_cmd_s.c +++ /dev/null @@ -1,243 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/motor_cmd__struct.h" -#include "unitree_go/msg/detail/motor_cmd__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__motor_cmd__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[35]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._motor_cmd.MotorCmd", full_classname_dest, 34) == 0); - } - unitree_go__msg__MotorCmd * ros_message = _ros_message; - { // mode - PyObject * field = PyObject_GetAttrString(_pymsg, "mode"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->mode = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // q - PyObject * field = PyObject_GetAttrString(_pymsg, "q"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->q = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // dq - PyObject * field = PyObject_GetAttrString(_pymsg, "dq"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->dq = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // tau - PyObject * field = PyObject_GetAttrString(_pymsg, "tau"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->tau = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // kp - PyObject * field = PyObject_GetAttrString(_pymsg, "kp"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->kp = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // kd - PyObject * field = PyObject_GetAttrString(_pymsg, "kd"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->kd = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "reserve"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - Py_ssize_t size = 3; - uint32_t * dest = ros_message->reserve; - for (Py_ssize_t i = 0; i < size; ++i) { - uint32_t tmp = *(npy_uint32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint32_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__motor_cmd__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of MotorCmd */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._motor_cmd"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "MotorCmd"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__MotorCmd * ros_message = (unitree_go__msg__MotorCmd *)raw_ros_message; - { // mode - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->mode); - { - int rc = PyObject_SetAttrString(_pymessage, "mode", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // q - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->q); - { - int rc = PyObject_SetAttrString(_pymessage, "q", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // dq - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->dq); - { - int rc = PyObject_SetAttrString(_pymessage, "dq", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // tau - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->tau); - { - int rc = PyObject_SetAttrString(_pymessage, "tau", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // kp - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->kp); - { - int rc = PyObject_SetAttrString(_pymessage, "kp", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // kd - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->kd); - { - int rc = PyObject_SetAttrString(_pymessage, "kd", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // reserve - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "reserve"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - assert(sizeof(npy_uint32) == sizeof(uint32_t)); - npy_uint32 * dst = (npy_uint32 *)PyArray_GETPTR1(seq_field, 0); - uint32_t * src = &(ros_message->reserve[0]); - memcpy(dst, src, 3 * sizeof(uint32_t)); - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state.py deleted file mode 100644 index 739e8f0..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state.py +++ /dev/null @@ -1,343 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/MotorState.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'reserve' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_MotorState(type): - """Metaclass of message 'MotorState'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.MotorState') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__motor_state - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__motor_state - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__motor_state - cls._TYPE_SUPPORT = module.type_support_msg__msg__motor_state - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__motor_state - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class MotorState(metaclass=Metaclass_MotorState): - """Message class 'MotorState'.""" - - __slots__ = [ - '_mode', - '_q', - '_dq', - '_ddq', - '_tau_est', - '_q_raw', - '_dq_raw', - '_ddq_raw', - '_temperature', - '_lost', - '_reserve', - ] - - _fields_and_field_types = { - 'mode': 'uint8', - 'q': 'float', - 'dq': 'float', - 'ddq': 'float', - 'tau_est': 'float', - 'q_raw': 'float', - 'dq_raw': 'float', - 'ddq_raw': 'float', - 'temperature': 'int8', - 'lost': 'uint32', - 'reserve': 'uint32[2]', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('int8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint32'), 2), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.mode = kwargs.get('mode', int()) - self.q = kwargs.get('q', float()) - self.dq = kwargs.get('dq', float()) - self.ddq = kwargs.get('ddq', float()) - self.tau_est = kwargs.get('tau_est', float()) - self.q_raw = kwargs.get('q_raw', float()) - self.dq_raw = kwargs.get('dq_raw', float()) - self.ddq_raw = kwargs.get('ddq_raw', float()) - self.temperature = kwargs.get('temperature', int()) - self.lost = kwargs.get('lost', int()) - if 'reserve' not in kwargs: - self.reserve = numpy.zeros(2, dtype=numpy.uint32) - else: - self.reserve = numpy.array(kwargs.get('reserve'), dtype=numpy.uint32) - assert self.reserve.shape == (2, ) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.mode != other.mode: - return False - if self.q != other.q: - return False - if self.dq != other.dq: - return False - if self.ddq != other.ddq: - return False - if self.tau_est != other.tau_est: - return False - if self.q_raw != other.q_raw: - return False - if self.dq_raw != other.dq_raw: - return False - if self.ddq_raw != other.ddq_raw: - return False - if self.temperature != other.temperature: - return False - if self.lost != other.lost: - return False - if all(self.reserve != other.reserve): - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def mode(self): - """Message field 'mode'.""" - return self._mode - - @mode.setter - def mode(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'mode' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'mode' field must be an unsigned integer in [0, 255]" - self._mode = value - - @property - def q(self): - """Message field 'q'.""" - return self._q - - @q.setter - def q(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'q' field must be of type 'float'" - self._q = value - - @property - def dq(self): - """Message field 'dq'.""" - return self._dq - - @dq.setter - def dq(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'dq' field must be of type 'float'" - self._dq = value - - @property - def ddq(self): - """Message field 'ddq'.""" - return self._ddq - - @ddq.setter - def ddq(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'ddq' field must be of type 'float'" - self._ddq = value - - @property - def tau_est(self): - """Message field 'tau_est'.""" - return self._tau_est - - @tau_est.setter - def tau_est(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'tau_est' field must be of type 'float'" - self._tau_est = value - - @property - def q_raw(self): - """Message field 'q_raw'.""" - return self._q_raw - - @q_raw.setter - def q_raw(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'q_raw' field must be of type 'float'" - self._q_raw = value - - @property - def dq_raw(self): - """Message field 'dq_raw'.""" - return self._dq_raw - - @dq_raw.setter - def dq_raw(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'dq_raw' field must be of type 'float'" - self._dq_raw = value - - @property - def ddq_raw(self): - """Message field 'ddq_raw'.""" - return self._ddq_raw - - @ddq_raw.setter - def ddq_raw(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'ddq_raw' field must be of type 'float'" - self._ddq_raw = value - - @property - def temperature(self): - """Message field 'temperature'.""" - return self._temperature - - @temperature.setter - def temperature(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'temperature' field must be of type 'int'" - assert value >= -128 and value < 128, \ - "The 'temperature' field must be an integer in [-128, 127]" - self._temperature = value - - @property - def lost(self): - """Message field 'lost'.""" - return self._lost - - @lost.setter - def lost(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'lost' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'lost' field must be an unsigned integer in [0, 4294967295]" - self._lost = value - - @property - def reserve(self): - """Message field 'reserve'.""" - return self._reserve - - @reserve.setter - def reserve(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint32, \ - "The 'reserve' numpy.ndarray() must have the dtype of 'numpy.uint32'" - assert value.size == 2, \ - "The 'reserve' numpy.ndarray() must have a size of 2" - self._reserve = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 4294967296 for val in value)), \ - "The 'reserve' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 4294967295]" - self._reserve = numpy.array(value, dtype=numpy.uint32) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state_s.c deleted file mode 100644 index 56d9526..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_motor_state_s.c +++ /dev/null @@ -1,323 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/motor_state__struct.h" -#include "unitree_go/msg/detail/motor_state__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__motor_state__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[39]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._motor_state.MotorState", full_classname_dest, 38) == 0); - } - unitree_go__msg__MotorState * ros_message = _ros_message; - { // mode - PyObject * field = PyObject_GetAttrString(_pymsg, "mode"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->mode = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // q - PyObject * field = PyObject_GetAttrString(_pymsg, "q"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->q = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // dq - PyObject * field = PyObject_GetAttrString(_pymsg, "dq"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->dq = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // ddq - PyObject * field = PyObject_GetAttrString(_pymsg, "ddq"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->ddq = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // tau_est - PyObject * field = PyObject_GetAttrString(_pymsg, "tau_est"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->tau_est = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // q_raw - PyObject * field = PyObject_GetAttrString(_pymsg, "q_raw"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->q_raw = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // dq_raw - PyObject * field = PyObject_GetAttrString(_pymsg, "dq_raw"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->dq_raw = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // ddq_raw - PyObject * field = PyObject_GetAttrString(_pymsg, "ddq_raw"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->ddq_raw = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // temperature - PyObject * field = PyObject_GetAttrString(_pymsg, "temperature"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->temperature = (int8_t)PyLong_AsLong(field); - Py_DECREF(field); - } - { // lost - PyObject * field = PyObject_GetAttrString(_pymsg, "lost"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->lost = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // reserve - PyObject * field = PyObject_GetAttrString(_pymsg, "reserve"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - Py_ssize_t size = 2; - uint32_t * dest = ros_message->reserve; - for (Py_ssize_t i = 0; i < size; ++i) { - uint32_t tmp = *(npy_uint32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint32_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__motor_state__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of MotorState */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._motor_state"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "MotorState"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__MotorState * ros_message = (unitree_go__msg__MotorState *)raw_ros_message; - { // mode - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->mode); - { - int rc = PyObject_SetAttrString(_pymessage, "mode", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // q - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->q); - { - int rc = PyObject_SetAttrString(_pymessage, "q", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // dq - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->dq); - { - int rc = PyObject_SetAttrString(_pymessage, "dq", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // ddq - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->ddq); - { - int rc = PyObject_SetAttrString(_pymessage, "ddq", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // tau_est - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->tau_est); - { - int rc = PyObject_SetAttrString(_pymessage, "tau_est", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // q_raw - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->q_raw); - { - int rc = PyObject_SetAttrString(_pymessage, "q_raw", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // dq_raw - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->dq_raw); - { - int rc = PyObject_SetAttrString(_pymessage, "dq_raw", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // ddq_raw - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->ddq_raw); - { - int rc = PyObject_SetAttrString(_pymessage, "ddq_raw", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // temperature - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->temperature); - { - int rc = PyObject_SetAttrString(_pymessage, "temperature", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // lost - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->lost); - { - int rc = PyObject_SetAttrString(_pymessage, "lost", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // reserve - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "reserve"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT32); - assert(sizeof(npy_uint32) == sizeof(uint32_t)); - npy_uint32 * dst = (npy_uint32 *)PyArray_GETPTR1(seq_field, 0); - uint32_t * src = &(ros_message->reserve[0]); - memcpy(dst, src, 2 * sizeof(uint32_t)); - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point.py deleted file mode 100644 index 1d70220..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point.py +++ /dev/null @@ -1,236 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/PathPoint.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_PathPoint(type): - """Metaclass of message 'PathPoint'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.PathPoint') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__path_point - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__path_point - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__path_point - cls._TYPE_SUPPORT = module.type_support_msg__msg__path_point - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__path_point - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class PathPoint(metaclass=Metaclass_PathPoint): - """Message class 'PathPoint'.""" - - __slots__ = [ - '_t_from_start', - '_x', - '_y', - '_yaw', - '_vx', - '_vy', - '_vyaw', - ] - - _fields_and_field_types = { - 't_from_start': 'float', - 'x': 'float', - 'y': 'float', - 'yaw': 'float', - 'vx': 'float', - 'vy': 'float', - 'vyaw': 'float', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.t_from_start = kwargs.get('t_from_start', float()) - self.x = kwargs.get('x', float()) - self.y = kwargs.get('y', float()) - self.yaw = kwargs.get('yaw', float()) - self.vx = kwargs.get('vx', float()) - self.vy = kwargs.get('vy', float()) - self.vyaw = kwargs.get('vyaw', float()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.t_from_start != other.t_from_start: - return False - if self.x != other.x: - return False - if self.y != other.y: - return False - if self.yaw != other.yaw: - return False - if self.vx != other.vx: - return False - if self.vy != other.vy: - return False - if self.vyaw != other.vyaw: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def t_from_start(self): - """Message field 't_from_start'.""" - return self._t_from_start - - @t_from_start.setter - def t_from_start(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 't_from_start' field must be of type 'float'" - self._t_from_start = value - - @property - def x(self): - """Message field 'x'.""" - return self._x - - @x.setter - def x(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'x' field must be of type 'float'" - self._x = value - - @property - def y(self): - """Message field 'y'.""" - return self._y - - @y.setter - def y(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'y' field must be of type 'float'" - self._y = value - - @property - def yaw(self): - """Message field 'yaw'.""" - return self._yaw - - @yaw.setter - def yaw(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'yaw' field must be of type 'float'" - self._yaw = value - - @property - def vx(self): - """Message field 'vx'.""" - return self._vx - - @vx.setter - def vx(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'vx' field must be of type 'float'" - self._vx = value - - @property - def vy(self): - """Message field 'vy'.""" - return self._vy - - @vy.setter - def vy(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'vy' field must be of type 'float'" - self._vy = value - - @property - def vyaw(self): - """Message field 'vyaw'.""" - return self._vyaw - - @vyaw.setter - def vyaw(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'vyaw' field must be of type 'float'" - self._vyaw = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point_s.c deleted file mode 100644 index 6be16c7..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_path_point_s.c +++ /dev/null @@ -1,218 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/path_point__struct.h" -#include "unitree_go/msg/detail/path_point__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__path_point__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[37]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._path_point.PathPoint", full_classname_dest, 36) == 0); - } - unitree_go__msg__PathPoint * ros_message = _ros_message; - { // t_from_start - PyObject * field = PyObject_GetAttrString(_pymsg, "t_from_start"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->t_from_start = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // x - PyObject * field = PyObject_GetAttrString(_pymsg, "x"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->x = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // y - PyObject * field = PyObject_GetAttrString(_pymsg, "y"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->y = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // yaw - PyObject * field = PyObject_GetAttrString(_pymsg, "yaw"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->yaw = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // vx - PyObject * field = PyObject_GetAttrString(_pymsg, "vx"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->vx = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // vy - PyObject * field = PyObject_GetAttrString(_pymsg, "vy"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->vy = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // vyaw - PyObject * field = PyObject_GetAttrString(_pymsg, "vyaw"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->vyaw = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__path_point__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of PathPoint */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._path_point"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "PathPoint"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__PathPoint * ros_message = (unitree_go__msg__PathPoint *)raw_ros_message; - { // t_from_start - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->t_from_start); - { - int rc = PyObject_SetAttrString(_pymessage, "t_from_start", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // x - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->x); - { - int rc = PyObject_SetAttrString(_pymessage, "x", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // y - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->y); - { - int rc = PyObject_SetAttrString(_pymessage, "y", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // yaw - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->yaw); - { - int rc = PyObject_SetAttrString(_pymessage, "yaw", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // vx - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->vx); - { - int rc = PyObject_SetAttrString(_pymessage, "vx", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // vy - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->vy); - { - int rc = PyObject_SetAttrString(_pymessage, "vy", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // vyaw - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->vyaw); - { - int rc = PyObject_SetAttrString(_pymessage, "vyaw", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req.py deleted file mode 100644 index 0827644..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req.py +++ /dev/null @@ -1,141 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/Req.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_Req(type): - """Metaclass of message 'Req'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.Req') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__req - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__req - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__req - cls._TYPE_SUPPORT = module.type_support_msg__msg__req - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__req - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class Req(metaclass=Metaclass_Req): - """Message class 'Req'.""" - - __slots__ = [ - '_uuid', - '_body', - ] - - _fields_and_field_types = { - 'uuid': 'string', - 'body': 'string', - } - - SLOT_TYPES = ( - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.uuid = kwargs.get('uuid', str()) - self.body = kwargs.get('body', str()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.uuid != other.uuid: - return False - if self.body != other.body: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def uuid(self): - """Message field 'uuid'.""" - return self._uuid - - @uuid.setter - def uuid(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'uuid' field must be of type 'str'" - self._uuid = value - - @property - def body(self): - """Message field 'body'.""" - return self._body - - @body.setter - def body(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'body' field must be of type 'str'" - self._body = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req_s.c deleted file mode 100644 index 856782f..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_req_s.c +++ /dev/null @@ -1,145 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/req__struct.h" -#include "unitree_go/msg/detail/req__functions.h" - -#include "rosidl_runtime_c/string.h" -#include "rosidl_runtime_c/string_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__req__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[24]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._req.Req", full_classname_dest, 23) == 0); - } - unitree_go__msg__Req * ros_message = _ros_message; - { // uuid - PyObject * field = PyObject_GetAttrString(_pymsg, "uuid"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->uuid, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // body - PyObject * field = PyObject_GetAttrString(_pymsg, "body"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->body, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__req__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of Req */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._req"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "Req"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__Req * ros_message = (unitree_go__msg__Req *)raw_ros_message; - { // uuid - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->uuid.data, - strlen(ros_message->uuid.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "uuid", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // body - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->body.data, - strlen(ros_message->body.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "body", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res.py deleted file mode 100644 index da1126d..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res.py +++ /dev/null @@ -1,178 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/Res.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'data' -import array # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_Res(type): - """Metaclass of message 'Res'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.Res') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__res - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__res - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__res - cls._TYPE_SUPPORT = module.type_support_msg__msg__res - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__res - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class Res(metaclass=Metaclass_Res): - """Message class 'Res'.""" - - __slots__ = [ - '_uuid', - '_data', - '_body', - ] - - _fields_and_field_types = { - 'uuid': 'string', - 'data': 'sequence', - 'body': 'string', - } - - SLOT_TYPES = ( - rosidl_parser.definition.UnboundedString(), # noqa: E501 - rosidl_parser.definition.UnboundedSequence(rosidl_parser.definition.BasicType('uint8')), # noqa: E501 - rosidl_parser.definition.UnboundedString(), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.uuid = kwargs.get('uuid', str()) - self.data = array.array('B', kwargs.get('data', [])) - self.body = kwargs.get('body', str()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.uuid != other.uuid: - return False - if self.data != other.data: - return False - if self.body != other.body: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def uuid(self): - """Message field 'uuid'.""" - return self._uuid - - @uuid.setter - def uuid(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'uuid' field must be of type 'str'" - self._uuid = value - - @property - def data(self): - """Message field 'data'.""" - return self._data - - @data.setter - def data(self, value): - if isinstance(value, array.array): - assert value.typecode == 'B', \ - "The 'data' array.array() must have the type code of 'B'" - self._data = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'data' field must be a set or sequence and each value of type 'int' and each unsigned integer in [0, 255]" - self._data = array.array('B', value) - - @property - def body(self): - """Message field 'body'.""" - return self._body - - @body.setter - def body(self, value): - if __debug__: - assert \ - isinstance(value, str), \ - "The 'body' field must be of type 'str'" - self._body = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res_s.c deleted file mode 100644 index 4e40f1d..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_res_s.c +++ /dev/null @@ -1,268 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/res__struct.h" -#include "unitree_go/msg/detail/res__functions.h" - -#include "rosidl_runtime_c/string.h" -#include "rosidl_runtime_c/string_functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__res__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[24]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._res.Res", full_classname_dest, 23) == 0); - } - unitree_go__msg__Res * ros_message = _ros_message; - { // uuid - PyObject * field = PyObject_GetAttrString(_pymsg, "uuid"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->uuid, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - { // data - PyObject * field = PyObject_GetAttrString(_pymsg, "data"); - if (!field) { - return false; - } - if (PyObject_CheckBuffer(field)) { - // Optimization for converting arrays of primitives - Py_buffer view; - int rc = PyObject_GetBuffer(field, &view, PyBUF_SIMPLE); - if (rc < 0) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = view.len / sizeof(uint8_t); - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->data), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->data.data; - rc = PyBuffer_ToContiguous(dest, &view, view.len, 'C'); - if (rc < 0) { - PyBuffer_Release(&view); - Py_DECREF(field); - return false; - } - PyBuffer_Release(&view); - } else { - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'data'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = PySequence_Size(field); - if (-1 == size) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - if (!rosidl_runtime_c__uint8__Sequence__init(&(ros_message->data), size)) { - PyErr_SetString(PyExc_RuntimeError, "unable to create uint8__Sequence ros_message"); - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - uint8_t * dest = ros_message->data.data; - for (Py_ssize_t i = 0; i < size; ++i) { - PyObject * item = PySequence_Fast_GET_ITEM(seq_field, i); - if (!item) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - assert(PyLong_Check(item)); - uint8_t tmp = (uint8_t)PyLong_AsUnsignedLong(item); - - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // body - PyObject * field = PyObject_GetAttrString(_pymsg, "body"); - if (!field) { - return false; - } - assert(PyUnicode_Check(field)); - PyObject * encoded_field = PyUnicode_AsUTF8String(field); - if (!encoded_field) { - Py_DECREF(field); - return false; - } - rosidl_runtime_c__String__assign(&ros_message->body, PyBytes_AS_STRING(encoded_field)); - Py_DECREF(encoded_field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__res__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of Res */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._res"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "Res"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__Res * ros_message = (unitree_go__msg__Res *)raw_ros_message; - { // uuid - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->uuid.data, - strlen(ros_message->uuid.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "uuid", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // data - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "data"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "array.array") == 0); - // ensure that itemsize matches the sizeof of the ROS message field - PyObject * itemsize_attr = PyObject_GetAttrString(field, "itemsize"); - assert(itemsize_attr != NULL); - size_t itemsize = PyLong_AsSize_t(itemsize_attr); - Py_DECREF(itemsize_attr); - if (itemsize != sizeof(uint8_t)) { - PyErr_SetString(PyExc_RuntimeError, "itemsize doesn't match expectation"); - Py_DECREF(field); - return NULL; - } - // clear the array, poor approach to remove potential default values - Py_ssize_t length = PyObject_Length(field); - if (-1 == length) { - Py_DECREF(field); - return NULL; - } - if (length > 0) { - PyObject * pop = PyObject_GetAttrString(field, "pop"); - assert(pop != NULL); - for (Py_ssize_t i = 0; i < length; ++i) { - PyObject * ret = PyObject_CallFunctionObjArgs(pop, NULL); - if (!ret) { - Py_DECREF(pop); - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(pop); - } - if (ros_message->data.size > 0) { - // populating the array.array using the frombytes method - PyObject * frombytes = PyObject_GetAttrString(field, "frombytes"); - assert(frombytes != NULL); - uint8_t * src = &(ros_message->data.data[0]); - PyObject * data = PyBytes_FromStringAndSize((const char *)src, ros_message->data.size * sizeof(uint8_t)); - assert(data != NULL); - PyObject * ret = PyObject_CallFunctionObjArgs(frombytes, data, NULL); - Py_DECREF(data); - Py_DECREF(frombytes); - if (!ret) { - Py_DECREF(field); - return NULL; - } - Py_DECREF(ret); - } - Py_DECREF(field); - } - { // body - PyObject * field = NULL; - field = PyUnicode_DecodeUTF8( - ros_message->body.data, - strlen(ros_message->body.data), - "replace"); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "body", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd.py deleted file mode 100644 index 7bcaf06..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd.py +++ /dev/null @@ -1,415 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/SportModeCmd.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'position' -# Member 'euler' -# Member 'velocity' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_SportModeCmd(type): - """Metaclass of message 'SportModeCmd'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.SportModeCmd') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__sport_mode_cmd - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__sport_mode_cmd - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__sport_mode_cmd - cls._TYPE_SUPPORT = module.type_support_msg__msg__sport_mode_cmd - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__sport_mode_cmd - - from unitree_go.msg import BmsCmd - if BmsCmd.__class__._TYPE_SUPPORT is None: - BmsCmd.__class__.__import_type_support__() - - from unitree_go.msg import PathPoint - if PathPoint.__class__._TYPE_SUPPORT is None: - PathPoint.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class SportModeCmd(metaclass=Metaclass_SportModeCmd): - """Message class 'SportModeCmd'.""" - - __slots__ = [ - '_mode', - '_gait_type', - '_speed_level', - '_foot_raise_height', - '_body_height', - '_position', - '_euler', - '_velocity', - '_yaw_speed', - '_bms_cmd', - '_path_point', - ] - - _fields_and_field_types = { - 'mode': 'uint8', - 'gait_type': 'uint8', - 'speed_level': 'uint8', - 'foot_raise_height': 'float', - 'body_height': 'float', - 'position': 'float[2]', - 'euler': 'float[3]', - 'velocity': 'float[2]', - 'yaw_speed': 'float', - 'bms_cmd': 'unitree_go/BmsCmd', - 'path_point': 'unitree_go/PathPoint[30]', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 2), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 3), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'BmsCmd'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'PathPoint'), 30), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.mode = kwargs.get('mode', int()) - self.gait_type = kwargs.get('gait_type', int()) - self.speed_level = kwargs.get('speed_level', int()) - self.foot_raise_height = kwargs.get('foot_raise_height', float()) - self.body_height = kwargs.get('body_height', float()) - if 'position' not in kwargs: - self.position = numpy.zeros(2, dtype=numpy.float32) - else: - self.position = numpy.array(kwargs.get('position'), dtype=numpy.float32) - assert self.position.shape == (2, ) - if 'euler' not in kwargs: - self.euler = numpy.zeros(3, dtype=numpy.float32) - else: - self.euler = numpy.array(kwargs.get('euler'), dtype=numpy.float32) - assert self.euler.shape == (3, ) - if 'velocity' not in kwargs: - self.velocity = numpy.zeros(2, dtype=numpy.float32) - else: - self.velocity = numpy.array(kwargs.get('velocity'), dtype=numpy.float32) - assert self.velocity.shape == (2, ) - self.yaw_speed = kwargs.get('yaw_speed', float()) - from unitree_go.msg import BmsCmd - self.bms_cmd = kwargs.get('bms_cmd', BmsCmd()) - from unitree_go.msg import PathPoint - self.path_point = kwargs.get( - 'path_point', - [PathPoint() for x in range(30)] - ) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.mode != other.mode: - return False - if self.gait_type != other.gait_type: - return False - if self.speed_level != other.speed_level: - return False - if self.foot_raise_height != other.foot_raise_height: - return False - if self.body_height != other.body_height: - return False - if all(self.position != other.position): - return False - if all(self.euler != other.euler): - return False - if all(self.velocity != other.velocity): - return False - if self.yaw_speed != other.yaw_speed: - return False - if self.bms_cmd != other.bms_cmd: - return False - if self.path_point != other.path_point: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def mode(self): - """Message field 'mode'.""" - return self._mode - - @mode.setter - def mode(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'mode' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'mode' field must be an unsigned integer in [0, 255]" - self._mode = value - - @property - def gait_type(self): - """Message field 'gait_type'.""" - return self._gait_type - - @gait_type.setter - def gait_type(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'gait_type' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'gait_type' field must be an unsigned integer in [0, 255]" - self._gait_type = value - - @property - def speed_level(self): - """Message field 'speed_level'.""" - return self._speed_level - - @speed_level.setter - def speed_level(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'speed_level' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'speed_level' field must be an unsigned integer in [0, 255]" - self._speed_level = value - - @property - def foot_raise_height(self): - """Message field 'foot_raise_height'.""" - return self._foot_raise_height - - @foot_raise_height.setter - def foot_raise_height(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'foot_raise_height' field must be of type 'float'" - self._foot_raise_height = value - - @property - def body_height(self): - """Message field 'body_height'.""" - return self._body_height - - @body_height.setter - def body_height(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'body_height' field must be of type 'float'" - self._body_height = value - - @property - def position(self): - """Message field 'position'.""" - return self._position - - @position.setter - def position(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'position' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 2, \ - "The 'position' numpy.ndarray() must have a size of 2" - self._position = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'position' field must be a set or sequence with length 2 and each value of type 'float'" - self._position = numpy.array(value, dtype=numpy.float32) - - @property - def euler(self): - """Message field 'euler'.""" - return self._euler - - @euler.setter - def euler(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'euler' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 3, \ - "The 'euler' numpy.ndarray() must have a size of 3" - self._euler = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'euler' field must be a set or sequence with length 3 and each value of type 'float'" - self._euler = numpy.array(value, dtype=numpy.float32) - - @property - def velocity(self): - """Message field 'velocity'.""" - return self._velocity - - @velocity.setter - def velocity(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'velocity' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 2, \ - "The 'velocity' numpy.ndarray() must have a size of 2" - self._velocity = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'velocity' field must be a set or sequence with length 2 and each value of type 'float'" - self._velocity = numpy.array(value, dtype=numpy.float32) - - @property - def yaw_speed(self): - """Message field 'yaw_speed'.""" - return self._yaw_speed - - @yaw_speed.setter - def yaw_speed(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'yaw_speed' field must be of type 'float'" - self._yaw_speed = value - - @property - def bms_cmd(self): - """Message field 'bms_cmd'.""" - return self._bms_cmd - - @bms_cmd.setter - def bms_cmd(self, value): - if __debug__: - from unitree_go.msg import BmsCmd - assert \ - isinstance(value, BmsCmd), \ - "The 'bms_cmd' field must be a sub message of type 'BmsCmd'" - self._bms_cmd = value - - @property - def path_point(self): - """Message field 'path_point'.""" - return self._path_point - - @path_point.setter - def path_point(self, value): - if __debug__: - from unitree_go.msg import PathPoint - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 30 and - all(isinstance(v, PathPoint) for v in value) and - True), \ - "The 'path_point' field must be a set or sequence with length 30 and each value of type 'PathPoint'" - self._path_point = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd_s.c deleted file mode 100644 index 8163331..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_cmd_s.c +++ /dev/null @@ -1,409 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/sport_mode_cmd__struct.h" -#include "unitree_go/msg/detail/sport_mode_cmd__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -// Nested array functions includes -#include "unitree_go/msg/detail/path_point__functions.h" -// end nested array functions include -bool unitree_go__msg__bms_cmd__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__bms_cmd__convert_to_py(void * raw_ros_message); -bool unitree_go__msg__path_point__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__path_point__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__sport_mode_cmd__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[44]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._sport_mode_cmd.SportModeCmd", full_classname_dest, 43) == 0); - } - unitree_go__msg__SportModeCmd * ros_message = _ros_message; - { // mode - PyObject * field = PyObject_GetAttrString(_pymsg, "mode"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->mode = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // gait_type - PyObject * field = PyObject_GetAttrString(_pymsg, "gait_type"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->gait_type = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // speed_level - PyObject * field = PyObject_GetAttrString(_pymsg, "speed_level"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->speed_level = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // foot_raise_height - PyObject * field = PyObject_GetAttrString(_pymsg, "foot_raise_height"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->foot_raise_height = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // body_height - PyObject * field = PyObject_GetAttrString(_pymsg, "body_height"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->body_height = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // position - PyObject * field = PyObject_GetAttrString(_pymsg, "position"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 2; - float * dest = ros_message->position; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // euler - PyObject * field = PyObject_GetAttrString(_pymsg, "euler"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 3; - float * dest = ros_message->euler; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // velocity - PyObject * field = PyObject_GetAttrString(_pymsg, "velocity"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 2; - float * dest = ros_message->velocity; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // yaw_speed - PyObject * field = PyObject_GetAttrString(_pymsg, "yaw_speed"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->yaw_speed = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // bms_cmd - PyObject * field = PyObject_GetAttrString(_pymsg, "bms_cmd"); - if (!field) { - return false; - } - if (!unitree_go__msg__bms_cmd__convert_from_py(field, &ros_message->bms_cmd)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // path_point - PyObject * field = PyObject_GetAttrString(_pymsg, "path_point"); - if (!field) { - return false; - } - PyObject * seq_field = PySequence_Fast(field, "expected a sequence in 'path_point'"); - if (!seq_field) { - Py_DECREF(field); - return false; - } - Py_ssize_t size = 30; - unitree_go__msg__PathPoint * dest = ros_message->path_point; - for (Py_ssize_t i = 0; i < size; ++i) { - if (!unitree_go__msg__path_point__convert_from_py(PySequence_Fast_GET_ITEM(seq_field, i), &dest[i])) { - Py_DECREF(seq_field); - Py_DECREF(field); - return false; - } - } - Py_DECREF(seq_field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__sport_mode_cmd__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of SportModeCmd */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._sport_mode_cmd"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "SportModeCmd"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__SportModeCmd * ros_message = (unitree_go__msg__SportModeCmd *)raw_ros_message; - { // mode - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->mode); - { - int rc = PyObject_SetAttrString(_pymessage, "mode", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // gait_type - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->gait_type); - { - int rc = PyObject_SetAttrString(_pymessage, "gait_type", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // speed_level - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->speed_level); - { - int rc = PyObject_SetAttrString(_pymessage, "speed_level", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // foot_raise_height - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->foot_raise_height); - { - int rc = PyObject_SetAttrString(_pymessage, "foot_raise_height", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // body_height - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->body_height); - { - int rc = PyObject_SetAttrString(_pymessage, "body_height", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // position - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "position"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->position[0]); - memcpy(dst, src, 2 * sizeof(float)); - Py_DECREF(field); - } - { // euler - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "euler"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->euler[0]); - memcpy(dst, src, 3 * sizeof(float)); - Py_DECREF(field); - } - { // velocity - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "velocity"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->velocity[0]); - memcpy(dst, src, 2 * sizeof(float)); - Py_DECREF(field); - } - { // yaw_speed - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->yaw_speed); - { - int rc = PyObject_SetAttrString(_pymessage, "yaw_speed", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // bms_cmd - PyObject * field = NULL; - field = unitree_go__msg__bms_cmd__convert_to_py(&ros_message->bms_cmd); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "bms_cmd", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // path_point - PyObject * field = NULL; - size_t size = 30; - field = PyList_New(size); - if (!field) { - return NULL; - } - unitree_go__msg__PathPoint * item; - for (size_t i = 0; i < size; ++i) { - item = &(ros_message->path_point[i]); - PyObject * pyitem = unitree_go__msg__path_point__convert_to_py(item); - if (!pyitem) { - Py_DECREF(field); - return NULL; - } - int rc = PyList_SetItem(field, i, pyitem); - (void)rc; - assert(rc == 0); - } - assert(PySequence_Check(field)); - { - int rc = PyObject_SetAttrString(_pymessage, "path_point", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state.py deleted file mode 100644 index a00aa27..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state.py +++ /dev/null @@ -1,546 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/SportModeState.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'position' -# Member 'velocity' -# Member 'range_obstacle' -# Member 'foot_force' -# Member 'foot_position_body' -# Member 'foot_speed_body' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_SportModeState(type): - """Metaclass of message 'SportModeState'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.SportModeState') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__sport_mode_state - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__sport_mode_state - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__sport_mode_state - cls._TYPE_SUPPORT = module.type_support_msg__msg__sport_mode_state - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__sport_mode_state - - from unitree_go.msg import IMUState - if IMUState.__class__._TYPE_SUPPORT is None: - IMUState.__class__.__import_type_support__() - - from unitree_go.msg import TimeSpec - if TimeSpec.__class__._TYPE_SUPPORT is None: - TimeSpec.__class__.__import_type_support__() - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class SportModeState(metaclass=Metaclass_SportModeState): - """Message class 'SportModeState'.""" - - __slots__ = [ - '_stamp', - '_error_code', - '_imu_state', - '_mode', - '_progress', - '_gait_type', - '_foot_raise_height', - '_position', - '_body_height', - '_velocity', - '_yaw_speed', - '_range_obstacle', - '_foot_force', - '_foot_position_body', - '_foot_speed_body', - ] - - _fields_and_field_types = { - 'stamp': 'unitree_go/TimeSpec', - 'error_code': 'uint32', - 'imu_state': 'unitree_go/IMUState', - 'mode': 'uint8', - 'progress': 'float', - 'gait_type': 'uint8', - 'foot_raise_height': 'float', - 'position': 'float[3]', - 'body_height': 'float', - 'velocity': 'float[3]', - 'yaw_speed': 'float', - 'range_obstacle': 'float[4]', - 'foot_force': 'int16[4]', - 'foot_position_body': 'float[12]', - 'foot_speed_body': 'float[12]', - } - - SLOT_TYPES = ( - rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'TimeSpec'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - rosidl_parser.definition.NamespacedType(['unitree_go', 'msg'], 'IMUState'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 3), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 3), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 4), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('int16'), 4), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 12), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 12), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - from unitree_go.msg import TimeSpec - self.stamp = kwargs.get('stamp', TimeSpec()) - self.error_code = kwargs.get('error_code', int()) - from unitree_go.msg import IMUState - self.imu_state = kwargs.get('imu_state', IMUState()) - self.mode = kwargs.get('mode', int()) - self.progress = kwargs.get('progress', float()) - self.gait_type = kwargs.get('gait_type', int()) - self.foot_raise_height = kwargs.get('foot_raise_height', float()) - if 'position' not in kwargs: - self.position = numpy.zeros(3, dtype=numpy.float32) - else: - self.position = numpy.array(kwargs.get('position'), dtype=numpy.float32) - assert self.position.shape == (3, ) - self.body_height = kwargs.get('body_height', float()) - if 'velocity' not in kwargs: - self.velocity = numpy.zeros(3, dtype=numpy.float32) - else: - self.velocity = numpy.array(kwargs.get('velocity'), dtype=numpy.float32) - assert self.velocity.shape == (3, ) - self.yaw_speed = kwargs.get('yaw_speed', float()) - if 'range_obstacle' not in kwargs: - self.range_obstacle = numpy.zeros(4, dtype=numpy.float32) - else: - self.range_obstacle = numpy.array(kwargs.get('range_obstacle'), dtype=numpy.float32) - assert self.range_obstacle.shape == (4, ) - if 'foot_force' not in kwargs: - self.foot_force = numpy.zeros(4, dtype=numpy.int16) - else: - self.foot_force = numpy.array(kwargs.get('foot_force'), dtype=numpy.int16) - assert self.foot_force.shape == (4, ) - if 'foot_position_body' not in kwargs: - self.foot_position_body = numpy.zeros(12, dtype=numpy.float32) - else: - self.foot_position_body = numpy.array(kwargs.get('foot_position_body'), dtype=numpy.float32) - assert self.foot_position_body.shape == (12, ) - if 'foot_speed_body' not in kwargs: - self.foot_speed_body = numpy.zeros(12, dtype=numpy.float32) - else: - self.foot_speed_body = numpy.array(kwargs.get('foot_speed_body'), dtype=numpy.float32) - assert self.foot_speed_body.shape == (12, ) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.stamp != other.stamp: - return False - if self.error_code != other.error_code: - return False - if self.imu_state != other.imu_state: - return False - if self.mode != other.mode: - return False - if self.progress != other.progress: - return False - if self.gait_type != other.gait_type: - return False - if self.foot_raise_height != other.foot_raise_height: - return False - if all(self.position != other.position): - return False - if self.body_height != other.body_height: - return False - if all(self.velocity != other.velocity): - return False - if self.yaw_speed != other.yaw_speed: - return False - if all(self.range_obstacle != other.range_obstacle): - return False - if all(self.foot_force != other.foot_force): - return False - if all(self.foot_position_body != other.foot_position_body): - return False - if all(self.foot_speed_body != other.foot_speed_body): - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def stamp(self): - """Message field 'stamp'.""" - return self._stamp - - @stamp.setter - def stamp(self, value): - if __debug__: - from unitree_go.msg import TimeSpec - assert \ - isinstance(value, TimeSpec), \ - "The 'stamp' field must be a sub message of type 'TimeSpec'" - self._stamp = value - - @property - def error_code(self): - """Message field 'error_code'.""" - return self._error_code - - @error_code.setter - def error_code(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'error_code' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'error_code' field must be an unsigned integer in [0, 4294967295]" - self._error_code = value - - @property - def imu_state(self): - """Message field 'imu_state'.""" - return self._imu_state - - @imu_state.setter - def imu_state(self, value): - if __debug__: - from unitree_go.msg import IMUState - assert \ - isinstance(value, IMUState), \ - "The 'imu_state' field must be a sub message of type 'IMUState'" - self._imu_state = value - - @property - def mode(self): - """Message field 'mode'.""" - return self._mode - - @mode.setter - def mode(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'mode' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'mode' field must be an unsigned integer in [0, 255]" - self._mode = value - - @property - def progress(self): - """Message field 'progress'.""" - return self._progress - - @progress.setter - def progress(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'progress' field must be of type 'float'" - self._progress = value - - @property - def gait_type(self): - """Message field 'gait_type'.""" - return self._gait_type - - @gait_type.setter - def gait_type(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'gait_type' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'gait_type' field must be an unsigned integer in [0, 255]" - self._gait_type = value - - @property - def foot_raise_height(self): - """Message field 'foot_raise_height'.""" - return self._foot_raise_height - - @foot_raise_height.setter - def foot_raise_height(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'foot_raise_height' field must be of type 'float'" - self._foot_raise_height = value - - @property - def position(self): - """Message field 'position'.""" - return self._position - - @position.setter - def position(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'position' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 3, \ - "The 'position' numpy.ndarray() must have a size of 3" - self._position = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'position' field must be a set or sequence with length 3 and each value of type 'float'" - self._position = numpy.array(value, dtype=numpy.float32) - - @property - def body_height(self): - """Message field 'body_height'.""" - return self._body_height - - @body_height.setter - def body_height(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'body_height' field must be of type 'float'" - self._body_height = value - - @property - def velocity(self): - """Message field 'velocity'.""" - return self._velocity - - @velocity.setter - def velocity(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'velocity' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 3, \ - "The 'velocity' numpy.ndarray() must have a size of 3" - self._velocity = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 3 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'velocity' field must be a set or sequence with length 3 and each value of type 'float'" - self._velocity = numpy.array(value, dtype=numpy.float32) - - @property - def yaw_speed(self): - """Message field 'yaw_speed'.""" - return self._yaw_speed - - @yaw_speed.setter - def yaw_speed(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'yaw_speed' field must be of type 'float'" - self._yaw_speed = value - - @property - def range_obstacle(self): - """Message field 'range_obstacle'.""" - return self._range_obstacle - - @range_obstacle.setter - def range_obstacle(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'range_obstacle' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 4, \ - "The 'range_obstacle' numpy.ndarray() must have a size of 4" - self._range_obstacle = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 4 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'range_obstacle' field must be a set or sequence with length 4 and each value of type 'float'" - self._range_obstacle = numpy.array(value, dtype=numpy.float32) - - @property - def foot_force(self): - """Message field 'foot_force'.""" - return self._foot_force - - @foot_force.setter - def foot_force(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.int16, \ - "The 'foot_force' numpy.ndarray() must have the dtype of 'numpy.int16'" - assert value.size == 4, \ - "The 'foot_force' numpy.ndarray() must have a size of 4" - self._foot_force = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 4 and - all(isinstance(v, int) for v in value) and - all(val >= -32768 and val < 32768 for val in value)), \ - "The 'foot_force' field must be a set or sequence with length 4 and each value of type 'int' and each integer in [-32768, 32767]" - self._foot_force = numpy.array(value, dtype=numpy.int16) - - @property - def foot_position_body(self): - """Message field 'foot_position_body'.""" - return self._foot_position_body - - @foot_position_body.setter - def foot_position_body(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'foot_position_body' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 12, \ - "The 'foot_position_body' numpy.ndarray() must have a size of 12" - self._foot_position_body = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 12 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'foot_position_body' field must be a set or sequence with length 12 and each value of type 'float'" - self._foot_position_body = numpy.array(value, dtype=numpy.float32) - - @property - def foot_speed_body(self): - """Message field 'foot_speed_body'.""" - return self._foot_speed_body - - @foot_speed_body.setter - def foot_speed_body(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'foot_speed_body' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 12, \ - "The 'foot_speed_body' numpy.ndarray() must have a size of 12" - self._foot_speed_body = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 12 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'foot_speed_body' field must be a set or sequence with length 12 and each value of type 'float'" - self._foot_speed_body = numpy.array(value, dtype=numpy.float32) diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state_s.c deleted file mode 100644 index b25a50b..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_sport_mode_state_s.c +++ /dev/null @@ -1,527 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/sport_mode_state__struct.h" -#include "unitree_go/msg/detail/sport_mode_state__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - -bool unitree_go__msg__time_spec__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__time_spec__convert_to_py(void * raw_ros_message); -bool unitree_go__msg__imu_state__convert_from_py(PyObject * _pymsg, void * _ros_message); -PyObject * unitree_go__msg__imu_state__convert_to_py(void * raw_ros_message); - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__sport_mode_state__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[48]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._sport_mode_state.SportModeState", full_classname_dest, 47) == 0); - } - unitree_go__msg__SportModeState * ros_message = _ros_message; - { // stamp - PyObject * field = PyObject_GetAttrString(_pymsg, "stamp"); - if (!field) { - return false; - } - if (!unitree_go__msg__time_spec__convert_from_py(field, &ros_message->stamp)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // error_code - PyObject * field = PyObject_GetAttrString(_pymsg, "error_code"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->error_code = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // imu_state - PyObject * field = PyObject_GetAttrString(_pymsg, "imu_state"); - if (!field) { - return false; - } - if (!unitree_go__msg__imu_state__convert_from_py(field, &ros_message->imu_state)) { - Py_DECREF(field); - return false; - } - Py_DECREF(field); - } - { // mode - PyObject * field = PyObject_GetAttrString(_pymsg, "mode"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->mode = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // progress - PyObject * field = PyObject_GetAttrString(_pymsg, "progress"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->progress = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // gait_type - PyObject * field = PyObject_GetAttrString(_pymsg, "gait_type"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->gait_type = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // foot_raise_height - PyObject * field = PyObject_GetAttrString(_pymsg, "foot_raise_height"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->foot_raise_height = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // position - PyObject * field = PyObject_GetAttrString(_pymsg, "position"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 3; - float * dest = ros_message->position; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // body_height - PyObject * field = PyObject_GetAttrString(_pymsg, "body_height"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->body_height = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // velocity - PyObject * field = PyObject_GetAttrString(_pymsg, "velocity"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 3; - float * dest = ros_message->velocity; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // yaw_speed - PyObject * field = PyObject_GetAttrString(_pymsg, "yaw_speed"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->yaw_speed = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // range_obstacle - PyObject * field = PyObject_GetAttrString(_pymsg, "range_obstacle"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 4; - float * dest = ros_message->range_obstacle; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // foot_force - PyObject * field = PyObject_GetAttrString(_pymsg, "foot_force"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT16); - Py_ssize_t size = 4; - int16_t * dest = ros_message->foot_force; - for (Py_ssize_t i = 0; i < size; ++i) { - int16_t tmp = *(npy_int16 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(int16_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // foot_position_body - PyObject * field = PyObject_GetAttrString(_pymsg, "foot_position_body"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 12; - float * dest = ros_message->foot_position_body; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // foot_speed_body - PyObject * field = PyObject_GetAttrString(_pymsg, "foot_speed_body"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 12; - float * dest = ros_message->foot_speed_body; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__sport_mode_state__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of SportModeState */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._sport_mode_state"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "SportModeState"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__SportModeState * ros_message = (unitree_go__msg__SportModeState *)raw_ros_message; - { // stamp - PyObject * field = NULL; - field = unitree_go__msg__time_spec__convert_to_py(&ros_message->stamp); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "stamp", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // error_code - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->error_code); - { - int rc = PyObject_SetAttrString(_pymessage, "error_code", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // imu_state - PyObject * field = NULL; - field = unitree_go__msg__imu_state__convert_to_py(&ros_message->imu_state); - if (!field) { - return NULL; - } - { - int rc = PyObject_SetAttrString(_pymessage, "imu_state", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // mode - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->mode); - { - int rc = PyObject_SetAttrString(_pymessage, "mode", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // progress - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->progress); - { - int rc = PyObject_SetAttrString(_pymessage, "progress", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // gait_type - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->gait_type); - { - int rc = PyObject_SetAttrString(_pymessage, "gait_type", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // foot_raise_height - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->foot_raise_height); - { - int rc = PyObject_SetAttrString(_pymessage, "foot_raise_height", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // position - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "position"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->position[0]); - memcpy(dst, src, 3 * sizeof(float)); - Py_DECREF(field); - } - { // body_height - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->body_height); - { - int rc = PyObject_SetAttrString(_pymessage, "body_height", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // velocity - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "velocity"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->velocity[0]); - memcpy(dst, src, 3 * sizeof(float)); - Py_DECREF(field); - } - { // yaw_speed - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->yaw_speed); - { - int rc = PyObject_SetAttrString(_pymessage, "yaw_speed", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // range_obstacle - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "range_obstacle"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->range_obstacle[0]); - memcpy(dst, src, 4 * sizeof(float)); - Py_DECREF(field); - } - { // foot_force - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "foot_force"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_INT16); - assert(sizeof(npy_int16) == sizeof(int16_t)); - npy_int16 * dst = (npy_int16 *)PyArray_GETPTR1(seq_field, 0); - int16_t * src = &(ros_message->foot_force[0]); - memcpy(dst, src, 4 * sizeof(int16_t)); - Py_DECREF(field); - } - { // foot_position_body - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "foot_position_body"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->foot_position_body[0]); - memcpy(dst, src, 12 * sizeof(float)); - Py_DECREF(field); - } - { // foot_speed_body - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "foot_speed_body"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->foot_speed_body[0]); - memcpy(dst, src, 12 * sizeof(float)); - Py_DECREF(field); - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec.py deleted file mode 100644 index 2282825..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec.py +++ /dev/null @@ -1,145 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/TimeSpec.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_TimeSpec(type): - """Metaclass of message 'TimeSpec'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.TimeSpec') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__time_spec - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__time_spec - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__time_spec - cls._TYPE_SUPPORT = module.type_support_msg__msg__time_spec - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__time_spec - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class TimeSpec(metaclass=Metaclass_TimeSpec): - """Message class 'TimeSpec'.""" - - __slots__ = [ - '_sec', - '_nanosec', - ] - - _fields_and_field_types = { - 'sec': 'int32', - 'nanosec': 'uint32', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('int32'), # noqa: E501 - rosidl_parser.definition.BasicType('uint32'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.sec = kwargs.get('sec', int()) - self.nanosec = kwargs.get('nanosec', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.sec != other.sec: - return False - if self.nanosec != other.nanosec: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def sec(self): - """Message field 'sec'.""" - return self._sec - - @sec.setter - def sec(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'sec' field must be of type 'int'" - assert value >= -2147483648 and value < 2147483648, \ - "The 'sec' field must be an integer in [-2147483648, 2147483647]" - self._sec = value - - @property - def nanosec(self): - """Message field 'nanosec'.""" - return self._nanosec - - @nanosec.setter - def nanosec(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'nanosec' field must be of type 'int'" - assert value >= 0 and value < 4294967296, \ - "The 'nanosec' field must be an unsigned integer in [0, 4294967295]" - self._nanosec = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec_s.c deleted file mode 100644 index a9643e1..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_time_spec_s.c +++ /dev/null @@ -1,118 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/time_spec__struct.h" -#include "unitree_go/msg/detail/time_spec__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__time_spec__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[35]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._time_spec.TimeSpec", full_classname_dest, 34) == 0); - } - unitree_go__msg__TimeSpec * ros_message = _ros_message; - { // sec - PyObject * field = PyObject_GetAttrString(_pymsg, "sec"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->sec = (int32_t)PyLong_AsLong(field); - Py_DECREF(field); - } - { // nanosec - PyObject * field = PyObject_GetAttrString(_pymsg, "nanosec"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->nanosec = PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__time_spec__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of TimeSpec */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._time_spec"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "TimeSpec"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__TimeSpec * ros_message = (unitree_go__msg__TimeSpec *)raw_ros_message; - { // sec - PyObject * field = NULL; - field = PyLong_FromLong(ros_message->sec); - { - int rc = PyObject_SetAttrString(_pymessage, "sec", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // nanosec - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->nanosec); - { - int rc = PyObject_SetAttrString(_pymessage, "nanosec", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state.py deleted file mode 100644 index 5ed22b5..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state.py +++ /dev/null @@ -1,484 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/UwbState.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -# Member 'version' -# Member 'joystick' -import numpy # noqa: E402, I100 - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_UwbState(type): - """Metaclass of message 'UwbState'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.UwbState') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__uwb_state - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__uwb_state - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__uwb_state - cls._TYPE_SUPPORT = module.type_support_msg__msg__uwb_state - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__uwb_state - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class UwbState(metaclass=Metaclass_UwbState): - """Message class 'UwbState'.""" - - __slots__ = [ - '_version', - '_channel', - '_joy_mode', - '_orientation_est', - '_pitch_est', - '_distance_est', - '_yaw_est', - '_tag_roll', - '_tag_pitch', - '_tag_yaw', - '_base_roll', - '_base_pitch', - '_base_yaw', - '_joystick', - '_error_state', - '_buttons', - '_enabled_from_app', - ] - - _fields_and_field_types = { - 'version': 'uint8[2]', - 'channel': 'uint8', - 'joy_mode': 'uint8', - 'orientation_est': 'float', - 'pitch_est': 'float', - 'distance_est': 'float', - 'yaw_est': 'float', - 'tag_roll': 'float', - 'tag_pitch': 'float', - 'tag_yaw': 'float', - 'base_roll': 'float', - 'base_pitch': 'float', - 'base_yaw': 'float', - 'joystick': 'float[2]', - 'error_state': 'uint8', - 'buttons': 'uint8', - 'enabled_from_app': 'uint8', - } - - SLOT_TYPES = ( - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('uint8'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.Array(rosidl_parser.definition.BasicType('float'), 2), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - if 'version' not in kwargs: - self.version = numpy.zeros(2, dtype=numpy.uint8) - else: - self.version = numpy.array(kwargs.get('version'), dtype=numpy.uint8) - assert self.version.shape == (2, ) - self.channel = kwargs.get('channel', int()) - self.joy_mode = kwargs.get('joy_mode', int()) - self.orientation_est = kwargs.get('orientation_est', float()) - self.pitch_est = kwargs.get('pitch_est', float()) - self.distance_est = kwargs.get('distance_est', float()) - self.yaw_est = kwargs.get('yaw_est', float()) - self.tag_roll = kwargs.get('tag_roll', float()) - self.tag_pitch = kwargs.get('tag_pitch', float()) - self.tag_yaw = kwargs.get('tag_yaw', float()) - self.base_roll = kwargs.get('base_roll', float()) - self.base_pitch = kwargs.get('base_pitch', float()) - self.base_yaw = kwargs.get('base_yaw', float()) - if 'joystick' not in kwargs: - self.joystick = numpy.zeros(2, dtype=numpy.float32) - else: - self.joystick = numpy.array(kwargs.get('joystick'), dtype=numpy.float32) - assert self.joystick.shape == (2, ) - self.error_state = kwargs.get('error_state', int()) - self.buttons = kwargs.get('buttons', int()) - self.enabled_from_app = kwargs.get('enabled_from_app', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if all(self.version != other.version): - return False - if self.channel != other.channel: - return False - if self.joy_mode != other.joy_mode: - return False - if self.orientation_est != other.orientation_est: - return False - if self.pitch_est != other.pitch_est: - return False - if self.distance_est != other.distance_est: - return False - if self.yaw_est != other.yaw_est: - return False - if self.tag_roll != other.tag_roll: - return False - if self.tag_pitch != other.tag_pitch: - return False - if self.tag_yaw != other.tag_yaw: - return False - if self.base_roll != other.base_roll: - return False - if self.base_pitch != other.base_pitch: - return False - if self.base_yaw != other.base_yaw: - return False - if all(self.joystick != other.joystick): - return False - if self.error_state != other.error_state: - return False - if self.buttons != other.buttons: - return False - if self.enabled_from_app != other.enabled_from_app: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def version(self): - """Message field 'version'.""" - return self._version - - @version.setter - def version(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.uint8, \ - "The 'version' numpy.ndarray() must have the dtype of 'numpy.uint8'" - assert value.size == 2, \ - "The 'version' numpy.ndarray() must have a size of 2" - self._version = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, int) for v in value) and - all(val >= 0 and val < 256 for val in value)), \ - "The 'version' field must be a set or sequence with length 2 and each value of type 'int' and each unsigned integer in [0, 255]" - self._version = numpy.array(value, dtype=numpy.uint8) - - @property - def channel(self): - """Message field 'channel'.""" - return self._channel - - @channel.setter - def channel(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'channel' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'channel' field must be an unsigned integer in [0, 255]" - self._channel = value - - @property - def joy_mode(self): - """Message field 'joy_mode'.""" - return self._joy_mode - - @joy_mode.setter - def joy_mode(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'joy_mode' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'joy_mode' field must be an unsigned integer in [0, 255]" - self._joy_mode = value - - @property - def orientation_est(self): - """Message field 'orientation_est'.""" - return self._orientation_est - - @orientation_est.setter - def orientation_est(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'orientation_est' field must be of type 'float'" - self._orientation_est = value - - @property - def pitch_est(self): - """Message field 'pitch_est'.""" - return self._pitch_est - - @pitch_est.setter - def pitch_est(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'pitch_est' field must be of type 'float'" - self._pitch_est = value - - @property - def distance_est(self): - """Message field 'distance_est'.""" - return self._distance_est - - @distance_est.setter - def distance_est(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'distance_est' field must be of type 'float'" - self._distance_est = value - - @property - def yaw_est(self): - """Message field 'yaw_est'.""" - return self._yaw_est - - @yaw_est.setter - def yaw_est(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'yaw_est' field must be of type 'float'" - self._yaw_est = value - - @property - def tag_roll(self): - """Message field 'tag_roll'.""" - return self._tag_roll - - @tag_roll.setter - def tag_roll(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'tag_roll' field must be of type 'float'" - self._tag_roll = value - - @property - def tag_pitch(self): - """Message field 'tag_pitch'.""" - return self._tag_pitch - - @tag_pitch.setter - def tag_pitch(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'tag_pitch' field must be of type 'float'" - self._tag_pitch = value - - @property - def tag_yaw(self): - """Message field 'tag_yaw'.""" - return self._tag_yaw - - @tag_yaw.setter - def tag_yaw(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'tag_yaw' field must be of type 'float'" - self._tag_yaw = value - - @property - def base_roll(self): - """Message field 'base_roll'.""" - return self._base_roll - - @base_roll.setter - def base_roll(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'base_roll' field must be of type 'float'" - self._base_roll = value - - @property - def base_pitch(self): - """Message field 'base_pitch'.""" - return self._base_pitch - - @base_pitch.setter - def base_pitch(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'base_pitch' field must be of type 'float'" - self._base_pitch = value - - @property - def base_yaw(self): - """Message field 'base_yaw'.""" - return self._base_yaw - - @base_yaw.setter - def base_yaw(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'base_yaw' field must be of type 'float'" - self._base_yaw = value - - @property - def joystick(self): - """Message field 'joystick'.""" - return self._joystick - - @joystick.setter - def joystick(self, value): - if isinstance(value, numpy.ndarray): - assert value.dtype == numpy.float32, \ - "The 'joystick' numpy.ndarray() must have the dtype of 'numpy.float32'" - assert value.size == 2, \ - "The 'joystick' numpy.ndarray() must have a size of 2" - self._joystick = value - return - if __debug__: - from collections.abc import Sequence - from collections.abc import Set - from collections import UserList - from collections import UserString - assert \ - ((isinstance(value, Sequence) or - isinstance(value, Set) or - isinstance(value, UserList)) and - not isinstance(value, str) and - not isinstance(value, UserString) and - len(value) == 2 and - all(isinstance(v, float) for v in value) and - True), \ - "The 'joystick' field must be a set or sequence with length 2 and each value of type 'float'" - self._joystick = numpy.array(value, dtype=numpy.float32) - - @property - def error_state(self): - """Message field 'error_state'.""" - return self._error_state - - @error_state.setter - def error_state(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'error_state' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'error_state' field must be an unsigned integer in [0, 255]" - self._error_state = value - - @property - def buttons(self): - """Message field 'buttons'.""" - return self._buttons - - @buttons.setter - def buttons(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'buttons' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'buttons' field must be an unsigned integer in [0, 255]" - self._buttons = value - - @property - def enabled_from_app(self): - """Message field 'enabled_from_app'.""" - return self._enabled_from_app - - @enabled_from_app.setter - def enabled_from_app(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'enabled_from_app' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'enabled_from_app' field must be an unsigned integer in [0, 255]" - self._enabled_from_app = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state_s.c deleted file mode 100644 index c551163..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_state_s.c +++ /dev/null @@ -1,465 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/uwb_state__struct.h" -#include "unitree_go/msg/detail/uwb_state__functions.h" - -#include "rosidl_runtime_c/primitives_sequence.h" -#include "rosidl_runtime_c/primitives_sequence_functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__uwb_state__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[35]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._uwb_state.UwbState", full_classname_dest, 34) == 0); - } - unitree_go__msg__UwbState * ros_message = _ros_message; - { // version - PyObject * field = PyObject_GetAttrString(_pymsg, "version"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - Py_ssize_t size = 2; - uint8_t * dest = ros_message->version; - for (Py_ssize_t i = 0; i < size; ++i) { - uint8_t tmp = *(npy_uint8 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(uint8_t)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // channel - PyObject * field = PyObject_GetAttrString(_pymsg, "channel"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->channel = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // joy_mode - PyObject * field = PyObject_GetAttrString(_pymsg, "joy_mode"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->joy_mode = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // orientation_est - PyObject * field = PyObject_GetAttrString(_pymsg, "orientation_est"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->orientation_est = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // pitch_est - PyObject * field = PyObject_GetAttrString(_pymsg, "pitch_est"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->pitch_est = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // distance_est - PyObject * field = PyObject_GetAttrString(_pymsg, "distance_est"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->distance_est = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // yaw_est - PyObject * field = PyObject_GetAttrString(_pymsg, "yaw_est"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->yaw_est = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // tag_roll - PyObject * field = PyObject_GetAttrString(_pymsg, "tag_roll"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->tag_roll = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // tag_pitch - PyObject * field = PyObject_GetAttrString(_pymsg, "tag_pitch"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->tag_pitch = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // tag_yaw - PyObject * field = PyObject_GetAttrString(_pymsg, "tag_yaw"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->tag_yaw = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // base_roll - PyObject * field = PyObject_GetAttrString(_pymsg, "base_roll"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->base_roll = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // base_pitch - PyObject * field = PyObject_GetAttrString(_pymsg, "base_pitch"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->base_pitch = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // base_yaw - PyObject * field = PyObject_GetAttrString(_pymsg, "base_yaw"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->base_yaw = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // joystick - PyObject * field = PyObject_GetAttrString(_pymsg, "joystick"); - if (!field) { - return false; - } - { - // TODO(dirk-thomas) use a better way to check the type before casting - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - Py_INCREF(seq_field); - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - Py_ssize_t size = 2; - float * dest = ros_message->joystick; - for (Py_ssize_t i = 0; i < size; ++i) { - float tmp = *(npy_float32 *)PyArray_GETPTR1(seq_field, i); - memcpy(&dest[i], &tmp, sizeof(float)); - } - Py_DECREF(seq_field); - } - Py_DECREF(field); - } - { // error_state - PyObject * field = PyObject_GetAttrString(_pymsg, "error_state"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->error_state = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // buttons - PyObject * field = PyObject_GetAttrString(_pymsg, "buttons"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->buttons = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - { // enabled_from_app - PyObject * field = PyObject_GetAttrString(_pymsg, "enabled_from_app"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->enabled_from_app = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__uwb_state__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of UwbState */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._uwb_state"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "UwbState"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__UwbState * ros_message = (unitree_go__msg__UwbState *)raw_ros_message; - { // version - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "version"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_UINT8); - assert(sizeof(npy_uint8) == sizeof(uint8_t)); - npy_uint8 * dst = (npy_uint8 *)PyArray_GETPTR1(seq_field, 0); - uint8_t * src = &(ros_message->version[0]); - memcpy(dst, src, 2 * sizeof(uint8_t)); - Py_DECREF(field); - } - { // channel - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->channel); - { - int rc = PyObject_SetAttrString(_pymessage, "channel", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // joy_mode - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->joy_mode); - { - int rc = PyObject_SetAttrString(_pymessage, "joy_mode", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // orientation_est - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->orientation_est); - { - int rc = PyObject_SetAttrString(_pymessage, "orientation_est", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // pitch_est - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->pitch_est); - { - int rc = PyObject_SetAttrString(_pymessage, "pitch_est", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // distance_est - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->distance_est); - { - int rc = PyObject_SetAttrString(_pymessage, "distance_est", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // yaw_est - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->yaw_est); - { - int rc = PyObject_SetAttrString(_pymessage, "yaw_est", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // tag_roll - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->tag_roll); - { - int rc = PyObject_SetAttrString(_pymessage, "tag_roll", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // tag_pitch - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->tag_pitch); - { - int rc = PyObject_SetAttrString(_pymessage, "tag_pitch", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // tag_yaw - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->tag_yaw); - { - int rc = PyObject_SetAttrString(_pymessage, "tag_yaw", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // base_roll - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->base_roll); - { - int rc = PyObject_SetAttrString(_pymessage, "base_roll", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // base_pitch - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->base_pitch); - { - int rc = PyObject_SetAttrString(_pymessage, "base_pitch", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // base_yaw - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->base_yaw); - { - int rc = PyObject_SetAttrString(_pymessage, "base_yaw", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // joystick - PyObject * field = NULL; - field = PyObject_GetAttrString(_pymessage, "joystick"); - if (!field) { - return NULL; - } - assert(field->ob_type != NULL); - assert(field->ob_type->tp_name != NULL); - assert(strcmp(field->ob_type->tp_name, "numpy.ndarray") == 0); - PyArrayObject * seq_field = (PyArrayObject *)field; - assert(PyArray_NDIM(seq_field) == 1); - assert(PyArray_TYPE(seq_field) == NPY_FLOAT32); - assert(sizeof(npy_float32) == sizeof(float)); - npy_float32 * dst = (npy_float32 *)PyArray_GETPTR1(seq_field, 0); - float * src = &(ros_message->joystick[0]); - memcpy(dst, src, 2 * sizeof(float)); - Py_DECREF(field); - } - { // error_state - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->error_state); - { - int rc = PyObject_SetAttrString(_pymessage, "error_state", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // buttons - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->buttons); - { - int rc = PyObject_SetAttrString(_pymessage, "buttons", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // enabled_from_app - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->enabled_from_app); - { - int rc = PyObject_SetAttrString(_pymessage, "enabled_from_app", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch.py deleted file mode 100644 index 5d28dcb..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch.py +++ /dev/null @@ -1,124 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/UwbSwitch.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_UwbSwitch(type): - """Metaclass of message 'UwbSwitch'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.UwbSwitch') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__uwb_switch - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__uwb_switch - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__uwb_switch - cls._TYPE_SUPPORT = module.type_support_msg__msg__uwb_switch - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__uwb_switch - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class UwbSwitch(metaclass=Metaclass_UwbSwitch): - """Message class 'UwbSwitch'.""" - - __slots__ = [ - '_enabled', - ] - - _fields_and_field_types = { - 'enabled': 'uint8', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('uint8'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.enabled = kwargs.get('enabled', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.enabled != other.enabled: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def enabled(self): - """Message field 'enabled'.""" - return self._enabled - - @enabled.setter - def enabled(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'enabled' field must be of type 'int'" - assert value >= 0 and value < 256, \ - "The 'enabled' field must be an unsigned integer in [0, 255]" - self._enabled = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch_s.c deleted file mode 100644 index 64fae02..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_uwb_switch_s.c +++ /dev/null @@ -1,98 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/uwb_switch__struct.h" -#include "unitree_go/msg/detail/uwb_switch__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__uwb_switch__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[37]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._uwb_switch.UwbSwitch", full_classname_dest, 36) == 0); - } - unitree_go__msg__UwbSwitch * ros_message = _ros_message; - { // enabled - PyObject * field = PyObject_GetAttrString(_pymsg, "enabled"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->enabled = (uint8_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__uwb_switch__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of UwbSwitch */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._uwb_switch"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "UwbSwitch"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__UwbSwitch * ros_message = (unitree_go__msg__UwbSwitch *)raw_ros_message; - { // enabled - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->enabled); - { - int rc = PyObject_SetAttrString(_pymessage, "enabled", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller.py b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller.py deleted file mode 100644 index ceeb80a..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller.py +++ /dev/null @@ -1,200 +0,0 @@ -# generated from rosidl_generator_py/resource/_idl.py.em -# with input from unitree_go:msg/WirelessController.idl -# generated code does not contain a copyright notice - - -# Import statements for member types - -import rosidl_parser.definition # noqa: E402, I100 - - -class Metaclass_WirelessController(type): - """Metaclass of message 'WirelessController'.""" - - _CREATE_ROS_MESSAGE = None - _CONVERT_FROM_PY = None - _CONVERT_TO_PY = None - _DESTROY_ROS_MESSAGE = None - _TYPE_SUPPORT = None - - __constants = { - } - - @classmethod - def __import_type_support__(cls): - try: - from rosidl_generator_py import import_type_support - module = import_type_support('unitree_go') - except ImportError: - import logging - import traceback - logger = logging.getLogger( - 'unitree_go.msg.WirelessController') - logger.debug( - 'Failed to import needed modules for type support:\n' + - traceback.format_exc()) - else: - cls._CREATE_ROS_MESSAGE = module.create_ros_message_msg__msg__wireless_controller - cls._CONVERT_FROM_PY = module.convert_from_py_msg__msg__wireless_controller - cls._CONVERT_TO_PY = module.convert_to_py_msg__msg__wireless_controller - cls._TYPE_SUPPORT = module.type_support_msg__msg__wireless_controller - cls._DESTROY_ROS_MESSAGE = module.destroy_ros_message_msg__msg__wireless_controller - - @classmethod - def __prepare__(cls, name, bases, **kwargs): - # list constant names here so that they appear in the help text of - # the message class under "Data and other attributes defined here:" - # as well as populate each message instance - return { - } - - -class WirelessController(metaclass=Metaclass_WirelessController): - """Message class 'WirelessController'.""" - - __slots__ = [ - '_lx', - '_ly', - '_rx', - '_ry', - '_keys', - ] - - _fields_and_field_types = { - 'lx': 'float', - 'ly': 'float', - 'rx': 'float', - 'ry': 'float', - 'keys': 'uint16', - } - - SLOT_TYPES = ( - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('float'), # noqa: E501 - rosidl_parser.definition.BasicType('uint16'), # noqa: E501 - ) - - def __init__(self, **kwargs): - assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ - 'Invalid arguments passed to constructor: %s' % \ - ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) - self.lx = kwargs.get('lx', float()) - self.ly = kwargs.get('ly', float()) - self.rx = kwargs.get('rx', float()) - self.ry = kwargs.get('ry', float()) - self.keys = kwargs.get('keys', int()) - - def __repr__(self): - typename = self.__class__.__module__.split('.') - typename.pop() - typename.append(self.__class__.__name__) - args = [] - for s, t in zip(self.__slots__, self.SLOT_TYPES): - field = getattr(self, s) - fieldstr = repr(field) - # We use Python array type for fields that can be directly stored - # in them, and "normal" sequences for everything else. If it is - # a type that we store in an array, strip off the 'array' portion. - if ( - isinstance(t, rosidl_parser.definition.AbstractSequence) and - isinstance(t.value_type, rosidl_parser.definition.BasicType) and - t.value_type.typename in ['float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64'] - ): - if len(field) == 0: - fieldstr = '[]' - else: - assert fieldstr.startswith('array(') - prefix = "array('X', " - suffix = ')' - fieldstr = fieldstr[len(prefix):-len(suffix)] - args.append(s[1:] + '=' + fieldstr) - return '%s(%s)' % ('.'.join(typename), ', '.join(args)) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.lx != other.lx: - return False - if self.ly != other.ly: - return False - if self.rx != other.rx: - return False - if self.ry != other.ry: - return False - if self.keys != other.keys: - return False - return True - - @classmethod - def get_fields_and_field_types(cls): - from copy import copy - return copy(cls._fields_and_field_types) - - @property - def lx(self): - """Message field 'lx'.""" - return self._lx - - @lx.setter - def lx(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'lx' field must be of type 'float'" - self._lx = value - - @property - def ly(self): - """Message field 'ly'.""" - return self._ly - - @ly.setter - def ly(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'ly' field must be of type 'float'" - self._ly = value - - @property - def rx(self): - """Message field 'rx'.""" - return self._rx - - @rx.setter - def rx(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'rx' field must be of type 'float'" - self._rx = value - - @property - def ry(self): - """Message field 'ry'.""" - return self._ry - - @ry.setter - def ry(self, value): - if __debug__: - assert \ - isinstance(value, float), \ - "The 'ry' field must be of type 'float'" - self._ry = value - - @property - def keys(self): - """Message field 'keys'.""" - return self._keys - - @keys.setter - def keys(self, value): - if __debug__: - assert \ - isinstance(value, int), \ - "The 'keys' field must be of type 'int'" - assert value >= 0 and value < 65536, \ - "The 'keys' field must be an unsigned integer in [0, 65535]" - self._keys = value diff --git a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller_s.c b/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller_s.c deleted file mode 100644 index f02defc..0000000 --- a/deploy/robot_ws/install/unitree_go/lib/python3.8/site-packages/unitree_go/msg/_wireless_controller_s.c +++ /dev/null @@ -1,178 +0,0 @@ -// generated from rosidl_generator_py/resource/_idl_support.c.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#ifndef _WIN32 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif -#include "numpy/ndarrayobject.h" -#ifndef _WIN32 -# pragma GCC diagnostic pop -#endif -#include "rosidl_runtime_c/visibility_control.h" -#include "unitree_go/msg/detail/wireless_controller__struct.h" -#include "unitree_go/msg/detail/wireless_controller__functions.h" - - -ROSIDL_GENERATOR_C_EXPORT -bool unitree_go__msg__wireless_controller__convert_from_py(PyObject * _pymsg, void * _ros_message) -{ - // check that the passed message is of the expected Python class - { - char full_classname_dest[55]; - { - char * class_name = NULL; - char * module_name = NULL; - { - PyObject * class_attr = PyObject_GetAttrString(_pymsg, "__class__"); - if (class_attr) { - PyObject * name_attr = PyObject_GetAttrString(class_attr, "__name__"); - if (name_attr) { - class_name = (char *)PyUnicode_1BYTE_DATA(name_attr); - Py_DECREF(name_attr); - } - PyObject * module_attr = PyObject_GetAttrString(class_attr, "__module__"); - if (module_attr) { - module_name = (char *)PyUnicode_1BYTE_DATA(module_attr); - Py_DECREF(module_attr); - } - Py_DECREF(class_attr); - } - } - if (!class_name || !module_name) { - return false; - } - snprintf(full_classname_dest, sizeof(full_classname_dest), "%s.%s", module_name, class_name); - } - assert(strncmp("unitree_go.msg._wireless_controller.WirelessController", full_classname_dest, 54) == 0); - } - unitree_go__msg__WirelessController * ros_message = _ros_message; - { // lx - PyObject * field = PyObject_GetAttrString(_pymsg, "lx"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->lx = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // ly - PyObject * field = PyObject_GetAttrString(_pymsg, "ly"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->ly = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // rx - PyObject * field = PyObject_GetAttrString(_pymsg, "rx"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->rx = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // ry - PyObject * field = PyObject_GetAttrString(_pymsg, "ry"); - if (!field) { - return false; - } - assert(PyFloat_Check(field)); - ros_message->ry = (float)PyFloat_AS_DOUBLE(field); - Py_DECREF(field); - } - { // keys - PyObject * field = PyObject_GetAttrString(_pymsg, "keys"); - if (!field) { - return false; - } - assert(PyLong_Check(field)); - ros_message->keys = (uint16_t)PyLong_AsUnsignedLong(field); - Py_DECREF(field); - } - - return true; -} - -ROSIDL_GENERATOR_C_EXPORT -PyObject * unitree_go__msg__wireless_controller__convert_to_py(void * raw_ros_message) -{ - /* NOTE(esteve): Call constructor of WirelessController */ - PyObject * _pymessage = NULL; - { - PyObject * pymessage_module = PyImport_ImportModule("unitree_go.msg._wireless_controller"); - assert(pymessage_module); - PyObject * pymessage_class = PyObject_GetAttrString(pymessage_module, "WirelessController"); - assert(pymessage_class); - Py_DECREF(pymessage_module); - _pymessage = PyObject_CallObject(pymessage_class, NULL); - Py_DECREF(pymessage_class); - if (!_pymessage) { - return NULL; - } - } - unitree_go__msg__WirelessController * ros_message = (unitree_go__msg__WirelessController *)raw_ros_message; - { // lx - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->lx); - { - int rc = PyObject_SetAttrString(_pymessage, "lx", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // ly - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->ly); - { - int rc = PyObject_SetAttrString(_pymessage, "ly", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // rx - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->rx); - { - int rc = PyObject_SetAttrString(_pymessage, "rx", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // ry - PyObject * field = NULL; - field = PyFloat_FromDouble(ros_message->ry); - { - int rc = PyObject_SetAttrString(_pymessage, "ry", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - { // keys - PyObject * field = NULL; - field = PyLong_FromUnsignedLong(ros_message->keys); - { - int rc = PyObject_SetAttrString(_pymessage, "keys", field); - Py_DECREF(field); - if (rc) { - return NULL; - } - } - } - - // ownership of _pymessage is transferred to the caller - return _pymessage; -} diff --git a/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/package_run_dependencies/unitree_go b/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/package_run_dependencies/unitree_go deleted file mode 100644 index cabffa8..0000000 --- a/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/package_run_dependencies/unitree_go +++ /dev/null @@ -1 +0,0 @@ -geometry_msgs;rosidl_default_runtime;ament_lint_auto;ament_lint_common \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/packages/unitree_go b/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/packages/unitree_go deleted file mode 100644 index e69de29..0000000 diff --git a/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/parent_prefix_path/unitree_go b/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/parent_prefix_path/unitree_go deleted file mode 100644 index e053138..0000000 --- a/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/parent_prefix_path/unitree_go +++ /dev/null @@ -1 +0,0 @@ -/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/go2py_node:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/unitree_go:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/unitree_api:/home/unitree/locomotion/Go2Py/deploy/ros2_ws/install/hesai_ros_driver:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/unitree_go:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/unitree_api:/home/unitree/locomotion/unitree_ros2/cyclonedds_ws/install/rmw_cyclonedds_cpp:/opt/ros/foxy \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/rosidl_interfaces/unitree_go b/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/rosidl_interfaces/unitree_go deleted file mode 100644 index 02ef2ab..0000000 --- a/deploy/robot_ws/install/unitree_go/share/ament_index/resource_index/rosidl_interfaces/unitree_go +++ /dev/null @@ -1,44 +0,0 @@ -msg/AudioData.idl -msg/AudioData.msg -msg/BmsCmd.idl -msg/BmsCmd.msg -msg/BmsState.idl -msg/BmsState.msg -msg/Error.idl -msg/Error.msg -msg/Go2FrontVideoData.idl -msg/Go2FrontVideoData.msg -msg/HeightMap.idl -msg/HeightMap.msg -msg/IMUState.idl -msg/IMUState.msg -msg/InterfaceConfig.idl -msg/InterfaceConfig.msg -msg/LidarState.idl -msg/LidarState.msg -msg/LowCmd.idl -msg/LowCmd.msg -msg/LowState.idl -msg/LowState.msg -msg/MotorCmd.idl -msg/MotorCmd.msg -msg/MotorState.idl -msg/MotorState.msg -msg/PathPoint.idl -msg/PathPoint.msg -msg/Req.idl -msg/Req.msg -msg/Res.idl -msg/Res.msg -msg/SportModeCmd.idl -msg/SportModeCmd.msg -msg/SportModeState.idl -msg/SportModeState.msg -msg/TimeSpec.idl -msg/TimeSpec.msg -msg/UwbState.idl -msg/UwbState.msg -msg/UwbSwitch.idl -msg/UwbSwitch.msg -msg/WirelessController.idl -msg/WirelessController.msg \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/colcon-core/packages/unitree_go b/deploy/robot_ws/install/unitree_go/share/colcon-core/packages/unitree_go deleted file mode 100644 index c819a81..0000000 --- a/deploy/robot_ws/install/unitree_go/share/colcon-core/packages/unitree_go +++ /dev/null @@ -1 +0,0 @@ -geometry_msgs:rosidl_default_runtime \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_dependencies-extras.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_dependencies-extras.cmake deleted file mode 100644 index 5b7890c..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_dependencies-extras.cmake +++ /dev/null @@ -1,92 +0,0 @@ -# generated from ament_cmake_export_dependencies/cmake/ament_cmake_export_dependencies-extras.cmake.in - -set(_exported_dependencies "geometry_msgs;geometry_msgs;std_msgs;builtin_interfaces;rosidl_runtime_c;rosidl_typesupport_interface;geometry_msgs;std_msgs;builtin_interfaces;geometry_msgs;std_msgs;builtin_interfaces") - -find_package(ament_cmake_libraries QUIET REQUIRED) - -# find_package() all dependencies -# and append their DEFINITIONS INCLUDE_DIRS, LIBRARIES, and LINK_FLAGS -# variables to unitree_go_DEFINITIONS, unitree_go_INCLUDE_DIRS, -# unitree_go_LIBRARIES, and unitree_go_LINK_FLAGS. -# Additionally collect the direct dependency names in -# unitree_go_DEPENDENCIES as well as the recursive dependency names -# in unitree_go_RECURSIVE_DEPENDENCIES. -if(NOT _exported_dependencies STREQUAL "") - find_package(ament_cmake_core QUIET REQUIRED) - set(unitree_go_DEPENDENCIES ${_exported_dependencies}) - set(unitree_go_RECURSIVE_DEPENDENCIES ${_exported_dependencies}) - set(_libraries) - foreach(_dep ${_exported_dependencies}) - if(NOT ${_dep}_FOUND) - find_package("${_dep}" QUIET REQUIRED) - endif() - # if a package provides modern CMake interface targets use them - # exclusively assuming the classic CMake variables only exist for - # backward compatibility - set(use_modern_cmake FALSE) - if(NOT "${${_dep}_TARGETS}" STREQUAL "") - foreach(_target ${${_dep}_TARGETS}) - # only use actual targets - # in case a package uses this variable for other content - if(TARGET "${_target}") - get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES) - if(_include_dirs) - list_append_unique(unitree_go_INCLUDE_DIRS "${_include_dirs}") - endif() - - get_target_property(_imported_configurations ${_target} IMPORTED_CONFIGURATIONS) - if(_imported_configurations) - string(TOUPPER "${_imported_configurations}" _imported_configurations) - if(DEBUG_CONFIGURATIONS) - string(TOUPPER "${DEBUG_CONFIGURATIONS}" _debug_configurations_uppercase) - else() - set(_debug_configurations_uppercase "DEBUG") - endif() - foreach(_imported_config ${_imported_configurations}) - get_target_property(_imported_implib ${_target} IMPORTED_IMPLIB_${_imported_config}) - if(_imported_implib) - set(_imported_implib_config "optimized") - if(${_imported_config} IN_LIST _debug_configurations_uppercase) - set(_imported_implib_config "debug") - endif() - list(APPEND _libraries ${_imported_implib_config} ${_imported_implib}) - else() - get_target_property(_imported_location ${_target} IMPORTED_LOCATION_${_imported_config}) - if(_imported_location) - list(APPEND _libraries "${_imported_location}") - endif() - endif() - endforeach() - endif() - - get_target_property(_link_libraries ${_target} INTERFACE_LINK_LIBRARIES) - if(_link_libraries) - list(APPEND _libraries "${_link_libraries}") - endif() - set(use_modern_cmake TRUE) - endif() - endforeach() - endif() - if(NOT use_modern_cmake) - if(${_dep}_DEFINITIONS) - list_append_unique(unitree_go_DEFINITIONS "${${_dep}_DEFINITIONS}") - endif() - if(${_dep}_INCLUDE_DIRS) - list_append_unique(unitree_go_INCLUDE_DIRS "${${_dep}_INCLUDE_DIRS}") - endif() - if(${_dep}_LIBRARIES) - list(APPEND _libraries "${${_dep}_LIBRARIES}") - endif() - if(${_dep}_LINK_FLAGS) - list_append_unique(unitree_go_LINK_FLAGS "${${_dep}_LINK_FLAGS}") - endif() - if(${_dep}_RECURSIVE_DEPENDENCIES) - list_append_unique(unitree_go_RECURSIVE_DEPENDENCIES "${${_dep}_RECURSIVE_DEPENDENCIES}") - endif() - endif() - if(_libraries) - ament_libraries_deduplicate(_libraries "${_libraries}") - list(APPEND unitree_go_LIBRARIES "${_libraries}") - endif() - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_include_directories-extras.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_include_directories-extras.cmake deleted file mode 100644 index 00975c3..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_include_directories-extras.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# generated from ament_cmake_export_include_directories/cmake/ament_cmake_export_include_directories-extras.cmake.in - -set(_exported_include_dirs "${unitree_go_DIR}/../../../include") - -# append include directories to unitree_go_INCLUDE_DIRS -# warn about not existing paths -if(NOT _exported_include_dirs STREQUAL "") - find_package(ament_cmake_core QUIET REQUIRED) - foreach(_exported_include_dir ${_exported_include_dirs}) - if(NOT IS_DIRECTORY "${_exported_include_dir}") - message(WARNING "Package 'unitree_go' exports the include directory '${_exported_include_dir}' which doesn't exist") - endif() - normalize_path(_exported_include_dir "${_exported_include_dir}") - list(APPEND unitree_go_INCLUDE_DIRS "${_exported_include_dir}") - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_libraries-extras.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_libraries-extras.cmake deleted file mode 100644 index 0e66abf..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_libraries-extras.cmake +++ /dev/null @@ -1,140 +0,0 @@ -# generated from ament_cmake_export_libraries/cmake/template/ament_cmake_export_libraries.cmake.in - -set(_exported_libraries "unitree_go__rosidl_generator_c;unitree_go__rosidl_typesupport_c;unitree_go__rosidl_typesupport_cpp") -set(_exported_library_names "") - -# populate unitree_go_LIBRARIES -if(NOT _exported_libraries STREQUAL "") - # loop over libraries, either target names or absolute paths - list(LENGTH _exported_libraries _length) - set(_i 0) - while(_i LESS _length) - list(GET _exported_libraries ${_i} _arg) - - # pass linker flags along - if("${_arg}" MATCHES "^-" AND NOT "${_arg}" MATCHES "^-[l|framework]") - list(APPEND unitree_go_LIBRARIES "${_arg}") - math(EXPR _i "${_i} + 1") - continue() - endif() - - if("${_arg}" MATCHES "^(debug|optimized|general)$") - # remember build configuration keyword - # and get following library - set(_cfg "${_arg}") - math(EXPR _i "${_i} + 1") - if(_i EQUAL _length) - message(FATAL_ERROR "Package 'unitree_go' passes the build configuration keyword '${_cfg}' as the last exported library") - endif() - list(GET _exported_libraries ${_i} _library) - else() - # the value is a library without a build configuration keyword - set(_cfg "") - set(_library "${_arg}") - endif() - math(EXPR _i "${_i} + 1") - - if(NOT IS_ABSOLUTE "${_library}") - # search for library target relative to this CMake file - set(_lib "NOTFOUND") - find_library( - _lib NAMES "${_library}" - PATHS "${unitree_go_DIR}/../../../lib" - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH - ) - - if(NOT _lib) - # warn about not existing library and ignore it - message(FATAL_ERROR "Package 'unitree_go' exports the library '${_library}' which couldn't be found") - elseif(NOT IS_ABSOLUTE "${_lib}") - # the found library must be an absolute path - message(FATAL_ERROR "Package 'unitree_go' found the library '${_library}' at '${_lib}' which is not an absolute path") - elseif(NOT EXISTS "${_lib}") - # the found library must exist - message(FATAL_ERROR "Package 'unitree_go' found the library '${_lib}' which doesn't exist") - else() - list(APPEND unitree_go_LIBRARIES ${_cfg} "${_lib}") - endif() - - else() - if(NOT EXISTS "${_library}") - # the found library must exist - message(WARNING "Package 'unitree_go' exports the library '${_library}' which doesn't exist") - else() - list(APPEND unitree_go_LIBRARIES ${_cfg} "${_library}") - endif() - endif() - endwhile() -endif() - -# find_library() library names with optional LIBRARY_DIRS -# and add the libraries to unitree_go_LIBRARIES -if(NOT _exported_library_names STREQUAL "") - # loop over library names - # but remember related build configuration keyword if available - list(LENGTH _exported_library_names _length) - set(_i 0) - while(_i LESS _length) - list(GET _exported_library_names ${_i} _arg) - # pass linker flags along - if("${_arg}" MATCHES "^-" AND NOT "${_arg}" MATCHES "^-[l|framework]") - list(APPEND unitree_go_LIBRARIES "${_arg}") - math(EXPR _i "${_i} + 1") - continue() - endif() - - if("${_arg}" MATCHES "^(debug|optimized|general)$") - # remember build configuration keyword - # and get following library name - set(_cfg "${_arg}") - math(EXPR _i "${_i} + 1") - if(_i EQUAL _length) - message(FATAL_ERROR "Package 'unitree_go' passes the build configuration keyword '${_cfg}' as the last exported target") - endif() - list(GET _exported_library_names ${_i} _library) - else() - # the value is a library target without a build configuration keyword - set(_cfg "") - set(_library "${_arg}") - endif() - math(EXPR _i "${_i} + 1") - - # extract optional LIBRARY_DIRS from library name - string(REPLACE ":" ";" _library_dirs "${_library}") - list(GET _library_dirs 0 _library_name) - list(REMOVE_AT _library_dirs 0) - - set(_lib "NOTFOUND") - if(NOT _library_dirs) - # search for library in the common locations - find_library( - _lib - NAMES "${_library_name}" - ) - if(NOT _lib) - # warn about not existing library and later ignore it - message(WARNING "Package 'unitree_go' exports library '${_library_name}' which couldn't be found") - endif() - else() - # search for library in the specified directories - find_library( - _lib - NAMES "${_library_name}" - PATHS ${_library_dirs} - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH - ) - if(NOT _lib) - # warn about not existing library and later ignore it - message(WARNING "Package 'unitree_go' exports library '${_library_name}' with LIBRARY_DIRS '${_library_dirs}' which couldn't be found") - endif() - endif() - if(_lib) - list(APPEND unitree_go_LIBRARIES ${_cfg} "${_lib}") - endif() - endwhile() -endif() - -# TODO(dirk-thomas) deduplicate unitree_go_LIBRARIES -# while maintaining library order -# as well as build configuration keywords -# as well as linker flags diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_targets-extras.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_targets-extras.cmake deleted file mode 100644 index 352e169..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/ament_cmake_export_targets-extras.cmake +++ /dev/null @@ -1,27 +0,0 @@ -# generated from ament_cmake_export_targets/cmake/ament_cmake_export_targets-extras.cmake.in - -set(_exported_targets "unitree_go__rosidl_generator_c;unitree_go__rosidl_typesupport_introspection_c;unitree_go__rosidl_typesupport_c;unitree_go__rosidl_generator_cpp;unitree_go__rosidl_typesupport_introspection_cpp;unitree_go__rosidl_typesupport_cpp") - -# include all exported targets -if(NOT _exported_targets STREQUAL "") - foreach(_target ${_exported_targets}) - set(_export_file "${unitree_go_DIR}/${_target}Export.cmake") - include("${_export_file}") - - # extract the target names associated with the export - set(_regex "foreach\\((_cmake)?_expected_?[Tt]arget (IN ITEMS )?(.+)\\)") - file( - STRINGS "${_export_file}" _foreach_targets - REGEX "${_regex}") - list(LENGTH _foreach_targets _matches) - if(NOT _matches EQUAL 1) - message(FATAL_ERROR - "Failed to find exported target names in '${_export_file}'") - endif() - string(REGEX REPLACE "${_regex}" "\\3" _targets "${_foreach_targets}") - string(REPLACE " " ";" _targets "${_targets}") - list(LENGTH _targets _length) - - list(APPEND unitree_go_TARGETS ${_targets}) - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake-extras.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake-extras.cmake deleted file mode 100644 index 7f78ab3..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake-extras.cmake +++ /dev/null @@ -1,4 +0,0 @@ -# generated from rosidl_cmake/cmake/rosidl_cmake-extras.cmake.in - -set(unitree_go_IDL_FILES "msg/AudioData.idl;msg/BmsCmd.idl;msg/BmsState.idl;msg/Error.idl;msg/Go2FrontVideoData.idl;msg/HeightMap.idl;msg/IMUState.idl;msg/InterfaceConfig.idl;msg/LidarState.idl;msg/LowCmd.idl;msg/LowState.idl;msg/MotorCmd.idl;msg/MotorState.idl;msg/PathPoint.idl;msg/Req.idl;msg/Res.idl;msg/SportModeCmd.idl;msg/SportModeState.idl;msg/TimeSpec.idl;msg/UwbState.idl;msg/UwbSwitch.idl;msg/WirelessController.idl") -set(unitree_go_INTERFACE_FILES "msg/AudioData.msg;msg/BmsCmd.msg;msg/BmsState.msg;msg/Error.msg;msg/Go2FrontVideoData.msg;msg/HeightMap.msg;msg/IMUState.msg;msg/InterfaceConfig.msg;msg/LidarState.msg;msg/LowCmd.msg;msg/LowState.msg;msg/MotorCmd.msg;msg/MotorState.msg;msg/PathPoint.msg;msg/Req.msg;msg/Res.msg;msg/SportModeCmd.msg;msg/SportModeState.msg;msg/TimeSpec.msg;msg/UwbState.msg;msg/UwbSwitch.msg;msg/WirelessController.msg") diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake deleted file mode 100644 index 43f28e2..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_libraries-extras.cmake +++ /dev/null @@ -1,46 +0,0 @@ -# generated from -# rosidl_cmake/cmake/template/rosidl_cmake_export_typesupport_libraries.cmake.in - -set(_exported_typesupport_libraries - "__rosidl_typesupport_fastrtps_c:unitree_go__rosidl_typesupport_fastrtps_c;__rosidl_typesupport_fastrtps_cpp:unitree_go__rosidl_typesupport_fastrtps_cpp") - -# populate unitree_go_LIBRARIES_ -if(NOT _exported_typesupport_libraries STREQUAL "") - # loop over typesupport libraries - foreach(_tuple ${_exported_typesupport_libraries}) - string(REPLACE ":" ";" _tuple "${_tuple}") - list(GET _tuple 0 _suffix) - list(GET _tuple 1 _library) - - if(NOT IS_ABSOLUTE "${_library}") - # search for library target relative to this CMake file - set(_lib "NOTFOUND") - find_library( - _lib NAMES "${_library}" - PATHS "${unitree_go_DIR}/../../../lib" - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH - ) - - if(NOT _lib) - # the library wasn't found - message(FATAL_ERROR "Package 'unitree_go' exports the typesupport library '${_library}' which couldn't be found") - elseif(NOT IS_ABSOLUTE "${_lib}") - # the found library must be an absolute path - message(FATAL_ERROR "Package 'unitree_go' found the typesupport library '${_library}' at '${_lib}' which is not an absolute path") - elseif(NOT EXISTS "${_lib}") - # the found library must exist - message(FATAL_ERROR "Package 'unitree_go' found the typesupport library '${_lib}' which doesn't exist") - else() - list(APPEND unitree_go_LIBRARIES${_suffix} ${_cfg} "${_lib}") - endif() - - else() - if(NOT EXISTS "${_library}") - # the found library must exist - message(WARNING "Package 'unitree_go' exports the typesupport library '${_library}' which doesn't exist") - else() - list(APPEND unitree_go_LIBRARIES${_suffix} "${_library}") - endif() - endif() - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake deleted file mode 100644 index 1243d23..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/rosidl_cmake_export_typesupport_targets-extras.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# generated from -# rosidl_cmake/cmake/template/rosidl_cmake_export_typesupport_targets.cmake.in - -set(_exported_typesupport_targets - "__rosidl_typesupport_introspection_c:unitree_go__rosidl_typesupport_introspection_c;__rosidl_typesupport_introspection_cpp:unitree_go__rosidl_typesupport_introspection_cpp") - -# populate unitree_go_TARGETS_ -if(NOT _exported_typesupport_targets STREQUAL "") - # loop over typesupport targets - foreach(_tuple ${_exported_typesupport_targets}) - string(REPLACE ":" ";" _tuple "${_tuple}") - list(GET _tuple 0 _suffix) - list(GET _tuple 1 _target) - - set(_target "unitree_go::${_target}") - if(NOT TARGET "${_target}") - # the exported target must exist - message(WARNING "Package 'unitree_go' exports the typesupport target '${_target}' which doesn't exist") - else() - list(APPEND unitree_go_TARGETS${_suffix} "${_target}") - endif() - endforeach() -endif() diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig-version.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig-version.cmake deleted file mode 100644 index 7beb732..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig-version.cmake +++ /dev/null @@ -1,14 +0,0 @@ -# generated from ament/cmake/core/templates/nameConfig-version.cmake.in -set(PACKAGE_VERSION "0.0.0") - -set(PACKAGE_VERSION_EXACT False) -set(PACKAGE_VERSION_COMPATIBLE False) - -if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}") - set(PACKAGE_VERSION_EXACT True) - set(PACKAGE_VERSION_COMPATIBLE True) -endif() - -if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}") - set(PACKAGE_VERSION_COMPATIBLE True) -endif() diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig.cmake deleted file mode 100644 index 484f8ec..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_goConfig.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# generated from ament/cmake/core/templates/nameConfig.cmake.in - -# prevent multiple inclusion -if(_unitree_go_CONFIG_INCLUDED) - # ensure to keep the found flag the same - if(NOT DEFINED unitree_go_FOUND) - # explicitly set it to FALSE, otherwise CMake will set it to TRUE - set(unitree_go_FOUND FALSE) - elseif(NOT unitree_go_FOUND) - # use separate condition to avoid uninitialized variable warning - set(unitree_go_FOUND FALSE) - endif() - return() -endif() -set(_unitree_go_CONFIG_INCLUDED TRUE) - -# output package information -if(NOT unitree_go_FIND_QUIETLY) - message(STATUS "Found unitree_go: 0.0.0 (${unitree_go_DIR})") -endif() - -# warn when using a deprecated package -if(NOT "" STREQUAL "") - set(_msg "Package 'unitree_go' is deprecated") - # append custom deprecation text if available - if(NOT "" STREQUAL "TRUE") - set(_msg "${_msg} ()") - endif() - # optionally quiet the deprecation message - if(NOT ${unitree_go_DEPRECATED_QUIET}) - message(DEPRECATION "${_msg}") - endif() -endif() - -# flag package as ament-based to distinguish it after being find_package()-ed -set(unitree_go_FOUND_AMENT_PACKAGE TRUE) - -# include all config extra files -set(_extras "rosidl_cmake-extras.cmake;ament_cmake_export_dependencies-extras.cmake;ament_cmake_export_libraries-extras.cmake;ament_cmake_export_targets-extras.cmake;ament_cmake_export_include_directories-extras.cmake;rosidl_cmake_export_typesupport_libraries-extras.cmake;rosidl_cmake_export_typesupport_targets-extras.cmake") -foreach(_extra ${_extras}) - include("${unitree_go_DIR}/${_extra}") -endforeach() diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport-noconfig.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport-noconfig.cmake deleted file mode 100644 index 020323e..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_go::unitree_go__rosidl_generator_c" for configuration "" -set_property(TARGET unitree_go::unitree_go__rosidl_generator_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_go::unitree_go__rosidl_generator_c PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_generator_c.so" - IMPORTED_SONAME_NOCONFIG "libunitree_go__rosidl_generator_c.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_go::unitree_go__rosidl_generator_c ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_go::unitree_go__rosidl_generator_c "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_generator_c.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport.cmake deleted file mode 100644 index 81513c1..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_go::unitree_go__rosidl_generator_c) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_go::unitree_go__rosidl_generator_c -add_library(unitree_go::unitree_go__rosidl_generator_c SHARED IMPORTED) - -set_target_properties(unitree_go::unitree_go__rosidl_generator_c PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_interface::rosidl_typesupport_interface;rcutils::rcutils" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_go__rosidl_generator_cExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cppExport.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cppExport.cmake deleted file mode 100644 index 35fc6a2..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_generator_cppExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_go::unitree_go__rosidl_generator_cpp) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_go::unitree_go__rosidl_generator_cpp -add_library(unitree_go::unitree_go__rosidl_generator_cpp INTERFACE IMPORTED) - -set_target_properties(unitree_go::unitree_go__rosidl_generator_cpp PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;rosidl_runtime_cpp::rosidl_runtime_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 3.0.0) - message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_go__rosidl_generator_cppExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport-noconfig.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport-noconfig.cmake deleted file mode 100644 index d0ccbc0..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_go::unitree_go__rosidl_typesupport_c" for configuration "" -set_property(TARGET unitree_go::unitree_go__rosidl_typesupport_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_c PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_c.so" - IMPORTED_SONAME_NOCONFIG "libunitree_go__rosidl_typesupport_c.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_go::unitree_go__rosidl_typesupport_c ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_go::unitree_go__rosidl_typesupport_c "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_c.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport.cmake deleted file mode 100644 index 73793e0..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_go::unitree_go__rosidl_typesupport_c) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_go::unitree_go__rosidl_typesupport_c -add_library(unitree_go::unitree_go__rosidl_typesupport_c SHARED IMPORTED) - -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_c PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_c::rosidl_typesupport_c;rosidl_typesupport_interface::rosidl_typesupport_interface;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_go__rosidl_typesupport_cExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport-noconfig.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport-noconfig.cmake deleted file mode 100644 index 8a7e93a..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_go::unitree_go__rosidl_typesupport_cpp" for configuration "" -set_property(TARGET unitree_go::unitree_go__rosidl_typesupport_cpp APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_cpp PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_cpp.so" - IMPORTED_SONAME_NOCONFIG "libunitree_go__rosidl_typesupport_cpp.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_go::unitree_go__rosidl_typesupport_cpp ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_go::unitree_go__rosidl_typesupport_cpp "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_cpp.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport.cmake deleted file mode 100644 index 58272c7..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_cppExport.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_go::unitree_go__rosidl_typesupport_cpp) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_go::unitree_go__rosidl_typesupport_cpp -add_library(unitree_go::unitree_go__rosidl_typesupport_cpp SHARED IMPORTED) - -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_cpp PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" - INTERFACE_LINK_LIBRARIES "rosidl_runtime_c::rosidl_runtime_c;rosidl_runtime_cpp::rosidl_runtime_cpp;rosidl_typesupport_cpp::rosidl_typesupport_cpp;rosidl_typesupport_interface::rosidl_typesupport_interface;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_go__rosidl_typesupport_cppExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport-noconfig.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport-noconfig.cmake deleted file mode 100644 index 16dc0ed..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_go::unitree_go__rosidl_typesupport_introspection_c" for configuration "" -set_property(TARGET unitree_go::unitree_go__rosidl_typesupport_introspection_c APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_introspection_c PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_introspection_c.so" - IMPORTED_SONAME_NOCONFIG "libunitree_go__rosidl_typesupport_introspection_c.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_go::unitree_go__rosidl_typesupport_introspection_c ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_go::unitree_go__rosidl_typesupport_introspection_c "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_introspection_c.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport.cmake deleted file mode 100644 index 479d5ce..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cExport.cmake +++ /dev/null @@ -1,114 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_go::unitree_go__rosidl_typesupport_introspection_c) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_go::unitree_go__rosidl_typesupport_introspection_c -add_library(unitree_go::unitree_go__rosidl_typesupport_introspection_c SHARED IMPORTED) - -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_introspection_c PROPERTIES - INTERFACE_LINK_LIBRARIES "unitree_go::unitree_go__rosidl_generator_c;rosidl_typesupport_introspection_c::rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_go__rosidl_typesupport_introspection_cExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# Make sure the targets which have been exported in some other -# export set exist. -unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets) -foreach(_target "unitree_go::unitree_go__rosidl_generator_c" ) - if(NOT TARGET "${_target}" ) - set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets "${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets} ${_target}") - endif() -endforeach() - -if(DEFINED ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets) - if(CMAKE_FIND_PACKAGE_NAME) - set( ${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE) - set( ${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}") - else() - message(FATAL_ERROR "The following imported targets are referenced, but are missing: ${${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets}") - endif() -endif() -unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport-noconfig.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport-noconfig.cmake deleted file mode 100644 index 3cb5485..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport-noconfig.cmake +++ /dev/null @@ -1,19 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Import target "unitree_go::unitree_go__rosidl_typesupport_introspection_cpp" for configuration "" -set_property(TARGET unitree_go::unitree_go__rosidl_typesupport_introspection_cpp APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_introspection_cpp PROPERTIES - IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_introspection_cpp.so" - IMPORTED_SONAME_NOCONFIG "libunitree_go__rosidl_typesupport_introspection_cpp.so" - ) - -list(APPEND _IMPORT_CHECK_TARGETS unitree_go::unitree_go__rosidl_typesupport_introspection_cpp ) -list(APPEND _IMPORT_CHECK_FILES_FOR_unitree_go::unitree_go__rosidl_typesupport_introspection_cpp "${_IMPORT_PREFIX}/lib/libunitree_go__rosidl_typesupport_introspection_cpp.so" ) - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport.cmake b/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport.cmake deleted file mode 100644 index 8fce41e..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/cmake/unitree_go__rosidl_typesupport_introspection_cppExport.cmake +++ /dev/null @@ -1,98 +0,0 @@ -# Generated by CMake - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget unitree_go::unitree_go__rosidl_typesupport_introspection_cpp) - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - - -# Compute the installation prefix relative to this file. -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Create imported target unitree_go::unitree_go__rosidl_typesupport_introspection_cpp -add_library(unitree_go::unitree_go__rosidl_typesupport_introspection_cpp SHARED IMPORTED) - -set_target_properties(unitree_go::unitree_go__rosidl_typesupport_introspection_cpp PROPERTIES - INTERFACE_LINK_LIBRARIES "rosidl_runtime_c::rosidl_runtime_c;rosidl_typesupport_interface::rosidl_typesupport_interface;rosidl_typesupport_introspection_cpp::rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_generator_c;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_c;geometry_msgs::geometry_msgs__rosidl_typesupport_c;geometry_msgs::geometry_msgs__rosidl_generator_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_cpp;geometry_msgs::geometry_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_generator_c;std_msgs::std_msgs__rosidl_typesupport_introspection_c;std_msgs::std_msgs__rosidl_typesupport_c;std_msgs::std_msgs__rosidl_generator_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;std_msgs::std_msgs__rosidl_typesupport_cpp;std_msgs::std_msgs__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_generator_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_c;builtin_interfaces::builtin_interfaces__rosidl_typesupport_c;builtin_interfaces::builtin_interfaces__rosidl_generator_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_cpp;builtin_interfaces::builtin_interfaces__rosidl_typesupport_introspection_cpp" -) - -if(CMAKE_VERSION VERSION_LESS 2.8.12) - message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/unitree_go__rosidl_typesupport_introspection_cppExport-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.dsv deleted file mode 100644 index 79d4c95..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;AMENT_PREFIX_PATH; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.sh deleted file mode 100644 index 02e441b..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/ament_prefix_path.sh +++ /dev/null @@ -1,4 +0,0 @@ -# copied from -# ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh - -ament_prepend_unique_value AMENT_PREFIX_PATH "$AMENT_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.dsv deleted file mode 100644 index 89bec93..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;LD_LIBRARY_PATH;lib diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.sh deleted file mode 100644 index 292e518..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/library_path.sh +++ /dev/null @@ -1,16 +0,0 @@ -# copied from ament_package/template/environment_hook/library_path.sh - -# detect if running on Darwin platform -_UNAME=`uname -s` -_IS_DARWIN=0 -if [ "$_UNAME" = "Darwin" ]; then - _IS_DARWIN=1 -fi -unset _UNAME - -if [ $_IS_DARWIN -eq 0 ]; then - ament_prepend_unique_value LD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib" -else - ament_prepend_unique_value DYLD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib" -fi -unset _IS_DARWIN diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.dsv deleted file mode 100644 index b94426a..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate-if-exists;PATH;bin diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.sh deleted file mode 100644 index e59b749..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/path.sh +++ /dev/null @@ -1,5 +0,0 @@ -# copied from ament_cmake_core/cmake/environment_hooks/environment/path.sh - -if [ -d "$AMENT_CURRENT_PREFIX/bin" ]; then - ament_prepend_unique_value PATH "$AMENT_CURRENT_PREFIX/bin" -fi diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.dsv deleted file mode 100644 index 84dbc4c..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;PYTHONPATH;lib/python3.8/site-packages diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.sh deleted file mode 100644 index 7fe2b2f..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/environment/pythonpath.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from ament_package/template/environment_hook/pythonpath.sh.in - -ament_prepend_unique_value PYTHONPATH "$AMENT_CURRENT_PREFIX/lib/python3.8/site-packages" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.dsv deleted file mode 100644 index e119f32..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;CMAKE_PREFIX_PATH; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.ps1 b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.ps1 deleted file mode 100644 index d03facc..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em - -colcon_prepend_unique_value CMAKE_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.sh deleted file mode 100644 index a948e68..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/cmake_prefix_path.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_core/shell/template/hook_prepend_value.sh.em - -_colcon_prepend_unique_value CMAKE_PREFIX_PATH "$COLCON_CURRENT_PREFIX" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.dsv deleted file mode 100644 index 89bec93..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;LD_LIBRARY_PATH;lib diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.ps1 b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.ps1 deleted file mode 100644 index f6df601..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em - -colcon_prepend_unique_value LD_LIBRARY_PATH "$env:COLCON_CURRENT_PREFIX\lib" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.sh deleted file mode 100644 index ca3c102..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/ld_library_path_lib.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_core/shell/template/hook_prepend_value.sh.em - -_colcon_prepend_unique_value LD_LIBRARY_PATH "$COLCON_CURRENT_PREFIX/lib" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.dsv deleted file mode 100644 index 84dbc4c..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.dsv +++ /dev/null @@ -1 +0,0 @@ -prepend-non-duplicate;PYTHONPATH;lib/python3.8/site-packages diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.ps1 b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.ps1 deleted file mode 100644 index 12877ef..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em - -colcon_prepend_unique_value PYTHONPATH "$env:COLCON_CURRENT_PREFIX\lib/python3.8/site-packages" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.sh deleted file mode 100644 index ed8efd9..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/hook/pythonpath.sh +++ /dev/null @@ -1,3 +0,0 @@ -# generated from colcon_core/shell/template/hook_prepend_value.sh.em - -_colcon_prepend_unique_value PYTHONPATH "$COLCON_CURRENT_PREFIX/lib/python3.8/site-packages" diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.bash b/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.bash deleted file mode 100644 index 49782f2..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.bash +++ /dev/null @@ -1,46 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.bash.in - -# source local_setup.sh from same directory as this file -_this_path=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" && pwd) -# provide AMENT_CURRENT_PREFIX to shell script -AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd) -# store AMENT_CURRENT_PREFIX to restore it before each environment hook -_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX - -# trace output -if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_this_path/local_setup.sh\"" -fi -. "$_this_path/local_setup.sh" -unset _this_path - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks -AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX -# list all environment hooks of this package - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - # restore AMENT_CURRENT_PREFIX for each environment hook - AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - . "$_hook" - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -unset _package_local_setup_AMENT_CURRENT_PREFIX -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.dsv deleted file mode 100644 index 03d396a..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.dsv +++ /dev/null @@ -1,4 +0,0 @@ -source;share/unitree_go/environment/ament_prefix_path.sh -source;share/unitree_go/environment/library_path.sh -source;share/unitree_go/environment/path.sh -source;share/unitree_go/environment/pythonpath.sh diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.sh deleted file mode 100644 index ba3326b..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.sh +++ /dev/null @@ -1,135 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.sh.in - -# since this file is sourced use either the provided AMENT_CURRENT_PREFIX -# or fall back to the destination set at configure time -: ${AMENT_CURRENT_PREFIX:="/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/unitree_go"} -if [ ! -d "$AMENT_CURRENT_PREFIX" ]; then - if [ -z "$COLCON_CURRENT_PREFIX" ]; then - echo "The compile time prefix path '$AMENT_CURRENT_PREFIX' doesn't " \ - "exist. Consider sourcing a different extension than '.sh'." 1>&2 - else - AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" - fi -fi - -# function to append values to environment variables -# using colons as separators and avoiding leading separators -ament_append_value() { - # arguments - _listname="$1" - _value="$2" - #echo "listname $_listname" - #eval echo "list value \$$_listname" - #echo "value $_value" - - # avoid leading separator - eval _values=\"\$$_listname\" - if [ -z "$_values" ]; then - eval export $_listname=\"$_value\" - #eval echo "set list \$$_listname" - else - # field separator must not be a colon - _ament_append_value_IFS=$IFS - unset IFS - eval export $_listname=\"\$$_listname:$_value\" - #eval echo "append list \$$_listname" - IFS=$_ament_append_value_IFS - unset _ament_append_value_IFS - fi - unset _values - - unset _value - unset _listname -} - -# function to prepend non-duplicate values to environment variables -# using colons as separators and avoiding trailing separators -ament_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - #echo "listname $_listname" - #eval echo "list value \$$_listname" - #echo "value $_value" - - # check if the list contains the value - eval _values=\"\$$_listname\" - _duplicate= - _ament_prepend_unique_value_IFS=$IFS - IFS=":" - if [ "$AMENT_SHELL" = "zsh" ]; then - ament_zsh_to_array _values - fi - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - if [ "$_item" = "$_value" ]; then - _duplicate=1 - fi - done - unset _item - - # prepend only non-duplicates - if [ -z "$_duplicate" ]; then - # avoid trailing separator - if [ -z "$_values" ]; then - eval export $_listname=\"$_value\" - #eval echo "set list \$$_listname" - else - # field separator must not be a colon - unset IFS - eval export $_listname=\"$_value:\$$_listname\" - #eval echo "prepend list \$$_listname" - fi - fi - IFS=$_ament_prepend_unique_value_IFS - unset _ament_prepend_unique_value_IFS - unset _duplicate - unset _values - - unset _value - unset _listname -} - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# list all environment hooks of this package -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_go/environment/ament_prefix_path.sh" -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_go/environment/library_path.sh" -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_go/environment/path.sh" -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/unitree_go/environment/pythonpath.sh" - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - if [ "$AMENT_SHELL" = "zsh" ]; then - ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS - fi - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - if [ -f "$_hook" ]; then - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - # trace output - if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_hook\"" - fi - . "$_hook" - fi - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -# reset AMENT_CURRENT_PREFIX after each package -# allowing to source multiple package-level setup files -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.zsh b/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.zsh deleted file mode 100644 index fe161be..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/local_setup.zsh +++ /dev/null @@ -1,59 +0,0 @@ -# generated from ament_package/template/package_level/local_setup.zsh.in - -AMENT_SHELL=zsh - -# source local_setup.sh from same directory as this file -_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd) -# provide AMENT_CURRENT_PREFIX to shell script -AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd) -# store AMENT_CURRENT_PREFIX to restore it before each environment hook -_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX - -# function to convert array-like strings into arrays -# to wordaround SH_WORD_SPLIT not being set -ament_zsh_to_array() { - local _listname=$1 - local _dollar="$" - local _split="{=" - local _to_array="(\"$_dollar$_split$_listname}\")" - eval $_listname=$_to_array -} - -# trace output -if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then - echo "# . \"$_this_path/local_setup.sh\"" -fi -# the package-level local_setup file unsets AMENT_CURRENT_PREFIX -. "$_this_path/local_setup.sh" -unset _this_path - -# unset AMENT_ENVIRONMENT_HOOKS -# if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi - -# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks -AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX -# list all environment hooks of this package - -# source all shell-specific environment hooks of this package -# if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - for _hook in $AMENT_ENVIRONMENT_HOOKS; do - # restore AMENT_CURRENT_PREFIX for each environment hook - AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX - # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - . "$_hook" - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -unset _package_local_setup_AMENT_CURRENT_PREFIX -unset AMENT_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.idl deleted file mode 100644 index 31c88ae..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.idl +++ /dev/null @@ -1,14 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/AudioData.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct AudioData { - uint64 time_frame; - - sequence data; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.msg deleted file mode 100644 index 6e889bc..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/AudioData.msg +++ /dev/null @@ -1,2 +0,0 @@ -uint64 time_frame -uint8[] data \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.idl deleted file mode 100644 index c14a380..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.idl +++ /dev/null @@ -1,15 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/BmsCmd.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef uint8 uint8__3[3]; - struct BmsCmd { - uint8 off; - - uint8__3 reserve; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.msg deleted file mode 100644 index bdbf9c3..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsCmd.msg +++ /dev/null @@ -1,2 +0,0 @@ -uint8 off -uint8[3] reserve \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.idl deleted file mode 100644 index ccb75b5..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.idl +++ /dev/null @@ -1,30 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/BmsState.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef int8 int8__2[2]; - typedef uint16 uint16__15[15]; - struct BmsState { - uint8 version_high; - - uint8 version_low; - - uint8 status; - - uint8 soc; - - int32 current; - - uint16 cycle; - - int8__2 bq_ntc; - - int8__2 mcu_ntc; - - uint16__15 cell_vol; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.msg deleted file mode 100644 index 052e4d5..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/BmsState.msg +++ /dev/null @@ -1,9 +0,0 @@ -uint8 version_high -uint8 version_low -uint8 status -uint8 soc -int32 current -uint16 cycle -int8[2] bq_ntc -int8[2] mcu_ntc -uint16[15] cell_vol \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.idl deleted file mode 100644 index f732ed8..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.idl +++ /dev/null @@ -1,14 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/Error.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct Error { - uint32 source; - - uint32 state; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.msg deleted file mode 100644 index 4a5a631..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Error.msg +++ /dev/null @@ -1,2 +0,0 @@ -uint32 source -uint32 state \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.idl deleted file mode 100644 index 9377c7b..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.idl +++ /dev/null @@ -1,18 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/Go2FrontVideoData.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct Go2FrontVideoData { - uint64 time_frame; - - sequence video720p; - - sequence video360p; - - sequence video180p; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.msg deleted file mode 100644 index 3c294f3..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Go2FrontVideoData.msg +++ /dev/null @@ -1,4 +0,0 @@ -uint64 time_frame -uint8[] video720p -uint8[] video360p -uint8[] video180p \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.idl deleted file mode 100644 index 016e9a3..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.idl +++ /dev/null @@ -1,49 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/HeightMap.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef float float__2[2]; - @verbatim (language="comment", text= - " Header") - struct HeightMap { - @verbatim (language="comment", text= - " timestamp") - double stamp; - - @verbatim (language="comment", text= - " world frame id") - string frame_id; - - @verbatim (language="comment", text= - " Map info" "\n" - " The map resolution") - @unit (value="m/cell") - float resolution; - - @verbatim (language="comment", text= - " Map width along x-axis") - @unit (value="cells") - uint32 width; - - @verbatim (language="comment", text= - " Map height alonge y-axis") - @unit (value="cells") - uint32 height; - - @verbatim (language="comment", text= - " Map frame origin xy-position, the xyz-axis direction of map frame is aligned with the world frame") - @unit (value="m") - float__2 origin; - - @verbatim (language="comment", text= - " Map data, in x-major order, starting with [0,0], ending with [width, height]" "\n" - " For a cell whose 2d-array-index is [ix, iy]," "\n" - " its position in world frame is: [ix * resolution + origin[0], iy * resolution + origin[1]]" "\n" - " its cell value is: data[width * iy + ix]") - sequence data; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.msg deleted file mode 100644 index 4e6f3b2..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/HeightMap.msg +++ /dev/null @@ -1,15 +0,0 @@ -# Header -float64 stamp # timestamp -string frame_id # world frame id - -# Map info -float32 resolution # The map resolution [m/cell] -uint32 width # Map width along x-axis [cells] -uint32 height # Map height alonge y-axis [cells] -float32[2] origin # Map frame origin xy-position [m], the xyz-axis direction of map frame is aligned with the world frame - -# Map data, in x-major order, starting with [0,0], ending with [width, height] -# For a cell whose 2d-array-index is [ix, iy], -# its position in world frame is: [ix * resolution + origin[0], iy * resolution + origin[1]] -# its cell value is: data[width * iy + ix] -float32[] data \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.idl deleted file mode 100644 index b9004f9..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.idl +++ /dev/null @@ -1,22 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/IMUState.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef float float__4[4]; - typedef float float__3[3]; - struct IMUState { - float__4 quaternion; - - float__3 gyroscope; - - float__3 accelerometer; - - float__3 rpy; - - int8 temperature; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.msg deleted file mode 100644 index e065d04..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/IMUState.msg +++ /dev/null @@ -1,5 +0,0 @@ -float32[4] quaternion -float32[3] gyroscope -float32[3] accelerometer -float32[3] rpy -int8 temperature diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.idl deleted file mode 100644 index acdbd97..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.idl +++ /dev/null @@ -1,17 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/InterfaceConfig.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef uint8 uint8__2[2]; - struct InterfaceConfig { - uint8 mode; - - uint8 value; - - uint8__2 reserve; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.msg deleted file mode 100644 index c43bd20..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/InterfaceConfig.msg +++ /dev/null @@ -1,3 +0,0 @@ -uint8 mode -uint8 value -uint8[2] reserve \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.idl deleted file mode 100644 index e81c1ff..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.idl +++ /dev/null @@ -1,45 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/LidarState.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef float float__3[3]; - struct LidarState { - double stamp; - - string firmware_version; - - string software_version; - - string sdk_version; - - float sys_rotation_speed; - - float com_rotation_speed; - - uint8 error_state; - - float cloud_frequency; - - float cloud_packet_loss_rate; - - uint32 cloud_size; - - uint32 cloud_scan_num; - - float imu_frequency; - - float imu_packet_loss_rate; - - float__3 imu_rpy; - - double serial_recv_stamp; - - uint32 serial_buffer_size; - - uint32 serial_buffer_read; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.msg deleted file mode 100644 index d8b4eb2..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LidarState.msg +++ /dev/null @@ -1,17 +0,0 @@ -float64 stamp -string firmware_version -string software_version -string sdk_version -float32 sys_rotation_speed -float32 com_rotation_speed -uint8 error_state -float32 cloud_frequency -float32 cloud_packet_loss_rate -uint32 cloud_size -uint32 cloud_scan_num -float32 imu_frequency -float32 imu_packet_loss_rate -float32[3] imu_rpy -float64 serial_recv_stamp -uint32 serial_buffer_size -uint32 serial_buffer_read diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.idl deleted file mode 100644 index 82d46a4..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.idl +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/LowCmd.msg -// generated code does not contain a copyright notice - -#include "unitree_go/msg/BmsCmd.idl" -#include "unitree_go/msg/MotorCmd.idl" - -module unitree_go { - module msg { - typedef uint8 uint8__2[2]; - typedef uint32 uint32__2[2]; - typedef unitree_go::msg::MotorCmd unitree_go__msg__MotorCmd; - typedef unitree_go__msg__MotorCmd unitree_go__msg__MotorCmd__20[20]; - typedef uint8 uint8__40[40]; - typedef uint8 uint8__12[12]; - struct LowCmd { - uint8__2 head; - - uint8 level_flag; - - uint8 frame_reserve; - - uint32__2 sn; - - uint32__2 version; - - uint16 bandwidth; - - unitree_go__msg__MotorCmd__20 motor_cmd; - - unitree_go::msg::BmsCmd bms_cmd; - - uint8__40 wireless_remote; - - uint8__12 led; - - uint8__2 fan; - - uint8 gpio; - - uint32 reserve; - - uint32 crc; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.msg deleted file mode 100644 index 464a31d..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowCmd.msg +++ /dev/null @@ -1,15 +0,0 @@ -uint8[2] head -uint8 level_flag -uint8 frame_reserve -uint32[2] sn -uint32[2] version -uint16 bandwidth -MotorCmd[20] motor_cmd -BmsCmd bms_cmd -uint8[40] wireless_remote -uint8[12] led -uint8[2] fan -uint8 gpio -uint32 reserve -uint32 crc - diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.idl deleted file mode 100644 index 65e99d3..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.idl +++ /dev/null @@ -1,64 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/LowState.msg -// generated code does not contain a copyright notice - -#include "unitree_go/msg/BmsState.idl" -#include "unitree_go/msg/IMUState.idl" -#include "unitree_go/msg/MotorState.idl" - -module unitree_go { - module msg { - typedef uint8 uint8__2[2]; - typedef uint32 uint32__2[2]; - typedef unitree_go::msg::MotorState unitree_go__msg__MotorState; - typedef unitree_go__msg__MotorState unitree_go__msg__MotorState__20[20]; - typedef int16 int16__4[4]; - typedef uint8 uint8__40[40]; - typedef uint16 uint16__4[4]; - struct LowState { - uint8__2 head; - - uint8 level_flag; - - uint8 frame_reserve; - - uint32__2 sn; - - uint32__2 version; - - uint16 bandwidth; - - unitree_go::msg::IMUState imu_state; - - unitree_go__msg__MotorState__20 motor_state; - - unitree_go::msg::BmsState bms_state; - - int16__4 foot_force; - - int16__4 foot_force_est; - - uint32 tick; - - uint8__40 wireless_remote; - - uint8 bit_flag; - - float adc_reel; - - int8 temperature_ntc1; - - int8 temperature_ntc2; - - float power_v; - - float power_a; - - uint16__4 fan_frequency; - - uint32 reserve; - - uint32 crc; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.msg deleted file mode 100644 index ceaed32..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/LowState.msg +++ /dev/null @@ -1,22 +0,0 @@ -uint8[2] head -uint8 level_flag -uint8 frame_reserve -uint32[2] sn -uint32[2] version -uint16 bandwidth -IMUState imu_state -MotorState[20] motor_state -BmsState bms_state -int16[4] foot_force -int16[4] foot_force_est -uint32 tick -uint8[40] wireless_remote -uint8 bit_flag -float32 adc_reel -int8 temperature_ntc1 -int8 temperature_ntc2 -float32 power_v -float32 power_a -uint16[4] fan_frequency -uint32 reserve -uint32 crc \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.idl deleted file mode 100644 index 8f698ff..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.idl +++ /dev/null @@ -1,25 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/MotorCmd.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef uint32 uint32__3[3]; - struct MotorCmd { - uint8 mode; - - float q; - - float dq; - - float tau; - - float kp; - - float kd; - - uint32__3 reserve; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.msg deleted file mode 100644 index 67cd1bf..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorCmd.msg +++ /dev/null @@ -1,7 +0,0 @@ -uint8 mode -float32 q -float32 dq -float32 tau -float32 kp -float32 kd -uint32[3] reserve \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.idl deleted file mode 100644 index 653ebc6..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.idl +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/MotorState.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef uint32 uint32__2[2]; - struct MotorState { - uint8 mode; - - float q; - - float dq; - - float ddq; - - float tau_est; - - float q_raw; - - float dq_raw; - - float ddq_raw; - - int8 temperature; - - uint32 lost; - - uint32__2 reserve; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.msg deleted file mode 100644 index 2e1a739..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/MotorState.msg +++ /dev/null @@ -1,11 +0,0 @@ -uint8 mode -float32 q -float32 dq -float32 ddq -float32 tau_est -float32 q_raw -float32 dq_raw -float32 ddq_raw -int8 temperature -uint32 lost -uint32[2] reserve \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.idl deleted file mode 100644 index 7e6e29f..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.idl +++ /dev/null @@ -1,24 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/PathPoint.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct PathPoint { - float t_from_start; - - float x; - - float y; - - float yaw; - - float vx; - - float vy; - - float vyaw; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.msg deleted file mode 100644 index 08b4945..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/PathPoint.msg +++ /dev/null @@ -1,7 +0,0 @@ -float32 t_from_start -float32 x -float32 y -float32 yaw -float32 vx -float32 vy -float32 vyaw \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.idl deleted file mode 100644 index ebbc611..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.idl +++ /dev/null @@ -1,14 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/Req.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct Req { - string uuid; - - string body; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.msg deleted file mode 100644 index af14a7d..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Req.msg +++ /dev/null @@ -1,2 +0,0 @@ -string uuid -string body \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.idl deleted file mode 100644 index 8d91e1c..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.idl +++ /dev/null @@ -1,16 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/Res.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct Res { - string uuid; - - sequence data; - - string body; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.msg deleted file mode 100644 index 8070258..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/Res.msg +++ /dev/null @@ -1,3 +0,0 @@ -string uuid -uint8[] data -string body \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.idl deleted file mode 100644 index 4b81956..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.idl +++ /dev/null @@ -1,38 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/SportModeCmd.msg -// generated code does not contain a copyright notice - -#include "unitree_go/msg/BmsCmd.idl" -#include "unitree_go/msg/PathPoint.idl" - -module unitree_go { - module msg { - typedef float float__2[2]; - typedef float float__3[3]; - typedef unitree_go::msg::PathPoint unitree_go__msg__PathPoint; - typedef unitree_go__msg__PathPoint unitree_go__msg__PathPoint__30[30]; - struct SportModeCmd { - uint8 mode; - - uint8 gait_type; - - uint8 speed_level; - - float foot_raise_height; - - float body_height; - - float__2 position; - - float__3 euler; - - float__2 velocity; - - float yaw_speed; - - unitree_go::msg::BmsCmd bms_cmd; - - unitree_go__msg__PathPoint__30 path_point; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.msg deleted file mode 100644 index e5ccb46..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeCmd.msg +++ /dev/null @@ -1,13 +0,0 @@ -uint8 mode -uint8 gait_type -uint8 speed_level -float32 foot_raise_height -float32 body_height -float32[2] position -float32[3] euler -float32[2] velocity -float32 yaw_speed -BmsCmd bms_cmd -PathPoint[30] path_point - - diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.idl deleted file mode 100644 index 9b90c9c..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.idl +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/SportModeState.msg -// generated code does not contain a copyright notice - -#include "unitree_go/msg/IMUState.idl" -#include "unitree_go/msg/TimeSpec.idl" - -module unitree_go { - module msg { - typedef float float__3[3]; - typedef float float__4[4]; - typedef int16 int16__4[4]; - typedef float float__12[12]; - struct SportModeState { - unitree_go::msg::TimeSpec stamp; - - uint32 error_code; - - unitree_go::msg::IMUState imu_state; - - uint8 mode; - - float progress; - - uint8 gait_type; - - float foot_raise_height; - - float__3 position; - - float body_height; - - float__3 velocity; - - float yaw_speed; - - float__4 range_obstacle; - - int16__4 foot_force; - - float__12 foot_position_body; - - float__12 foot_speed_body; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.msg deleted file mode 100644 index 7a6c1e6..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/SportModeState.msg +++ /dev/null @@ -1,17 +0,0 @@ -TimeSpec stamp -uint32 error_code -IMUState imu_state -uint8 mode -float32 progress -uint8 gait_type -float32 foot_raise_height -float32[3] position -float32 body_height -float32[3] velocity -float32 yaw_speed -float32[4] range_obstacle -int16[4] foot_force -float32[12] foot_position_body -float32[12] foot_speed_body - - diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.idl deleted file mode 100644 index 5d4c972..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.idl +++ /dev/null @@ -1,19 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/TimeSpec.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - @verbatim (language="comment", text= - " Time indicates a specific point in time, relative to a clock's 0 point." "\n" - " The seconds component, valid over all int32 values.") - struct TimeSpec { - int32 sec; - - @verbatim (language="comment", text= - " The nanoseconds component, valid in the range [0, 10e9).") - uint32 nanosec; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.msg deleted file mode 100644 index 188b3c1..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/TimeSpec.msg +++ /dev/null @@ -1,5 +0,0 @@ -# Time indicates a specific point in time, relative to a clock's 0 point. -# The seconds component, valid over all int32 values. -int32 sec -# The nanoseconds component, valid in the range [0, 10e9). -uint32 nanosec diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.idl deleted file mode 100644 index e32c0c0..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.idl +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/UwbState.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - typedef uint8 uint8__2[2]; - typedef float float__2[2]; - struct UwbState { - uint8__2 version; - - uint8 channel; - - uint8 joy_mode; - - float orientation_est; - - float pitch_est; - - float distance_est; - - float yaw_est; - - float tag_roll; - - float tag_pitch; - - float tag_yaw; - - float base_roll; - - float base_pitch; - - float base_yaw; - - float__2 joystick; - - uint8 error_state; - - uint8 buttons; - - uint8 enabled_from_app; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.msg deleted file mode 100644 index ed1da3a..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbState.msg +++ /dev/null @@ -1,19 +0,0 @@ -uint8[2] version -uint8 channel -uint8 joy_mode -float32 orientation_est -float32 pitch_est -float32 distance_est -float32 yaw_est -float32 tag_roll -float32 tag_pitch -float32 tag_yaw -float32 base_roll -float32 base_pitch -float32 base_yaw -float32[2] joystick -uint8 error_state -uint8 buttons -uint8 enabled_from_app - - diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.idl deleted file mode 100644 index 815c2d9..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.idl +++ /dev/null @@ -1,12 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/UwbSwitch.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct UwbSwitch { - uint8 enabled; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.msg deleted file mode 100644 index db8ec91..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/UwbSwitch.msg +++ /dev/null @@ -1 +0,0 @@ -uint8 enabled \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.idl deleted file mode 100644 index 4cfbe6c..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.idl +++ /dev/null @@ -1,20 +0,0 @@ -// generated from rosidl_adapter/resource/msg.idl.em -// with input from unitree_go/msg/WirelessController.msg -// generated code does not contain a copyright notice - - -module unitree_go { - module msg { - struct WirelessController { - float lx; - - float ly; - - float rx; - - float ry; - - uint16 keys; - }; - }; -}; diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.msg b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.msg deleted file mode 100644 index 12965ff..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/WirelessController.msg +++ /dev/null @@ -1,5 +0,0 @@ -float32 lx -float32 ly -float32 rx -float32 ry -uint16 keys \ No newline at end of file diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/AudioData_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/AudioData_.idl deleted file mode 100644 index d2ab5ec..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/AudioData_.idl +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/AudioData.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__audio_data__idl__ -#define __unitree_go__msg__audio_data__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct AudioData_ { -unsigned long long time_frame_; -sequence data_; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__audio_data__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsCmd_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsCmd_.idl deleted file mode 100644 index 10c312e..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsCmd_.idl +++ /dev/null @@ -1,31 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/BmsCmd.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__bms_cmd__idl__ -#define __unitree_go__msg__bms_cmd__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct BmsCmd_ { -octet off_; -octet reserve_[3]; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__bms_cmd__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsState_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsState_.idl deleted file mode 100644 index b68a6a2..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/BmsState_.idl +++ /dev/null @@ -1,40 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/BmsState.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__bms_state__idl__ -#define __unitree_go__msg__bms_state__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct BmsState_ { -octet version_high_; -octet version_low_; -octet status_; -octet soc_; -long current_; -unsigned short cycle_; -octet bq_ntc_[2]; - -octet mcu_ntc_[2]; - -unsigned short cell_vol_[15]; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__bms_state__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Error_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Error_.idl deleted file mode 100644 index 813785b..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Error_.idl +++ /dev/null @@ -1,30 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/Error.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__error__idl__ -#define __unitree_go__msg__error__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct Error_ { -unsigned long source_; -unsigned long state_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__error__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Go2FrontVideoData_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Go2FrontVideoData_.idl deleted file mode 100644 index fae906d..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Go2FrontVideoData_.idl +++ /dev/null @@ -1,35 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/Go2FrontVideoData.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__go2_front_video_data__idl__ -#define __unitree_go__msg__go2_front_video_data__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct Go2FrontVideoData_ { -unsigned long long time_frame_; -sequence video720p_; - -sequence video360p_; - -sequence video180p_; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__go2_front_video_data__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/HeightMap_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/HeightMap_.idl deleted file mode 100644 index 793833f..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/HeightMap_.idl +++ /dev/null @@ -1,37 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/HeightMap.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__height_map__idl__ -#define __unitree_go__msg__height_map__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct HeightMap_ { -double stamp_; -string frame_id_; -float resolution_; -unsigned long width_; -unsigned long height_; -float origin_[2]; - -sequence data_; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__height_map__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/IMUState_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/IMUState_.idl deleted file mode 100644 index 5728487..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/IMUState_.idl +++ /dev/null @@ -1,37 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/IMUState.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__imu_state__idl__ -#define __unitree_go__msg__imu_state__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct IMUState_ { -float quaternion_[4]; - -float gyroscope_[3]; - -float accelerometer_[3]; - -float rpy_[3]; - -octet temperature_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__imu_state__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/InterfaceConfig_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/InterfaceConfig_.idl deleted file mode 100644 index 1644752..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/InterfaceConfig_.idl +++ /dev/null @@ -1,32 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/InterfaceConfig.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__interface_config__idl__ -#define __unitree_go__msg__interface_config__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct InterfaceConfig_ { -octet mode_; -octet value_; -octet reserve_[2]; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__interface_config__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LidarState_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LidarState_.idl deleted file mode 100644 index 6ae1481..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LidarState_.idl +++ /dev/null @@ -1,46 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/LidarState.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__lidar_state__idl__ -#define __unitree_go__msg__lidar_state__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct LidarState_ { -double stamp_; -string firmware_version_; -string software_version_; -string sdk_version_; -float sys_rotation_speed_; -float com_rotation_speed_; -octet error_state_; -float cloud_frequency_; -float cloud_packet_loss_rate_; -unsigned long cloud_size_; -unsigned long cloud_scan_num_; -float imu_frequency_; -float imu_packet_loss_rate_; -float imu_rpy_[3]; - -double serial_recv_stamp_; -unsigned long serial_buffer_size_; -unsigned long serial_buffer_read_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__lidar_state__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowCmd_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowCmd_.idl deleted file mode 100644 index 935655d..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowCmd_.idl +++ /dev/null @@ -1,51 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/LowCmd.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/dds_connext/BmsCmd_.idl" -#include "unitree_go/msg/dds_connext/MotorCmd_.idl" - -#ifndef __unitree_go__msg__low_cmd__idl__ -#define __unitree_go__msg__low_cmd__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct LowCmd_ { -octet head_[2]; - -octet level_flag_; -octet frame_reserve_; -unsigned long sn_[2]; - -unsigned long version_[2]; - -unsigned short bandwidth_; -unitree_go::msg::dds_::MotorCmd_ motor_cmd_[20]; - -unitree_go::msg::dds_::BmsCmd_ bms_cmd_; -octet wireless_remote_[40]; - -octet led_[12]; - -octet fan_[2]; - -octet gpio_; -unsigned long reserve_; -unsigned long crc_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__low_cmd__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowState_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowState_.idl deleted file mode 100644 index e07295c..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/LowState_.idl +++ /dev/null @@ -1,61 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/LowState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/dds_connext/BmsState_.idl" -#include "unitree_go/msg/dds_connext/IMUState_.idl" -#include "unitree_go/msg/dds_connext/MotorState_.idl" - -#ifndef __unitree_go__msg__low_state__idl__ -#define __unitree_go__msg__low_state__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct LowState_ { -octet head_[2]; - -octet level_flag_; -octet frame_reserve_; -unsigned long sn_[2]; - -unsigned long version_[2]; - -unsigned short bandwidth_; -unitree_go::msg::dds_::IMUState_ imu_state_; -unitree_go::msg::dds_::MotorState_ motor_state_[20]; - -unitree_go::msg::dds_::BmsState_ bms_state_; -short foot_force_[4]; - -short foot_force_est_[4]; - -unsigned long tick_; -octet wireless_remote_[40]; - -octet bit_flag_; -float adc_reel_; -octet temperature_ntc1_; -octet temperature_ntc2_; -float power_v_; -float power_a_; -unsigned short fan_frequency_[4]; - -unsigned long reserve_; -unsigned long crc_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__low_state__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorCmd_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorCmd_.idl deleted file mode 100644 index acbd929..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorCmd_.idl +++ /dev/null @@ -1,36 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/MotorCmd.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__motor_cmd__idl__ -#define __unitree_go__msg__motor_cmd__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct MotorCmd_ { -octet mode_; -float q_; -float dq_; -float tau_; -float kp_; -float kd_; -unsigned long reserve_[3]; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__motor_cmd__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorState_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorState_.idl deleted file mode 100644 index 0766406..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/MotorState_.idl +++ /dev/null @@ -1,40 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/MotorState.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__motor_state__idl__ -#define __unitree_go__msg__motor_state__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct MotorState_ { -octet mode_; -float q_; -float dq_; -float ddq_; -float tau_est_; -float q_raw_; -float dq_raw_; -float ddq_raw_; -octet temperature_; -unsigned long lost_; -unsigned long reserve_[2]; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__motor_state__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/PathPoint_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/PathPoint_.idl deleted file mode 100644 index a85bac7..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/PathPoint_.idl +++ /dev/null @@ -1,35 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/PathPoint.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__path_point__idl__ -#define __unitree_go__msg__path_point__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct PathPoint_ { -float t_from_start_; -float x_; -float y_; -float yaw_; -float vx_; -float vy_; -float vyaw_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__path_point__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Req_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Req_.idl deleted file mode 100644 index 10bbcaa..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Req_.idl +++ /dev/null @@ -1,30 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/Req.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__req__idl__ -#define __unitree_go__msg__req__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct Req_ { -string uuid_; -string body_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__req__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Res_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Res_.idl deleted file mode 100644 index 6bd68ce..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/Res_.idl +++ /dev/null @@ -1,32 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/Res.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__res__idl__ -#define __unitree_go__msg__res__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct Res_ { -string uuid_; -sequence data_; - -string body_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__res__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeCmd_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeCmd_.idl deleted file mode 100644 index d52c30d..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeCmd_.idl +++ /dev/null @@ -1,45 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/SportModeCmd.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/dds_connext/BmsCmd_.idl" -#include "unitree_go/msg/dds_connext/PathPoint_.idl" - -#ifndef __unitree_go__msg__sport_mode_cmd__idl__ -#define __unitree_go__msg__sport_mode_cmd__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct SportModeCmd_ { -octet mode_; -octet gait_type_; -octet speed_level_; -float foot_raise_height_; -float body_height_; -float position_[2]; - -float euler_[3]; - -float velocity_[2]; - -float yaw_speed_; -unitree_go::msg::dds_::BmsCmd_ bms_cmd_; -unitree_go::msg::dds_::PathPoint_ path_point_[30]; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__sport_mode_cmd__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeState_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeState_.idl deleted file mode 100644 index e746045..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/SportModeState_.idl +++ /dev/null @@ -1,51 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/SportModeState.idl -// generated code does not contain a copyright notice -#include "unitree_go/msg/dds_connext/IMUState_.idl" -#include "unitree_go/msg/dds_connext/TimeSpec_.idl" - -#ifndef __unitree_go__msg__sport_mode_state__idl__ -#define __unitree_go__msg__sport_mode_state__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct SportModeState_ { -unitree_go::msg::dds_::TimeSpec_ stamp_; -unsigned long error_code_; -unitree_go::msg::dds_::IMUState_ imu_state_; -octet mode_; -float progress_; -octet gait_type_; -float foot_raise_height_; -float position_[3]; - -float body_height_; -float velocity_[3]; - -float yaw_speed_; -float range_obstacle_[4]; - -short foot_force_[4]; - -float foot_position_body_[12]; - -float foot_speed_body_[12]; - - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__sport_mode_state__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/TimeSpec_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/TimeSpec_.idl deleted file mode 100644 index d0278a1..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/TimeSpec_.idl +++ /dev/null @@ -1,30 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/TimeSpec.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__time_spec__idl__ -#define __unitree_go__msg__time_spec__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct TimeSpec_ { -long sec_; -unsigned long nanosec_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__time_spec__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbState_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbState_.idl deleted file mode 100644 index 5b77fed..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbState_.idl +++ /dev/null @@ -1,47 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/UwbState.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__uwb_state__idl__ -#define __unitree_go__msg__uwb_state__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct UwbState_ { -octet version_[2]; - -octet channel_; -octet joy_mode_; -float orientation_est_; -float pitch_est_; -float distance_est_; -float yaw_est_; -float tag_roll_; -float tag_pitch_; -float tag_yaw_; -float base_roll_; -float base_pitch_; -float base_yaw_; -float joystick_[2]; - -octet error_state_; -octet buttons_; -octet enabled_from_app_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__uwb_state__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbSwitch_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbSwitch_.idl deleted file mode 100644 index 29e8f20..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/UwbSwitch_.idl +++ /dev/null @@ -1,29 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/UwbSwitch.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__uwb_switch__idl__ -#define __unitree_go__msg__uwb_switch__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct UwbSwitch_ { -octet enabled_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__uwb_switch__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/WirelessController_.idl b/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/WirelessController_.idl deleted file mode 100644 index f7ae454..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/msg/dds_connext/WirelessController_.idl +++ /dev/null @@ -1,33 +0,0 @@ -// generated from rosidl_generator_dds_idl/resource/idl.idl.em -// with input from unitree_go:msg/WirelessController.idl -// generated code does not contain a copyright notice - -#ifndef __unitree_go__msg__wireless_controller__idl__ -#define __unitree_go__msg__wireless_controller__idl__ - - -module unitree_go { - -module msg { - -module dds_ { - - -struct WirelessController_ { -float lx_; -float ly_; -float rx_; -float ry_; -unsigned short keys_; - -}; - - -}; // module dds_ - -}; // module msg - -}; // module unitree_go - - -#endif // __unitree_go__msg__wireless_controller__idl__ diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.bash b/deploy/robot_ws/install/unitree_go/share/unitree_go/package.bash deleted file mode 100644 index 0d83431..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.bash +++ /dev/null @@ -1,39 +0,0 @@ -# generated from colcon_bash/shell/template/package.bash.em - -# This script extends the environment for this package. - -# a bash script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - # the prefix is two levels up from the package specific share directory - _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)" -else - _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_bash_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source sh script of this package -_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/unitree_go/package.sh" - -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts -COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX" - -# source bash hooks -_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/unitree_go/local_setup.bash" - -unset COLCON_CURRENT_PREFIX - -unset _colcon_package_bash_source_script -unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.dsv b/deploy/robot_ws/install/unitree_go/share/unitree_go/package.dsv deleted file mode 100644 index 43ce51e..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.dsv +++ /dev/null @@ -1,14 +0,0 @@ -source;share/unitree_go/hook/cmake_prefix_path.ps1 -source;share/unitree_go/hook/cmake_prefix_path.dsv -source;share/unitree_go/hook/cmake_prefix_path.sh -source;share/unitree_go/hook/ld_library_path_lib.ps1 -source;share/unitree_go/hook/ld_library_path_lib.dsv -source;share/unitree_go/hook/ld_library_path_lib.sh -source;share/unitree_go/hook/pythonpath.ps1 -source;share/unitree_go/hook/pythonpath.dsv -source;share/unitree_go/hook/pythonpath.sh -source;share/unitree_go/local_setup.bash -source;share/unitree_go/local_setup.dsv -source;share/unitree_go/local_setup.ps1 -source;share/unitree_go/local_setup.sh -source;share/unitree_go/local_setup.zsh diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.ps1 b/deploy/robot_ws/install/unitree_go/share/unitree_go/package.ps1 deleted file mode 100644 index 5d026e2..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.ps1 +++ /dev/null @@ -1,118 +0,0 @@ -# generated from colcon_powershell/shell/template/package.ps1.em - -# function to append a value to a variable -# which uses colons as separators -# duplicates as well as leading separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -function colcon_append_unique_value { - param ( - $_listname, - $_value - ) - - # get values from variable - if (Test-Path Env:$_listname) { - $_values=(Get-Item env:$_listname).Value - } else { - $_values="" - } - $_duplicate="" - # start with no values - $_all_values="" - # iterate over existing values in the variable - if ($_values) { - $_values.Split(";") | ForEach { - # not an empty string - if ($_) { - # not a duplicate of _value - if ($_ -eq $_value) { - $_duplicate="1" - } - if ($_all_values) { - $_all_values="${_all_values};$_" - } else { - $_all_values="$_" - } - } - } - } - # append only non-duplicates - if (!$_duplicate) { - # avoid leading separator - if ($_all_values) { - $_all_values="${_all_values};${_value}" - } else { - $_all_values="${_value}" - } - } - - # export the updated variable - Set-Item env:\$_listname -Value "$_all_values" -} - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -function colcon_prepend_unique_value { - param ( - $_listname, - $_value - ) - - # get values from variable - if (Test-Path Env:$_listname) { - $_values=(Get-Item env:$_listname).Value - } else { - $_values="" - } - # start with the new value - $_all_values="$_value" - # iterate over existing values in the variable - if ($_values) { - $_values.Split(";") | ForEach { - # not an empty string - if ($_) { - # not a duplicate of _value - if ($_ -ne $_value) { - # keep non-duplicate values - $_all_values="${_all_values};$_" - } - } - } - } - # export the updated variable - Set-Item env:\$_listname -Value "$_all_values" -} - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -function colcon_package_source_powershell_script { - param ( - $_colcon_package_source_powershell_script - ) - # source script with conditional trace output - if (Test-Path $_colcon_package_source_powershell_script) { - if ($env:COLCON_TRACE) { - echo ". '$_colcon_package_source_powershell_script'" - } - . "$_colcon_package_source_powershell_script" - } else { - Write-Error "not found: '$_colcon_package_source_powershell_script'" - } -} - - -# a powershell script is able to determine its own path -# the prefix is two levels up from the package specific share directory -$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName - -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_go/hook/cmake_prefix_path.ps1" -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_go/hook/ld_library_path_lib.ps1" -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_go/hook/pythonpath.ps1" -colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/unitree_go/local_setup.ps1" - -Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.sh b/deploy/robot_ws/install/unitree_go/share/unitree_go/package.sh deleted file mode 100644 index 15b9264..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.sh +++ /dev/null @@ -1,89 +0,0 @@ -# generated from colcon_core/shell/template/package.sh.em - -# This script extends the environment for this package. - -# function to prepend a value to a variable -# which uses colons as separators -# duplicates as well as trailing separators are avoided -# first argument: the name of the result variable -# second argument: the value to be prepended -_colcon_prepend_unique_value() { - # arguments - _listname="$1" - _value="$2" - - # get values from variable - eval _values=\"\$$_listname\" - # backup the field separator - _colcon_prepend_unique_value_IFS=$IFS - IFS=":" - # start with the new value - _all_values="$_value" - # workaround SH_WORD_SPLIT not being set in zsh - if [ "$(command -v colcon_zsh_convert_to_array)" ]; then - colcon_zsh_convert_to_array _values - fi - # iterate over existing values in the variable - for _item in $_values; do - # ignore empty strings - if [ -z "$_item" ]; then - continue - fi - # ignore duplicates of _value - if [ "$_item" = "$_value" ]; then - continue - fi - # keep non-duplicate values - _all_values="$_all_values:$_item" - done - unset _item - # restore the field separator - IFS=$_colcon_prepend_unique_value_IFS - unset _colcon_prepend_unique_value_IFS - # export the updated variable - eval export $_listname=\"$_all_values\" - unset _all_values - unset _values - - unset _value - unset _listname -} - -# since a plain shell script can't determine its own path when being sourced -# either use the provided COLCON_CURRENT_PREFIX -# or fall back to the build time prefix (if it exists) -_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/unitree/locomotion/Go2Py/deploy/robot_ws/install/unitree_go" -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then - echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 - unset _colcon_package_sh_COLCON_CURRENT_PREFIX - return 1 - fi - COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" -fi -unset _colcon_package_sh_COLCON_CURRENT_PREFIX - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_sh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# source sh hooks -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_go/hook/cmake_prefix_path.sh" -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_go/hook/ld_library_path_lib.sh" -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_go/hook/pythonpath.sh" -_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_go/local_setup.sh" - -unset _colcon_package_sh_source_script -unset COLCON_CURRENT_PREFIX - -# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.xml b/deploy/robot_ws/install/unitree_go/share/unitree_go/package.xml deleted file mode 100644 index 1a26d14..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - unitree_go - 0.0.0 - TODO: Package description - czk - TODO: License declaration - - rosidl_default_generators - rosidl_default_runtime - rosidl_interface_packages - ament_cmake - - geometry_msgs - - ament_lint_auto - ament_lint_common - - - ament_cmake - - diff --git a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.zsh b/deploy/robot_ws/install/unitree_go/share/unitree_go/package.zsh deleted file mode 100644 index e8c5370..0000000 --- a/deploy/robot_ws/install/unitree_go/share/unitree_go/package.zsh +++ /dev/null @@ -1,50 +0,0 @@ -# generated from colcon_zsh/shell/template/package.zsh.em - -# This script extends the environment for this package. - -# a zsh script is able to determine its own path if necessary -if [ -z "$COLCON_CURRENT_PREFIX" ]; then - # the prefix is two levels up from the package specific share directory - _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" -else - _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" -fi - -# function to source another script with conditional trace output -# first argument: the path of the script -# additional arguments: arguments to the script -_colcon_package_zsh_source_script() { - if [ -f "$1" ]; then - if [ -n "$COLCON_TRACE" ]; then - echo "# . \"$1\"" - fi - . "$@" - else - echo "not found: \"$1\"" 1>&2 - fi -} - -# function to convert array-like strings into arrays -# to workaround SH_WORD_SPLIT not being set -colcon_zsh_convert_to_array() { - local _listname=$1 - local _dollar="$" - local _split="{=" - local _to_array="(\"$_dollar$_split$_listname}\")" - eval $_listname=$_to_array -} - -# source sh script of this package -_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/unitree_go/package.sh" -unset convert_zsh_to_array - -# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts -COLCON_CURRENT_PREFIX="$_colcon_package_zsh_COLCON_CURRENT_PREFIX" - -# source zsh hooks -_colcon_package_zsh_source_script "$COLCON_CURRENT_PREFIX/share/unitree_go/local_setup.zsh" - -unset COLCON_CURRENT_PREFIX - -unset _colcon_package_zsh_source_script -unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/deploy/robot_ws/log/COLCON_IGNORE b/deploy/robot_ws/log/COLCON_IGNORE deleted file mode 100644 index e69de29..0000000 diff --git a/deploy/robot_ws/log/latest b/deploy/robot_ws/log/latest deleted file mode 120000 index b57d247..0000000 --- a/deploy/robot_ws/log/latest +++ /dev/null @@ -1 +0,0 @@ -latest_build \ No newline at end of file diff --git a/deploy/robot_ws/log/latest_build b/deploy/robot_ws/log/latest_build deleted file mode 120000 index 15ea434..0000000 --- a/deploy/robot_ws/log/latest_build +++ /dev/null @@ -1 +0,0 @@ -build_2024-02-09_01-52-38 \ No newline at end of file diff --git a/deploy/robot_ws/src/go2py_node/src/bridge.cpp b/deploy/robot_ws/src/go2py_node/src/bridge.cpp index 8ac57b4..5c9607f 100644 --- a/deploy/robot_ws/src/go2py_node/src/bridge.cpp +++ b/deploy/robot_ws/src/go2py_node/src/bridge.cpp @@ -42,7 +42,11 @@ class Custom: public rclcpp::Node //Go2 lowlevel interface init_lowcmd(); lowstate_suber = this->create_subscription( - "lowstate", 10, std::bind(&Custom::lowstate_callback, this, std::placeholders::_1)); + "lowstate", 1, std::bind(&Custom::lowstate_callback, this, std::placeholders::_1)); + + lowcmd_suber = this->create_subscription( + "/go2/lowcmd", 1, std::bind(&Custom::lowcmd_callback, this, std::placeholders::_1)); + lowcmd_puber = this->create_publisher("/lowcmd", 10); } @@ -67,7 +71,9 @@ class Custom: public rclcpp::Node // Lowlevel interface void lowstate_callback(unitree_go::msg::LowState::SharedPtr data); + void lowcmd_callback(unitree_go::msg::LowCmd::SharedPtr data); rclcpp::Subscription::SharedPtr lowstate_suber; + rclcpp::Subscription::SharedPtr lowcmd_suber; // A struct to store the highlevel states for later use rclcpp::Publisher::SharedPtr lowcmd_puber; unitree_go::msg::LowCmd lowcmd_msg; @@ -220,33 +226,23 @@ void Custom::twistCmdCallback(const geometry_msgs::msg::TwistStamped::SharedPtr { auto stamp_now = std::chrono::high_resolution_clock::now(); last_highcmd_stamp = std::chrono::duration_cast(stamp_now.time_since_epoch()).count(); - // reset = 0; sport_req.Move(highreq, msg->twist.linear.x, msg->twist.linear.y, msg->twist.angular.z); // Publish request messages with desired body velocity highreq_puber->publish(highreq); } -void lowcmd_callback(const unitree_go::msg::LowCmd::SharedPtr msg) +void Custom::lowcmd_callback(unitree_go::msg::LowCmd::SharedPtr data) { - // lowcmd_msg = *msg; - // lowcmd_puber->publish(lowcmd_msg); - // Toque controle, set RL_2 toque - // cmd_msg.motor_cmd[RL_2].q = PosStopF; // Set to stop position(rad) - // cmd_msg.motor_cmd[RL_2].kp = 0; - // cmd_msg.motor_cmd[RL_2].dq = VelStopF; // Set to stop angular velocity(rad/s) - // cmd_msg.motor_cmd[RL_2].kd = 0; - // cmd_msg.motor_cmd[RL_2].tau = 1; // target toque is set to 1N.m - - // // Poinstion(rad) control, set RL_0 rad - // cmd_msg.motor_cmd[RL_0].q = 0; // Taregt angular(rad) - // cmd_msg.motor_cmd[RL_0].kp = 10; // Poinstion(rad) control kp gain - // cmd_msg.motor_cmd[RL_0].dq = 0; // Taregt angular velocity(rad/ss) - // cmd_msg.motor_cmd[RL_0].kd = 1; // Poinstion(rad) control kd gain - // cmd_msg.motor_cmd[RL_0].tau = 0; // Feedforward toque 1N.m - - // get_crc(cmd_msg); //Check motor cmd crc - - // cmd_puber->publish(cmd_msg); //Publish lowcmd message + for(int i=0; i<12; i++) + { + lowcmd_msg.motor_cmd[i].q = data->motor_cmd[i].q; // Taregt angular(rad) + lowcmd_msg.motor_cmd[i].kp = data->motor_cmd[i].kp; // Poinstion(rad) control kp gain + lowcmd_msg.motor_cmd[i].dq = data->motor_cmd[i].dq; // Taregt angular velocity(rad/ss) + lowcmd_msg.motor_cmd[i].kd = data->motor_cmd[i].kd; // Poinstion(rad) control kd gain + lowcmd_msg.motor_cmd[i].tau = data->motor_cmd[i].tau; // Feedforward toque 1N.m + get_crc(lowcmd_msg); //Compute the CRC and load it into the message + lowcmd_puber->publish(lowcmd_msg); //Publish lowcmd message + } } int main(int argc, char **argv) diff --git a/deploy/robot_ws/install/COLCON_IGNORE b/draft.ipynb similarity index 100% rename from deploy/robot_ws/install/COLCON_IGNORE rename to draft.ipynb diff --git a/examples/highlevel_ros2_interface.ipynb b/examples/highlevel_ros2_interface.ipynb index 826e523..7c30b2d 100644 --- a/examples/highlevel_ros2_interface.ipynb +++ b/examples/highlevel_ros2_interface.ipynb @@ -12,21 +12,12 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pygame 2.5.2 (SDL 2.28.2, Python 3.8.18)\n", - "Hello from the pygame community. https://www.pygame.org/contribute.html\n" - ] - } - ], + "outputs": [], "source": [ "from Go2Py.joy import Logitech3DPro\n", - "# joy = Logitech3DPro(joy_id=0)" + "# joy = Logitech3DPro(joy_id=0) " ] }, { @@ -40,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -53,46 +44,6 @@ "ros2_exec_manager.start()" ] }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'float' object has no attribute 'nanosec'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[4], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# robot.getIMU()\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43mrobot\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetOdometry\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mstamp_nanosec\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnanosec\u001b[49m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'float' object has no attribute 'nanosec'" - ] - } - ], - "source": [ - "# robot.getIMU()\n", - "robot.getOdometry()['stamp_nanosec'].nanosec" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [], - "source": [ - "from nav_msgs.msg import Odometry " - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "robot.setCommands(0, 0, 0.1)" - ] - }, { "cell_type": "markdown", "metadata": {},

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