当前位置: 首页 > news >正文

Docker拉取ubuntu22.04镜像使用ROS2 humble及仿真工具可视化进行导航

创建Ubuntu22.04 容器

docker pull ubuntu:22.04  #下载22.04镜像
docker images #查看已下载镜像
#根据镜像创建容器
sudo docker run -it -v  /home/lab118/BD_ICL/tools_BD/cailib_data:/calib_data -v  /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 --net=host -e GDK_SCALE   -e  GDK_DPI_SCALE  --privileged --gpus all -e  NVIDIA_DRIVER_CAPABILITIES=all --name kalibr_te_fina2  kalibr_li_calib_wyw:new_9_12  bash  

sudo docker run -it -v /home/lab118/BD_ICL/tools_BD/cailib_data:/calib_data -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 --net=host -e GDK_SCALE -e GDK_DPI_SCALE --privileged --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all --name kalibr_te_fina2 kalibr_li_calib_wyw:new_9_12 bash

其中 -v /home/lab118/BD_ICL/tools_BD/cailib_data:/calib_data 是将主机的目录/home/lab18/……到容器的/calib_data,用于共享数据,改为自己的目录;
-v /tmp/.X11-unix:/tmp/.X11-unix 也是一个目录,这是为了容器内的GUI应用能显示到主机,用于图形化界面;
-e DISPLAY=:0 用那个显示器进行显示,需要自己查下 echo $DISPLAY,一般是0或者1,我的是1;

-e GDK_SCALE 设置GTK 缩放因子,未指定值
-e GDK_DPI_SCALE 设置GTK 缩放因子,未指定值
-e NVIDIA_DRIVER_CAPABILITIES=all 启用Nvidia驱动的所有功能;
–privileged 赋予容器完全的权限
–gpus all 允许容器访问主机所有GPU
–net=host 容器使用主机网络
–name kalibr_te_fina2 kalibr_li_calib_wyw:new_9_12 创建名为kalibr_te_fina2的容器,用的镜像是kalibr_li_calib_wyw:new_9_12
创建完成后,在主机中增加X11权限

xhost +local:root  # 允许 Docker 容器访问 X11

可以在docker中使用xeyes命令,看主机有无眼睛出现,出现即表示图形化界面可用;

安装ROS2以及nav2功能包

使用鱼香ROS的一键安装指令
wget http://fishros.com/install -O fishros && . fishros
安装Nav2

在共享数据文件夹中创建工作空间并克隆代码

mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch humble

安装依赖并编译(使用鱼香ROS中的rosdepc,也是用一键安装指令进行安装)

cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro humble
colcon build --symlink-install
Docker中的Gazebo以及Rviz可视化使用

Rviz使用,之前创建docker的时候已经配置过可视化了,可以直接使用

ros2 run rviz2 rviz2 

第一次打开gazebo可能会比较慢,如果没有报错可以多等等;
如果是输入gazebo后回车,什么也没有显示,直接是新的一行了,可以ps -a看看有没有gazebo进程,如果存在gazebo进程没有中断,就会出现这种情况;
过程中遇到的问题,单独启动gazebo可以,但是运行launch启动会报错;
我是运行
ros2 launch gazebo_ros gazebo.launch.py 报错,然后看进程只有gzserver没有gaclient,
ros2 launch gazebo_ros gzserver.launch.py
ros2 launch gazebo_ros gzclient.launch.py
报错

[gzclient-2] gzclient: /usr/include/boost/smart_ptr/shared_ptr.hpp:728: typename boost::detail::sp_member_access::type boost::shared_ptr::operator->() const [with T = gazebo::rendering::Camera; typename boost::detail::sp_member_access::type = gazebo::rendering::Camera*]: Assertion `px != 0’ failed.

然后运行下面命令后解决,最后把这个加入到.bashrc中了

source /usr/share/gazebo/setup.sh

然后就可以打开gazebo了

相关文章:

  • [案例四] 智能填写属性工具(支持装配组件还有建模实体属性的批量创建、编辑)
  • NoSQL数据库技术与应用复习总结【看到最后】
  • MySQL为什么选择B+树
  • MCP:重塑AI交互的通用协议,成为智能应用的基础设施
  • JUC并发编程(上)
  • Qt—多线程基础
  • 《Redis应用实例》学习笔记,第一章:缓存文本数据
  • Python----神经网络(基于Alex Net的花卉分类项目)
  • 设计模式学习整理
  • vs2022配置opencv
  • Go语言运算符详解
  • 深入理解反序列化攻击:原理、示例与利用工具实战
  • 缓存(5):常见 缓存数据淘汰算法/缓存清空策略
  • 蓝桥杯14届 数三角
  • 网址为 http://xxx:xxxx/的网页可能暂时无法连接,或者它已永久性地移动到了新网址
  • 【言语】刷题1
  • 【RP2350】香瓜树莓派RP2350之LED
  • UGMathBench动态基准测试数据集发布 可评估语言模型数学推理能力
  • Linux架构篇、第三章_2_Linux服务器监控与NGINX优化
  • PureComponent与shouldComponentUpdate
  • 美国政府信用卡被设1美元限额,10美元采购花一两小时填表
  • 城事 | 重庆新增热门打卡地标,首座熊猫主题轨交站亮相
  • 普京提议于15日在土耳其恢复俄乌直接谈判
  • 宇数科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入
  • 巴基斯坦外长:近期军事回应是自卫措施
  • 巴基斯坦军方:印度导弹袭击巴首都附近空军基地