zoukankan      html  css  js  c++  java
  • ROS常见问题(二) 运行文件时报错environment variable ' ###_MODEL' is not set

    作者在配置pibot机器人时报错:

    Invalid <arg> tag: environment variable 'PIBOT_MODEL' is not set.

    Arg xml is <arg default="$(env PIBOT_MODEL)" doc="model type [apollo, zeus, hades, hera]" name="model"/>
    The traceback for the exception was written to the log file

    解决方案:

    环境未配置

    配置环境即可

    ./pibot_init_env.sh
    source ~/.bashrc

    其中,pibot_init_env.sh文件源码如下:

      1 #!/bin/bash
      2 
      3 if ! [ $PIBOT_ENV_INITIALIZED ]; then
      4     echo "export PIBOT_ENV_INITIALIZED=1" >> ~/.bashrc
      5     echo "source ~/.pibotrc" >> ~/.bashrc
      6 
      7     #rules
      8     echo "setup pibot modules"
      9     echo " "
     10     sudo cp rules/pibot.rules  /etc/udev/rules.d
     11     sudo cp rules/rplidar.rules  /etc/udev/rules.d
     12     sudo cp rules/ydlidar.rules  /etc/udev/rules.d
     13     sudo cp rules/orbbec.rules  /etc/udev/rules.d
     14     echo " "
     15     echo "Restarting udev"
     16     echo ""
     17     sudo service udev reload
     18     sudo service udev restart
     19 fi
     20 
     21 code_name=$(lsb_release -sc)
     22 
     23 if [ "$code_name" = "trusty" ]; then
     24     ros_version="indigo"
     25 elif [ "$code_name" = "xenial" ]; then
     26     ros_version="kinetic"
     27 else
     28     echo "PIBOT not support "$code_name
     29     exit
     30 fi 
     31 
     32 echo "source /opt/ros/${ros_version}/setup.bash" > ~/.pibotrc
     33 
     34 
     35 #LOCAL_IP=`ifconfig eth0|grep "inet addr:"|awk -F":" '{print $2}'|awk '{print $1}'`
     36 #LOCAL_IP=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'`
     37 
     38 #if [ ! ${LOCAL_IP} ]; then
     39 #    echo "please check network"
     40 #    exit
     41 #fi
     42 
     43 LOCAL_IP=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'`
     44 echo "LOCAL_IP=\`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'\`" >> ~/.pibotrc
     45 
     46 if [ ! ${LOCAL_IP} ]; then
     47     echo "please check network"
     48     exit
     49 fi
     50 
     51 read -p "please specify pibot model(0:apollo,1:apolloX,2:zeus,3:hera,4:hades,other for user defined):" PIBOT_MODEL_INPUT
     52 
     53 if [ "$PIBOT_MODEL_INPUT" = "0" ]; then
     54     PIBOT_MODEL='apollo'
     55 elif [ "$PIBOT_MODEL_INPUT" = "1" ]; then
     56     PIBOT_MODEL='apolloX'
     57 elif [ "$PIBOT_MODEL_INPUT" = "2" ]; then
     58     PIBOT_MODEL='zeus'
     59 elif [ "$PIBOT_MODEL_INPUT" = "3" ]; then
     60     PIBOT_MODEL='hera'
     61 elif [ "$PIBOT_MODEL_INPUT" = "4" ]; then
     62     PIBOT_MODEL='hades'
     63 else
     64     PIBOT_MODEL=$PIBOT_MODEL_INPUT 
     65 fi
     66 
     67 read -p "please specify your pibot lidar(0:rplidar,1:rplidar-a3,2:eai-x4,3:eai-g4,4:xtion,5:astra,6:kinectV1,other for user defined):" PIBOT_LIDAR_INPUT
     68 
     69 if [ "$PIBOT_LIDAR_INPUT" = "0" ]; then
     70     PIBOT_LIDAR='rplidar'
     71 elif [ "$PIBOT_LIDAR_INPUT" = "1" ]; then
     72     PIBOT_LIDAR='rplidar-a3'
     73 elif [ "$PIBOT_LIDAR_INPUT" = "2" ]; then
     74     PIBOT_LIDAR='eai-x4'
     75 elif [ "$PIBOT_LIDAR_INPUT" = "3" ]; then
     76     PIBOT_LIDAR='eai-g4'
     77 elif [ "$PIBOT_LIDAR_INPUT" = "4" ]; then
     78     PIBOT_LIDAR='xtion'
     79 elif [ "$PIBOT_LIDAR_INPUT" = "5" ]; then
     80     PIBOT_LIDAR='astra'
     81 elif [ "$PIBOT_LIDAR_INPUT" = "6" ]; then
     82     PIBOT_LIDAR='kinectV1'
     83 else
     84     PIBOT_LIDAR=$PIBOT_LIDAR_INPUT
     85 fi
     86 
     87 echo "export ROS_IP=\`echo $LOCAL_IP\`" >> ~/.pibotrc
     88 echo "export ROS_HOSTNAME=\`echo $LOCAL_IP\`" >> ~/.pibotrc
     89 echo "export PIBOT_MODEL=${PIBOT_MODEL}" >> ~/.pibotrc
     90 echo "export PIBOT_LIDAR=${PIBOT_LIDAR}" >> ~/.pibotrc
     91 
     92 read -p "please select specify the current machine(ip:$LOCAL_IP) type(0:onboard,other:remote):" PIBOT_MACHINE_VALUE
     93 if [ "$PIBOT_MACHINE_VALUE" = "0" ]; then
     94     ROS_MASTER_IP_STR="\`echo $LOCAL_IP\`"
     95     ROS_MASTER_IP=`echo $LOCAL_IP`
     96 else
     97     read -p "plase specify the onboard machine ip for commnicationi:" PIBOT_ONBOARD_MACHINE_IP
     98     ROS_MASTER_IP_STR=`echo $PIBOT_ONBOARD_MACHINE_IP`
     99     ROS_MASTER_IP=`echo $PIBOT_ONBOARD_MACHINE_IP`
    100 fi
    101 
    102 echo "export ROS_MASTER_URI=`echo http://${ROS_MASTER_IP_STR}:11311`" >> ~/.pibotrc
    103 
    104 echo "*****************************************************************"
    105 echo "model: " $PIBOT_MODEL 
    106 echo "lidar:" $PIBOT_LIDAR  
    107 echo "local_ip: " ${LOCAL_IP} 
    108 echo "onboard_ip:" ${ROS_MASTER_IP}
    109 echo ""
    110 echo "please execute source ~/.bashrc to make the configure effective"
    111 echo "*****************************************************************"
    112 
    113 echo "source ~/pibot_ros/ros_ws/devel/setup.bash" >> ~/.pibotrc 
    114 
    115 #alias
    116 echo "alias pibot_bringup='roslaunch pibot_bringup bringup.launch'" >> ~/.pibotrc 
    117 echo "alias pibot_bringup_with_imu='roslaunch pibot_bringup bringup_with_imu.launch'" >> ~/.pibotrc 
    118 echo "alias pibot_lidar='roslaunch pibot_bringup ${PIBOT_LIDAR}.launch'" >> ~/.pibotrc 
    119 echo "alias pibot_base='roslaunch pibot_bringup robot.launch'" >> ~/.pibotrc 
    120 echo "alias pibot_base_with_imu='roslaunch pibot_bringup robot_with_imu.launch'" >> ~/.pibotrc 
    121 echo "alias pibot_control='roslaunch pibot keyboard_teleop.launch'" >> ~/.pibotrc 
    122 
    123 echo "alias pibot_gmapping='roslaunch pibot_navigation gmapping.launch'" >> ~/.pibotrc 
    124 echo "alias pibot_gmapping_with_imu='roslaunch pibot_navigation gammaping_with_imu.launch'" >> ~/.pibotrc 
    125 echo "alias pibot_save_map='roslaunch pibot_navigation save_map.launch'" >> ~/.pibotrc 
    126 
    127 echo "alias pibot_naviagtion='roslaunch pibot_navigation nav.launch'" >> ~/.pibotrc 
    128 echo "alias pibot_naviagtion_with_imu='roslaunch pibot_navigation nav_with_imu.launch'" >> ~/.pibotrc 
    129 echo "alias pibot_view='roslaunch pibot_navigation view_nav.launch'" >> ~/.pibotrc 
    130 
    131 echo "alias pibot_cartographer='roslaunch pibot_navigation cartographer.launch'" >> ~/.pibotrc 
    132 echo "alias pibot_view_cartographer='roslaunch pibot_navigation view_cartographer.launch'" >> ~/.pibotrc 
    133 
    134 echo "alias pibot_hector_mapping='roslaunch pibot_navigation hector_mapping.launch'" >> ~/.pibotrc 
    135 echo "alias pibot_hector_mapping_without_imu='roslaunch pibot_navigation hector_mapping_without_odom.launch'" >> ~/.pibotrc 
    136 
    137 echo "alias pibot_karto_slam='roslaunch pibot_navigation karto_slam.launch'" >> ~/.pibotrc 

    其他出现类似报错的可以参考上面的代码直接把环境变量加到~/.bashrc里面。

    博文主要是总结自己的学习,因此有很多知识点没有提到,仅仅提了个人比较容易遗忘的或者非常重要的知识点。很多资料来源于网络和对一些课程的整理,侵权删。格式没花精力调整,望谅解。
  • 相关阅读:
    Eclipse集成Tomcat:6个常见的”how to”问题
    linux环境变量配置
    (原创)JS点击事件——Uncaught TypeError: Cannot set property 'onclick' of null
    [ JS 进阶 ] 闭包,作用域链,垃圾回收,内存泄露
    webstorm安装后的一些设置技巧:
    前端工程师的知识体系
    Git常用命令及软件推荐
    Vue.js双向绑定的实现原理
    GET和POST面试知识点
    CSS 巧用 :before和:after
  • 原文地址:https://www.cnblogs.com/JuiceCat/p/12021833.html
Copyright © 2011-2022 走看看