Record with rosbag from launch file
问题:
将rosbag命令包含到launch文件中:
[ERROR] [1605844387.924232167]: Error writing: Error opening file: ~/catkin_ws/data/_2020-11-20-11-53-07.bag.active [record_rosbag-4] process has died [pid 31430, exit code 1, cmd /opt/ros/kinetic/lib/rosbag/record /imu/data -o ~/catkin_ws/data/ __name:=record_rosbag __log:=/home/dm/.ros/log/e629ec62-2ae3-11eb-b257-983b8f0113e6/record_rosbag-4.log]. log file: /home/dm/.ros/log/e629ec62-2ae3-11eb-b257-983b8f0113e6/record_rosbag-4*.log
报错原因:
如果ROS是通过Debian包安装,那么任何包的源目录都将归root用户所有,并且对普通用户来说是只读的,所以普通用户的启动文件将无法工作(?)。
解决办法:
在根目录/tmp下使用普通用户创建子目录data,并将bag文件保存路径保存在该目录
问题进一步:
使用cartographer代码保存文件时,传入“~”表示用户目录(如/home/dm)出现以下报错信息:
经过尝试后发现,不含“~”的相对路径或绝对路径以及在命令行传参时使用含环境变量${HOME},均可正常保存文件。
因此,同理,rosbag record命令的真实报错原因也是由于采用了“~”表示用户目录(如/home/dm),解决方法如上。