• Franka机械臂使用记录


    Ubuntu 18.04 安装ros melodic使用Franka记录

    1. Franka 配置

    Franka 安装配置,包括libfranka和franka_ros,大部分文档里写的很清楚。

    Franka控制接口(FCI)文档 — Franka Control Interface (FCI) 文档

    需要注意的点, ros-melodic-libfranka 安装的时候会自动安装0.9.0,与我目前的Franka固件版本不对应(版本兼容性在文档里有)。

    运行的时候报:

    (server version:4, library version:5)

    因此需要源码编译libfranka 和franka-ros. 

    确保之前安装的/opt/ros/melodic下关于libfranka的都卸载干净。

    然后安装franka-ros时候cmake的时候,要使用源码编译的libfranka的绝对路径

    catkin_make -DCMAKE_BUILD_TYPE=Release -DFranka_DIR:PATH= 绝对路径!

    2. 实时操作系统安装显卡驱动

    按照franka的教程,安装了实时操作系统后,显卡驱动掉了。

    需要在实时操作系统下重装显卡驱动

    ubuntu打实时内核补丁教程以及安装后显卡驱动问题解决方法_Robot_For_Better的博客-CSDN博客_ubuntu补丁安装教程
    具体流程可以简述为

    1. 在原来的系统中安装显卡驱动,选择安装dkms ‘yes’,这个是与自动编译更新内核相关。

    2. 切回实时操作系统,运行以下脚本。

    1. #!/bin/bash
    2. BUILD_BASE=`pwd`
    3. NV_FILE="NVIDIA-Linux-x86_64-xxx.run" # 这里改成自己下载的.run文件名(之前安装过的)
    4. #NV_URL="https://us.download.nvidia.cn/XFree86/Linux-x86_64/430.50/${NV_FILE}" # 之前已经下好了显卡驱动.run文件,就不用从网上下载了,直接注释掉,而且如果要下载的话,则慢
    5. NEED_TO_COMPILE_NV_KO=1
    6. function clean_env() {
    7. [ -d ./${NV_DIR} ] && rm -rf ./${NV_DIR}
    8. }
    9. function check_env() {
    10. # check if in rt kernel
    11. uname -r | grep rt 1>/dev/null 2>&1
    12. if [ $? -ne 0 ]
    13. then
    14. echo "Not in rt kernel, Please install apollo kernel and reboot machine first."
    15. exit 2
    16. fi
    17. # check if nv ko already in kernel
    18. if [ ! -f /lib/modules/`uname -r`/kernel/drivers/video/nvidia.ko ]
    19. then
    20. export NEED_TO_COMPILE_NV_KO=1
    21. fi
    22. }
    23. function prepare_nv() {
    24. ## download nv install file from nvidia home page
    25. #if [ ! -f ./${NV_FILE} ]
    26. #then
    27. # echo "Downloading ${NV_FILE} from nvidia website..."
    28. # wget ${NV_URL} -O ${NV_FILE}
    29. # if [ $? -ne 0 ]
    30. # then
    31. # echo "Downloading ${NV_FILE} failed, please check your network connection!"
    32. # rm -rf ./${NV_FILE}
    33. # exit 1
    34. # fi
    35. #fi
    36. ###########上面是下载驱动的代码,我们已经提前下载好了,就不需要这段代码了,直接注释掉############
    37. # +x
    38. chmod +x ./${NV_FILE}
    39. echo "Extracting nvidia install run file..."
    40. ./${NV_FILE} -x 1>/dev/null 2>&1
    41. NV_DIR="`echo ${NV_FILE} | awk -F '.run' '{print $1}'`"
    42. NV_VERSION="`echo ${NV_FILE} | awk -F '-' '{print $4}' | awk -F '.run' '{print $1}'`"
    43. export NV_DIR
    44. export NV_VERSION
    45. export NVIDIA_SOURCE="${NV_DIR}/kernel"
    46. }
    47. function install_lib() {
    48. NV_LIB_OUTPUT_PATH="/usr/lib/x86_64-linux-gnu/"
    49. NV_BIN_OUTPUT_PATH="/usr/bin/"
    50. [ -f ./${NV_DIR}/libnvidia-ml.so.${NV_VERSION} ] && /bin/cp -f ./${NV_DIR}/libnvidia-ml.so.${NV_VERSION} ${NV_LIB_OUTPUT_PATH}
    51. [ -f ./${NV_DIR}/libnvidia-fatbinaryloader.so.${NV_VERSION} ] && /bin/cp -f ./${NV_DIR}/libnvidia-fatbinaryloader.so.${NV_VERSION} ${NV_LIB_OUTPUT_PATH}
    52. [ -f ./${NV_DIR}/libnvidia-ptxjitcompiler.so.${NV_VERSION} ] && /bin/cp -f ./${NV_DIR}/libnvidia-ptxjitcompiler.so.${NV_VERSION} ${NV_LIB_OUTPUT_PATH}
    53. [ -f ./${NV_DIR}/libcuda.so.${NV_VERSION} ] && /bin/cp -f ./${NV_DIR}/libcuda.so.${NV_VERSION} ${NV_LIB_OUTPUT_PATH}
    54. [ -f ./${NV_DIR}/nvidia-modprobe ] && /bin/cp -f ./${NV_DIR}/nvidia-modprobe ${NV_BIN_OUTPUT_PATH}
    55. [ -f ./${NV_DIR}/nvidia-smi ] && /bin/cp -f ./${NV_DIR}/nvidia-smi ${NV_BIN_OUTPUT_PATH}
    56. chmod +x /usr/bin/nvidia*
    57. chmod +s /usr/bin/nvidia-modprobe
    58. # link for nvidia
    59. /bin/rm -rf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
    60. /bin/ln -s /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.${NV_VERSION} /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
    61. /bin/ln -s /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
    62. /bin/rm -rf /usr/lib/x86_64-linux-gnu/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so.1
    63. /bin/ln -s /usr/lib/x86_64-linux-gnu/libcuda.so.${NV_VERSION} /usr/lib/x86_64-linux-gnu/libcuda.so.1
    64. /bin/ln -s /usr/lib/x86_64-linux-gnu/libcuda.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so
    65. # take effect
    66. /sbin/ldconfig 1>/dev/null 2>&1
    67. }
    68. function build_nv() {
    69. if [ ${NEED_TO_COMPILE_NV_KO} == 0 ]
    70. then
    71. return
    72. fi
    73. NVIDIA_MOD_REL_PATH='kernel/drivers/video'
    74. NVIDIA_OUTPUT_PATH="/lib/modules/`uname -r`/${NVIDIA_MOD_REL_PATH}"
    75. CPUNUM=`cat /proc/cpuinfo | grep processor | wc | awk -F " " '{print $1}'`
    76. export IGNORE_PREEMPT_RT_PRESENCE=true
    77. cd ${NVIDIA_SOURCE} && make -j ${CPUNUM} module
    78. cd ${BUILD_BASE}
    79. unset IGNORE_PREEMPT_RT_PRESENCE
    80. mkdir -p ${NVIDIA_OUTPUT_PATH}
    81. [ -f ${NVIDIA_SOURCE}/nvidia.ko ] && cp ${NVIDIA_SOURCE}/nvidia.ko ${NVIDIA_OUTPUT_PATH}
    82. [ -f ${NVIDIA_SOURCE}/nvidia-modeset.ko ] && cp ${NVIDIA_SOURCE}/nvidia-modeset.ko ${NVIDIA_OUTPUT_PATH}
    83. [ -f ${NVIDIA_SOURCE}/nvidia-drm.ko ] && cp ${NVIDIA_SOURCE}/nvidia-drm.ko ${NVIDIA_OUTPUT_PATH}
    84. [ -f ${NVIDIA_SOURCE}/nvidia-uvm.ko ] && cp ${NVIDIA_SOURCE}/nvidia-uvm.ko ${NVIDIA_OUTPUT_PATH}
    85. depmod -a
    86. }
    87. # check environment
    88. check_env
    89. # prepare for nvidia
    90. prepare_nv
    91. # build nvidia.ko
    92. build_nv
    93. # install user lib
    94. install_lib
    95. # clean environment
    96. clean_env
    97. echo "Done to install nvidia kernel driver and user libraries."


    这个脚本来源于apollo实时操作系统的github,但是由于franka安装的是preempt_rt的补丁,有大神修改了这个脚本。

    apollo-kernel/Install_nvidia_driver_on_ubuntu_18.04.md at master · ApolloAuto/apollo-kernel · GitHub

    关于切换内核系统

    修改/etc/default/下的grub:

    GRUB_DEFAULT=“1 >0”  是第一个内核系统(实时操作系统)

    GRUB_DEFAULT=“1 >2” 才是第二个内核系统(原来的)

  • 相关阅读:
    【NextJS】nextjs+qiankun遇ReferenceError: window is not defined
    高级工程师评审:高级工程师有哪些专业?高级工程师职称专业分类
    基于springboot的药店管理系统
    用科学理性态度关注眼健康!孙丰源院长出席纪录片《眼睛的故事》研讨会
    54.Python-web框架-Django-免费模板django-datta-able
    【CKA考试笔记】十三、k8s中的网络
    R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
    JSP住宅小区物业管理系统(源代码+开题报告+论文+答辩PPT)科大云炬
    【校招VIP】前端操作系统之存储管理加密
    Swin Transformer:最佳论文,准确率和性能双佳的视觉Transformer | ICCV 2021
  • 原文地址:https://blog.csdn.net/moshuilangting/article/details/126744619