- 当在主机中编写代码部署到实车上时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文件夹删除重新编译
- 这个问题查了好久也没有找到解决方案,起因是我的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提前建立,放在循环外。
-
在配置小车的导航包时缺少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 <info@osrfoundation.org>
解决方法如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 提示的公钥数字
再次sudo apt-get update后就可以了curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
这个方法我用过之后没有成功
-
我的小车主机是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
原文链接.
-
在ROS中是右手系,在RVIZ显示tf时
- 红:+X方向
- 绿:+Y方向
- 蓝:+Z方向