在dockerfile里执行catkin_make

本文介绍如何在Docker环境中正确执行catkin_make命令,避免启动时长时间等待和潜在的系统卡死问题。通过在Dockerfile中加入特定的RUN指令,可以实现在构建镜像时自动完成ROS工作空间的构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一段,我们在做项目的自动化运维的事情。同事们反映不知道怎么在docker里面执行catkin_make命令。在制作镜像的过程中,如果能执行catkin_make,则打包好的镜像,就可以直接使用了。否则,对于一个打包好的镜像,还得再startup里面执行catkin_make,这样造成的问题有2个:第一,浪费很多的时间,第二,可能会造成卡死(我们的gazebo开机启动后一直等待模拟无人机的docker发送数据过来,而这些无人机docker在startup阶段要执行catkin_make长达5分钟,造成gazebo卡死);

     在网上找了很多解答,发现很多都是废话,没啥用。经过不断的尝试,发现,如下命令可以在dockerfile里执行catkin_make:

RUN /bin/bash -c '. /opt/ros/kinetic/setup.bash; cd <into the desired folder e.g. catkin_ws>; catkin_make'

整个dockerfile就长下面这样:

FROM XXXX-image

# ...
# do what you need to do for example git clone something into ~/catkin_ws/src
# ...

RUN /bin/bash -c '. /opt/ros/kinetic/setup.bash; cd <into the desired folder e.g. ~/catkin_ws/src>; catkin_make'

执行过程的输出如下:

