QNX Support
Description
This issue will track the progress of porting Autoware.Auto for QNX. The port will use Foxy as it's ROS2 distribution
Steps to create an Autoware - QNX development environment: (NOTE: Steps are work in progress, this is just outline for the build process and to keep record of the steps)
Build ROS2 Foxy for QNX
mkdir ~/AutowareAuto
cd ~/AutowareAuto
git clone https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto.git .
Clone toolchain file, build scripts and directory tree
./create-stage.sh
cd qnx_deps/
vcs import src < awauto-qnx.repos
mkdir ~/AutowareAuto/src/external
cd ~/AutowareAuto/src/external
git clone -b foxy https://github.com/ros/diagnostics.git
git clone -b ros2 https://github.com/ros-geographic-info/geographic_info.git
git clone -b ros2 https://github.com/ros/angles.git
git clone -b 0.0.2 https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs.git
git clone -b ros2 https://github.com/ros-drivers/nmea_msgs.git
git clone https://github.com/ros-drivers/transport_drivers.git
git clone https://github.com/fzi-forschungszentrum-informatik/Lanelet2.git
git clone https://github.com/KIT-MRT/mrt_cmake_modules.git
git clone https://github.com/CGAL/cgal.git --> requires GMP https://gmplib.org/ & mpfr https://www.mpfr.org/
cd ~/AutowareAuto
./build-autoware.sh
Issues:
- aninnymouse/mpc#72 --> got the MPC controller building via Option 1 which states:
When building mpc_controller, a code_generator needs to be executed to generate code using a given model and a quadratic problem solver. If acado code_generator is architecture independent then it can be executed on the host system to generate the code which then can be cross compiled to generate the target mpc library.
-
packages with std::experimental::optional have to be changed to use std::optional and -std=c++17 to compile using libc++ v8 in qnx sdp7.1
-
when building point_cloud_mapper using c++17 because of note above versions of boost and pcl has to be updated to 1.74.0 and 1.11.0, respectively
-
boost asio fails to detect string_view on libc++, have to manually add flag -DBOOST_ASIO_HAS_STD_STRING_VIEW=1: affected packages: velodyne_node
-
When cross-compiling parking_planner, parking_planner_solver_generator has to be compiled to run on host system to generate the code which then needs to be cross compiled. parking_planner_solver_generator links against casadi which also needs to be built for the host system. Ipopt is also needed on host to build libcasadi_nlpsol_ipopt.so as part of casadi optional solvers: https://github.com/casadi/casadi/wiki/InstallationLinux
casadi will also need to be cross-compiled to build parking_planner. When cross compiling casadi after clonning source disable fortran by commenting out the section that checks for it. Only libcasadi.so is needed when cross-compiling libparking_planner.so.
- autoware_rviz_plugins COLCON_IGNOREd
Porting Completed! Successfully built for aarch64 and x86_64. Now testing and modifying software to run on the Lincoln MKZ.