ROS遇见问题积累与记录(持续更新)

  1. 当在主机中编写代码部署到实车上时catkin_make报错
CMake Error: The source directory "/home/pi/ros_ws/src" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
Makefile:1202: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Base path: /home/fixer/Project/ROS/hwCar2/ros_ws
Source space: /home/fixer/Project/ROS/hwCar2/ros_ws/src
Build space: /home/fixer/Project/ROS/hwCar2/ros_ws/build
Devel space: /home/fixer/Project/ROS/hwCar2/ros_ws/devel
Install space: /home/fixer/Project/ROS/hwCar2/ros_ws/install

可将ros_ws目录下的build和devel文件夹删除重新编译

  1. 这个问题查了好久也没有找到解决方案,起因是我的ROS小车的odometry是我自己写的,代码十分不严谨,先看报错
Transform [sender=unknown_publisher]
For frame [laser]: No transform to fixed frame [odom]. TF error: [Lookup would require extrapolation into the future. Requested time 1629269263.164554878 but the latest data is at time 1629269259.404964543, when looking up transform from frame [laser] to frame [odom]]

这里的[laser],[odom]还可能使[base_link][map]等等,大体上说的就是tf发布的时间戳没有匹配,如果在rviz中把全局tf设置为laser,又没有问题。
我这里提供一点解决思路,是我自己遇到的。

这是我的代码

int main(int argc, char** argv){
  ros::init(argc, argv, "odometry_publisher");

  ros::NodeHandle n;
  ros::Publisher odom_pub = n.advertise<nav_msgs::Odometry>("odom", 50);
  /*
  ····
  */
  ros::Rate r(1.0);
  while(n.ok()){
    ros::spinOnce();             
	/*
   	····
   	*/
	tf::TransformBroadcaster odom_broadcaster;
    /*
  	····
  	*/
    odom_broadcaster.sendTransform(odom_trans);
	/*
 	····
	*/
    odom_pub.publish(odom);

    r.sleep();
  }
}

发现端倪了吗,我伞兵地把tf创建在了while循环中,这意味着每rate都会重新新建一个新的odom_broadcaster,怪不得我提高 rate报错时间也间隔得短了

解决办法就是 把tf::TransformBroadcaster提前建立,放在循环外。

  1. 在配置小车的导航包时缺少tf2-sensor-msgs包,小车好久没update 导致签名过期了,报错

     Failed to fetch http://packages.ros.org/ros/ubuntu/dists/bionic/InRelease  
     The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 
     Open Robotics 
    

    解决方法如下:

    1. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 提示的公钥数字
      再次sudo apt-get update后就可以了
    2. curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -这个方法我用过之后没有成功
  2. 我的小车主机是RK3399,RK3399 的ubuntu-arm源和 X86源不一样,换了清华源并不太好使,经过查找中科大源效果不错
    sudo vim /etc/apt/sources.list

    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security universe
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security multiverse
    

    原文链接.

  3. 在ROS中是右手系,在RVIZ显示tf时

    • 红:+X方向
    • 绿:+Y方向
    • 蓝:+Z方向

你可能感兴趣的:(ROS)