vae@vae-ASUS-TUF-Gaming-A15-FA507UU-FA507UU:~$ roslaunch "/home/vae/catkin_ws/src/Primitive-Planner/src/planner/plan_manage/launch/swarm.launch" ... logging to /home/vae/.ros/log/f34d8a2e-6054-11f0-9921-77d90da18a94/roslaunch-vae-ASUS-TUF-Gaming-A15-FA507UU-FA507UU-14057.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://vae-ASUS-TUF-Gaming-A15-FA507UU-FA507UU:35697/ SUMMARY ======== PARAMETERS * /drone_0_bridge_node/broadcast_ip: 127.0.0.255 * /drone_0_bridge_node/drone_id: 0 * /drone_0_bridge_node/odom_max_freq: 70 * /drone_0_odom_visualization/color/a: 1.0 * /drone_0_odom_visualization/color/b: 0.0 * /drone_0_odom_visualization/color/g: 0.0 * /drone_0_odom_visualization/color/r: 0.0 * /drone_0_odom_visualization/covariance_scale: 100.0 * /drone_0_odom_visualization/drone_id: 0 * /drone_0_odom_visualization/robot_scale: 0.24 * /drone_0_odom_visualization/tf45: False * /drone_0_pcl_render_node/cam_cx: 321.04638671875 * /drone_0_pcl_render_node/cam_cy: 243.44969177246094 * /drone_0_pcl_render_node/cam_fx: 387.229248046875 * /drone_0_pcl_render_node/cam_fy: 387.229248046875 * /drone_0_pcl_render_node/cam_height: 480 * /drone_0_pcl_render_node/cam_width: 640 * /drone_0_pcl_render_node/estimation_rate: 30.0 * /drone_0_pcl_render_node/map/x_size: 24.0 * /drone_0_pcl_render_node/map/y_size: 24.0 * /drone_0_pcl_render_node/map/z_size: 3.0 * /drone_0_pcl_render_node/sensing_horizon: 5.0 * /drone_0_pcl_render_node/sensing_rate: 10.0 * /drone_0_poscmd_2_odom/init_x: 2.0 * /drone_0_poscmd_2_odom/init_y: 0.0 * /drone_0_poscmd_2_odom/init_z: 0.5 * /drone_0_primitive_planner_node/fsm/fail_safe: True * /drone_0_primitive_planner_node/fsm/flight_type: 2 * /drone_0_primitive_planner_node/fsm/no_replan_thresh: 0.5 * /drone_0_primitive_planner_node/fsm/realworld_experiment: True * /drone_0_primitive_planner_node/fsm/thresh_replan_time: 0.2 * /drone_0_primitive_planner_node/fsm/waypoint0_x: -2.0 * /drone_0_primitive_planner_node/fsm/waypoint0_y: -0.0 * /drone_0_primitive_planner_node/fsm/waypoint0_z: 0.5 * /drone_0_primitive_planner_node/fsm/waypoint1_x: 0.0 * /drone_0_primitive_planner_node/fsm/waypoint1_y: 0.0 * /drone_0_primitive_planner_node/fsm/waypoint1_z: 0.0 * /drone_0_primitive_planner_node/fsm/waypoint2_x: 0.0 * /drone_0_primitive_planner_node/fsm/waypoint2_y: 0.0 * /drone_0_primitive_planner_node/fsm/waypoint2_z: 0.0 * /drone_0_primitive_planner_node/fsm/waypoint_num: 1 * /drone_0_primitive_planner_node/manager/arc_length: 3.0 * /drone_0_primitive_planner_node/manager/boxX: 6.0 * /drone_0_primitive_planner_node/manager/boxY: 6.0 * /drone_0_primitive_planner_node/manager/boxZ: 6.0 * /drone_0_primitive_planner_node/manager/depthCloudStackNum: 1 * /drone_0_primitive_planner_node/manager/drone_id: 0 * /drone_0_primitive_planner_node/manager/lamda_b: 50.0 * /drone_0_primitive_planner_node/manager/lamda_l: 200.0 * /drone_0_primitive_planner_node/manager/map_size_x: 24.0 * /drone_0_primitive_planner_node/manager/map_size_y: 24.0 * /drone_0_primitive_planner_node/manager/map_size_z: 3.0 * /drone_0_primitive_planner_node/manager/max_vel: 1.0 * /drone_0_primitive_planner_node/manager/primitiveFolder: /home/vae/catkin_... * /drone_0_primitive_planner_node/manager/sampleSize: 10000 * /drone_0_primitive_planner_node/manager/swarm_clearence: 0.24 * /drone_0_primitive_planner_node/manager/voxelSize: 0.1 * /drone_0_traj_server/init_x: 2.0 * /drone_0_traj_server/init_y: 0.0 * /drone_0_traj_server/init_z: 0.5 * /drone_0_traj_server/traj_server/max_vel: 1.0 * /drone_0_traj_server/traj_server/primitiveFolder: /home/vae/catkin_... * /drone_0_traj_server/traj_server/time_delay_idx: 0 * /drone_0_traj_server/traj_server/time_forward: 1.0 * /drone_1_odom_visualization/color/a: 1.0 * /drone_1_odom_visualization/color/b: 0.0 * /drone_1_odom_visualization/color/g: 0.0 * /drone_1_odom_visualization/color/r: 0.0 * /drone_1_odom_visualization/covariance_scale: 100.0 * /drone_1_odom_visualization/drone_id: 1 * /drone_1_odom_visualization/robot_scale: 0.24 * /drone_1_odom_visualization/tf45: False * /drone_1_pcl_render_node/cam_cx: 321.04638671875 * /drone_1_pcl_render_node/cam_cy: 243.44969177246094 * /drone_1_pcl_render_node/cam_fx: 387.229248046875 * /drone_1_pcl_render_node/cam_fy: 387.229248046875 * /drone_1_pcl_render_node/cam_height: 480 * /drone_1_pcl_render_node/cam_width: 640 * /drone_1_pcl_render_node/estimation_rate: 30.0 * /drone_1_pcl_render_node/map/x_size: 24.0 * /drone_1_pcl_render_node/map/y_size: 24.0 * /drone_1_pcl_render_node/map/z_size: 3.0 * /drone_1_pcl_render_node/sensing_horizon: 5.0 * /drone_1_pcl_render_node/sensing_rate: 10.0 * /drone_1_poscmd_2_odom/init_x: -0.9999999999999996 * /drone_1_poscmd_2_odom/init_y: 1.7320508075688774 * /drone_1_poscmd_2_odom/init_z: 0.5 * /drone_1_primitive_planner_node/fsm/fail_safe: True * /drone_1_primitive_planner_node/fsm/flight_type: 2 * /drone_1_primitive_planner_node/fsm/no_replan_thresh: 0.5 * /drone_1_primitive_planner_node/fsm/realworld_experiment: True * /drone_1_primitive_planner_node/fsm/thresh_replan_time: 0.2 * /drone_1_primitive_planner_node/fsm/waypoint0_x: 0.9999999999999996 * /drone_1_primitive_planner_node/fsm/waypoint0_y: -1.7320508075688774 * /drone_1_primitive_planner_node/fsm/waypoint0_z: 0.5 * /drone_1_primitive_planner_node/fsm/waypoint1_x: 0.0 * /drone_1_primitive_planner_node/fsm/waypoint1_y: 0.0 * /drone_1_primitive_planner_node/fsm/waypoint1_z: 0.0 * /drone_1_primitive_planner_node/fsm/waypoint2_x: 0.0 * /drone_1_primitive_planner_node/fsm/waypoint2_y: 0.0 * /drone_1_primitive_planner_node/fsm/waypoint2_z: 0.0 * /drone_1_primitive_planner_node/fsm/waypoint_num: 1 * /drone_1_primitive_planner_node/manager/arc_length: 3.0 * /drone_1_primitive_planner_node/manager/boxX: 6.0 * /drone_1_primitive_planner_node/manager/boxY: 6.0 * /drone_1_primitive_planner_node/manager/boxZ: 6.0 * /drone_1_primitive_planner_node/manager/depthCloudStackNum: 1 * /drone_1_primitive_planner_node/manager/drone_id: 1 * /drone_1_primitive_planner_node/manager/lamda_b: 50.0 * /drone_1_primitive_planner_node/manager/lamda_l: 200.0 * /drone_1_primitive_planner_node/manager/map_size_x: 24.0 * /drone_1_primitive_planner_node/manager/map_size_y: 24.0 * /drone_1_primitive_planner_node/manager/map_size_z: 3.0 * /drone_1_primitive_planner_node/manager/max_vel: 1.0 * /drone_1_primitive_planner_node/manager/primitiveFolder: /home/vae/catkin_... * /drone_1_primitive_planner_node/manager/sampleSize: 10000 * /drone_1_primitive_planner_node/manager/swarm_clearence: 0.24 * /drone_1_primitive_planner_node/manager/voxelSize: 0.1 * /drone_1_traj_server/init_x: -0.9999999999999996 * /drone_1_traj_server/init_y: 1.7320508075688774 * /drone_1_traj_server/init_z: 0.5 * /drone_1_traj_server/traj_server/max_vel: 1.0 * /drone_1_traj_server/traj_server/primitiveFolder: /home/vae/catkin_... * /drone_1_traj_server/traj_server/time_delay_idx: 0 * /drone_1_traj_server/traj_server/time_forward: 1.0 * /drone_2_odom_visualization/color/a: 1.0 * /drone_2_odom_visualization/color/b: 0.0 * /drone_2_odom_visualization/color/g: 0.0 * /drone_2_odom_visualization/color/r: 0.0 * /drone_2_odom_visualization/covariance_scale: 100.0 * /drone_2_odom_visualization/drone_id: 2 * /drone_2_odom_visualization/robot_scale: 0.24 * /drone_2_odom_visualization/tf45: False * /drone_2_pcl_render_node/cam_cx: 321.04638671875 * /drone_2_pcl_render_node/cam_cy: 243.44969177246094 * /drone_2_pcl_render_node/cam_fx: 387.229248046875 * /drone_2_pcl_render_node/cam_fy: 387.229248046875 * /drone_2_pcl_render_node/cam_height: 480 * /drone_2_pcl_render_node/cam_width: 640 * /drone_2_pcl_render_node/estimation_rate: 30.0 * /drone_2_pcl_render_node/map/x_size: 24.0 * /drone_2_pcl_render_node/map/y_size: 24.0 * /drone_2_pcl_render_node/map/z_size: 3.0 * /drone_2_pcl_render_node/sensing_horizon: 5.0 * /drone_2_pcl_render_node/sensing_rate: 10.0 * /drone_2_poscmd_2_odom/init_x: -1.0000000000000009 * /drone_2_poscmd_2_odom/init_y: -1.7320508075688767 * /drone_2_poscmd_2_odom/init_z: 0.5 * /drone_2_primitive_planner_node/fsm/fail_safe: True * /drone_2_primitive_planner_node/fsm/flight_type: 2 * /drone_2_primitive_planner_node/fsm/no_replan_thresh: 0.5 * /drone_2_primitive_planner_node/fsm/realworld_experiment: True * /drone_2_primitive_planner_node/fsm/thresh_replan_time: 0.2 * /drone_2_primitive_planner_node/fsm/waypoint0_x: 1.0000000000000009 * /drone_2_primitive_planner_node/fsm/waypoint0_y: 1.7320508075688767 * /drone_2_primitive_planner_node/fsm/waypoint0_z: 0.5 * /drone_2_primitive_planner_node/fsm/waypoint1_x: 0.0 * /drone_2_primitive_planner_node/fsm/waypoint1_y: 0.0 * /drone_2_primitive_planner_node/fsm/waypoint1_z: 0.0 * /drone_2_primitive_planner_node/fsm/waypoint2_x: 0.0 * /drone_2_primitive_planner_node/fsm/waypoint2_y: 0.0 * /drone_2_primitive_planner_node/fsm/waypoint2_z: 0.0 * /drone_2_primitive_planner_node/fsm/waypoint_num: 1 * /drone_2_primitive_planner_node/manager/arc_length: 3.0 * /drone_2_primitive_planner_node/manager/boxX: 6.0 * /drone_2_primitive_planner_node/manager/boxY: 6.0 * /drone_2_primitive_planner_node/manager/boxZ: 6.0 * /drone_2_primitive_planner_node/manager/depthCloudStackNum: 1 * /drone_2_primitive_planner_node/manager/drone_id: 2 * /drone_2_primitive_planner_node/manager/lamda_b: 50.0 * /drone_2_primitive_planner_node/manager/lamda_l: 200.0 * /drone_2_primitive_planner_node/manager/map_size_x: 24.0 * /drone_2_primitive_planner_node/manager/map_size_y: 24.0 * /drone_2_primitive_planner_node/manager/map_size_z: 3.0 * /drone_2_primitive_planner_node/manager/max_vel: 1.0 * /drone_2_primitive_planner_node/manager/primitiveFolder: /home/vae/catkin_... * /drone_2_primitive_planner_node/manager/sampleSize: 10000 * /drone_2_primitive_planner_node/manager/swarm_clearence: 0.24 * /drone_2_primitive_planner_node/manager/voxelSize: 0.1 * /drone_2_traj_server/init_x: -1.0000000000000009 * /drone_2_traj_server/init_y: -1.7320508075688767 * /drone_2_traj_server/init_z: 0.5 * /drone_2_traj_server/traj_server/max_vel: 1.0 * /drone_2_traj_server/traj_server/primitiveFolder: /home/vae/catkin_... * /drone_2_traj_server/traj_server/time_delay_idx: 0 * /drone_2_traj_server/traj_server/time_forward: 1.0 * /random_forest/ObstacleShape/lower_hei: 0.0 * /random_forest/ObstacleShape/lower_rad: 0.2 * /random_forest/ObstacleShape/radius_h: 0.5 * /random_forest/ObstacleShape/radius_l: 0.7 * /random_forest/ObstacleShape/theta: 0.5 * /random_forest/ObstacleShape/upper_hei: 3.0 * /random_forest/ObstacleShape/upper_rad: 0.5 * /random_forest/ObstacleShape/z_h: 0.8 * /random_forest/ObstacleShape/z_l: 0.7 * /random_forest/map/circle_num: 12.5 * /random_forest/map/obs_num: 12.5 * /random_forest/map/resolution: 0.1 * /random_forest/map/x_size: 5.0 * /random_forest/map/y_size: 5.0 * /random_forest/map/z_size: 3.0 * /random_forest/min_distance: 0.8 * /random_forest/pub_rate: 1.0 * /rosdistro: noetic * /rosversion: 1.17.4 NODES / drone_0_bridge_node (swarm_bridge/bridge_node_udp) drone_0_odom_visualization (odom_visualization/odom_visualization) drone_0_pcl_render_node (local_sensing_node/pcl_render_node) drone_0_poscmd_2_odom (poscmd_2_odom/poscmd_2_odom) drone_0_primitive_planner_node (primitive_planner/primitive_planner_node) drone_0_traj_server (primitive_planner/traj_server) drone_1_odom_visualization (odom_visualization/odom_visualization) drone_1_pcl_render_node (local_sensing_node/pcl_render_node) drone_1_poscmd_2_odom (poscmd_2_odom/poscmd_2_odom) drone_1_primitive_planner_node (primitive_planner/primitive_planner_node) drone_1_traj_server (primitive_planner/traj_server) drone_2_odom_visualization (odom_visualization/odom_visualization) drone_2_pcl_render_node (local_sensing_node/pcl_render_node) drone_2_poscmd_2_odom (poscmd_2_odom/poscmd_2_odom) drone_2_primitive_planner_node (primitive_planner/primitive_planner_node) drone_2_traj_server (primitive_planner/traj_server) random_forest (map_generator/random_forest) rviz (rviz/rviz) ROS_MASTER_URI=http://localhost:11311 process[drone_0_bridge_node-1]: started with pid [14086] process[random_forest-2]: started with pid [14087] process[rviz-3]: started with pid [14088] process[drone_0_primitive_planner_node-4]: started with pid [14094] process[drone_0_traj_server-5]: started with pid [14096] process[drone_0_poscmd_2_odom-6]: started with pid [14097] process[drone_0_odom_visualization-7]: started with pid [14098] process[drone_0_pcl_render_node-8]: started with pid [14113] process[drone_1_primitive_planner_node-9]: started with pid [14121] process[drone_1_traj_server-10]: started with pid [14128] [ERROR] [1752476374.317548293]: Illegal pathID=-1 process[drone_1_poscmd_2_odom-11]: started with pid [14129] process[drone_1_odom_visualization-12]: started with pid [14131] process[drone_1_pcl_render_node-13]: started with pid [14143] process[drone_2_primitive_planner_node-14]: started with pid [14153] process[drone_2_traj_server-15]: started with pid [14161] process[drone_2_poscmd_2_odom-16]: started with pid [14162] process[drone_2_odom_visualization-17]: started with pid [14165] process[drone_2_pcl_render_node-18]: started with pid [14173] [ERROR] [1752476374.359905192]: Illegal pathID=-1 [rosmsg_tcp_bridge] start running [ERROR] [1752476374.407247289]: Illegal pathID=-1 [drone_0_primitive_planner_node-4] process has finished cleanly log file: /home/vae/.ros/log/f34d8a2e-6054-11f0-9921-77d90da18a94/drone_0_primitive_planner_node-4*.log [drone_1_primitive_planner_node-9] process has finished cleanly log file: /home/vae/.ros/log/f34d8a2e-6054-11f0-9921-77d90da18a94/drone_1_primitive_planner_node-9*.log [drone_2_primitive_planner_node-14] process has finished cleanly log file: /home/vae/.ros/log/f34d8a2e-6054-11f0-9921-77d90da18a94/drone_2_primitive_planner_node-14*.log [WARN] [1752476374.809354901]: Finished generate random map [WARN] [1752476374.819079956]: Global Pointcloud received.. [WARN] [1752476374.820344840]: Global Pointcloud received.. [WARN] [1752476374.822302265]: Global Pointcloud received.. [INFO] [1752476375.315344140]: [Traj server]: ready. [INFO] [1752476375.347589117]: [Traj server]: ready. [INFO] [1752476375.403154149]: [Traj server]: ready. [rospack] Error: failed to parse command-line options: too many positional options have been specified on the command line [librospack]: error while executing command [rospack] Error: failed to parse command-line options: too many positional options have been specified on the command line [librospack]: error while executing command [rospack] Error: failed to parse command-line options: too many positional options have been specified on the command line [librospack]: error while executing command ================================================================================REQUIRED process [rviz-3] has died! process has finished cleanly log file: /home/vae/.ros/log/f34d8a2e-6054-11f0-9921-77d90da18a94/rviz-3*.log Initiating shutdown! ================================================================================ [drone_2_pcl_render_node-18] killing on exit [drone_2_odom_visualization-17] killing on exit [drone_2_poscmd_2_odom-16] killing on exit [drone_2_traj_server-15] killing on exit [drone_0_pcl_render_node-8] killing on exit [drone_1_odom_visualization-12] killing on exit [drone_1_poscmd_2_odom-11] killing on exit [drone_1_traj_server-10] killing on exit [drone_0_odom_visualization-7] killing on exit [drone_1_pcl_render_node-13] killing on exit terminate called after throwing an instance of 'boost::wrapexcept<boost::lock_error>' what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument [drone_0_poscmd_2_odom-6] killing on exit terminate called after throwing an instance of 'boost::wrapexcept<boost::lock_error>' what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument terminate called after throwing an instance of 'boost::wrapexcept<boost::lock_error>' what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument [drone_0_traj_server-5] killing on exit [rviz-3] killing on exit [random_forest-2] killing on exit [drone_0_bridge_node-1] killing on exit shutting down processing monitor... ... shutting down processing monitor complete done
07-15
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值