虚拟环境下编译ros2节点需注意的地方
问题1:编译后运行发现虚拟环境里的依赖modules没有加载进来
原因,使用了colcon build直接进行的编译,导致local_setup.bash里
# check environment variable for custom Python executable
if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; thenif [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; thenecho "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist"return 1fi_colcon_python_executable="$COLCON_PYTHON_EXECUTABLE"
else# try the Python executable known at configure time#问题在这里应用的是/usr/bin/python3_colcon_python_executable="/usr/bin/python3"# if it doesn't exist try a fall backif [ ! -f "$_colcon_python_executable" ]; thenif ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; thenecho "error: unable to find python3 executable"return 1fi_colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"`fi
fi
我们要在虚拟环境下 这样执行才能对,
python3 -m colcon build
在虚拟环境下调用了虚拟环境里的python3 这样在生成local_setup.bash的时候是这样的
# check environment variable for custom Python executable
if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; thenif [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; thenecho "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist"return 1fi_colcon_python_executable="$COLCON_PYTHON_EXECUTABLE"
else# try the Python executable known at configure time_colcon_python_executable="/root/ros2_ws/rail/robotenv/bin/python3"# if it doesn't exist try a fall backif [ ! -f "$_colcon_python_executable" ]; thenif ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; thenecho "error: unable to find python3 executable"return 1fi_colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"`fi
fi
实际最终移植我还是会担心root/ros2_ws/rail 找不到的问题。