Skip to content

Latest commit

 

History

History
28 lines (20 loc) · 6.01 KB

README.md

File metadata and controls

28 lines (20 loc) · 6.01 KB

ROS2 cross builder for jetson

some quick notes

This build process is intended to be run on ARM64 silicon and not x86. An x86 machine however can be patched to run this by running the docker_arm64_qemu.bash script contained in this directory.

Caveat: When running on x86, the process will take an 8x performance hit. This means that a build will take about 8x longer to run than an arm counterpart. Even a low spec ARM64 mac as of writing this will outstrip a 16 core desktop by hours.

Workflow

To run a cross build, use the following steps.

  1. Install docker and add your user to the docker group to enable sudoless access to docker.
  2. Make sure python3 is installed and up to date. All scripts use stdlib functionality so no addtional packages are needed.
  3. Run the builder script by invoking python3 cross_build.py. This will walk the user through a configuration menu to set up the build. This may take hours to complete the build.
  4. For subsequent re-runs the -p flag can be used. This will used the saved settings from the last run. These settings are saved to /tmp/cross_build_cf.yaml. The settings file can be copied to a permanent directory and passed in via the argument --cfg <path/to/cfg/file> to support pre-configured re-runs.

Build Profile Listing

To generate new profiles more easily, the use of rosinstall generator is recommended. It is a tool created for reos development to walk dependency trees automatically between ros pkgs. Here is an example command to build up to the client libraries RCLCPP and RCLPY rosinstall_generator --rosdistro humble --format repos --deps rclcpp rclpy. The output of the command will be the text of the .repos file. The .pkgs and .meta files can be copied and customized based on other required dependencies.

humble_core_jetson

This is a stripped down version of ROS that simply goes up to rclcpp and rclpy

humble_base_jetson

This is a stripped down version of ROS almost ready for vehicle use

humble_desktop_jetson

This is the default ros2.repos made publicly availiable on github from the ros2 repository: https://github.com/ros2/ros2/tree/humble-release

humble_robot_jetson

This was generated with the following rosdep command below. Addtionally micro_ros_agent, micro_ros_msgs, and micro_xrce_dds_agent were addded to the .repos file manually. rosinstall_generator --rosdistro humble --format repos --deps action_msgs action_tutorials_cpp action_tutorials_interfaces action_tutorials_py actionlib_msgs ament_cmake ament_cmake_auto ament_cmake_copyright ament_cmake_core ament_cmake_cppcheck ament_cmake_cpplint ament_cmake_export_definitions ament_cmake_export_dependencies ament_cmake_export_include_directories ament_cmake_export_interfaces ament_cmake_export_libraries ament_cmake_export_link_flags ament_cmake_export_targets ament_cmake_flake8 ament_cmake_gen_version_h ament_cmake_gmock ament_cmake_gtest ament_cmake_include_directories ament_cmake_libraries ament_cmake_lint_cmake ament_cmake_pep257 ament_cmake_pytest ament_cmake_python ament_cmake_ros ament_cmake_target_dependencies ament_cmake_test ament_cmake_uncrustify ament_cmake_version ament_cmake_xmllint ament_copyright ament_cppcheck ament_cpplint ament_flake8 ament_index_cpp ament_index_python ament_lint ament_lint_auto ament_lint_cmake ament_lint_common ament_package ament_pep257 ament_uncrustify ament_xmllint angles behaviortree_cpp_v3 builtin_interfaces camera_calibration_parsers camera_info_manager class_loader common_interfaces composition composition_interfaces console_bridge_vendor control_msgs control_toolbox cv_bridge depthimage_to_laserscan diagnostic_aggregator diagnostic_msgs diagnostic_updater domain_coordinator eigen3_cmake_module fastrtps_cmake_module geographic_msgs geometry2 geometry_msgs image_geometry image_proc image_publisher image_transport interactive_markers joint_state_publisher kdl_parser keyboard_handler laser_geometry launch launch_msgs launch_ros launch_service launch_xml launch_yaml libcurl_vendor libstatistics_collector libyaml_vendor lifecycle lifecycle_msgs map_msgs message_filters micro_ros_setup nav_msgs orocos_kdl_vendor osrf_pycommon pcl_conversions pcl_msgs pendulum_control pendulum_msgs pluginlib pybind11_vendor python_cmake_module rcl rcl_action rcl_interfaces rcl_lifecycle rcl_logging_interface rcl_logging_spdlog rcl_yaml_param_parser rclcpp rclcpp_action rclcpp_components rclcpp_lifecycle rclpy rcpputils rcutils resource_retriever rmw rmw_dds_common rmw_fastrtps_cpp rmw_fastrtps_shared_cpp rmw_implementation rmw_implementation_cmake robot_localization robot_state_publisher ros2action ros2bag ros2cli ros2cli_common_extensions ros2component ros2doctor ros2interface ros2launch ros2lifecycle ros2multicast ros2node ros2param ros2pkg ros2run ros2service ros2topic ros_environment ros_workspace rosbag2 rosbag2_compression rosbag2_compression_zstd rosbag2_cpp rosbag2_interfaces rosbag2_py rosbag2_storage rosbag2_storage_default_plugins rosbag2_transport rosgraph_msgs rosidl_adapter rosidl_cli rosidl_cmake rosidl_default_generators rosidl_default_runtime rosidl_generator_c rosidl_generator_cpp rosidl_generator_py rosidl_parser rosidl_runtime_c rosidl_runtime_cpp rosidl_runtime_py rosidl_typesupport_c rosidl_typesupport_cpp rosidl_typesupport_fastrtps_c rosidl_typesupport_fastrtps_cpp rosidl_typesupport_interface rosidl_typesupport_introspection_c rosidl_typesupport_introspection_cpp rpyutils sensor_msgs sensor_msgs_py shape_msgs shared_queues_vendor spdlog_vendor sqlite3_vendor sros2 sros2_cmake statistics_msgs std_msgs std_srvs stereo_msgs tango_icons_vendor teleop_twist_joy teleop_twist_keyboard tf2 tf2_bullet tf2_eigen tf2_eigen_kdl tf2_geometry_msgs tf2_kdl tf2_msgs tf2_py tf2_ros tf2_ros_py tf2_sensor_msgs tf2_tools tf_transformations tinyxml2_vendor tinyxml_vendor tlsf tlsf_cpp topic_monitor tracetools tracetools_image_pipeline trajectory_msgs uncrustify_vendor unique_identifier_msgs urdf urdf_parser_plugin vision_msgs visualization_msgs xacro yaml_cpp_vendor zstd_vendor compressed_depth_image_transport compressed_image_transport image_transport_plugins