MSYS2 5:Udacity Selt-Driving Car ND 环境配置
博客转载自:https://medium.com/@fzubair/carnd-term2-gcc-setup-on-windows-287e1fd36845
2018/6/2 — mingw32/cmake doesn’t work in the latest msys2. Have added step 7 to use “cmake” installed from cmake.org instead
- Download latest msys2 installer from https://www.msys2.org/ (orjust download this version http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe)
- Run the installer, keep c:\msys64 as default, when it finishes, choose “Run MSYS now”
-
When the command prompt window opens type:
pacman -Syu //更新系统
A message will appear to close the terminal window. Close the window. (it might take long to close, and you might even have to kill it)
Note: Depending on the version you download from msys2, it might say everything is up to date, just continue.
3. Change home location by opening c:\msys64\etc\nsswitch.conf in any editor and change db_home to:
db_home: windows desc //将home定位到windows的home,不修改则在/home/username
4. Open MSYS2 MinGW 32bit and this time write:
-
pacman -Su //
Note: Depending on the version you downloaded, it might say everything is up to date, so you can just continue. 可能下载速度很慢,可以通过更换源解决,方案参考 MSYS2 更换国内源
5.Download gcc-5.4
http://repo.msys2.org/mingw/i686/mingw-w64-i686-gcc-libs-5.4.0-1-any.pkg.tar.xz
http://repo.msys2.org/mingw/i686/mingw-w64-i686-gcc-libgfortran-5.4.0-1-any.pkg.tar.xz
http://repo.msys2.org/mingw/i686/mingw-w64-i686-gcc-5.4.0-1-any.pkg.tar.xz
http://repo.msys2.org/mingw/i686/mingw-w64-i686-gcc-fortran-5.4.0-1-any.pkg.tar.xz
http://repo.msys2.org/mingw/i686/mingw-w64-i686-gdb-7.11.1-4-any.pkg.tar.xz
或者使用以命令安装Toolchain
pacman -Syu mingw-w64-i686-toolchain
6.Install gcc / other packages:
$ cd ~/Downloads $ pacman -U mingw-w64-i686-gcc-libgfortran-5.4.0-1-any.pkg.tar.xz mingw-w64-i686-gcc-libs-5.4.0-1-any.pkg.tar.xz mingw-w64-i686-gcc-5.4.0-1-any.pkg.tar.xz
mingw-w64-i686-gdb-7.11.1-4-any.pkg.tar.xz mingw-w64-i686-gcc-fortran-5.4.0-1-any.pkg.tar.xz $ pacman -S mingw-w64-i686-make git make tar unzip patch automake autoconf mingw-w64-i686-python2 mingw-w64-i686-python2-matplotlib mingw-w64-i686-python2-pip
Confirm gcc is working:
g++ --version
7. Make sure you have cmake installed. If not, install cmake from https://cmake.org (or just install this version https://cmake.org/files/v3.11/cmake-3.11.3-win64-x64.msi)
Projects
Build uWebSockets for Mingw.
git clone https://github.com/drganjoo/uWebSockets.git cd uWebSockets git checkout carnd-mingw mkdir build cd build "C:\Program Files\CMake\bin\cmake" -G "MSYS Makefiles" .. make make install
- ExtendedEKF
git clone https://github.com/udacity/CarND-Extended-Kalman-Filter-Project.git
Download the changed CMakeLists.txt or you can make the following changes to CMakeLists.txt file yourself:
Towards the bottom of the file add:
.... target_link_libraries(ExtendedKF z ssl uv uWS) if (MINGW) target_link_libraries(ExtendedKF ws2_32) endif()
Changed main.cpp to make it work on Windows:
Line #175, currently says:
if (h.listen(port))
Change this to (this change will work on Linux / MacOS as well, so you can submit your code with this change in it):
if (h.listen("127.0.0.1", port))
Build project:
mkdir build cd build "C:\Program Files\CMake\bin\cmake" -G "MSYS Makefiles" .. make
If you want to run it, you need to provide return values in tools.cpp otherwise the program will crash. Open src/tools.cpp and write the following for time being:
VectorXd Tools::CalculateRMSE(const vector<VectorXd> &estimations, const vector<VectorXd> &ground_truth) { /** TODO: * Calculate the RMSE here. */ VectorXd temp(4); temp << 1, 2, 3, 4; return temp; } MatrixXd Tools::CalculateJacobian(const VectorXd& x_state) { /** TODO: * Calculate a Jacobian here. */ MatrixXd temp(3,4); return temp; }
Run the simulator and you should be able to see the 1,2,3,4 being sent to the simulator:
2.Unscented Kalman Filter Project
git clone https://github.com/udacity/CarND-Unscented-Kalman-Filter-Project.git
Download the changed CMakeLists.txt or you can make the following changes to CMakeLists.txt file yourself:
Towards the bottom of the file add:
.... target_link_libraries(UnscentedKF z ssl uv uWS) if (MINGW) target_link_libraries(UnscentedKF ws2_32) endif()
Changed main.cpp to make it work on Windows:
Line #178, currently says:
if (h.listen(port))
Change this to (this works on Linux / MacOS as well):
if (h.listen(“127.0.0.1”, port))
Build project:
mkdir build cd build cmake -G "MSYS Makefiles" .. make
3. CarND-MPC-Quizes:
Open MinGW32 Shell (Start->MSYS MinGW32)
$ git clone https://github.com/udacity/CarND-MPC-Quizzes.git $ cd CarND-MPC-Quizzes $ wget https://www.coin-or.org/download/source/Ipopt/Ipopt-3.12.8.zip $ unzip Ipopt-3.12.8.zip
Install ipopt from the shell:
$ cd Ipopt-3.12.8/ $ ../install_ipopt.sh . $ cd ..
Install cppad:
$ wget https://www.coin-or.org/download/source/CppAD/cppad-20180000.0.gpl.tgz $ tar xvzf cppad-20180000.0.gpl.tgz $ cd cppad-20180000.0 $ mkdir build && cd build $ "C:\Program Files\CMake\bin\cmake" -G "MSYS Makefiles" -D cppad_prefix=/c/msys64/usr/local .. $ make check
One test will fail, but you can ignore it:
$ make install $ cd ../..
3a) CarND-MPC-Quizzes/global_kinematic_model
Add on top of main.cpp:
// In this quiz you'll implement the global kinematic model. #define _USE_MATH_DEFINES #include <math.h> ....
To build:
make build cd build "C:\Program Files\CMake\bin\cmake" -G "MSYS Makefiles" .. make
3b) CarND-MPC-Quizes/mpc_to_line
Change CMakeLists.txt (or Download)
if(MINGW) set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 0) endif() add_executable(mpc ${sources}) if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_link_libraries(mpc ipopt python2.7) elseif (MINGW) target_link_libraries(mpc ipopt coinasl coinblas coinasl coinmumps coinlapack gfortran ws2_32 python2.7) else() target_link_libraries(mpc ipopt python27 ) endif()
Build:
mkdir build cd build "C:\Program Files\CMake\bin\cmake" -G "MSYS Makefiles" .. make ./mpc
If you get an error regarding python, set the following environment variables and then run mpc.exe again
$ export PYTHONPATH=/mingw32/bin:/mingw32/lib/python2.7/site-packages:/mingw32/lib/python2.7/lib-dynload:/mingw32/lib/python2.7 $ export PYTHONHOME=/mingw32/bin
3c) CarND-MPC-Quizes/polyfit
mkdir build cd build "C:\Program Files\CMake\bin\cmake" -G "MSYS Makefiles" .. make
4) CarND-MPC-Project
git clone https://github.com/udacity/CarND-MPC-Project.git
Towards the bottom, make following changes to CMakeLists.txt (or Download):
if(MINGW) set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 0) set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 0) endif() target_link_libraries(mpc ipopt z ssl uv uWS) if (MINGW) target_link_libraries(mpc ipopt coinasl coinblas coinasl coinmumps coinlapack gfortran ws2_32) endif()
Changed main.cpp to make it work on Windows:
Line #1: Add the following:
#define _USE_MATH_DEFINES #include <math> ...
Line #179, currently says:
if (h.listen(port))
Change this to (this works on Linux / MacOS as well):
if (h.listen(“127.0.0.1”, port))
Build project:
mkdir build cd build "C:\Program Files\CMake\bin\cmake" -G "MSYS Makefiles" .. make
CLion Setup
Configure->Settings, under Build, Execution, Deployment set MinGW folder:
You can open project using ‘Import Project from Sources’ and choosing the root folder of the project e.g. ‘CarND-Extended-Kalman-Filter-Project’. Just choose Open Project instead of ‘Overwrite CMakeLists.txt’
If you want to debug, then you can either:
- Set the working directory to c:/msys64/mingw32/bin. In CLion IDE, choose Run →Edit Configuration
-
OR you can add c:/msys64/ming32/bin to System Path using environment variables